#ifndef __SAL_API_H__\r
#define __SAL_API_H__\r
\r
-//\r
-// FIT Types \r
-// Table 2-2 of Intel Itanium Processor Family System Abstraction Layer Specification December 2003\r
-//\r
+///\r
+/// FIT Types \r
+/// Table 2-2 of Intel Itanium Processor Family System Abstraction Layer Specification December 2003\r
+///\r
#define EFI_SAL_FIT_FIT_HEADER_TYPE 0x00\r
#define EFI_SAL_FIT_PAL_B_TYPE 0x01\r
-//\r
-// type from 0x02 to 0x0E is reserved.\r
-//\r
+\r
+///\r
+/// type from 0x02 to 0x0E is reserved.\r
+///\r
#define EFI_SAL_FIT_PAL_A_TYPE 0x0F\r
-//\r
-// OEM-defined type range is from 0x10 to 0x7E. Here we defined the PEI_CORE type as 0x10\r
-//\r
+\r
+///\r
+/// OEM-defined type range is from 0x10 to 0x7E. Here we defined the PEI_CORE type as 0x10\r
+///\r
#define EFI_SAL_FIT_PEI_CORE_TYPE 0x10\r
#define EFI_SAL_FIT_UNUSED_TYPE 0x7F\r
\r
-//\r
-// EFI_SAL_STATUS \r
-//\r
+///\r
+/// EFI_SAL_STATUS \r
+///\r
typedef UINTN EFI_SAL_STATUS;\r
\r
#define EFI_SAL_SUCCESS ((EFI_SAL_STATUS) 0)\r
UINTN r11;\r
} SAL_RETURN_REGS;\r
\r
-//\r
-// Delivery Mode of IPF CPU.\r
-//\r
+///\r
+/// Delivery Mode of IPF CPU.\r
+///\r
typedef enum {\r
EFI_DELIVERY_MODE_INT,\r
EFI_DELIVERY_MODE_MPreserved1,\r
#define EFI_SAL_PCI_CONFIG_READ 0x01000010\r
#define EFI_SAL_PCI_CONFIG_WRITE 0x01000011\r
#define EFI_SAL_FREQ_BASE 0x01000012\r
+#define EFI_SAL_PHYSICAL_ID_INFO 0x01000013\r
#define EFI_SAL_UPDATE_PAL 0x01000020\r
\r
#define EFI_SAL_FUNCTION_ID_MASK 0x0000ffff\r
#define EFI_SAL_ST_PTC 4\r
#define EFI_SAL_ST_AP_WAKEUP 5\r
\r
+//\r
+// SAL System Type Sizes\r
+//\r
+#define EFI_SAL_ST_ENTRY_POINT_SIZE 48\r
+#define EFI_SAL_ST_MEMORY_DESCRIPTOR_SIZE 32\r
+#define EFI_SAL_ST_PLATFORM_FEATURES_SIZE 16\r
+#define EFI_SAL_ST_TR_USAGE_SIZE 32\r
+#define EFI_SAL_ST_PTC_SIZE 16\r
+#define EFI_SAL_ST_AP_WAKEUP_SIZE 16\r
+\r
#pragma pack(1)\r
typedef struct {\r
UINT8 Type; // Type == 0\r
UINT64 Reserved2[2];\r
} SAL_ST_ENTRY_POINT_DESCRIPTOR;\r
\r
-//\r
-// Not needed for Itanium-based OS boot\r
-//\r
-typedef struct {\r
- UINT8 Type; // Type == 1\r
- UINT8 NeedVirtualRegistration;\r
- UINT8 MemoryAttributes;\r
- UINT8 PageAccessRights;\r
- UINT8 SupportedAttributes;\r
- UINT8 Reserved;\r
- UINT8 MemoryType;\r
- UINT8 MemoryUsage;\r
- UINT64 PhysicalMemoryAddress;\r
- UINT32 Length;\r
- UINT32 Reserved1;\r
- UINT64 OemReserved;\r
-} SAL_ST_MEMORY_DESCRIPTOR_ENTRY;\r
-\r
-#pragma pack()\r
-//\r
-// Memory Attributes\r
-//\r
-#define SAL_MDT_ATTRIB_WB 0x00\r
-//\r
-// #define SAL_MDT_ATTRIB_UC 0x02\r
-//\r
-#define SAL_MDT_ATTRIB_UC 0x04\r
-#define SAL_MDT_ATTRIB_UCE 0x05\r
-#define SAL_MDT_ATTRIB_WC 0x06\r
-\r
-//\r
-// Supported memory Attributes\r
-//\r
-#define SAL_MDT_SUPPORT_WB 0x1\r
-#define SAL_MDT_SUPPORT_UC 0x2\r
-#define SAL_MDT_SUPPORT_UCE 0x4\r
-#define SAL_MDT_SUPPORT_WC 0x8\r
-\r
-//\r
-// Virtual address registration\r
-//\r
-#define SAL_MDT_NO_VA 0x00\r
-#define SAL_MDT_NEED_VA 0x01\r
-//\r
-// MemoryType info\r
-//\r
-#define SAL_REGULAR_MEMORY 0x0000\r
-#define SAL_MMIO_MAPPING 0x0001\r
-#define SAL_SAPIC_IPI_BLOCK 0x0002\r
-#define SAL_IO_PORT_MAPPING 0x0003\r
-#define SAL_FIRMWARE_MEMORY 0x0004\r
-#define SAL_BLACK_HOLE 0x000A\r
-//\r
-// Memory Usage info\r
-//\r
-#define SAL_MDT_USAGE_UNSPECIFIED 0x00\r
-#define SAL_PAL_CODE 0x01\r
-#define SAL_BOOTSERVICE_CODE 0x02\r
-#define SAL_BOOTSERVICE_DATA 0x03\r
-#define SAL_RUNTIMESERVICE_CODE 0x04\r
-#define SAL_RUNTIMESERVICE_DATA 0x05\r
-#define SAL_IA32_OPTIONROM 0x06\r
-#define SAL_IA32_SYSTEMROM 0x07\r
-#define SAL_PMI_CODE 0x0a\r
-#define SAL_PMI_DATA 0x0b\r
-\r
#pragma pack(1)\r
typedef struct {\r
UINT8 Type; // Type == 2\r
UINT8 SmbiosBcdTimeStamp[6];\r
} SAL_SMBIOS_DEVICE_ERROR_RECORD;\r
\r
-//\r
-// Sal Platform Specific Errors Info.\r
-//\r
+///\r
+/// Sal Platform Specific Errors Info.\r
+///\r
#define SAL_PLATFORM_ERROR_RECORD_INFO \\r
{ \\r
0xe429faf7, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
UINT8 OemComponentId[16];\r
} SAL_PLATFORM_SPECIFIC_ERROR_RECORD;\r
\r
-//\r
-// Union of all the possible Sal Record Types\r
-//\r
+///\r
+/// Union of all the possible Sal Record Types\r
+///\r
typedef union {\r
SAL_RECORD_HEADER *RecordHeader;\r
SAL_PROCESSOR_ERROR_RECORD *SalProcessorRecord;\r