Defines the _system_configuration structure.
The systemcfg.h file defines the _system_configuration structure. This is a global structure that identifies system characteristics. The system_configuration structure is provided in read-only system memory. New fields will be added to the structure in future releases. The attributes in the _system_configuration structure have the following values:
architecture | Identifies the processor architecture. Valid values for Version 4
are:
|
implementation | Identifies the specific version of the processor. Each implementation
is assigned a unique bit to allow for efficient checking of implementation
sets. The following are examples of valid values (the header file contains
more values):
Two special values are also defined: POWER_RS_ALL and POWER_PC_ALL. These labels are defined as the bit OR of all members of their architecture. |
version | Identifies the central processing unit (CPU) version number. The
following are examples of valid values (the header file contains more values):
|
width | Contains the processor data-word size. Valid values are 32 or 64. This value is the maximum data-word size and should not be confused with the current execution mode. |
ncpus | Identifies the number of CPUs active on a machine. Uniprocessor (UP) machines are identified by a 1. Values greater than 1 indicate multiprocessor (MP) machines. |
cache_attr | Specifies the cache attributes. Bit 31 determines if the cache is present. If this bit is 1, the cache is present. If bit 31 is 0, then no cache is present and all other cache characteristics are 0. Bit 30 indicates the type of cache. If bit 30 is 1, the cache is combined. Otherwise, if bit 30 is 0 the instruction and data caches are separate. |
icache_size | Contains the L1 instruction-cache size in bytes. For combined caches, this value is the total cache size. |
dcache_size | Contains the size of the L1 data-cache size in bytes. For combined caches this the total cache size. |
icache_asc | Contains the L1 instruction-cache associativity. For a combined cache, this is the combined caches' associativity. |
dcache_asc | Contains the L1 data-cache associativity. For a combined cache, this is the combined caches' associativity. |
icache_line | Contains the line size in bytes of the L1 instruction cache. |
dcache_line | Contains the line size in bytes of L1 data cache. |
L2_cache_size | Contains the size of the L2 cache in bytes. A value of 0 indicates no L2 cache is present. |
L2_cache_asc | Identifies the associativity of the L2 cache. |
tlb_comb | Identifies the type of Transaction Lookaside Buffer (TLB) attributes. If the TLB is present, bit 31 is 1. Otherwise, if bit 31 is less than 0, the TLB does not exist and all other TLB characteristics are 0. Bit 30 is 1 if the TLB is combined. If the TLB is separate for the instruction and data cache, bit 30 is 0. |
itlb_size | Specifies the number of entries in the instruction TLB. For combined TLBs, this is the size of the combined TLB. |
dtlb_size | Specifies the number of entries in the data TLB. For combined TLBs, this is the size of the combined TLB. |
itlb_asc | Contains the associativity of the instruction TLB. This attribute's value is equal to the itlb_size attribute if the system is fully associative. |
dtlb_asc | Contains the associativity of the instruction TLB. This attribute's value is equal to the value of the dtlb_size attribute if the system is fully associative. |
resv_size | Contains the POWER-based reservation granule size. This field is a 0 on POWER family machines. |
priv_ick_cnt | Contains the number of times lock services attempt to lock a spin lock before blocking AP process/thread in supervisor mode. This a 0 on UP machine. This parameter is used by system-locking services. |
prob_lck_cnt | Contains the number of times lock services attempt to lock a spin lock before blocking a process or thread in problem state. This a 0 on a UP machine. This parameter is used by system-locking services. |
virt_alias | Indicates virtual memory aliasing. If 1, the hardware is available for virtual memory aliasing and this ability is used by the system. Virtual memory aliasing is the mapping of one real address to more than one virtual address. |
cach_cong | Contains the number page index bits that can result in a cache synonym. For machines without cache synonyms, this field is 0. |