Changeset 8781e9d in mainline for kernel/genarch
- Timestamp:
- 2018-11-12T20:20:36Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 08f1a6d
- Parents:
- 15639ec
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-11-12 20:09:40)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-11-12 20:20:36)
- Location:
- kernel/genarch
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/genarch/include/genarch/multiboot/multiboot.h
r15639ec r8781e9d 39 39 #include <genarch/multiboot/multiboot_info_struct.h> 40 40 41 #define MULTIBOOT_HEADER_MAGIC 0x1badb002 42 #define MULTIBOOT_HEADER_FLAGS 0x00010003 41 #define MULTIBOOT_HEADER_MAGIC 0x1badb002 42 #define MULTIBOOT_HEADER_FLAGS 0x00010007 43 #define MULTIBOOT_HEADER_FLAGS_NOFB 0x00010003 43 44 44 45 #define MULTIBOOT_LOADER_MAGIC 0x2badb002 45 46 46 #define MULTIBOOT_INFO_FLAGS_MEM 0x01 47 #define MULTIBOOT_INFO_FLAGS_BOOT 0x02 48 #define MULTIBOOT_INFO_FLAGS_CMDLINE 0x04 49 #define MULTIBOOT_INFO_FLAGS_MODS 0x08 50 #define MULTIBOOT_INFO_FLAGS_SYMS1 0x10 51 #define MULTIBOOT_INFO_FLAGS_SYMS2 0x20 52 #define MULTIBOOT_INFO_FLAGS_MMAP 0x40 47 #define MULTIBOOT_INFO_FLAGS_MEM 0x0001 48 #define MULTIBOOT_INFO_FLAGS_BOOT 0x0002 49 #define MULTIBOOT_INFO_FLAGS_CMDLINE 0x0004 50 #define MULTIBOOT_INFO_FLAGS_MODS 0x0008 51 #define MULTIBOOT_INFO_FLAGS_SYMS_AOUT 0x0010 52 #define MULTIBOOT_INFO_FLAGS_SYMS_ELF 0x0020 53 #define MULTIBOOT_INFO_FLAGS_MMAP 0x0040 54 #define MULTIBOOT_INFO_FLAGS_DRIVES 0x0080 55 #define MULTIBOOT_INFO_FLAGS_CONFIG_TABLE 0x0100 56 #define MULTIBOOT_INFO_FLAGS_BOOT_LOADER_NAME 0x0200 57 #define MULTIBOOT_INFO_FLAGS_APM 0x0400 58 #define MULTIBOOT_INFO_FLAGS_VBE 0x0800 59 #define MULTIBOOT_INFO_FLAGS_FB 0x1000 53 60 54 61 #ifndef __ASSEMBLER__ -
kernel/genarch/include/genarch/multiboot/multiboot_info_struct.h
r15639ec r8781e9d 30 30 #define KERN_MULTIBOOT_INFO_STRUCT_H_ 31 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_SIZE 0x34 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 43 71 44 72 #ifndef __ASSEMBLER__ … … 57 85 uint32_t mmap_length; 58 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)); 59 118 } __attribute__((packed)) multiboot_info_t; 60 119 -
kernel/genarch/src/multiboot/multiboot.c
r15639ec r8781e9d 35 35 #include <typedefs.h> 36 36 #include <genarch/multiboot/multiboot.h> 37 #include <genarch/fb/bfb.h> 37 38 #include <config.h> 38 39 #include <stddef.h> … … 168 169 multiboot_memmap(info->mmap_length, 169 170 (multiboot_memmap_t *) MULTIBOOT_PTR(info->mmap_addr)); 171 172 #ifdef CONFIG_FB 173 174 /* Initialize framebuffer. */ 175 if ((info->flags & MULTIBOOT_INFO_FLAGS_FB) != 0) { 176 if (info->framebuffer_type != 1) { 177 /* Can't use this framebuffer. */ 178 // FIXME: framebuffer_type == 2 is EGA mode, we should be able to use that. 179 return; 180 } 181 182 bfb_addr = info->framebuffer_addr; 183 bfb_width = info->framebuffer_width; 184 bfb_height = info->framebuffer_height; 185 bfb_bpp = info->framebuffer_bpp; 186 bfb_scanline = info->framebuffer_pitch; 187 bfb_red_pos = info->framebuffer_red_field_position; 188 bfb_red_size = info->framebuffer_red_mask_size; 189 bfb_green_pos = info->framebuffer_green_field_position; 190 bfb_green_size = info->framebuffer_green_mask_size; 191 bfb_blue_pos = info->framebuffer_blue_field_position; 192 bfb_blue_size = info->framebuffer_blue_mask_size; 193 } 194 195 #endif 170 196 } 171 197
Note:
See TracChangeset
for help on using the changeset viewer.