| /** @file | |
| PAL Call Services | |
| Copyright (c) 2006 -2007, Intel Corporation All rights | |
| reserved. This program and the accompanying materials are | |
| licensed and made available under the terms and conditions of | |
| the BSD License which accompanies this distribution. The full | |
| text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| Module Name: PalCallLib.h | |
| **/ | |
| #ifndef __PAL_CALL_LIB_H__ | |
| #define __PAL_CALL_LIB_H__ | |
| #define PAL_SUCCESS 0x0 | |
| // | |
| // CacheType of PAL_CACHE_FLUSH. | |
| // | |
| #define PAL_CACHE_FLUSH_INSTRUCTION_ALL 1 | |
| #define PAL_CACHE_FLUSH_DATA_ALL 2 | |
| #define PAL_CACHE_FLUSH_ALL 3 | |
| #define PAL_CACHE_FLUSH_SYNC_TO_DATA 4 | |
| // | |
| // Bitmask of Opearation of PAL_CACHE_FLUSH. | |
| // | |
| #define PAL_CACHE_FLUSH_INVALIDATE_LINES BIT0 | |
| #define PAL_CACHE_FLUSH_NO_INVALIDATE_LINES 0 | |
| #define PAL_CACHE_FLUSH_POLL_INTERRUPT BIT1 | |
| #define PAL_CACHE_FLUSH_NO_INTERRUPT 0 | |
| /** | |
| PAL Procedure - PAL_CACHE_FLUSH. | |
| Flush the instruction or data caches. It is required by IPF. | |
| The PAL procedure supports the Static Registers calling | |
| convention. It could be called at virtual mode and physical | |
| mode. | |
| @param Index Index of PAL_CACHE_FLUSH within the | |
| list of PAL procedures. | |
| @param CacheType Unsigned 64-bit integer indicating | |
| which cache to flush. | |
| @param Operation Formatted bit vector indicating the | |
| operation of this call. | |
| @param ProgressIndicator Unsigned 64-bit integer specifying | |
| the starting position of the flush | |
| operation. | |
| @return R9 Unsigned 64-bit integer specifying the vector | |
| number of the pending interrupt. | |
| @return R10 Unsigned 64-bit integer specifying the | |
| starting position of the flush operation. | |
| @return R11 Unsigned 64-bit integer specifying the vector | |
| number of the pending interrupt. | |
| @return Status 2 - Call completed without error, but a PMI | |
| was taken during the execution of this | |
| procedure. | |
| @return Status 1 - Call has not completed flushing due to | |
| a pending interrupt. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error | |
| **/ | |
| #define PAL_CACHE_FLUSH 1 | |
| // | |
| // Attributes of PAL_CACHE_CONFIG_INFO1 | |
| // | |
| #define PAL_CACHE_ATTR_WT 0 | |
| #define PAL_CACHE_ATTR_WB 1 | |
| // | |
| // PAL_CACHE_CONFIG_INFO1.StoreHint | |
| // | |
| #define PAL_CACHE_STORE_TEMPORAL 0 | |
| #define PAL_CACHE_STORE_NONE_TEMPORAL 3 | |
| // | |
| // PAL_CACHE_CONFIG_INFO1.StoreHint | |
| // | |
| #define PAL_CACHE_STORE_TEMPORAL_LVL_1 0 | |
| #define PAL_CACHE_STORE_NONE_TEMPORAL_LVL_ALL 3 | |
| // | |
| // PAL_CACHE_CONFIG_INFO1.StoreHint | |
| // | |
| #define PAL_CACHE_LOAD_TEMPORAL_LVL_1 0 | |
| #define PAL_CACHE_LOAD_NONE_TEMPORAL_LVL_1 1 | |
| #define PAL_CACHE_LOAD_NONE_TEMPORAL_LVL_ALL 3 | |
| // | |
| // Detail the characteristics of a given processor controlled | |
| // cache in the cache hierarchy. | |
| // | |
| typedef struct { | |
| UINT64 IsUnified : 1; | |
| UINT64 Attributes : 2; | |
| UINT64 Associativity:8; | |
| UINT64 LineSize:8; | |
| UINT64 Stride:8; | |
| UINT64 StoreLatency:8; | |
| UINT64 StoreHint:8; | |
| UINT64 LoadHint:8; | |
| } PAL_CACHE_INFO_RETURN1; | |
| // | |
| // Detail the characteristics of a given processor controlled | |
| // cache in the cache hierarchy. | |
| // | |
| typedef struct { | |
| UINT64 CacheSize:32; | |
| UINT64 AliasBoundary:8; | |
| UINT64 TagLsBits:8; | |
| UINT64 TagMsBits:8; | |
| } PAL_CACHE_INFO_RETURN2; | |
| /** | |
| PAL Procedure - PAL_CACHE_INFO. | |
| Return detailed instruction or data cache information. It is | |
| required by IPF. The PAL procedure supports the Static | |
| Registers calling convention. It could be called at virtual | |
| mode and physical mode. | |
| @param Index Index of PAL_CACHE_INFO within the list of | |
| PAL procedures. | |
| @param CacheLevel Unsigned 64-bit integer specifying the | |
| level in the cache hierarchy for which | |
| information is requested. This value must | |
| be between 0 and one less than the value | |
| returned in the cache_levels return value | |
| from PAL_CACHE_SUMMARY. | |
| @param CacheType Unsigned 64-bit integer with a value of 1 | |
| for instruction cache and 2 for data or | |
| unified cache. All other values are | |
| reserved. | |
| @param Reserved Should be 0. | |
| @return R9 Detail the characteristics of a given | |
| processor controlled cache in the cache | |
| hierarchy. See PAL_CACHE_INFO_RETURN1. | |
| @return R10 Detail the characteristics of a given | |
| processor controlled cache in the cache | |
| hierarchy. See PAL_CACHE_INFO_RETURN2. | |
| @return R11 Reserved with 0. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error | |
| **/ | |
| #define PAL_CACHE_INFO 2 | |
| // | |
| // Level of PAL_CACHE_INIT. | |
| // | |
| #define PAL_CACHE_INIT_ALL 0xffffffffffffffffULL | |
| // | |
| // CacheType | |
| // | |
| #define PAL_CACHE_INIT_TYPE_INSTRUCTION 0x1 | |
| #define PAL_CACHE_INIT_TYPE_DATA 0x2 | |
| #define PAL_CACHE_INIT_TYPE_INSTRUCTION_AND_DATA 0x3 | |
| // | |
| // Restrict of PAL_CACHE_INIT. | |
| // | |
| #define PAL_CACHE_INIT_NO_RESTRICT 0 | |
| #define PAL_CACHE_INIT_RESTRICTED 1 | |
| /** | |
| PAL Procedure - PAL_CACHE_INIT. | |
| Initialize the instruction or data caches. It is required by | |
| IPF. The PAL procedure supports the Static Registers calling | |
| convention. It could be called at physical mode. | |
| @param Index Index of PAL_CACHE_INIT within the list of PAL | |
| procedures. | |
| @param Level Unsigned 64-bit integer containing the level of | |
| cache to initialize. If the cache level can be | |
| initialized independently, only that level will | |
| be initialized. Otherwise | |
| implementation-dependent side-effects will | |
| occur. | |
| @param CacheType Unsigned 64-bit integer with a value of 1 to | |
| initialize the instruction cache, 2 to | |
| initialize the data cache, or 3 to | |
| initialize both. All other values are | |
| reserved. | |
| @param Restrict Unsigned 64-bit integer with a value of 0 or | |
| 1. All other values are reserved. If | |
| restrict is 1 and initializing the specified | |
| level and cache_type of the cache would | |
| cause side-effects, PAL_CACHE_INIT will | |
| return -4 instead of initializing the cache. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -4 - Call could not initialize the specified | |
| level and cache_type of the cache without | |
| side-effects and restrict was 1. | |
| **/ | |
| #define PAL_CACHE_INIT 3 | |
| // | |
| // PAL_CACHE_PROTECTION.Method. | |
| // | |
| #define PAL_CACHE_PROTECTION_NONE_PROTECT 0 | |
| #define PAL_CACHE_PROTECTION_ODD_PROTECT 1 | |
| #define PAL_CACHE_PROTECTION_EVEN_PROTECT 2 | |
| #define PAL_CACHE_PROTECTION_ECC_PROTECT 3 | |
| // | |
| // PAL_CACHE_PROTECTION.TagOrData. | |
| // | |
| #define PAL_CACHE_PROTECTION_PROTECT_DATA 0 | |
| #define PAL_CACHE_PROTECTION_PROTECT_TAG 1 | |
| #define PAL_CACHE_PROTECTION_PROTECT_TAG_ANDTHEN_DATA 2 | |
| #define PAL_CACHE_PROTECTION_PROTECT_DATA_ANDTHEN_TAG 3 | |
| // | |
| // 32-bit protection information structures. | |
| // | |
| typedef struct { | |
| UINT32 DataBits:8; | |
| UINT32 TagProtLsb:6; | |
| UINT32 TagProtMsb:6; | |
| UINT32 ProtBits:6; | |
| UINT32 Method:4; | |
| UINT32 TagOrData:2; | |
| } PAL_CACHE_PROTECTION; | |
| /** | |
| PAL Procedure - PAL_CACHE_PROT_INFO. | |
| Return instruction or data cache protection information. It is | |
| required by IPF. The PAL procedure supports the Static | |
| Registers calling convention. It could be called at physical | |
| mode and Virtual mode. | |
| @param Index Index of PAL_CACHE_PROT_INFO within the list of | |
| PAL procedures. | |
| @param CacheLevel Unsigned 64-bit integer specifying the level | |
| in the cache hierarchy for which information | |
| is requested. This value must be between 0 | |
| and one less than the value returned in the | |
| cache_levels return value from | |
| PAL_CACHE_SUMMARY. | |
| @param CacheType Unsigned 64-bit integer with a value of 1 | |
| for instruction cache and 2 for data or | |
| unified cache. All other values are | |
| reserved. | |
| @return R9 Detail the characteristics of a given | |
| processor controlled cache in the cache | |
| hierarchy. See PAL_CACHE_PROTECTION[0..1]. | |
| @return R10 Detail the characteristics of a given | |
| processor controlled cache in the cache | |
| hierarchy. See PAL_CACHE_PROTECTION[2..3]. | |
| @return R11 Detail the characteristics of a given | |
| processor controlled cache in the cache | |
| hierarchy. See PAL_CACHE_PROTECTION[4..5]. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_CACHE_PROT_INFO 38 | |
| /** | |
| @param ThreadId The thread identifier of the logical | |
| processor for which information is being | |
| returned. This value will be unique on a per | |
| core basis. | |
| @param CoreId The core identifier of the logical processor | |
| for which information is being returned. | |
| This value will be unique on a per physical | |
| processor package basis. | |
| **/ | |
| typedef struct { | |
| UINT64 ThreadId : 16; | |
| UINT64 Reserved1: 16; | |
| UINT64 CoreId: 16; | |
| UINT64 Reserved2: 16; | |
| } PAL_PCOC_N_CACHE_INFO1; | |
| /** | |
| @param LogicalAddress Logical address: geographical address | |
| of the logical processor for which | |
| information is being returned. This is | |
| the same value that is returned by the | |
| PAL_FIXED_ADDR procedure when it is | |
| called on the logical processor. | |
| **/ | |
| typedef struct { | |
| UINT64 LogicalAddress : 16; | |
| UINT64 Reserved1: 16; | |
| UINT64 Reserved2: 32; | |
| } PAL_PCOC_N_CACHE_INFO2; | |
| /** | |
| PAL Procedure - PAL_CACHE_SHARED_INFO. | |
| Returns information on which logical processors share caches. | |
| It is optional. The PAL procedure supports the Static | |
| Registers calling convention. It could be called at physical | |
| mode and Virtual mode. | |
| @param Index Index of PAL_CACHE_SHARED_INFO within the list | |
| of PAL procedures. | |
| @param CacheLevel Unsigned 64-bit integer specifying the | |
| level in the cache hierarchy for which | |
| information is requested. This value must | |
| be between 0 and one less than the value | |
| returned in the cache_levels return value | |
| from PAL_CACHE_SUMMARY. | |
| @param CacheType Unsigned 64-bit integer with a value of 1 | |
| for instruction cache and 2 for data or | |
| unified cache. All other values are | |
| reserved. | |
| @param ProcNumber Unsigned 64-bit integer that specifies for | |
| which logical processor information is | |
| being requested. This input argument must | |
| be zero for the first call to this | |
| procedure and can be a maximum value of | |
| one less than the number of logical | |
| processors sharing this cache, which is | |
| returned by the num_shared return value. | |
| @return R9 Unsigned integer that returns the number of | |
| logical processors that share the processor | |
| cache level and type, for which information was | |
| requested. | |
| @return R10 The format of PAL_PCOC_N_CACHE_INFO1. | |
| @return R11 The format of PAL_PCOC_N_CACHE_INFO2. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_CACHE_SHARED_INFO 43 | |
| /** | |
| PAL Procedure - PAL_CACHE_SUMMARY. | |
| Return a summary of the cache hierarchy. It is required by | |
| IPF. The PAL procedure supports the Static Registers calling | |
| convention. It could be called at physical mode and Virtual | |
| mode. | |
| @param Index Index of PAL_CACHE_SUMMARY within the list of | |
| PAL procedures. | |
| @return R9 CacheLevels Unsigned 64-bit integer denoting the | |
| number of levels of cache | |
| implemented by the processor. | |
| Strictly, this is the number of | |
| levels for which the cache | |
| controller is integrated into the | |
| processor (the cache SRAMs may be | |
| external to the processor). | |
| @return R10 UniqueCaches Unsigned 64-bit integer denoting the | |
| number of unique caches implemented | |
| by the processor. This has a maximum | |
| of 2*cache_levels, but may be less | |
| if any of the levels in the cache | |
| hierarchy are unified caches or do | |
| not have both instruction and data | |
| caches. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_CACHE_SUMMARY 4 | |
| // | |
| // Virtual Memory Attributes implemented by processor. | |
| // | |
| #define PAL_MEMORY_ATTR_WB 0 | |
| #define PAL_MEMORY_ATTR_WC 6 | |
| #define PAL_MEMORY_ATTR_UC 4 | |
| #define PAL_MEMORY_ATTR_UCE 5 | |
| #define PAL_MEMORY_ATTR_NATPAGE 7 | |
| /** | |
| PAL Procedure - PAL_MEM_ATTRIB. | |
| Return a list of supported memory attributes.. It is required | |
| by IPF. The PAL procedure supports the Static Registers calling | |
| convention. It could be called at physical mode and Virtual | |
| mode. | |
| @param Index Index of PAL_MEM_ATTRIB within the list of PAL | |
| procedures. | |
| @return R9 Attributes 8-bit vector of memory attributes | |
| implemented by processor. See Virtual | |
| Memory Attributes above. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_MEM_ATTRIB 5 | |
| /** | |
| PAL Procedure - PAL_PREFETCH_VISIBILITY. | |
| Used in architected sequence to transition pages from a | |
| cacheable, speculative attribute to an uncacheable attribute. | |
| It is required by IPF. The PAL procedure supports the Static | |
| Registers calling convention. It could be called at physical | |
| mode and Virtual mode. | |
| @param Index Index of PAL_PREFETCH_VISIBILITY within the list | |
| of PAL procedures. | |
| @param TransitionType Unsigned integer specifying the type | |
| of memory attribute transition that is | |
| being performed. | |
| @return Status 1 Call completed without error; this | |
| call is not necessary on remote | |
| processors. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_PREFETCH_VISIBILITY 41 | |
| /** | |
| PAL Procedure - PAL_PTCE_INFO. | |
| Return information needed for ptc.e instruction to purge | |
| entire TC. It is required by IPF. The PAL procedure supports | |
| the Static Registers calling convention. It could be called at | |
| physical mode and Virtual mode. | |
| @param Index Index of PAL_PTCE_INFO within the list | |
| of PAL procedures. | |
| @return R9 Unsigned 64-bit integer denoting the beginning | |
| address to be used by the first PTCE instruction | |
| in the purge loop. | |
| @return R10 Two unsigned 32-bit integers denoting the loop | |
| counts of the outer (loop 1) and inner (loop 2) | |
| purge loops. count1 (loop 1) is contained in bits | |
| 63:32 of the parameter, and count2 (loop 2) is | |
| contained in bits 31:0 of the parameter. | |
| @return R11 Two unsigned 32-bit integers denoting the loop | |
| strides of the outer (loop 1) and inner (loop 2) | |
| purge loops. stride1 (loop 1) is contained in bits | |
| 63:32 of the parameter, and stride2 (loop 2) is | |
| contained in bits 31:0 of the parameter. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_PTCE_INFO 6 | |
| /** | |
| @param NumberSets Unsigned 8-bit integer denoting the number | |
| of hash sets for the specified level | |
| (1=fully associative) | |
| @param NumberWays Unsigned 8-bit integer denoting the | |
| associativity of the specified level | |
| (1=direct). | |
| @param NumberEntries Unsigned 16-bit integer denoting the | |
| number of entries in the specified TC. | |
| @param PageSizeIsOptimized Flag denoting whether the | |
| specified level is optimized for | |
| the region's preferred page size | |
| (1=optimized) tc_pages indicates | |
| which page sizes are usable by | |
| this translation cache. | |
| @param TcIsUnified Flag denoting whether the specified TC is | |
| unified (1=unified). | |
| @param EntriesReduction Flag denoting whether installed | |
| translation registers will reduce | |
| the number of entries within the | |
| specified TC. | |
| **/ | |
| typedef struct { | |
| UINT64 NumberSets:8; | |
| UINT64 NumberWays:8; | |
| UINT64 NumberEntries:16; | |
| UINT64 PageSizeIsOptimized:1; | |
| UINT64 TcIsUnified:1; | |
| UINT64 EntriesReduction:1; | |
| } PAL_TC_INFO; | |
| /** | |
| PAL Procedure - PAL_VM_INFO. | |
| Return detailed information about virtual memory features | |
| supported in the processor. It is required by IPF. The PAL | |
| procedure supports the Static Registers calling convention. It | |
| could be called at physical mode and Virtual mode. | |
| @param Index Index of PAL_VM_INFO within the list | |
| of PAL procedures. | |
| @param TcLevel Unsigned 64-bit integer specifying the level | |
| in the TLB hierarchy for which information is | |
| required. This value must be between 0 and one | |
| less than the value returned in the | |
| vm_info_1.num_tc_levels return value from | |
| PAL_VM_SUMMARY. | |
| @param TcType Unsigned 64-bit integer with a value of 1 for | |
| instruction translation cache and 2 for data | |
| or unified translation cache. All other values | |
| are reserved. | |
| @return R9 8-byte formatted value returning information | |
| about the specified TC. See PAL_TC_INFO above. | |
| @return R10 64-bit vector containing a bit for each page | |
| size supported in the specified TC, where bit | |
| position n indicates a page size of 2**n. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_VM_INFO 7 | |
| /** | |
| PAL Procedure - PAL_VM_PAGE_SIZE. | |
| Return virtual memory TC and hardware walker page sizes | |
| supported in the processor. It is required by IPF. The PAL | |
| procedure supports the Static Registers calling convention. It | |
| could be called at physical mode and Virtual mode. | |
| @param Index Index of PAL_VM_PAGE_SIZE within the list | |
| of PAL procedures. | |
| @return R9 64-bit vector containing a bit for each | |
| architected page size that is supported for | |
| TLB insertions and region registers. | |
| @return R10 64-bit vector containing a bit for each | |
| architected page size supported for TLB purge | |
| operations. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_VM_PAGE_SIZE 34 | |
| /** | |
| @param WalkerPresent 1-bit flag indicating whether a hardware | |
| TLB walker is implemented (1 = walker | |
| present). | |
| @param WidthOfPhysicalAddress Unsigned 7-bit integer | |
| denoting the number of bits of | |
| physical address implemented. | |
| @param WidthOfKey Unsigned 8-bit integer denoting the number | |
| of bits mplemented in the PKR.key field. | |
| @param MaxPkrIndex Unsigned 8-bit integer denoting the | |
| maximum PKR index (number of PKRs-1). | |
| @param HashTagId Unsigned 8-bit integer which uniquely | |
| identifies the processor hash and tag | |
| algorithm. | |
| @param MaxDtrIndex Unsigned 8 bit integer denoting the | |
| maximum data translation register index | |
| (number of dtr entries - 1). | |
| @param MaxItrIndex Unsigned 8 bit integer denoting the | |
| maximum instruction translation register | |
| index (number of itr entries - 1). | |
| @param NumberOfUniqueTc Unsigned 8-bit integer denoting the | |
| number of unique TCs implemented. | |
| This is a maximum of | |
| 2*num_tc_levels. | |
| @param NumberOfTcLevels Unsigned 8-bit integer denoting the | |
| number of TC levels. | |
| **/ | |
| typedef struct { | |
| UINT64 WalkerPresent:1; | |
| UINT64 WidthOfPhysicalAddress: 7; | |
| UINT64 WidthOfKey:8; | |
| UINT64 MaxPkrIndex:8; | |
| UINT64 HashTagId:8; | |
| UINT64 MaxDtrIndex:8; | |
| UINT64 MaxItrIndex:8; | |
| UINT64 NumberOfUniqueTc:8; | |
| UINT64 NumberOfTcLevels:8; | |
| } PAL_VM_INFO1; | |
| /** | |
| @param WidthOfVirtualAddress Unsigned 8-bit integer denoting | |
| is the total number of virtual | |
| address bits - 1. | |
| @param WidthOfRid Unsigned 8-bit integer denoting the number | |
| of bits implemented in the RR.rid field. | |
| @param MaxPurgedTlbs Unsigned 16 bit integer denoting the | |
| maximum number of concurrent outstanding | |
| TLB purges allowed by the processor. A | |
| value of 0 indicates one outstanding | |
| purge allowed. A value of 216-1 | |
| indicates no limit on outstanding | |
| purges. All other values indicate the | |
| actual number of concurrent outstanding | |
| purges allowed. | |
| **/ | |
| typedef struct { | |
| UINT64 WidthOfVirtualAddress:8; | |
| UINT64 WidthOfRid:8; | |
| UINT64 MaxPurgedTlbs:16; | |
| UINT64 Reserved:32; | |
| } PAL_VM_INFO2; | |
| /** | |
| PAL Procedure - PAL_VM_SUMMARY. | |
| Return summary information about virtual memory features | |
| supported in the processor. It is required by IPF. The PAL | |
| procedure supports the Static Registers calling convention. It | |
| could be called at physical mode and Virtual mode. | |
| @param Index Index of PAL_VM_SUMMARY within the list | |
| of PAL procedures. | |
| @return R9 8-byte formatted value returning global virtual | |
| memory information. See PAL_VM_INFO1 above. | |
| @return R10 8-byte formatted value returning global virtual | |
| memory information. See PAL_VM_INFO2 above. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_VM_SUMMARY 8 | |
| // | |
| // Bit mask of TR_valid flag. | |
| // | |
| #define PAL_TR_ACCESS_RIGHT_IS_VALID BIT0 | |
| #define PAL_TR_PRIVILEGE_LEVEL_IS_VALID BIT1 | |
| #define PAL_TR_DIRTY_IS_VALID BIT2 | |
| #define PAL_TR_MEMORY_ATTR_IS_VALID BIT3 | |
| /** | |
| PAL Procedure - PAL_VM_TR_READ. | |
| Read contents of a translation register. It is required by | |
| IPF. The PAL procedure supports the Stacked Register calling | |
| convention. It could be called at physical mode. | |
| @param Index Index of PAL_VM_TR_READ within the list | |
| of PAL procedures. | |
| @param RegNumber Unsigned 64-bit number denoting which TR to | |
| read. | |
| @param TrType Unsigned 64-bit number denoting whether to | |
| read an ITR (0) or DTR (1). All other values | |
| are reserved. | |
| @param TrBuffer 64-bit pointer to the 32-byte memory buffer in | |
| which translation data is returned. | |
| @return R9 Formatted bit vector denoting which fields are | |
| valid. See TR_valid above. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_VM_TR_READ 261 | |
| // | |
| // Bit Mask of Processor Bus Fesatures . | |
| // | |
| /** | |
| When 0, bus data errors are detected and single bit errors are | |
| corrected. When 1, no error detection or correction is done. | |
| **/ | |
| #define PAL_BUS_DISABLE_DATA_ERROR_SIGNALLING BIT63 | |
| /** | |
| When 0, bus address errors are signalled on the bus. When 1, | |
| no bus errors are signalled on the bus. If Disable Bus Address | |
| Error Checking is 1, this bit is ignored. | |
| **/ | |
| #define PAL_BUS_DISABLE_ADDRESS_ERROR_SIGNALLING BIT62 | |
| /** | |
| When 0, bus errors are detected, single bit errors are | |
| corrected., and a CMCI or MCA is generated internally to the | |
| processor. When 1, no bus address errors are detected or | |
| corrected. | |
| **/ | |
| #define PAL_BUS_DISABLE_ADDRESS_ERROR_CHECK BIT61 | |
| /** | |
| When 0, bus protocol errors (BINIT#) are signaled by the | |
| processor on the bus. When 1, bus protocol errors (BINIT#) are | |
| not signaled on the bus. If Disable Bus Initialization Event | |
| Checking is 1, this bit is ignored. | |
| **/ | |
| #define PAL_BUS_DISABLE_INITIALIZATION_EVENT_SIGNALLING BIT60 | |
| /** | |
| When 0, bus protocol errors (BINIT#) are detected and sampled | |
| and an MCA is generated internally to the processor. When 1, | |
| the processor will ignore bus protocol error conditions | |
| (BINIT#). | |
| **/ | |
| #define PAL_BUS_DISABLE_INITIALIZATION_EVENT_CHECK BIT59 | |
| /** | |
| When 0, BERR# is signalled if a bus error is detected. When 1, | |
| bus errors are not signalled on the bus. | |
| **/ | |
| #define PAL_BUS_DISABLE_ERROR_SIGNALLING BIT58 | |
| /** | |
| When 0, BERR# is signalled when internal processor requestor | |
| initiated bus errors are detected. When 1, internal requester | |
| bus errors are not signalled on the bus. | |
| **/ | |
| #define PAL_BUS_DISABLE__INTERNAL_ERROR_SIGNALLING BIT57 | |
| /** | |
| When 0, the processor takes an MCA if BERR# is asserted. When | |
| 1, the processor ignores the BERR# signal. | |
| **/ | |
| #define PAL_BUS_DISABLE_ERROR_CHECK BIT56 | |
| /** | |
| When 0, the processor asserts BINIT# if it detects a parity | |
| error on the signals which identify the transactions to which | |
| this is a response. When 1, the processor ignores parity on | |
| these signals. | |
| **/ | |
| #define PAL_BUS_DISABLE_RSP_ERROR_CHECK BIT55 | |
| /** | |
| When 0, the in-order transaction queue is limited only by the | |
| number of hardware entries. When 1, the processor's in-order | |
| transactions queue is limited to one entry. | |
| **/ | |
| #define PAL_BUS_DISABLE_TRANSACTION_QUEUE BIT54 | |
| /** | |
| Enable a bus cache line replacement transaction when a cache | |
| line in the exclusive state is replaced from the highest level | |
| processor cache and is not present in the lower level processor | |
| caches. When 0, no bus cache line replacement transaction will | |
| be seen on the bus. When 1, bus cache line replacement | |
| transactions will be seen on the bus when the above condition is | |
| detected. | |
| **/ | |
| #define PAL_BUS_ENABLE_EXCLUSIVE_CACHE_LINE_REPLACEMENT BIT53 | |
| /** | |
| Enable a bus cache line replacement transaction when a cache | |
| line in the shared or exclusive state is replaced from the | |
| highest level processor cache and is not present in the lower | |
| level processor caches. | |
| When 0, no bus cache line replacement transaction will be seen | |
| on the bus. When 1, bus cache line replacement transactions | |
| will be seen on the bus when the above condition is detected. | |
| **/ | |
| #define PAL_BUS_ENABLE_SHARED_CACHE_LINE_REPLACEMENT BIT52 | |
| /** | |
| When 0, the data bus is configured at the 2x data transfer | |
| rate.When 1, the data bus is configured at the 1x data | |
| transfer rate, 30 Opt. Req. Disable Bus Lock Mask. When 0, the | |
| processor executes locked transactions atomically. When 1, the | |
| processor masks the bus lock signal and executes locked | |
| transactions as a non-atomic series of transactions. | |
| **/ | |
| #define PAL_BUS_ENABLE_HALF_TRANSFER BIT30 | |
| /** | |
| When 0, the processor will deassert bus request when finished | |
| with each transaction. When 1, the processor will continue to | |
| assert bus request after it has finished, if it was the last | |
| agent to own the bus and if there are no other pending | |
| requests. | |
| **/ | |
| #define PAL_BUS_REQUEST_BUS_PARKING BIT29 | |
| /** | |
| PAL Procedure - PAL_BUS_GET_FEATURES. | |
| Return configurable processor bus interface features and their | |
| current settings. It is required by IPF. The PAL procedure | |
| supports the Stacked Register calling convention. It could be | |
| called at physical mode. | |
| @param Index Index of PAL_BUS_GET_FEATURES within the list | |
| of PAL procedures. | |
| @return R9 64-bit vector of features implemented. | |
| (1=implemented, 0=not implemented) | |
| @return R10 64-bit vector of current feature settings. | |
| @return R11 64-bit vector of features controllable by | |
| software. (1=controllable, 0= not controllable) | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_BUS_GET_FEATURES 9 | |
| /** | |
| PAL Procedure - PAL_BUS_SET_FEATURES. | |
| Enable or disable configurable features in processor bus | |
| interface. It is required by IPF. It is required by IPF. The PAL procedure | |
| supports the Static Registers calling convention. It could be | |
| called at physical mode. | |
| @param Index Index of PAL_BUS_SET_FEATURES within the list | |
| of PAL procedures. | |
| @param FeatureSelect 64-bit vector denoting desired state of | |
| each feature (1=select, 0=non-select). | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_BUS_SET_FEATURES 10 | |
| /** | |
| PAL Procedure - PAL_DEBUG_INFO. | |
| Return the number of instruction and data breakpoint | |
| registers. It is required by IPF. It is required by IPF. The | |
| PAL procedure supports the Static Registers calling | |
| convention. It could be called at physical mode and virtual | |
| mode. | |
| @param Index Index of PAL_DEBUG_INFO within the list of PAL | |
| procedures. | |
| @return R9 Unsigned 64-bit integer denoting the number of | |
| pairs of instruction debug registers implemented | |
| by the processor. | |
| @return R10 Unsigned 64-bit integer denoting the number of | |
| pairs of data debug registers implemented by the | |
| processor. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_DEBUG_INFO 11 | |
| /** | |
| PAL Procedure - PAL_FIXED_ADDR. | |
| Return the fixed component of a processor¡¯s directed address. | |
| It is required by IPF. It is required by IPF. The PAL | |
| procedure supports the Static Registers calling convention. It | |
| could be called at physical mode and virtual mode. | |
| @param Index Index of PAL_FIXED_ADDR within the list of PAL | |
| procedures. | |
| @return R9 Fixed geographical address of this processor. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_FIXED_ADDR 12 | |
| /** | |
| PAL Procedure - PAL_FREQ_BASE. | |
| Return the frequency of the output clock for use by the | |
| platform, if generated by the processor. It is optinal. The | |
| PAL procedure supports the Static Registers calling | |
| convention. It could be called at physical mode and virtual | |
| mode. | |
| @param Index Index of PAL_FREQ_BASE within the list of PAL | |
| procedures. | |
| @return R9 Base frequency of the platform if generated by the | |
| processor chip. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_FREQ_BASE 13 | |
| /** | |
| PAL Procedure - PAL_FREQ_RATIOS. | |
| Return ratio of processor, bus, and interval time counter to | |
| processor input clock or output clock for platform use, if | |
| generated by the processor. It is required by IPF. The PAL | |
| procedure supports the Static Registers calling convention. It | |
| could be called at physical mode and virtual mode. | |
| @param Index Index of PAL_FREQ_RATIOS within the list of PAL | |
| procedures. | |
| @return R9 Ratio of the processor frequency to the input | |
| clock of the processor, if the platform clock is | |
| generated externally or to the output clock to the | |
| platform, if the platform clock is generated by | |
| the processor. | |
| @return R10 Ratio of the bus frequency to the input clock of | |
| the processor, if the platform clock is generated | |
| externally or to the output clock to the platform, | |
| if the platform clock is generated by the | |
| processor. | |
| @return R11 Ratio of the interval timer counter rate to input | |
| clock of the processor, if the platform clock is | |
| generated externally or to the output clock to the | |
| platform, if the platform clock is generated by | |
| the processor. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_FREQ_RATIOS 14 | |
| /** | |
| @param NumberOfLogicalProcessors Total number of logical | |
| processors on this physical | |
| processor package that are | |
| enabled. | |
| @param ThreadsPerCore Number of threads per core. | |
| @param CoresPerProcessor Total number of cores on this | |
| physical processor package. | |
| @param PhysicalProcessorPackageId Physical processor package | |
| identifier which was | |
| assigned at reset by the | |
| platform or bus | |
| controller. This value may | |
| or may not be unique | |
| across the entire platform | |
| since it depends on the | |
| platform vendor's policy. | |
| **/ | |
| typedef struct { | |
| UINT64 NumberOfLogicalProcessors:16; | |
| UINT64 ThreadsPerCore:8; | |
| UINT64 Reserved1:8; | |
| UINT64 CoresPerProcessor; | |
| UINT64 Reserved2:8; | |
| UINT64 PhysicalProcessorPackageId:8; | |
| UINT64 Reserved3:8; | |
| } PAL_LOGICAL_PROCESSPR_OVERVIEW; | |
| /** | |
| @param ThreadId The thread identifier of the logical | |
| processor for which information is being | |
| returned. This value will be unique on a per | |
| core basis. | |
| @param CoreId The core identifier of the logical processor | |
| for which information is being returned. | |
| This value will be unique on a per physical | |
| processor package basis. | |
| **/ | |
| typedef struct { | |
| UINT64 ThreadId:16; | |
| UINT64 Reserved1:16; | |
| UINT64 CoreId:16; | |
| UINT64 Reserved2:16; | |
| } PAL_LOGICAL_PROCESSORN_INFO1; | |
| /** | |
| @param LogicalAddress Geographical address of the logical | |
| processor for which information is being | |
| returned. This is the same value that is | |
| returned by the PAL_FIXED_ADDR procedure | |
| when it is called on the logical | |
| processor. | |
| **/ | |
| typedef struct { | |
| UINT64 LogicalAddress:16; | |
| UINT64 Reserved:48; | |
| } PAL_LOGICAL_PROCESSORN_INFO2; | |
| /** | |
| PAL Procedure - PAL_LOGICAL_TO_PHYSICAL. | |
| Return information on which logical processors map to a | |
| physical processor die. It is optinal. The PAL procedure | |
| supports the Static Registers calling convention. It could be | |
| called at physical mode and virtual mode. | |
| @param Index Index of PAL_LOGICAL_TO_PHYSICAL within the list of PAL | |
| procedures. | |
| @param ProcessorNumber Signed 64-bit integer that specifies | |
| for which logical processor | |
| information is being requested. When | |
| this input argument is -1, information | |
| is returned about the logical | |
| processor on which the procedure call | |
| is made. This input argument must be | |
| in the range of 1 up to one less than | |
| the number of logical processors | |
| returned by num_log in the | |
| log_overview return value. | |
| @return R9 The format of PAL_LOGICAL_PROCESSPR_OVERVIEW. | |
| @return R10 The format of PAL_LOGICAL_PROCESSORN_INFO1. | |
| @return R11 The format of PAL_LOGICAL_PROCESSORN_INFO2. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_LOGICAL_TO_PHYSICAL 42 | |
| /** | |
| @param NumberOfPmcPairs Unsigned 8-bit number defining the | |
| number of generic PMC/PMD pairs. | |
| @param WidthOfCounter Unsigned 8-bit number in the range | |
| 0:60 defining the number of | |
| implemented counter bits. | |
| @param TypeOfCycleCounting Unsigned 8-bit number defining the | |
| event type for counting processor | |
| cycles. | |
| @param TypeOfRetiredInstructionBundle Retired Unsigned 8-bit | |
| number defining the | |
| event type for retired | |
| instruction bundles. | |
| **/ | |
| typedef struct { | |
| UINT64 NumberOfPmcPairs:8; | |
| UINT64 WidthOfCounter:8; | |
| UINT64 TypeOfCycleCounting:8; | |
| UINT64 TypeOfRetiredInstructionBundle:8; | |
| UINT64 Reserved:32; | |
| } PAL_PERFORMANCE_INFO; | |
| /** | |
| PAL Procedure - PAL_PERF_MON_INFO. | |
| Return the number and type of performance monitors. It is | |
| required by IPF. The PAL procedure supports the Static | |
| Registers calling convention. It could be called at physical | |
| mode and virtual mode. | |
| @param Index Index of PAL_PERF_MON_INFO within the list of | |
| PAL procedures. | |
| @param PerformanceBuffer An address to an 8-byte aligned | |
| 128-byte memory buffer. | |
| @return R9 Information about the performance monitors | |
| implemented. See PAL_PERFORMANCE_INFO; | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_PERF_MON_INFO 15 | |
| #define PAL_PLATFORM_ADDR_INTERRUPT_BLOCK_TOKEN 0x0 | |
| #define PAL_PLATFORM_ADDR_IO_BLOCK_TOKEN 0x1 | |
| /** | |
| PAL Procedure - PAL_PLATFORM_ADDR. | |
| Specify processor interrupt block address and I/O port space | |
| address. It is required by IPF. The PAL procedure supports the | |
| Static Registers calling convention. It could be called at | |
| physical mode and virtual mode. | |
| @param Index Index of PAL_PLATFORM_ADDR within the list of | |
| PAL procedures. | |
| @param Type Unsigned 64-bit integer specifying the type of | |
| block. 0 indicates that the processor interrupt | |
| block pointer should be initialized. 1 indicates | |
| that the processor I/O block pointer should be | |
| initialized. | |
| @param Address Unsigned 64-bit integer specifying the address | |
| to which the processor I/O block or interrupt | |
| block shall be set. The address must specify | |
| an implemented physical address on the | |
| processor model, bit 63 is ignored. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure. | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_PLATFORM_ADDR 16 | |
| /** | |
| @param EnableBerrPromotion Bit63. Enable BERR promotion. When | |
| 1, the Bus Error (BERR) signal is | |
| promoted to the Bus Initialization | |
| (BINIT) signal, and the BINIT pin | |
| is asserted on the occurrence of | |
| each Bus Error. Setting this bit | |
| has no effect if BINIT signalling | |
| is disabled. (See | |
| PAL_BUS_GET/SET_FEATURES) | |
| @param EnableMcaPromotion Bit62, Enable MCA promotion. When | |
| 1, machine check aborts (MCAs) are | |
| promoted to the Bus Error signal, | |
| and the BERR pin is assert on each | |
| occurrence of an MCA. Setting this | |
| bit has no effect if BERR | |
| signalling is disabled. (See | |
| PAL_BUS_GET/SET_FEATURES) | |
| @param EnableMcaToBinitPromotion Bit61, Enable MCA to BINIT | |
| promotion. When 1, machine | |
| check aborts (MCAs) are | |
| promoted to the Bus | |
| Initialization signal, and | |
| the BINIT pin is assert on | |
| each occurrence of an MCA. | |
| Setting this bit has no | |
| effect if BINIT signalling | |
| is disabled. (See | |
| PAL_BUS_GET/SET_FEATURES) | |
| @param EnableCmciPromotion Bit60, Enable CMCI promotion When | |
| 1, Corrected Machine Check | |
| Interrupts (CMCI) are promoted to | |
| MCAs. They are also further | |
| promoted to BERR if bit 39, Enable | |
| MCA promotion, is also set and | |
| they are promoted to BINIT if bit | |
| 38, Enable MCA to BINIT promotion, | |
| is also set. This bit has no | |
| effect if MCA signalling is | |
| disabled (see | |
| PAL_BUS_GET/SET_FEATURES) | |
| @param DisableCache Bit59, Disable Cache. When 0, the | |
| processor performs cast outs on | |
| cacheable pages and issues and responds | |
| to coherency requests normally. When 1, | |
| the processor performs a memory access | |
| for each reference regardless of cache | |
| contents and issues no coherence | |
| requests and responds as if the line | |
| were not present. Cache contents cannot | |
| be relied upon when the cache is | |
| disabled. WARNING: Semaphore | |
| instructions may not be atomic or may | |
| cause Unsupported Data Reference faults | |
| if caches are disabled. | |
| @param DisableCoherency Bit58, Disable Coherency. When 0, | |
| the processor uses normal coherency | |
| requests and responses. When 1, the | |
| processor answers all requests as if | |
| the line were not present. | |
| @param DisableDPM Bit57, Disable Dynamic Power Management | |
| (DPM). When 0, the hardware may reduce | |
| power consumption by removing the clock | |
| input from idle functional units. When 1, | |
| all functional units will receive clock | |
| input, even when idle. | |
| @param DisableBinitWithTimeout Bit56, Disable a BINIT on | |
| internal processor time-out. | |
| When 0, the processor may | |
| generate a BINIT on an | |
| internal processor time-out. | |
| When 1, the processor will not | |
| generate a BINIT on an | |
| internal processor time-out. | |
| The event is silently ignored. | |
| @param EnableEnvNotification Bit55, Enable external | |
| notification when the processor | |
| detects hardware errors caused | |
| by environmental factors that | |
| could cause loss of | |
| deterministic behavior of the | |
| processor. When 1, this bit will | |
| enable external notification, | |
| when 0 external notification is | |
| not provided. The type of | |
| external notification of these | |
| errors is processor-dependent. A | |
| loss of processor deterministic | |
| behavior is considered to have | |
| occurred if these | |
| environmentally induced errors | |
| cause the processor to deviate | |
| from its normal execution and | |
| eventually causes different | |
| behavior which can be observed | |
| at the processor bus pins. | |
| Processor errors that do not | |
| have this effects (i.e., | |
| software induced machine checks) | |
| may or may not be promoted | |
| depending on the processor | |
| implementation. | |
| @param EnableVmsw Bit54, Enable the use of the vmsw | |
| instruction. When 0, the vmsw instruction | |
| causes a Virtualization fault when | |
| executed at the most privileged level. | |
| When 1, this bit will enable normal | |
| operation of the vmsw instruction. | |
| @param EnableMcaOnDataPoisoning Bit53, Enable MCA signaling | |
| on data-poisoning event | |
| detection. When 0, a CMCI | |
| will be signaled on error | |
| detection. When 1, an MCA | |
| will be signaled on error | |
| detection. If this feature | |
| is not supported, then the | |
| corresponding argument is | |
| ignored when calling | |
| PAL_PROC_SET_FEATURES. Note | |
| that the functionality of | |
| this bit is independent of | |
| the setting in bit 60 | |
| (Enable CMCI promotion), and | |
| that the bit 60 setting does | |
| not affect CMCI signaling | |
| for data-poisoning related | |
| events. Volume 2: Processor | |
| Abstraction Layer 2:431 | |
| PAL_PROC_GET_FEATURES | |
| @param DisablePState Bit52, Disable P-states. When 1, the PAL | |
| P-state procedures (PAL_PSTATE_INFO, | |
| PAL_SET_PSTATE, PAL_GET_PSTATE) will | |
| return with a status of -1 | |
| (Unimplemented procedure). | |
| @param DisableBranchPrediction Bit47, Disable Dynamic branch | |
| prediction. When 0, the | |
| processor may predict branch | |
| targets and speculatively | |
| execute, but may not commit | |
| results. When 1, the processor | |
| must wait until branch targets | |
| are known to execute. | |
| @param DisableDynamicInsCachePrefetch Bit46, Disable | |
| DynamicInstruction Cache | |
| Prefetch. When 0, the | |
| processor may prefetch | |
| into the caches any | |
| instruction which has | |
| not been executed, but | |
| whose execution is | |
| likely. When 1, | |
| instructions may not be | |
| fetched until needed or | |
| hinted for execution. | |
| (Prefetch for a hinted | |
| branch is allowed even | |
| when dynamic instruction | |
| cache prefetch is | |
| disabled.) | |
| @param DisableDynamicDataCachePrefetch Bit45, Disable Dynamic | |
| Data Cache Prefetch. | |
| When 0, the processor | |
| may prefetch into the | |
| caches any data which | |
| has not been accessed | |
| by instruction | |
| execution, but which | |
| is likely to be | |
| accessed. When 1, no | |
| data may be fetched | |
| until it is needed for | |
| instruction execution | |
| or is fetched by an | |
| lfetch instruction. | |
| @param DisableSpontaneousDeferral Bit44, Disable Spontaneous | |
| Deferral. When 1, the | |
| processor may optionally | |
| defer speculative loads | |
| that do not encounter any | |
| exception conditions, but | |
| that trigger other | |
| implementation-dependent | |
| conditions (e.g., cache | |
| miss). When 0, spontaneous | |
| deferral is disabled. | |
| @param DisableDynamicPrediction Bit43, Disable Dynamic | |
| Predicate Prediction. When | |
| 0, the processor may predict | |
| predicate results and | |
| execute speculatively, but | |
| may not commit results until | |
| the actual predicates are | |
| known. When 1, the processor | |
| shall not execute predicated | |
| instructions until the | |
| actual predicates are known. | |
| @param NoXr1ThroughXr3 Bit42, No XR1 through XR3 implemented. | |
| Denotes whether XR1 XR3 are | |
| implemented for machine check | |
| recovery. This feature may only be | |
| interrogated by PAL_PROC_GET_FEATURES. | |
| It may not be enabled or disabled by | |
| PAL_PROC_SET_FEATURES. The | |
| corresponding argument is ignored. | |
| @param NoXipXpsrXfs Bit41, No XIP, XPSR, and XFS | |
| implemented. Denotes whether XIP, XPSR, | |
| and XFS are implemented for machine | |
| check recovery. This feature may only be | |
| interrogated by PAL_PROC_GET_FEATURES. | |
| It may not be enabled or disabled by | |
| PAL_PROC_SET_FEATURES. The corresponding | |
| argument is ignored. | |
| @param NoVM Bit40, No Virtual Machine features implemented. | |
| Denotes whether PSR.vm is implemented. This | |
| feature may only be interrogated by | |
| PAL_PROC_GET_FEATURES. It may not be enabled or | |
| disabled by PAL_PROC_SET_FEATURES. The | |
| corresponding argument is ignored. | |
| @param NoVariablePState Bit39, No Variable P-state | |
| performance: A value of 1, indicates | |
| that a processor implements | |
| techniques to optimize performance | |
| for the given P-state power budget | |
| by dynamically varying the | |
| frequency, such that maximum | |
| performance is achieved for the | |
| power budget. A value of 0, | |
| indicates that P-states have no | |
| frequency variation or very small | |
| frequency variations for their given | |
| power budget. This feature may only | |
| be interrogated by | |
| PAL_PROC_GET_FEATURES. it may not be | |
| enabled or disabled by | |
| PAL_PROC_SET_FEATURES. The | |
| corresponding argument is ignored. | |
| @param NoSimpleImpInUndefinedIns Bit38, No Simple | |
| implementation of | |
| unimplemented instruction | |
| addresses. Denotes how an | |
| unimplemented instruction | |
| address is recorded in IIP | |
| on an Unimplemented | |
| Instruction Address trap or | |
| fault. When 1, the full | |
| unimplemented address is | |
| recorded in IIP; when 0, the | |
| address is sign extended | |
| (virtual addresses) or zero | |
| extended (physical | |
| addresses). This feature may | |
| only be interrogated by | |
| PAL_PROC_GET_FEATURES. It | |
| may not be enabled or | |
| disabled by | |
| PAL_PROC_SET_FEATURES. The | |
| corresponding argument is | |
| ignored. | |
| @param NoPresentPmi Bit37, No INIT, PMI, and LINT pins | |
| present. Denotes the absence of INIT, | |
| PMI, LINT0 and LINT1 pins on the | |
| processor. When 1, the pins are absent. | |
| When 0, the pins are present. This | |
| feature may only be interrogated by | |
| PAL_PROC_GET_FEATURES. It may not be | |
| enabled or disabled by | |
| PAL_PROC_SET_FEATURES. The corresponding | |
| argument is ignored. | |
| @param FaultInUndefinedIns Bit36, No Unimplemented | |
| instruction address reported as | |
| fault. Denotes how the processor | |
| reports the detection of | |
| unimplemented instruction | |
| addresses. When 1, the processor | |
| reports an Unimplemented | |
| Instruction Address fault on the | |
| unimplemented address; when 0, it | |
| reports an Unimplemented | |
| Instruction Address trap on the | |
| previous instruction in program | |
| order. This feature may only be | |
| interrogated by | |
| PAL_PROC_GET_FEATURES. It may not | |
| be enabled or disabled by | |
| PAL_PROC_SET_FEATURES. The | |
| corresponding argument is | |
| ignored. | |
| **/ | |
| typedef struct { | |
| UINT64 Reserved1:36; | |
| UINT64 FaultInUndefinedIns:1; | |
| UINT64 NoPresentPmi:1; | |
| UINT64 NoSimpleImpInUndefinedIns:1; | |
| UINT64 NoVariablePState:1; | |
| UINT64 NoVM:1; | |
| UINT64 NoXipXpsrXfs:1; | |
| UINT64 NoXr1ThroughXr3:1; | |
| UINT64 DisableDynamicPrediction:1; | |
| UINT64 DisableSpontaneousDeferral:1; | |
| UINT64 DisableDynamicDataCachePrefetch:1; | |
| UINT64 DisableDynamicInsCachePrefetch:1; | |
| UINT64 DisableBranchPrediction:1; | |
| UINT64 Reserved2:4; | |
| UINT64 DisablePState:1; | |
| UINT64 EnableMcaOnDataPoisoning:1; | |
| UINT64 EnableVmsw:1; | |
| UINT64 EnableEnvNotification:1; | |
| UINT64 DisableBinitWithTimeout:1; | |
| UINT64 DisableDPM:1; | |
| UINT64 DisableCoherency:1; | |
| UINT64 DisableCache:1; | |
| UINT64 EnableCmciPromotion:1; | |
| UINT64 EnableMcaToBinitPromotion:1; | |
| UINT64 EnableMcaPromotion:1; | |
| UINT64 EnableBerrPromotion:1; | |
| } PAL_PROCESSOR_FEATURES; | |
| /** | |
| PAL Procedure - PAL_PROC_GET_FEATURES. | |
| Return configurable processor features and their current | |
| setting. It is required by IPF. The PAL procedure supports the | |
| Static Registers calling convention. It could be called at | |
| physical mode and virtual mode. | |
| @param Index Index of PAL_PROC_GET_FEATURES within the list of | |
| PAL procedures. | |
| @param Reserved Reserved parameter. | |
| @param FeatureSet Feature set information is being requested | |
| for. | |
| @return R9 64-bit vector of features implemented. See | |
| PAL_PROCESSOR_FEATURES. | |
| @return R10 64-bit vector of current feature settings. See | |
| PAL_PROCESSOR_FEATURES. | |
| @return R11 64-bit vector of features controllable by | |
| software. | |
| @return Status 1 - Call completed without error; The | |
| feature_set passed is not supported but a | |
| feature_set of a larger value is supported. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -8 - feature_set passed is beyond the maximum | |
| feature_set supported | |
| **/ | |
| #define PAL_PROC_GET_FEATURES 17 | |
| /** | |
| PAL Procedure - PAL_PROC_SET_FEATURES. | |
| Enable or disable configurable processor features. It is | |
| required by IPF. The PAL procedure supports the Static | |
| Registers calling convention. It could be called at physical | |
| mode. | |
| @param Index Index of PAL_PROC_SET_FEATURES within the list of | |
| PAL procedures. | |
| @param FeatureSelect 64-bit vector denoting desired state of | |
| each feature (1=select, 0=non-select). | |
| @param FeatureSet Feature set to apply changes to. See | |
| PAL_PROC_GET_FEATURES for more information | |
| on feature sets. | |
| @return Status 1 - Call completed without error; The | |
| feature_set passed is not supported but a | |
| feature_set of a larger value is supported | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -8 - feature_set passed is beyond the maximum | |
| feature_set supported | |
| **/ | |
| #define PAL_PROC_SET_FEATURES 18 | |
| // | |
| // Value of PAL_REGISTER_INFO.InfoRequest. | |
| // | |
| #define PAL_APPLICATION_REGISTER_IMPLEMENTED 0 | |
| #define PAL_APPLICATION_REGISTER_READABLE 1 | |
| #define PAL_CONTROL_REGISTER_IMPLEMENTED 2 | |
| #define PAL_CONTROL_REGISTER_READABLE 3 | |
| /** | |
| PAL Procedure - PAL_REGISTER_INFO. | |
| Return AR and CR register information. It is required by IPF. | |
| The PAL procedure supports the Static Registers calling | |
| convention. It could be called at physical mode and virtual | |
| mode. | |
| @param Index Index of PAL_REGISTER_INFO within the list of | |
| PAL procedures. | |
| @param InfoRequest Unsigned 64-bit integer denoting what | |
| register information is requested. See | |
| PAL_REGISTER_INFO.InfoRequest above. | |
| @return R9 64-bit vector denoting information for registers | |
| 0-63. Bit 0 is register 0, bit 63 is register 63. | |
| @return R10 64-bit vector denoting information for registers | |
| 64-127. Bit 0 is register 64, bit 63 is register | |
| 127. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_REGISTER_INFO 39 | |
| /** | |
| PAL Procedure - PAL_RSE_INFO. | |
| Return RSE information. It is required by IPF. The PAL | |
| procedure supports the Static Registers calling convention. It | |
| could be called at physical mode and virtual mode. | |
| @param Index Index of PAL_RSE_INFO within the list of | |
| PAL procedures. | |
| @param InfoRequest Unsigned 64-bit integer denoting what | |
| register information is requested. See | |
| PAL_REGISTER_INFO.InfoRequest above. | |
| @return R9 Number of physical stacked general registers. | |
| @return R10 RSE hints supported by processor. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_RSE_INFO 19 | |
| /** | |
| @param VersionOfPalB Is a 16-bit binary coded decimal (BCD) | |
| number that provides identification | |
| information about the PAL_B firmware. | |
| @param PalVendor Is an unsigned 8-bit integer indicating the | |
| vendor of the PAL code. | |
| @param VersionOfPalB Is a 16-bit binary coded decimal (BCD) | |
| number that provides identification | |
| information about the PAL_A firmware. In | |
| the split PAL_A model, this return value | |
| is the version number of the | |
| processor-specific PAL_A. The generic | |
| PAL_A version is not returned by this | |
| procedure in the split PAL_A model. | |
| **/ | |
| typedef struct { | |
| UINT64 VersionOfPalB:16; | |
| UINT64 Reserved1:8; | |
| UINT64 PalVendor:8; | |
| UINT64 VersionOfPalA:16; | |
| UINT64 Reserved2:16; | |
| } PAL_VERSION_INFO; | |
| /** | |
| PAL Procedure - PAL_VERSION. | |
| Return version of PAL code. It is required by IPF. The PAL | |
| procedure supports the Static Registers calling convention. It | |
| could be called at physical mode and virtual mode. | |
| @param Index Index of PAL_VERSION within the list of | |
| PAL procedures. | |
| @param InfoRequest Unsigned 64-bit integer denoting what | |
| register information is requested. See | |
| PAL_REGISTER_INFO.InfoRequest above. | |
| @return R9 8-byte formatted value returning the minimum PAL | |
| version needed for proper operation of the | |
| processor. See PAL_VERSION_INFO above. | |
| @return R10 8-byte formatted value returning the current PAL | |
| version running on the processor. See | |
| PAL_VERSION_INFO above. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_VERSION 20 | |
| // | |
| // Vectors of PAL_MC_CLEAR_LOG.pending | |
| // | |
| #define PAL_MC_PENDING BIT0 | |
| #define PAL_INIT_PENDING BIT1 | |
| /** | |
| PAL Procedure - PAL_MC_CLEAR_LOG. | |
| Clear all error information from processor error logging | |
| registers. It is required by IPF. The PAL procedure supports | |
| the Static Registers calling convention. It could be called at | |
| physical mode and virtual mode. | |
| @param Index Index of PAL_MC_CLEAR_LOG within the list of | |
| PAL procedures. | |
| @return R9 64-bit vector denoting whether an event is | |
| pending. See PAL_MC_CLEAR_LOG.pending above. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_MC_CLEAR_LOG 21 | |
| /** | |
| PAL Procedure - PAL_MC_DRAIN. | |
| Ensure that all operations that could cause an MCA have | |
| completed. It is required by IPF. The PAL procedure supports | |
| the Static Registers calling convention. It could be called at | |
| physical mode and virtual mode. | |
| @param Index Index of PAL_MC_DRAIN within the list of PAL | |
| procedures. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_MC_DRAIN 22 | |
| /** | |
| PAL Procedure - PAL_MC_DYNAMIC_STATE. | |
| Return Processor Dynamic State for logging by SAL. It is | |
| optional. The PAL procedure supports the Static Registers | |
| calling convention. It could be called at physical mode. | |
| @param Index Index of PAL_MC_DYNAMIC_STATE within the list of PAL | |
| procedures. | |
| @param Offset Offset of the next 8 bytes of Dynamic Processor | |
| State to return. (multiple of 8). | |
| @return R9 Unsigned 64-bit integer denoting bytes of Dynamic | |
| Processor State returned. | |
| @return R10 Next 8 bytes of Dynamic Processor State. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure. | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_MC_DYNAMIC_STATE 24 | |
| // | |
| // Values of PAL_MC_ERROR_INFO.InfoIndex. | |
| // | |
| #define PAL_PROCESSOR_ERROR_MAP 0 | |
| #define PAL_PROCESSOR_STATE_PARAM 1 | |
| #define PAL_STRUCTURE_SPECIFIC_ERROR 2 | |
| /** | |
| @param CoreId Bit3:0, Processor core ID (default is 0 for | |
| processors with a single core) | |
| @param ThreadId Bit7:4, Logical thread ID (default is 0 for | |
| processors that execute a single thread) | |
| @param InfoOfInsCache Bit11:8, Error information is | |
| available for 1st, 2nd, 3rd, and 4th | |
| level instruction caches. | |
| @param InfoOfDataCache Bit15:12, Error information is | |
| available for 1st, 2nd, 3rd, and 4th | |
| level data/unified caches. | |
| @param InfoOfInsTlb Bit19:16 Error information is available | |
| for 1st, 2nd, 3rd, and 4th level | |
| instruction TLB. | |
| @param InfoOfDataTlb Bit23:20, Error information is available | |
| for 1st, 2nd, 3rd, and 4th level | |
| data/unified TLB | |
| @param InfoOfProcessorBus Bit27:24 Error information is | |
| available for the 1st, 2nd, 3rd, | |
| and 4th level processor bus | |
| hierarchy. | |
| @param InfoOfRegisterFile Bit31:28 Error information is | |
| available on register file | |
| structures. | |
| @param InfoOfMicroArch Bit47:32, Error information is | |
| available on micro-architectural | |
| structures. | |
| **/ | |
| typedef struct { | |
| UINT64 CoreId:4; | |
| UINT64 ThreadId:4; | |
| UINT64 InfoOfInsCache:4; | |
| UINT64 InfoOfDataCache:4; | |
| UINT64 InfoOfInsTlb:4; | |
| UINT64 InfoOfDataTlb:4; | |
| UINT64 InfoOfProcessorBus:4; | |
| UINT64 InfoOfRegisterFile:4; | |
| UINT64 InfoOfMicroArch:4; | |
| UINT64 Reserved:16; | |
| } PAL_MC_ERROR_INFO_LEVEL_INDEX; | |
| // | |
| // Value of PAL_MC_ERROR_INFO.ErrorTypeIndex | |
| // | |
| #define PAL_ERR_INFO_BY_LEVEL_INDEX 0 | |
| #define PAL_ERR_INFO_TARGET_ADDRESS 1 | |
| #define PAL_ERR_INFO_REQUESTER_IDENTIFIER 2 | |
| #define PAL_ERR_INFO_REPONSER_INDENTIFIER 3 | |
| #define PAL_ERR_INFO_PRECISE_INSTRUCTION_POINTER 4 | |
| /** | |
| @param Operation Bit3:0, Type of cache operation that caused | |
| the machine check: 0 - unknown or internal | |
| error 1 - load 2 - store 3 - instruction | |
| fetch or instruction prefetch 4 - data | |
| prefetch (both hardware and software) 5 - | |
| snoop (coherency check) 6 - cast out | |
| (explicit or implicit write-back of a cache | |
| line) 7 - move in (cache line fill) | |
| @param FailedCacheLevel Bit5:4 Level of cache where the | |
| error occurred. A value of 0 | |
| indicates the first level of cache. | |
| @param FailedInDataPart Bit8, Failure located in the data | |
| part of the cache line. | |
| @param FailedInTagPart Bit9, Failure located in the tag part | |
| of the cache line. | |
| @param FailedInDataCache Bit10, Failure located in the data | |
| cache | |
| @param FailedInInsCache Bit11, Failure located in the | |
| instruction cache. | |
| @param Mesi Bit14:12, 0 - cache line is invalid. 1 - cache | |
| line is held shared. 2 - cache line is held | |
| exclusive. 3 - cache line is modified. All other | |
| values are reserved. | |
| @param MesiIsValid Bit15, The mesi field in the cache_check | |
| parameter is valid. | |
| @param FailedWay Bit20:16, Failure located in the way of | |
| the cache indicated by this value. | |
| @param WayIndexIsValid Bit21, The way and index field in the | |
| cache_check parameter is valid. | |
| @param MultipleBitsError Bit23, A multiple-bit error was | |
| detected, and data was poisoned for | |
| the corresponding cache line during | |
| castout. | |
| @param IndexOfCacheLineError Bit51:32, Index of the cache | |
| line where the error occurred. | |
| @param InstructionSet Bit54, Instruction set. If this value | |
| is set to zero, the instruction that | |
| generated the machine check was an | |
| Intel Itanium instruction. If this bit | |
| is set to one, the instruction that | |
| generated the machine check was IA-32 | |
| instruction. | |
| @param InstructionSetIsValid Bit55, The is field in the | |
| cache_check parameter is valid. | |
| @param PrivilegeLevel Bit57:56, Privilege level. The | |
| privilege level of the instruction | |
| bundle responsible for generating the | |
| machine check. | |
| @param PrivilegeLevelIsValide Bit58, The pl field of the | |
| cache_check parameter is | |
| valid. | |
| @param McCorrected Bit59, Machine check corrected: This bit | |
| is set to one to indicate that the machine | |
| check has been corrected. | |
| @param TargetAddressIsValid Bit60, Target address is valid: | |
| This bit is set to one to | |
| indicate that a valid target | |
| address has been logged. | |
| @param RequesterIdentifier Bit61, Requester identifier: This | |
| bit is set to one to indicate that | |
| a valid requester identifier has | |
| been logged. | |
| @param ResponserIdentifier Bit62, Responder identifier: This | |
| bit is set to one to indicate that | |
| a valid responder identifier has | |
| been logged. | |
| @param PreciseInsPointer Bit63, Precise instruction pointer. | |
| This bit is set to one to indicate | |
| that a valid precise instruction | |
| pointer has been logged. | |
| **/ | |
| typedef struct { | |
| UINT64 Operation:4; | |
| UINT64 FailedCacheLevel:2; | |
| UINT64 Reserved1:2; | |
| UINT64 FailedInDataPart:1; | |
| UINT64 FailedInTagPart:1; | |
| UINT64 FailedInDataCache:1; | |
| UINT64 FailedInInsCache:1; | |
| UINT64 Mesi:3; | |
| UINT64 MesiIsValid:1; | |
| UINT64 FailedWay:5; | |
| UINT64 WayIndexIsValid:1; | |
| UINT64 Reserved2:1; | |
| UINT64 MultipleBitsError:1; | |
| UINT64 Reserved3:8; | |
| UINT64 IndexOfCacheLineError:20; | |
| UINT64 Reserved4:2; | |
| UINT64 InstructionSet:1; | |
| UINT64 InstructionSetIsValid:1; | |
| UINT64 PrivilegeLevel:2; | |
| UINT64 PrivilegeLevelIsValide:1; | |
| UINT64 McCorrected:1; | |
| UINT64 TargetAddressIsValid:1; | |
| UINT64 RequesterIdentifier:1; | |
| UINT64 ResponserIdentifier:1; | |
| UINT64 PreciseInsPointer:1; | |
| } PAL_CACHE_CHECK_INFO; | |
| /** | |
| @param FailedSlot Bit7:0, Slot number of the translation | |
| register where the failure occurred. | |
| @param FailedSlotIsValid Bit8, The tr_slot field in the | |
| TLB_check parameter is valid. | |
| @param TlbLevel Bit11:10, The level of the TLB where the | |
| error occurred. A value of 0 indicates the | |
| first level of TLB | |
| @param FailedInDataTr Bit16, Error occurred in the data | |
| translation registers. | |
| @param FailedInInsTr Bit17, Error occurred in the instruction | |
| translation registers | |
| @param FailedInDataTc Bit18, Error occurred in data | |
| translation cache. | |
| @param FailedInInsTc Bit19, Error occurred in the instruction | |
| translation cache. | |
| @param FailedOperation Bit23:20, Type of cache operation that | |
| caused the machine check: 0 - unknown | |
| 1 - TLB access due to load instruction | |
| 2 - TLB access due to store | |
| instruction 3 - TLB access due to | |
| instruction fetch or instruction | |
| prefetch 4 - TLB access due to data | |
| prefetch (both hardware and software) | |
| 5 - TLB shoot down access 6 - TLB | |
| probe instruction (probe, tpa) 7 - | |
| move in (VHPT fill) 8 - purge (insert | |
| operation that purges entries or a TLB | |
| purge instruction) All other values | |
| are reserved. | |
| @param InstructionSet Bit54, Instruction set. If this value | |
| is set to zero, the instruction that | |
| generated the machine check was an | |
| Intel Itanium instruction. If this bit | |
| is set to one, the instruction that | |
| generated the machine check was IA-32 | |
| instruction. | |
| @param InstructionSetIsValid Bit55, The is field in the | |
| TLB_check parameter is valid. | |
| @param PrivelegeLevel Bit57:56, Privilege level. The | |
| privilege level of the instruction | |
| bundle responsible for generating the | |
| machine check. | |
| @param PrivelegeLevelIsValid Bit58, The pl field of the | |
| TLB_check parameter is valid. | |
| @param McCorrected Bit59, Machine check corrected: This bit | |
| is set to one to indicate that the machine | |
| check has been corrected. | |
| @param TargetAddressIsValid Bit60, Target address is valid: | |
| This bit is set to one to | |
| indicate that a valid target | |
| address has been logged. | |
| @param RequesterIdentifier Bit61 Requester identifier: This | |
| bit is set to one to indicate that | |
| a valid requester identifier has | |
| been logged. | |
| @param ResponserIdentifier Bit62, Responder identifier: This | |
| bit is set to one to indicate that | |
| a valid responder identifier has | |
| been logged. | |
| @param PreciseInsPointer Bit63 Precise instruction pointer. | |
| This bit is set to one to indicate | |
| that a valid precise instruction | |
| pointer has been logged. | |
| **/ | |
| typedef struct { | |
| UINT64 FailedSlot:8; | |
| UINT64 FailedSlotIsValid:1; | |
| UINT64 Reserved1 :1; | |
| UINT64 TlbLevel:2; | |
| UINT64 Reserved2 :4; | |
| UINT64 FailedInDataTr:1; | |
| UINT64 FailedInInsTr:1; | |
| UINT64 FailedInDataTc:1; | |
| UINT64 FailedInInsTc:1; | |
| UINT64 FailedOperation:4; | |
| UINT64 Reserved3:30; | |
| UINT64 InstructionSet:1; | |
| UINT64 InstructionSetIsValid:1; | |
| UINT64 PrivelegeLevel:2; | |
| UINT64 PrivelegeLevelIsValid:1; | |
| UINT64 McCorrected:1; | |
| UINT64 TargetAddressIsValid:1; | |
| UINT64 RequesterIdentifier:1; | |
| UINT64 ResponserIdentifier:1; | |
| UINT64 PreciseInsPointer:1; | |
| } PAL_TLB_CHECK_INFO; | |
| /** | |
| PAL Procedure - PAL_MC_ERROR_INFO. | |
| Return Processor Machine Check Information and Processor | |
| Static State for logging by SAL. It is required by IPF. The | |
| PAL procedure supports the Static Registers calling | |
| convention. It could be called at physical and virtual mode. | |
| @param Index Index of PAL_MC_ERROR_INFO within the list of PAL | |
| procedures. | |
| @param InfoIndex Unsigned 64-bit integer identifying the | |
| error information that is being requested. | |
| See PAL_MC_ERROR_INFO.InfoIndex. | |
| @param LevelIndex 8-byte formatted value identifying the | |
| structure to return error information | |
| on. See PAL_MC_ERROR_INFO_LEVEL_INDEX. | |
| @param ErrorTypeIndex Unsigned 64-bit integer denoting the | |
| type of error information that is | |
| being requested for the structure | |
| identified in LevelIndex. | |
| @return R9 Error information returned. The format of this | |
| value is dependant on the input values passed. | |
| @return R10 If this value is zero, all the error information | |
| specified by err_type_index has been returned. If | |
| this value is one, more structure-specific error | |
| information is available and the caller needs to | |
| make this procedure call again with level_index | |
| unchanged and err_type_index, incremented. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -6 - Argument was valid, but no error | |
| information was available | |
| **/ | |
| #define PAL_MC_ERROR_INFO 25 | |
| /** | |
| PAL Procedure - PAL_MC_EXPECTED. | |
| Set/Reset Expected Machine Check Indicator. It is required by | |
| IPF. The PAL procedure supports the Static Registers calling | |
| convention. It could be called at physical mode. | |
| @param Index Index of PAL_MC_EXPECTED within the list of PAL | |
| procedures. | |
| @param Expected Unsigned integer with a value of 0 or 1 to | |
| set or reset the hardware resource | |
| PALE_CHECK examines for expected machine | |
| checks. | |
| @return R9 Unsigned integer denoting whether a machine check | |
| was previously expected. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_MC_EXPECTED 23 | |
| /** | |
| PAL Procedure - PAL_MC_REGISTER_MEM. | |
| Register min-state save area with PAL for machine checks and | |
| inits. It is required by IPF. The PAL procedure supports the | |
| Static Registers calling convention. It could be called at | |
| physical mode. | |
| @param Index Index of PAL_MC_REGISTER_MEM within the list of PAL | |
| procedures. | |
| @param Address Physical address of the buffer to be | |
| registered with PAL. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_MC_REGISTER_MEM 27 | |
| /** | |
| PAL Procedure - PAL_MC_RESUME. | |
| Restore minimal architected state and return to interrupted | |
| process. It is required by IPF. The PAL procedure supports the | |
| Static Registers calling convention. It could be called at | |
| physical mode. | |
| @param Index Index of PAL_MC_RESUME within the list of PAL | |
| procedures. | |
| @param SetCmci Unsigned 64 bit integer denoting whether to | |
| set the CMC interrupt. A value of 0 indicates | |
| not to set the interrupt, a value of 1 | |
| indicated to set the interrupt, and all other | |
| values are reserved. | |
| @param SavePtr Physical address of min-state save area used | |
| to used to restore processor state. | |
| @param NewContext Unsigned 64-bit integer denoting whether | |
| the caller is returning to a new context. | |
| A value of 0 indicates the caller is | |
| returning to the interrupted context, a | |
| value of 1 indicates that the caller is | |
| returning to a new context. | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_MC_RESUME 26 | |
| /** | |
| PAL Procedure - PAL_HALT. | |
| Enter the low-power HALT state or an implementation-dependent | |
| low-power state. It is optinal. The PAL procedure supports the | |
| Static Registers calling convention. It could be called at | |
| physical mode. | |
| @param Index Index of PAL_HALT within the list of PAL | |
| procedures. | |
| @param HaltState Unsigned 64-bit integer denoting low power | |
| state requested. | |
| @param IoDetailPtr 8-byte aligned physical address pointer to | |
| information on the type of I/O | |
| (load/store) requested. | |
| @return R9 Value returned if a load instruction is requested | |
| in the io_detail_ptr | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_HALT 28 | |
| /** | |
| PAL Procedure - PAL_HALT_INFO. | |
| Return the low power capabilities of the processor. It is | |
| required by IPF. The PAL procedure supports the | |
| Stacked Registers calling convention. It could be called at | |
| physical and virtual mode. | |
| @param Index Index of PAL_HALT_INFO within the list of PAL | |
| procedures. | |
| @param PowerBuffer 64-bit pointer to a 64-byte buffer aligned | |
| on an 8-byte boundary. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_HALT_INFO 257 | |
| /** | |
| PAL Procedure - PAL_HALT_LIGHT. | |
| Enter the low power LIGHT HALT state. It is required by | |
| IPF. The PAL procedure supports the Static Registers calling | |
| convention. It could be called at physical and virtual mode. | |
| @param Index Index of PAL_HALT_LIGHT within the list of PAL | |
| procedures. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_HALT_LIGHT 29 | |
| /** | |
| PAL Procedure - PAL_CACHE_LINE_INIT. | |
| Initialize tags and data of a cache line for processor | |
| testing. It is required by IPF. The PAL procedure supports the | |
| Static Registers calling convention. It could be called at | |
| physical and virtual mode. | |
| @param Index Index of PAL_CACHE_LINE_INIT within the list of PAL | |
| procedures. | |
| @param Address Unsigned 64-bit integer value denoting the | |
| physical address from which the physical page | |
| number is to be generated. The address must be | |
| an implemented physical address, bit 63 must | |
| be zero. | |
| @param DataValue 64-bit data value which is used to | |
| initialize the cache line. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_CACHE_LINE_INIT 31 | |
| /** | |
| PAL Procedure - PAL_CACHE_READ. | |
| Read tag and data of a cache line for diagnostic testing. It | |
| is optional. The PAL procedure supports the | |
| Satcked Registers calling convention. It could be called at | |
| physical mode. | |
| @param Index Index of PAL_CACHE_READ within the list of PAL | |
| procedures. | |
| @param LineId 8-byte formatted value describing where in the | |
| cache to read the data. | |
| @param Address 64-bit 8-byte aligned physical address from | |
| which to read the data. The address must be an | |
| implemented physical address on the processor | |
| model with bit 63 set to zero. | |
| @return R9 Right-justified value returned from the cache | |
| line. | |
| @return R10 The number of bits returned in data. | |
| @return R11 The status of the cache line. | |
| @return Status 1 - The word at address was found in the | |
| cache, but the line was invalid. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -5 - The word at address was not found in the | |
| cache. | |
| @return Status -7 - The operation requested is not supported | |
| for this cache_type and level. | |
| **/ | |
| #define PAL_CACHE_READ 259 | |
| /** | |
| Write tag and data of a cache for diagnostic testing. It is | |
| optional. The PAL procedure supports the Satcked Registers | |
| calling convention. It could be called at physical mode. | |
| @param Index Index of PAL_CACHE_WRITE within the list of PAL | |
| procedures. | |
| @param LineId 8-byte formatted value describing where in the | |
| cache to write the data. | |
| @param Address 64-bit 8-byte aligned physical address at | |
| which the data should be written. The address | |
| must be an implemented physical address on the | |
| processor model with bit 63 set to 0. | |
| @param Data Unsigned 64-bit integer value to write into | |
| the specified part of the cache. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -7 - The operation requested is not supported | |
| for this cache_type and level. | |
| **/ | |
| #define PAL_CACHE_WRITE 260 | |
| /** | |
| PAL Procedure - PAL_TEST_INFO. | |
| Returns alignment and size requirements needed for the memory | |
| buffer passed to the PAL_TEST_PROC procedure as well as | |
| information on self-test control words for the processor self | |
| tests. It is required by IPF. The PAL procedure supports the | |
| Static Registers calling convention. It could be called at | |
| physical mode. | |
| @param Index Index of PAL_TEST_INFO within the list of PAL | |
| procedures. | |
| @param TestPhase Unsigned integer that specifies which phase | |
| of the processor self-test information is | |
| being requested on. A value of 0 indicates | |
| the phase two of the processor self-test and | |
| a value of 1 indicates phase one of the | |
| processor self-test. All other values are | |
| reserved. | |
| @return R9 Unsigned 64-bit integer denoting the number of | |
| bytes of main memory needed to perform the second | |
| phase of processor self-test. | |
| @return R10 Unsigned 64-bit integer denoting the alignment | |
| required for the memory buffer. | |
| @return R11 48-bit wide bit-field indicating if control of | |
| the processor self-tests is supported and which | |
| bits of the test_control field are defined for | |
| use. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_TEST_INFO 37 | |
| /** | |
| @param BufferSize Indicates the size in bytes of the memory | |
| buffer that is passed to this procedure. | |
| BufferSize must be greater than or equal in | |
| size to the bytes_needed return value from | |
| PAL_TEST_INFO, otherwise this procedure will | |
| return with an invalid argument return | |
| value. | |
| @param TestPhase Defines which phase of the processor | |
| self-tests are requested to be run. A value | |
| of zero indicates to run phase two of the | |
| processor self-tests. Phase two of the | |
| processor self-tests are ones that require | |
| external memory to execute correctly. A | |
| value of one indicates to run phase one of | |
| the processor self-tests. Phase one of the | |
| processor self-tests are tests run during | |
| PALE_RESET and do not depend on external | |
| memory to run correctly. When the caller | |
| requests to have phase one of the processor | |
| self-test run via this procedure call, a | |
| memory buffer may be needed to save and | |
| restore state as required by the PAL calling | |
| conventions. The procedure PAL_TEST_INFO | |
| informs the caller about the requirements of | |
| the memory buffer. | |
| **/ | |
| typedef struct { | |
| UINT64 BufferSize:56; | |
| UINT64 TestPhase:8; | |
| } PAL_TEST_INFO_INFO; | |
| /** | |
| @param TestControl This is an ordered implementation-specific | |
| control word that allows the user control | |
| over the length and runtime of the | |
| processor self-tests. This control word is | |
| ordered from the longest running tests up | |
| to the shortest running tests with bit 0 | |
| controlling the longest running test. PAL | |
| may not implement all 47-bits of the | |
| test_control word. PAL communicates if a | |
| bit provides control by placing a zero in | |
| that bit. If a bit provides no control, | |
| PAL will place a one in it. PAL will have | |
| two sets of test_control bits for the two | |
| phases of the processor self-test. PAL | |
| provides information about implemented | |
| test_control bits at the hand-off from PAL | |
| to SAL for the firmware recovery check. | |
| These test_control bits provide control | |
| for phase one of processor self-test. It | |
| also provides this information via the PAL | |
| procedure call PAL_TEST_INFO for both the | |
| phase one and phase two processor tests | |
| depending on which information the caller | |
| is requesting. PAL interprets these bits | |
| as input parameters on two occasions. The | |
| first time is when SAL passes control back | |
| to PAL after the firmware recovery check. | |
| The second time is when a call to | |
| PAL_TEST_PROC is made. When PAL interprets | |
| these bits it will only interpret | |
| implemented test_control bits and will | |
| ignore the values located in the | |
| unimplemented test_control bits. PAL | |
| interprets the implemented bits such that | |
| if a bit contains a zero, this indicates | |
| to run the test. If a bit contains a one, | |
| this indicates to PAL to skip the test. If | |
| the cs bit indicates that control is not | |
| available, the test_control bits will be | |
| ignored or generate an illegal argument in | |
| procedure calls if the caller sets these | |
| bits. | |
| @param ControlSupport This bit defines if an implementation | |
| supports control of the PAL self-tests | |
| via the self-test control word. If | |
| this bit is 0, the implementation does | |
| not support control of the processor | |
| self-tests via the self-test control | |
| word. If this bit is 1, the | |
| implementation does support control of | |
| the processor self-tests via the | |
| self-test control word. If control is | |
| not supported, GR37 will be ignored at | |
| the hand-off between SAL and PAL after | |
| the firmware recovery check and the | |
| PAL procedures related to the | |
| processor self-tests may return | |
| illegal arguments if a user tries to | |
| use the self-test control features. | |
| **/ | |
| typedef struct { | |
| UINT64 TestControl:47; | |
| UINT64 ControlSupport:1; | |
| UINT64 Reserved:16; | |
| } PAL_SELF_TEST_CONTROL; | |
| /** | |
| @param Attributes Specifies the memory attributes that are | |
| allowed to be used with the memory buffer | |
| passed to this procedure. The attributes | |
| parameter is a vector where each bit | |
| represents one of the virtual memory | |
| attributes defined by the architecture.See | |
| MEMORY_AATRIBUTES. The caller is required | |
| to support the cacheable attribute for the | |
| memory buffer, otherwise an invalid | |
| argument will be returned. | |
| @param TestControl Is the self-test control word | |
| corresponding to the test_phase passed. | |
| This test_control directs the coverage and | |
| runtime of the processor self-tests | |
| specified by the test_phase input | |
| argument. Information on if this | |
| feature is implemented and the number of | |
| bits supported can be obtained by the | |
| PAL_TEST_INFO procedure call. If this | |
| feature is implemented by the processor, | |
| the caller can selectively skip parts of | |
| the processor self-test by setting | |
| test_control bits to a one. If a bit has a | |
| zero, this test will be run. The values in | |
| the unimplemented bits are ignored. If | |
| PAL_TEST_INFO indicated that the self-test | |
| control word is not implemented, this | |
| procedure will return with an invalid | |
| argument status if the caller sets any of | |
| the test_control bits. See | |
| PAL_SELF_TEST_CONTROL. | |
| **/ | |
| typedef struct { | |
| UINT64 Attributes:8; | |
| UINT64 Reserved:8; | |
| UINT64 TestControl:48; | |
| } PAL_TEST_CONTROL; | |
| /** | |
| PAL Procedure - PAL_TEST_PROC. | |
| Perform late processor self test. It is required by IPF. The | |
| PAL procedure supports the Static Registers calling | |
| convention. It could be called at physical mode. | |
| @param Index Index of PAL_TEST_PROC within the list of PAL | |
| procedures. | |
| @param TestAddress 64-bit physical address of main memory | |
| area to be used by processor self-test. | |
| The memory region passed must be | |
| cacheable, bit 63 must be zero. | |
| @param TestInfo Input argument specifying the size of the | |
| memory buffer passed and the phase of the | |
| processor self-test that should be run. See | |
| PAL_TEST_INFO. | |
| @param TestParam Input argument specifying the self-test | |
| control word and the allowable memory | |
| attributes that can be used with the memory | |
| buffer. See PAL_TEST_CONTROL. | |
| @return R9 Formatted 8-byte value denoting the state of the | |
| processor after self-test | |
| @return Status 1 - Call completed without error, but hardware | |
| failures occurred during self-test. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_TEST_PROC 258 | |
| /** | |
| @param NumberOfInterruptControllers Number of interrupt | |
| controllers currently | |
| enabled on the system. | |
| @param NumberOfProcessors Number of processors currently | |
| enabled on the system. | |
| **/ | |
| typedef struct { | |
| UINT32 NumberOfInterruptControllers; | |
| UINT32 NumberOfProcessors; | |
| } PAL_PLATFORM_INFO; | |
| /** | |
| PAL Procedure - PAL_COPY_INFO. | |
| Return information needed to relocate PAL procedures and PAL | |
| PMI code to memory. It is required by IPF. The PAL procedure | |
| supports the Static Registers calling convention. It could be | |
| called at physical mode. | |
| @param Index Index of PAL_COPY_INFO within the list of PAL | |
| procedures. | |
| @param CopyType Unsigned integer denoting type of procedures | |
| for which copy information is requested. | |
| @param PlatformInfo 8-byte formatted value describing the | |
| number of processors and the number of | |
| interrupt controllers currently enabled | |
| on the system. See PAL_PLATFORM_INFO. | |
| @param McaProcStateInfo Unsigned integer denoting the number | |
| of bytes that SAL needs for the | |
| min-state save area for each | |
| processor. | |
| @return R9 Unsigned integer denoting the number of bytes of | |
| PAL information that must be copied to main | |
| memory. | |
| @return R10 Unsigned integer denoting the starting alignment | |
| of the data to be copied. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_CODE_TOKEN 0x0 | |
| #define PAL_IA32EMU_CODE_TOKEN 0x1 | |
| #define PAL_COPY_INFO 30 | |
| /** | |
| PAL Procedure - PAL_COPY_PAL. | |
| Relocate PAL procedures and PAL PMI code to memory. It is | |
| required by IPF. The PAL procedure supports the Stacked | |
| Registers calling convention. It could be called at physical | |
| mode. | |
| @param Index Index of PAL_COPY_PAL within the list of PAL | |
| procedures. | |
| @param TargetAddress Physical address of a memory buffer to | |
| copy relocatable PAL procedures and PAL | |
| PMI code. | |
| @param AllocSize Unsigned integer denoting the size of the | |
| buffer passed by SAL for the copy operation. | |
| @param CopyOption Unsigned integer indicating whether | |
| relocatable PAL code and PAL PMI code | |
| should be copied from firmware address | |
| space to main memory. | |
| @return R9 Unsigned integer denoting the offset of PAL_PROC | |
| in the relocatable segment copied. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_COPY_PAL 256 | |
| /** | |
| PAL Procedure - PAL_ENTER_IA_32_ENV. | |
| Enter IA-32 System environment. It is optional. The PAL | |
| procedure supports the Static Registers calling convention. | |
| It could be called at physical mode. | |
| Note: Since this is a special call, it does not follow the PAL | |
| static register calling convention. GR28 contains the index of | |
| PAL_ENTER_IA_32_ENV within the list of PAL procedures. All other | |
| input arguments including GR29-GR31 are setup by SAL to values | |
| as required by the IA-32 operating system defined in Table | |
| 11-67. The registers that are designated as preserved, scratch, | |
| input arguments and procedure return values by the static | |
| procedure calling convention are not followed by this call. For | |
| instance, GR5 and GR6 need not be preserved since these are | |
| regarded as scratch by the IA-32 operating system. Note: In an | |
| MP system, this call must be COMPLETED on the first CPU to enter | |
| the IA-32 System Environment (may or may not be the BSP) prior | |
| to being called on the remaining processors in the MP system. | |
| @param Index GR28 contains the index of the | |
| PAL_ENTER_IA_32_ENV call within the list of PAL | |
| procedures. | |
| @return Status The status is returned in GR4. | |
| -1 - Un-implemented procedure 0 JMPE detected | |
| at privilege level | |
| 0 - 1 SAL allocated buffer for IA-32 System | |
| Environment operation is too small | |
| 2 - IA-32 Firmware Checksum Error | |
| 3 - SAL allocated buffer for IA-32 System | |
| Environment operation is not properly aligned | |
| 4 - Error in SAL MP Info Table | |
| 5 - Error in SAL Memory Descriptor Table | |
| 6 - Error in SAL System Table | |
| 7 - Inconsistent IA-32 state | |
| 8 - IA-32 Firmware Internal Error | |
| 9 - IA-32 Soft Reset (Note: remaining register | |
| state is undefined for this termination | |
| reason) | |
| 10 - Machine Check Error | |
| 11 - Error in SAL I/O Intercept Table | |
| 12 - Processor exit due to other processor in | |
| MP system terminating the IA32 system | |
| environment. (Note: remaining register state | |
| is undefined for this termination reason.) | |
| 13 - Itanium architecture-based state | |
| corruption by either SAL PMI handler or I/O | |
| Intercept callback function. | |
| **/ | |
| #define PAL_ENTER_IA_32_ENV 33 | |
| /** | |
| PAL Procedure - PAL_PMI_ENTRYPOINT. | |
| Register PMI memory entrypoints with processor. It is required | |
| by IPF. The PAL procedure supports the Stacked Registers | |
| calling convention. It could be called at physical mode. | |
| @param Index Index of PAL_PMI_ENTRYPOINT within the list of | |
| PAL procedures. | |
| @param SalPmiEntry 256-byte aligned physical address of SAL | |
| PMI entrypoint in memory. | |
| @return Status 0 - Call completed without error | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_PMI_ENTRYPOINT 32 | |
| /** | |
| The ASCII brand identification string will be copied to the | |
| address specified in the address input argument. The processor | |
| brand identification string is defined to be a maximum of 128 | |
| characters long; 127 bytes will contain characters and the 128th | |
| byte is defined to be NULL (0). A processor may return less than | |
| the 127 ASCII characters as long as the string is null | |
| terminated. The string length will be placed in the brand_info | |
| return argument. | |
| **/ | |
| #define PAL_BRAND_INFO_ID_REQUEST 0 | |
| /** | |
| PAL Procedure - PAL_BRAND_INFO. | |
| Provides processor branding information. It is optional by | |
| IPF. The PAL procedure supports the Stacked Registers calling | |
| convention. It could be called at physical and Virtual mode. | |
| @param Index Index of PAL_BRAND_INFO within the list of PAL | |
| procedures. | |
| @param InfoRequest Unsigned 64-bit integer specifying the | |
| information that is being requested. (See | |
| PAL_BRAND_INFO_ID_REQUEST) | |
| @param Address Unsigned 64-bit integer specifying the | |
| address of the 128-byte block to which the | |
| processor brand string shall be written. | |
| @reture R9 Brand information returned. The format of this | |
| value is dependent on the input values passed. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -6 - Input argument is not implemented. | |
| **/ | |
| #define PAL_BRAND_INFO 274 | |
| /** | |
| PAL Procedure - PAL_GET_HW_POLICY. | |
| Returns the current hardware resource sharing policy of the | |
| processor. It is optional by IPF. The PAL procedure supports | |
| the Static Registers calling convention. It could be called at | |
| physical and Virtual mode. | |
| @param Index Index of PAL_GET_HW_POLICY within the list of PAL | |
| procedures. | |
| @param ProcessorNumber Unsigned 64-bit integer that specifies | |
| for which logical processor | |
| information is being requested. This | |
| input argument must be zero for the | |
| first call to this procedure and can | |
| be a maximum value of one less than | |
| the number of logical processors | |
| impacted by the hardware resource | |
| sharing policy, which is returned by | |
| the R10 return value. | |
| @reture R9 Unsigned 64-bit integer representing the current | |
| hardware resource sharing policy. | |
| @return R10 Unsigned 64-bit integer that returns the number | |
| of logical processors impacted by the policy | |
| input argument. | |
| @return R11 Unsigned 64-bit integer containing the logical | |
| address of one of the logical processors | |
| impacted by policy modification. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_GET_HW_POLICY 48 | |
| // | |
| // Value of PAL_SET_HW_POLICY.Policy | |
| // | |
| #define PAL_SET_HW_POLICY_PERFORMANCE 0 | |
| #define PAL_SET_HW_POLICY_FAIRNESS 1 | |
| #define PAL_SET_HW_POLICY_HIGH_PRIORITY 2 | |
| #define PAL_SET_HW_POLICY_EXCLUSIVE_HIGH_PRIORITY 3 | |
| /** | |
| PAL Procedure - PAL_SET_HW_POLICY. | |
| Sets the current hardware resource sharing policy of the | |
| processor. It is optional by IPF. The PAL procedure supports | |
| the Static Registers calling convention. It could be called at | |
| physical and Virtual mode. | |
| @param Index Index of PAL_SET_HW_POLICY within the list of PAL | |
| procedures. | |
| @param Policy Unsigned 64-bit integer specifying the hardware | |
| resource sharing policy the caller is setting. | |
| See Value of PAL_SET_HW_POLICY.Policy above. | |
| @return Status 1 - Call completed successfully but could not | |
| change the hardware policy since a | |
| competing logical processor is set in | |
| exclusive high priority. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_SET_HW_POLICY 49 | |
| /** | |
| @param Mode Bit2:0, Indicates the mode of operation for this | |
| procedure: 0 - Query mode 1 ¨C Error inject mode | |
| (err_inj should also be specified) 2 - Cancel | |
| outstanding trigger. All other fields in | |
| PAL_MC_ERROR_TYPE_INFO, | |
| PAL_MC_ERROR_STRUCTURE_INFO and | |
| PAL_MC_ERROR_DATA_BUFFER are ignored. All other | |
| values are reserved. | |
| @param ErrorInjection Bit5:3, indicates the mode of error | |
| injection: 0 - Error inject only (no | |
| error consumption) 1 - Error inject | |
| and consume All other values are | |
| reserved. | |
| @param ErrorSeverity Bit7:6, indicates the severity desired | |
| for error injection/query. Definitions | |
| of the different error severity types | |
| 0 - Corrected error 1 - Recoverable | |
| error 2 - Fatal error 3 - Reserved | |
| @param ErrorStructure Bit12:8, Indicates the structure | |
| identification for error | |
| injection/query: 0 - Any structure | |
| (cannot be used during query mode). | |
| When selected, the structure type used | |
| for error injection is determined by | |
| PAL. 1 - Cache 2 - TLB 3 - Register | |
| file 4 - Bus/System interconnect 5-15 | |
| - Reserved 16-31 - Processor | |
| specific error injection | |
| capabilities.ErrorDataBuffer is used | |
| to specify error types. Please refer | |
| to the processor specific | |
| documentation for additional details. | |
| @param StructureHierarchy Bit15:13, Indicates the structure | |
| hierarchy for error | |
| injection/query: 0 - Any level of | |
| hierarchy (cannot be used during | |
| query mode). When selected, the | |
| structure hierarchy used for error | |
| injection is determined by PAL. 1 | |
| - Error structure hierarchy | |
| level-1 2 - Error structure | |
| hierarchy level-2 3 - Error | |
| structure hierarchy level-3 4 - | |
| Error structure hierarchy level-4 | |
| All other values are reserved. | |
| Reserved 63:16 Reserved | |
| **/ | |
| typedef struct { | |
| UINT64 Mode:3; | |
| UINT64 ErrorInjection:3; | |
| UINT64 ErrorSeverity:2; | |
| UINT64 ErrorStructure:5; | |
| UINT64 StructureHierarchy:3; | |
| UINT64 Reserved:48; | |
| } PAL_MC_ERROR_TYPE_INFO; | |
| /** | |
| @param StructInfoIsValid Bit0 When 1, indicates that the | |
| structure information fields | |
| (c_t,cl_p,cl_id) are valid and | |
| should be used for error injection. | |
| When 0, the structure information | |
| fields are ignored, and the values | |
| of these fields used for error | |
| injection are | |
| implementation-specific. | |
| @param CacheType Bit2:1 Indicates which cache should be used | |
| for error injection: 0 - Reserved 1 - | |
| Instruction cache 2 - Data or unified cache | |
| 3 - Reserved | |
| @param PortionOfCacheLine Bit5:3 Indicates the portion of the | |
| cache line where the error should | |
| be injected: 0 - Reserved 1 - Tag | |
| 2 - Data 3 - mesi All other | |
| values are reserved. | |
| @param Mechanism Bit8:6 Indicates which mechanism is used to | |
| identify the cache line to be used for error | |
| injection: 0 - Reserved 1 - Virtual address | |
| provided in the inj_addr field of the buffer | |
| pointed to by err_data_buffer should be used | |
| to identify the cache line for error | |
| injection. 2 - Physical address provided in | |
| the inj_addr field of the buffer pointed to | |
| by err_data_buffershould be used to identify | |
| the cache line for error injection. 3 - way | |
| and index fields provided in err_data_buffer | |
| should be used to identify the cache line | |
| for error injection. All other values are | |
| reserved. | |
| @param DataPoisonOfCacheLine Bit9 When 1, indicates that a | |
| multiple bit, non-correctable | |
| error should be injected in the | |
| cache line specified by cl_id. | |
| If this injected error is not | |
| consumed, it may eventually | |
| cause a data-poisoning event | |
| resulting in a corrected error | |
| signal, when the associated | |
| cache line is cast out (implicit | |
| or explicit write-back of the | |
| cache line). The error severity | |
| specified by err_sev in | |
| err_type_info must be set to 0 | |
| (corrected error) when this bit | |
| is set. | |
| @param TrigerInfoIsValid Bit32 When 1, indicates that the | |
| trigger information fields (trigger, | |
| trigger_pl) are valid and should be | |
| used for error injection. When 0, | |
| the trigger information fields are | |
| ignored and error injection is | |
| performed immediately. | |
| @param Triger Bit36:33 Indicates the operation type to be | |
| used as the error trigger condition. The | |
| address corresponding to the trigger is | |
| specified in the trigger_addr field of the | |
| buffer pointed to by err_data_buffer: 0 - | |
| Instruction memory access. The trigger match | |
| conditions for this operation type are similar | |
| to the IBR address breakpoint match conditions | |
| 1 - Data memory access. The trigger match | |
| conditions for this operation type are similar | |
| to the DBR address breakpoint match conditions | |
| All other values are reserved. | |
| @param PrivilegeOfTriger Bit39:37 Indicates the privilege | |
| level of the context during which | |
| the error should be injected: 0 - | |
| privilege level 0 1 - privilege | |
| level 1 2 - privilege level 2 3 - | |
| privilege level 3 All other values | |
| are reserved. If the implementation | |
| does not support privilege level | |
| qualifier for triggers (i.e. if | |
| trigger_pl is 0 in the capabilities | |
| vector), this field is ignored and | |
| triggers can be taken at any | |
| privilege level. | |
| **/ | |
| typedef struct { | |
| UINT64 StructInfoIsValid:1; | |
| UINT64 CacheType:2; | |
| UINT64 PortionOfCacheLine:3; | |
| UINT64 Mechanism:3; | |
| UINT64 DataPoisonOfCacheLine:1; | |
| UINT64 Reserved1:22; | |
| UINT64 TrigerInfoIsValid:1; | |
| UINT64 Triger:4; | |
| UINT64 PrivilegeOfTriger:3; | |
| UINT64 Reserved2:24; | |
| } PAL_MC_ERROR_STRUCT_INFO; | |
| /** | |
| Buffer Pointed to by err_data_buffer ¨C TLB | |
| **/ | |
| typedef struct { | |
| UINT64 TrigerAddress; | |
| UINT64 VirtualPageNumber:52; | |
| UINT64 Reserved1:8; | |
| UINT64 RegionId:24; | |
| UINT64 Reserved2:40; | |
| } PAL_MC_ERROR_DATA_BUFFER_TLB; | |
| /** | |
| PAL Procedure - PAL_MC_ERROR_INJECT. | |
| Injects the requested processor error or returns information | |
| on the supported injection capabilities for this particular | |
| processor implementation. It is optional by IPF. The PAL | |
| procedure supports the Stacked Registers calling convention. | |
| It could be called at physical and Virtual mode. | |
| @param Index Index of PAL_MC_ERROR_INJECT within the list of PAL | |
| procedures. | |
| @param ErrorTypeInfo Unsigned 64-bit integer specifying the | |
| first level error information which | |
| identifies the error structure and | |
| corresponding structure hierarchy, and | |
| the error severity. | |
| @param ErrorStructInfo Unsigned 64-bit integer identifying | |
| the optional structure specific | |
| information that provides the second | |
| level details for the requested error. | |
| @param ErrorDataBuffer 64-bit physical address of a buffer | |
| providing additional parameters for | |
| the requested error. The address of | |
| this buffer must be 8-byte aligned. | |
| @return R9 64-bit vector specifying the supported error | |
| injection capabilities for the input argument | |
| combination of struct_hier, err_struct and | |
| err_sev fields in ErrorTypeInfo. | |
| @return R10 64-bit vector specifying the architectural | |
| resources that are used by the procedure. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -4 - Call completed with error; the requested | |
| error could not be injected due to failure in | |
| locating the target location in the specified | |
| structure. | |
| @return Status -5 - Argument was valid, but requested error | |
| injection capability is not supported. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_MC_ERROR_INJECT 276 | |
| // | |
| // Types of PAL_GET_PSTATE.Type | |
| // | |
| #define PAL_GET_PSTATE_RECENT 0 | |
| #define PAL_GET_PSTATE_AVERAGE_NEW_START 1 | |
| #define PAL_GET_PSTATE_AVERAGE 2 | |
| #define PAL_GET_PSTATE_NOW 3 | |
| /** | |
| PAL Procedure - PAL_GET_PSTATE. | |
| Returns the performance index of the processor. It is optional | |
| by IPF. The PAL procedure supports the Stacked Registers | |
| calling convention. It could be called at physical and Virtual | |
| mode. | |
| @param Index Index of PAL_GET_PSTATE within the list of PAL | |
| procedures. | |
| @param Type Type of performance_index value to be returned | |
| by this procedure.See PAL_GET_PSTATE.Type above. | |
| @return R9 Unsigned integer denoting the processor | |
| performance for the time duration since the last | |
| PAL_GET_PSTATE procedure call was made. The | |
| value returned is between 0 and 100, and is | |
| relative to the performance index of the highest | |
| available P-state. | |
| @return Status 1 - Call completed without error, but accuracy | |
| of performance index has been impacted by a | |
| thermal throttling event, or a | |
| hardware-initiated event. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_GET_PSTATE 262 | |
| /** | |
| Layout of PAL_PSTATE_INFO.PStateBuffer | |
| **/ | |
| typedef struct { | |
| UINT32 PerformanceIndex:7; | |
| UINT32 Reserved1:5; | |
| UINT32 TypicalPowerDissipation:20; | |
| UINT32 TransitionLatency1; | |
| UINT32 TransitionLatency2; | |
| UINT32 Reserved2; | |
| } PAL_PSTATE_INFO_BUFFER; | |
| /** | |
| PAL Procedure - PAL_PSTATE_INFO. | |
| Returns information about the P-states supported by the | |
| processor. It is optional by IPF. The PAL procedure supports | |
| the Static Registers calling convention. It could be called | |
| at physical and Virtual mode. | |
| @param Index Index of PAL_PSTATE_INFO within the list of PAL | |
| procedures. | |
| @param PStateBuffer 64-bit pointer to a 256-byte buffer | |
| aligned on an 8-byte boundary. See | |
| PAL_PSTATE_INFO_BUFFER above. | |
| @return R9 Unsigned integer denoting the number of P-states | |
| supported. The maximum value of this field is 16. | |
| @return R10 Dependency domain information | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| **/ | |
| #define PAL_PSTATE_INFO 44 | |
| /** | |
| PAL Procedure - PAL_SET_PSTATE. | |
| To request a processor transition to a given P-state. It is | |
| optional by IPF. The PAL procedure supports the Stacked | |
| Registers calling convention. It could be called at physical | |
| and Virtual mode. | |
| @param Index Index of PAL_SET_PSTATE within the list of PAL | |
| procedures. | |
| @param PState Unsigned integer denoting the processor | |
| P-state being requested. | |
| @param ForcePState Unsigned integer denoting whether the | |
| P-state change should be forced for the | |
| logical processor. | |
| @return Status 1 - Call completed without error, but | |
| transition request was not accepted | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_SET_PSTATE 263 | |
| /** | |
| PAL Procedure - PAL_SHUTDOWN. | |
| Put the logical processor into a low power state which can be | |
| exited only by a reset event. It is optional by IPF. The PAL | |
| procedure supports the Static Registers calling convention. It | |
| could be called at physical mode. | |
| @param Index Index of PAL_SHUTDOWN within the list of PAL | |
| procedures. | |
| @param NotifyPlatform 8-byte aligned physical address | |
| pointer providing details on how to | |
| optionally notify the platform that | |
| the processor is entering a shutdown | |
| state. | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_SHUTDOWN 45 | |
| /** | |
| Layout of PAL_MEMORY_BUFFER.ControlWord | |
| **/ | |
| typedef struct { | |
| UINT64 Registration:1; | |
| UINT64 ProbeInterrupt:1; | |
| UINT64 Reserved:62; | |
| } PAL_MEMORY_CONTROL_WORD; | |
| /** | |
| PAL Procedure - PAL_MEMORY_BUFFER. | |
| Provides cacheable memory to PAL for exclusive use during | |
| runtime. It is optional by IPF. The PAL procedure supports the | |
| Static Registers calling convention. It could be called at | |
| physical mode. | |
| @param Index Index of PAL_MEMORY_BUFFER within the list of PAL | |
| procedures. | |
| @param BaseAddress Physical address of the memory buffer | |
| allocated for PAL use. | |
| @param AllocSize Unsigned integer denoting the size of the | |
| memory buffer. | |
| @param ControlWord Formatted bit vector that provides control | |
| options for this procedure. See | |
| PAL_MEMORY_CONTROL_WORD above. | |
| @return R9 Returns the minimum size of the memory buffer | |
| required if the alloc_size input argument was | |
| not large enough. | |
| @return Status 1 - Call has not completed a buffer relocation | |
| due to a pending interrupt | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_MEMORY_BUFFER 277 | |
| /** | |
| PAL Procedure - PAL_VP_CREATE. | |
| Initializes a new vpd for the operation of a new virtual | |
| processor in the virtual environment. It is optional by IPF. | |
| The PAL procedure supports the Stacked Registers calling | |
| convention. It could be called at Virtual mode. | |
| @param Index Index of PAL_VP_CREATE within the list of PAL | |
| procedures. | |
| @param Vpd 64-bit host virtual pointer to the Virtual | |
| Processor Descriptor (VPD). | |
| @param HostIva 64-bit host virtual pointer to the host IVT | |
| for the virtual processor | |
| @param OptionalHandler 64-bit non-zero host-virtual pointer | |
| to an optional handler for | |
| virtualization intercepts. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_VP_CREATE 265 | |
| /** | |
| Virtual Environment Information Parameter | |
| **/ | |
| typedef struct { | |
| UINT64 Reserved1:8; | |
| UINT64 Opcode:1; | |
| UINT64 Reserved:53; | |
| } PAL_VP_ENV_INFO_RETURN; | |
| /** | |
| PAL Procedure - PAL_VP_ENV_INFO. | |
| Returns the parameters needed to enter a virtual environment. | |
| It is optional by IPF. The PAL procedure supports the Stacked | |
| Registers calling convention. It could be called at Virtual | |
| mode. | |
| @param Index Index of PAL_VP_ENV_INFO within the list of PAL | |
| procedures. | |
| @param Vpd 64-bit host virtual pointer to the Virtual | |
| Processor Descriptor (VPD). | |
| @param HostIva 64-bit host virtual pointer to the host IVT | |
| for the virtual processor | |
| @param OptionalHandler 64-bit non-zero host-virtual pointer | |
| to an optional handler for | |
| virtualization intercepts. | |
| @return R9 Unsigned integer denoting the number of bytes | |
| required by the PAL virtual environment buffer | |
| during PAL_VP_INIT_ENV | |
| @return R10 64-bit vector of virtual environment | |
| information. See PAL_VP_ENV_INFO_RETURN. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_VP_ENV_INFO 266 | |
| /** | |
| PAL Procedure - PAL_VP_EXIT_ENV. | |
| Allows a logical processor to exit a virtual environment. | |
| It is optional by IPF. The PAL procedure supports the Stacked | |
| Registers calling convention. It could be called at Virtual | |
| mode. | |
| @param Index Index of PAL_VP_EXIT_ENV within the list of PAL | |
| procedures. | |
| @param Iva Optional 64-bit host virtual pointer to the IVT | |
| when this procedure is done | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_VP_EXIT_ENV 267 | |
| /** | |
| PAL Procedure - PAL_VP_INIT_ENV. | |
| Allows a logical processor to enter a virtual environment. It | |
| is optional by IPF. The PAL procedure supports the Stacked | |
| Registers calling convention. It could be called at Virtual | |
| mode. | |
| @param Index Index of PAL_VP_INIT_ENV within the list of PAL | |
| procedures. | |
| @param ConfigOptions 64-bit vector of global configuration | |
| settings. | |
| @param PhysicalBase Host physical base address of a block of | |
| contiguous physical memory for the PAL | |
| virtual environment buffer 1) This | |
| memory area must be allocated by the VMM | |
| and be 4K aligned. The first logical | |
| processor to enter the environment will | |
| initialize the physical block for | |
| virtualization operations. | |
| @param VirtualBase Host virtual base address of the | |
| corresponding physical memory block for | |
| the PAL virtual environment buffer : The | |
| VMM must maintain the host virtual to host | |
| physical data and instruction translations | |
| in TRs for addresses within the allocated | |
| address space. Logical processors in this | |
| virtual environment will use this address | |
| when transitioning to virtual mode | |
| operations. | |
| @return R9 Virtualization Service Address ¨C VSA specifies | |
| the virtual base address of the PAL | |
| virtualization services in this virtual | |
| environment. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_VP_INIT_ENV 268 | |
| /** | |
| PAL Procedure - PAL_VP_REGISTER. | |
| Register a different host IVT and/or a different optional | |
| virtualization intercept handler for the virtual processor | |
| specified by vpd. It is optional by IPF. The PAL procedure | |
| supports the Stacked Registers calling convention. It could be | |
| called at Virtual mode. | |
| @param Index Index of PAL_VP_REGISTER within the list of PAL | |
| procedures. | |
| @param Vpd 64-bit host virtual pointer to the Virtual | |
| Processor Descriptor (VPD) host_iva 64-bit host | |
| virtual pointer to the host IVT for the virtual | |
| processor | |
| @param OptionalHandler 64-bit non-zero host-virtual pointer | |
| to an optional handler for | |
| virtualization intercepts. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_VP_REGISTER 269 | |
| /** | |
| PAL Procedure - PAL_VP_RESTORE. | |
| Restores virtual processor state for the specified vpd on the | |
| logical processor. It is optional by IPF. The PAL procedure | |
| supports the Stacked Registers calling convention. It could be | |
| called at Virtual mode. | |
| @param Index Index of PAL_VP_RESTORE within the list of PAL | |
| procedures. | |
| @param Vpd 64-bit host virtual pointer to the Virtual | |
| Processor Descriptor (VPD) host_iva 64-bit host | |
| virtual pointer to the host IVT for the virtual | |
| processor | |
| @param PalVector Vector specifies PAL procedure | |
| implementation-specific state to be | |
| restored. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_VP_RESTORE 270 | |
| /** | |
| PAL Procedure - PAL_VP_SAVE. | |
| Saves virtual processor state for the specified vpd on the | |
| logical processor. It is optional by IPF. The PAL procedure | |
| supports the Stacked Registers calling convention. It could be | |
| called at Virtual mode. | |
| @param Index Index of PAL_VP_SAVE within the list of PAL | |
| procedures. | |
| @param Vpd 64-bit host virtual pointer to the Virtual | |
| Processor Descriptor (VPD) host_iva 64-bit host | |
| virtual pointer to the host IVT for the virtual | |
| processor | |
| @param PalVector Vector specifies PAL procedure | |
| implementation-specific state to be | |
| restored. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_VP_SAVE 271 | |
| /** | |
| PAL Procedure - PAL_VP_TERMINATE. | |
| Terminates operation for the specified virtual processor. It | |
| is optional by IPF. The PAL procedure supports the Stacked | |
| Registers calling convention. It could be called at Virtual | |
| mode. | |
| @param Index Index of PAL_VP_TERMINATE within the list of PAL | |
| procedures. | |
| @param Vpd 64-bit host virtual pointer to the Virtual | |
| Processor Descriptor (VPD) | |
| @param Iva Optional 64-bit host virtual pointer to the IVT | |
| when this procedure is done. | |
| @return Status 0 - Call completed without error | |
| @return Status -1 - Unimplemented procedure | |
| @return Status -2 - Invalid argument | |
| @return Status -3 - Call completed with error. | |
| @return Status -9 - Call requires PAL memory buffer. | |
| **/ | |
| #define PAL_VP_TERMINATE 272 | |
| /** | |
| Makes a PAL procedure call. | |
| This is a wrapper function to make a PAL procedure call. Based on the Index value, | |
| this API will make static or stacked PAL call. Architected procedures may be designated | |
| as required or optional. If a PAL procedure is specified as optional, a unique return | |
| code of 0xFFFFFFFFFFFFFFFF is returned in the Status field of the PAL_CALL_RETURN structure. | |
| This indicates that the procedure is not present in this PAL implementation. It is the | |
| caller¡¯s responsibility to check for this return code after calling any optional PAL | |
| procedure. No parameter checking is performed on the 4 input parameters, but there are | |
| some common rules that the caller should follow when making a PAL call. Any address | |
| passed to PAL as buffers for return parameters must be 8-byte aligned. Unaligned addresses | |
| may cause undefined results. For those parameters defined as reserved or some fields | |
| defined as reserved must be zero filled or the invalid argument return value may be | |
| returned or undefined result may occur during the execution of the procedure. | |
| This function is only available on IPF. | |
| @param Index - The PAL procedure Index number. | |
| @param Arg2 - The 2nd parameter for PAL procedure calls. | |
| @param Arg3 - The 3rd parameter for PAL procedure calls. | |
| @param Arg4 - The 4th parameter for PAL procedure calls. | |
| @return structure returned from the PAL Call procedure, including the status and return value. | |
| **/ | |
| PAL_CALL_RETURN | |
| EFIAPI | |
| PalCall ( | |
| IN UINT64 Index, | |
| IN UINT64 Arg2, | |
| IN UINT64 Arg3, | |
| IN UINT64 Arg4 | |
| ); | |
| #endif | |