Changeset 8be3230 in mainline
- Timestamp:
- 2018-11-18T01:01:02Z (6 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3b3fcf36
- Parents:
- ec18e454
- Files:
-
- 8 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/amd64/src/boot/multiboot.S
rec18e454 r8be3230 38 38 #include <arch/cpu.h> 39 39 40 // TODO: most of this file can be rewritten in C41 42 40 #define START_STACK (BOOT_OFFSET - BOOT_STACK_SIZE) 43 41 … … 52 50 53 51 .macro pm_status msg 54 #if defined(CONFIG_EGA) && !defined(CONFIG_FB)52 #ifdef CONFIG_EGA 55 53 pushl %esi 56 54 movl \msg, %esi … … 69 67 multiboot_header: 70 68 .long MULTIBOOT_HEADER_MAGIC 71 #ifdef CONFIG_FB72 69 .long MULTIBOOT_HEADER_FLAGS 73 70 .long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS) /* checksum */ 74 #else75 .long MULTIBOOT_HEADER_FLAGS_NOFB76 .long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS_NOFB) /* checksum */77 #endif78 71 .long multiboot_header 79 72 .long unmapped_start … … 81 74 .long 0 82 75 .long multiboot_image_start 83 #ifdef CONFIG_FB84 .long 085 .long CONFIG_BFB_WIDTH86 .long CONFIG_BFB_HEIGHT87 .long CONFIG_BFB_BPP88 #endif89 76 90 77 SYMBOL(multiboot_image_start) … … 171 158 sse2_supported: 172 159 160 #include "vesa_prot.inc" 161 173 162 pm2_status $status_prot2 174 163 … … 579 568 580 569 ret 570 571 #include "vesa_real.inc" 581 572 582 573 .section K_INI_PTLS, "aw", @progbits … … 717 708 status_prot: 718 709 .asciz "[prot] " 710 status_vesa_copy: 711 .asciz "[vesa_copy] " 719 712 status_multiboot_cmdline: 720 713 .asciz "[multiboot_cmdline] " 714 status_vesa_real: 715 .asciz "[vesa_real] " 721 716 status_prot2: 722 717 .asciz "[prot2] " -
kernel/arch/ia32/src/boot/multiboot.S
rec18e454 r8be3230 38 38 #include <arch/cpu.h> 39 39 40 // TODO: most of this file can be rewritten in C41 42 40 #define START_STACK (BOOT_OFFSET - BOOT_STACK_SIZE) 43 41 … … 52 50 53 51 .macro pm_status msg 54 #if defined(CONFIG_EGA) && !defined(CONFIG_FB)52 #ifdef CONFIG_EGA 55 53 pushl %esi 56 54 movl \msg, %esi … … 68 66 multiboot_header: 69 67 .long MULTIBOOT_HEADER_MAGIC 70 #ifdef CONFIG_FB71 68 .long MULTIBOOT_HEADER_FLAGS 72 69 .long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS) /* checksum */ 73 #else74 .long MULTIBOOT_HEADER_FLAGS_NOFB75 .long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS_NOFB) /* checksum */76 #endif77 70 .long multiboot_header 78 71 .long unmapped_start … … 80 73 .long 0 81 74 .long multiboot_image_start 82 #ifdef CONFIG_FB83 .long 084 .long CONFIG_BFB_WIDTH85 .long CONFIG_BFB_HEIGHT86 .long CONFIG_BFB_BPP87 #endif88 75 89 76 SYMBOL(multiboot_image_start) … … 117 104 118 105 pm_status $status_prot 106 107 #include "vesa_prot.inc" 119 108 120 109 #ifndef PROCESSOR_i486 … … 696 685 ret 697 686 687 #include "vesa_real.inc" 688 698 689 .section K_DATA_START, "aw", @progbits 699 690 … … 729 720 status_non_pse: 730 721 .asciz "[non_pse] " 722 status_vesa_copy: 723 .asciz "[vesa_copy] " 731 724 status_multiboot_cmdline: 732 725 .asciz "[multiboot_cmdline] " 726 status_vesa_real: 727 .asciz "[vesa_real] " 733 728 status_prot2: 734 729 .asciz "[prot2] " -
kernel/genarch/include/genarch/multiboot/multiboot.h
rec18e454 r8be3230 39 39 #include <genarch/multiboot/multiboot_info_struct.h> 40 40 41 #define MULTIBOOT_HEADER_MAGIC 0x1badb002 42 #define MULTIBOOT_HEADER_FLAGS 0x00010007 43 #define MULTIBOOT_HEADER_FLAGS_NOFB 0x00010003 41 #define MULTIBOOT_HEADER_MAGIC 0x1badb002 42 #define MULTIBOOT_HEADER_FLAGS 0x00010003 44 43 45 44 #define MULTIBOOT_LOADER_MAGIC 0x2badb002 46 45 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 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 60 53 61 54 #ifndef __ASSEMBLER__ -
kernel/genarch/include/genarch/multiboot/multiboot_info_struct.h
rec18e454 r8be3230 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_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 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 71 43 72 44 #ifndef __ASSEMBLER__ … … 85 57 uint32_t mmap_length; 86 58 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 59 } __attribute__((packed)) multiboot_info_t; 119 60 -
kernel/genarch/src/multiboot/multiboot.c
rec18e454 r8be3230 35 35 #include <typedefs.h> 36 36 #include <genarch/multiboot/multiboot.h> 37 #include <genarch/fb/bfb.h>38 37 #include <config.h> 39 38 #include <stddef.h> … … 169 168 multiboot_memmap(info->mmap_length, 170 169 (multiboot_memmap_t *) MULTIBOOT_PTR(info->mmap_addr)); 171 172 #ifdef CONFIG_FB173 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 #endif196 170 } 197 171 -
tools/autocheck.awk
rec18e454 r8be3230 38 38 39 39 /}.*;/ { 40 pattern = "}( __attribute__\\(.*\\))? " struct_name "_t;" 41 if ($0 ~ pattern) { 42 macro_name = toupper(struct_name) "_SIZE" 43 print "_Static_assert(" macro_name " == sizeof(struct " struct_name "), \"\");" 44 struct_name = "" 40 pattern = "}( __attribute__\\(.*\\))? (" struct_name "_t)?;" 41 if ($0 !~ pattern) { 42 print("Bad struct ending: " $0) > "/dev/stderr" 43 exit 1 45 44 } 45 macro_name = toupper(struct_name) "_SIZE" 46 print "_Static_assert(" macro_name " == sizeof(struct " struct_name "), \"\");" 47 struct_name = "" 46 48 } 47 49 48 50 /;$/ { 49 if (struct_name != "" && $0 !~ "}") {51 if (struct_name != "") { 50 52 # Remove array subscript, if any. 51 53 sub("(\\[.*\\])?;", "", $0)
Note:
See TracChangeset
for help on using the changeset viewer.