123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /* memory.h - describe the memory map */
- /*
- * GRUB -- GRand Unified Bootloader
- * Copyright (C) 2002,2007,2010 Free Software Foundation, Inc.
- *
- * GRUB is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GRUB is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
- */
- #ifndef _GRUB_MACHINE_LBIO_HEADER
- #define _GRUB_MACHINE_LBIO_HEADER 1
- #include <grub/types.h>
- #include <grub/err.h>
- struct grub_linuxbios_table_header
- {
- grub_uint8_t signature[4];
- grub_uint32_t header_size;
- grub_uint32_t header_checksum;
- grub_uint32_t table_size;
- grub_uint32_t table_checksum;
- grub_uint32_t table_entries;
- };
- typedef struct grub_linuxbios_table_header *grub_linuxbios_table_header_t;
- struct grub_linuxbios_timestamp_entry
- {
- grub_uint32_t id;
- grub_uint64_t tsc;
- } GRUB_PACKED;
- struct grub_linuxbios_timestamp_table
- {
- grub_uint64_t base_tsc;
- grub_uint32_t capacity;
- grub_uint32_t used;
- struct grub_linuxbios_timestamp_entry entries[0];
- } GRUB_PACKED;
- struct grub_linuxbios_mainboard
- {
- grub_uint8_t vendor;
- grub_uint8_t part_number;
- char strings[0];
- };
- struct grub_linuxbios_table_item
- {
- grub_uint32_t tag;
- grub_uint32_t size;
- };
- typedef struct grub_linuxbios_table_item *grub_linuxbios_table_item_t;
- enum
- {
- GRUB_LINUXBIOS_MEMBER_UNUSED = 0x00,
- GRUB_LINUXBIOS_MEMBER_MEMORY = 0x01,
- GRUB_LINUXBIOS_MEMBER_MAINBOARD = 0x03,
- GRUB_LINUXBIOS_MEMBER_CONSOLE = 0x10,
- GRUB_LINUXBIOS_MEMBER_LINK = 0x11,
- GRUB_LINUXBIOS_MEMBER_FRAMEBUFFER = 0x12,
- GRUB_LINUXBIOS_MEMBER_TIMESTAMPS = 0x16,
- GRUB_LINUXBIOS_MEMBER_CBMEMC = 0x17
- };
- struct grub_linuxbios_table_framebuffer {
- grub_uint64_t lfb;
- grub_uint32_t width;
- grub_uint32_t height;
- grub_uint32_t pitch;
- grub_uint8_t bpp;
- grub_uint8_t red_field_pos;
- grub_uint8_t red_mask_size;
- grub_uint8_t green_field_pos;
- grub_uint8_t green_mask_size;
- grub_uint8_t blue_field_pos;
- grub_uint8_t blue_mask_size;
- grub_uint8_t reserved_field_pos;
- grub_uint8_t reserved_mask_size;
- } GRUB_PACKED;
- struct grub_linuxbios_mem_region
- {
- grub_uint64_t addr;
- grub_uint64_t size;
- #define GRUB_MACHINE_MEMORY_AVAILABLE 1
- grub_uint32_t type;
- } GRUB_PACKED;
- typedef struct grub_linuxbios_mem_region *mem_region_t;
- grub_err_t
- EXPORT_FUNC(grub_linuxbios_table_iterate) (int (*hook) (grub_linuxbios_table_item_t,
- void *),
- void *hook_data);
- grub_linuxbios_table_header_t
- grub_linuxbios_get_tables (void);
- int
- grub_linuxbios_check_signature (grub_linuxbios_table_header_t tbl_header);
- #endif
|