source: mainline/kernel/genarch/include/genarch/multiboot/multiboot_info_struct.h@ 8781e9d

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 8781e9d was 8781e9d, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 7 years ago

Remove realmode VESA code

This simply enables framebuffer setup via multiboot1
(multiboot2 already did it), and removes the obsolete code.

  • Property mode set to 100644
File size: 4.8 KB
Line 
1/*
2 * Copyright (c) 2016 Jakub Jermar
3 * All rights preserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef KERN_MULTIBOOT_INFO_STRUCT_H_
30#define KERN_MULTIBOOT_INFO_STRUCT_H_
31
32#define MULTIBOOT_INFO_OFFSET_FLAGS 0x00
33#define MULTIBOOT_INFO_OFFSET_MEM_LOWER 0x04
34#define MULTIBOOT_INFO_OFFSET_MEM_UPPER 0x08
35#define MULTIBOOT_INFO_OFFSET_BOOT_DEVICE 0x0c
36#define MULTIBOOT_INFO_OFFSET_CMD_LINE 0x10
37#define MULTIBOOT_INFO_OFFSET_MODS_COUNT 0x14
38#define MULTIBOOT_INFO_OFFSET_MODS_ADDR 0x18
39#define MULTIBOOT_INFO_OFFSET_SYMS 0x1c
40#define MULTIBOOT_INFO_OFFSET_MMAP_LENGTH 0x2c
41#define MULTIBOOT_INFO_OFFSET_MMAP_ADDR 0x30
42#define MULTIBOOT_INFO_OFFSET_DRIVES_LENGTH 0x34
43#define MULTIBOOT_INFO_OFFSET_DRIVES_ADDR 0x38
44#define MULTIBOOT_INFO_OFFSET_CONFIG_TABLE 0x3c
45#define MULTIBOOT_INFO_OFFSET_BOOT_LOADER_NAME 0x40
46#define MULTIBOOT_INFO_OFFSET_APM_TABLE 0x44
47#define MULTIBOOT_INFO_OFFSET_VBE_CONTROL_INFO 0x48
48#define MULTIBOOT_INFO_OFFSET_VBE_MODE_INFO 0x4c
49#define MULTIBOOT_INFO_OFFSET_VBE_MODE 0x50
50#define MULTIBOOT_INFO_OFFSET_VBE_INTERFACE_SEG 0x52
51#define MULTIBOOT_INFO_OFFSET_VBE_INTERFACE_OFF 0x54
52#define MULTIBOOT_INFO_OFFSET_VBE_INTERFACE_LEN 0x56
53#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_ADDR 0x58
54#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_PITCH 0x60
55#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_WIDTH 0x64
56#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_HEIGHT 0x68
57#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_BPP 0x6c
58#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_TYPE 0x6d
59
60#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_PALETTE_ADDR 0x6e
61#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_PALETTE_NUM_COLORS 0x72
62
63#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_RED_FIELD_POSITION 0x6e
64#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_RED_MASK_SIZE 0x6f
65#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_GREEN_FIELD_POSITION 0x70
66#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_GREEN_MASK_SIZE 0x71
67#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_BLUE_FIELD_POSITION 0x72
68#define MULTIBOOT_INFO_OFFSET_FRAMEBUFFER_BLUE_MASK_SIZE 0x73
69
70#define MULTIBOOT_INFO_SIZE 0x76
71
72#ifndef __ASSEMBLER__
73
74#include <stdint.h>
75
76typedef struct multiboot_info {
77 uint32_t flags;
78 uint32_t mem_lower;
79 uint32_t mem_upper;
80 uint32_t boot_device;
81 uint32_t cmd_line;
82 uint32_t mods_count;
83 uint32_t mods_addr;
84 uint32_t syms[4];
85 uint32_t mmap_length;
86 uint32_t mmap_addr;
87 uint32_t drives_length;
88 uint32_t drives_addr;
89 uint32_t config_table;
90 uint32_t boot_loader_name;
91 uint32_t apm_table;
92 uint32_t vbe_control_info;
93 uint32_t vbe_mode_info;
94 uint16_t vbe_mode;
95 uint16_t vbe_interface_seg;
96 uint16_t vbe_interface_off;
97 uint16_t vbe_interface_len;
98 uint64_t framebuffer_addr;
99 uint32_t framebuffer_pitch;
100 uint32_t framebuffer_width;
101 uint32_t framebuffer_height;
102 uint8_t framebuffer_bpp;
103 uint8_t framebuffer_type;
104 union {
105 struct {
106 uint32_t framebuffer_palette_addr;
107 uint32_t framebuffer_palette_num_colors;
108 } __attribute__((packed));
109 struct {
110 uint8_t framebuffer_red_field_position;
111 uint8_t framebuffer_red_mask_size;
112 uint8_t framebuffer_green_field_position;
113 uint8_t framebuffer_green_mask_size;
114 uint8_t framebuffer_blue_field_position;
115 uint8_t framebuffer_blue_mask_size;
116 } __attribute__((packed));
117 } __attribute__((packed));
118} __attribute__((packed)) multiboot_info_t;
119
120#endif
121#endif
Note: See TracBrowser for help on using the repository browser.