2008-04-17 07:46:09 +02:00
/*
* definition for store system information stsi
*
* Copyright IBM Corp . 2001 , 2008
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License ( version 2 only )
* as published by the Free Software Foundation .
*
* Author ( s ) : Ulrich Weigand < weigand @ de . ibm . com >
* Christian Borntraeger < borntraeger @ de . ibm . com >
*/
2008-04-30 13:38:35 +02:00
# ifndef __ASM_S390_SYSINFO_H
# define __ASM_S390_SYSINFO_H
2008-04-17 07:46:09 +02:00
struct sysinfo_1_1_1 {
char reserved_0 [ 32 ] ;
char manufacturer [ 16 ] ;
char type [ 4 ] ;
char reserved_1 [ 12 ] ;
char model_capacity [ 16 ] ;
char sequence [ 16 ] ;
char plant [ 4 ] ;
char model [ 16 ] ;
2008-04-17 07:46:10 +02:00
char model_perm_cap [ 16 ] ;
char model_temp_cap [ 16 ] ;
char model_cap_rating [ 4 ] ;
char model_perm_cap_rating [ 4 ] ;
char model_temp_cap_rating [ 4 ] ;
2008-04-17 07:46:09 +02:00
} ;
struct sysinfo_1_2_1 {
char reserved_0 [ 80 ] ;
char sequence [ 16 ] ;
char plant [ 4 ] ;
char reserved_1 [ 2 ] ;
unsigned short cpu_address ;
} ;
struct sysinfo_1_2_2 {
char format ;
char reserved_0 [ 1 ] ;
unsigned short acc_offset ;
char reserved_1 [ 24 ] ;
unsigned int secondary_capability ;
unsigned int capability ;
unsigned short cpus_total ;
unsigned short cpus_configured ;
unsigned short cpus_standby ;
unsigned short cpus_reserved ;
unsigned short adjustment [ 0 ] ;
} ;
struct sysinfo_1_2_2_extension {
unsigned int alt_capability ;
unsigned short alt_adjustment [ 0 ] ;
} ;
struct sysinfo_2_2_1 {
char reserved_0 [ 80 ] ;
char sequence [ 16 ] ;
char plant [ 4 ] ;
unsigned short cpu_id ;
unsigned short cpu_address ;
} ;
struct sysinfo_2_2_2 {
char reserved_0 [ 32 ] ;
unsigned short lpar_number ;
char reserved_1 ;
unsigned char characteristics ;
unsigned short cpus_total ;
unsigned short cpus_configured ;
unsigned short cpus_standby ;
unsigned short cpus_reserved ;
char name [ 8 ] ;
unsigned int caf ;
char reserved_2 [ 16 ] ;
unsigned short cpus_dedicated ;
unsigned short cpus_shared ;
} ;
# define LPAR_CHAR_DEDICATED (1 << 7)
# define LPAR_CHAR_SHARED (1 << 6)
# define LPAR_CHAR_LIMITED (1 << 5)
struct sysinfo_3_2_2 {
char reserved_0 [ 31 ] ;
unsigned char count ;
struct {
char reserved_0 [ 4 ] ;
unsigned short cpus_total ;
unsigned short cpus_configured ;
unsigned short cpus_standby ;
unsigned short cpus_reserved ;
char name [ 8 ] ;
unsigned int caf ;
char cpi [ 16 ] ;
char reserved_1 [ 24 ] ;
} vm [ 8 ] ;
} ;
static inline int stsi ( void * sysinfo , int fc , int sel1 , int sel2 )
{
register int r0 asm ( " 0 " ) = ( fc < < 28 ) | sel1 ;
register int r1 asm ( " 1 " ) = sel2 ;
asm volatile (
" stsi 0(%2) \n "
" 0: jz 2f \n "
" 1: lhi %0,%3 \n "
" 2: \n "
EX_TABLE ( 0 b , 1 b )
: " +d " ( r0 ) : " d " ( r1 ) , " a " ( sysinfo ) , " K " ( - ENOSYS )
: " cc " , " memory " ) ;
return r0 ;
}
2008-04-30 13:38:35 +02:00
# endif /* __ASM_S390_SYSINFO_H */