| /* 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 |