60 lines
1.2 KiB
C
60 lines
1.2 KiB
C
#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 */
|