| #ifndef _SFI_H |
| #define _SFI_H |
| |
| /* Memory type definitions */ |
| enum sfi_mem_type { |
| SFI_MEM_RESERVED, |
| SFI_LOADER_CODE, |
| SFI_LOADER_DATA, |
| SFI_BOOT_SERVICE_CODE, |
| SFI_BOOT_SERVICE_DATA, |
| SFI_RUNTIME_SERVICE_CODE, |
| SFI_RUNTIME_SERVICE_DATA, |
| SFI_MEM_CONV, |
| SFI_MEM_UNUSABLE, |
| SFI_ACPI_RECLAIM, |
| SFI_ACPI_NVS, |
| SFI_MEM_MMIO, |
| SFI_MEM_IOPORT, |
| SFI_PAL_CODE, |
| SFI_MEM_TYPEMAX, |
| }; |
| |
| struct sfi_mem_entry { |
| enum sfi_mem_type type; |
| u64 phy_start; |
| u64 vir_start; |
| u64 pages; |
| u64 attrib; |
| }__attribute__((packed)); |
| |
| struct sfi_table_header { |
| char signature[4]; |
| u32 length; |
| u8 revision; |
| u8 checksum; |
| char oem_id[6]; |
| char oem_table_id[8]; |
| }__attribute__((packed)); |
| |
| struct sfi_table { |
| struct sfi_table_header header; |
| u64 pentry[1]; |
| }__attribute__((packed)); |
| |
| #define SFI_TBL_HEADER_LEN 24 |
| |
| #define SFI_GET_ENTRY_NUM(ptable, entry) \ |
| ((ptable->header.length - SFI_TBL_HEADER_LEN) / \ |
| (sizeof(struct entry))) |
| |
| #define E820_RAM 1 |
| #define E820_RESERVED 2 |
| #define E820_ACPI 3 |
| #define E820_NVS 4 |
| #define E820_UNUSABLE 5 |
| |
| extern void sfi_setup_mmap(struct boot_params *bp, memory_map_t *mb_mmap); |
| extern int sfi_add_e820_entry(struct boot_params *bp, memory_map_t *mb_mmap, u64 start, u64 size, int type); |
| |
| #endif /* _SFI_H */ |