Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 8be3230 in mainline


Ignore:
Timestamp:
2018-11-18T01:01:02Z (20 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
3b3fcf36
Parents:
ec18e454
Message:

Revert "Remove realmode VESA code" - needs more work

This reverts commit 8781e9d05ac3f6aeaa3ad709c5af9efa3209b87a.

Files:
8 added
6 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/boot/multiboot.S

    rec18e454 r8be3230  
    3838#include <arch/cpu.h>
    3939
    40 // TODO: most of this file can be rewritten in C
    41 
    4240#define START_STACK  (BOOT_OFFSET - BOOT_STACK_SIZE)
    4341
     
    5250
    5351.macro pm_status msg
    54 #if defined(CONFIG_EGA) && !defined(CONFIG_FB)
     52#ifdef CONFIG_EGA
    5553        pushl %esi
    5654        movl \msg, %esi
     
    6967multiboot_header:
    7068        .long MULTIBOOT_HEADER_MAGIC
    71 #ifdef CONFIG_FB
    7269        .long MULTIBOOT_HEADER_FLAGS
    7370        .long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)  /* checksum */
    74 #else
    75         .long MULTIBOOT_HEADER_FLAGS_NOFB
    76         .long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS_NOFB)  /* checksum */
    77 #endif
    7871        .long multiboot_header
    7972        .long unmapped_start
     
    8174        .long 0
    8275        .long multiboot_image_start
    83 #ifdef CONFIG_FB
    84         .long 0
    85         .long CONFIG_BFB_WIDTH
    86         .long CONFIG_BFB_HEIGHT
    87         .long CONFIG_BFB_BPP
    88 #endif
    8976
    9077SYMBOL(multiboot_image_start)
     
    171158        sse2_supported:
    172159
     160#include "vesa_prot.inc"
     161
    173162        pm2_status $status_prot2
    174163
     
    579568
    580569        ret
     570
     571#include "vesa_real.inc"
    581572
    582573.section K_INI_PTLS, "aw", @progbits
     
    717708status_prot:
    718709        .asciz "[prot] "
     710status_vesa_copy:
     711        .asciz "[vesa_copy] "
    719712status_multiboot_cmdline:
    720713        .asciz "[multiboot_cmdline] "
     714status_vesa_real:
     715        .asciz "[vesa_real] "
    721716status_prot2:
    722717        .asciz "[prot2] "
  • kernel/arch/ia32/src/boot/multiboot.S

    rec18e454 r8be3230  
    3838#include <arch/cpu.h>
    3939
    40 // TODO: most of this file can be rewritten in C
    41 
    4240#define START_STACK  (BOOT_OFFSET - BOOT_STACK_SIZE)
    4341
     
    5250
    5351.macro pm_status msg
    54 #if defined(CONFIG_EGA) && !defined(CONFIG_FB)
     52#ifdef CONFIG_EGA
    5553        pushl %esi
    5654        movl \msg, %esi
     
    6866multiboot_header:
    6967        .long MULTIBOOT_HEADER_MAGIC
    70 #ifdef CONFIG_FB
    7168        .long MULTIBOOT_HEADER_FLAGS
    7269        .long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)  /* checksum */
    73 #else
    74         .long MULTIBOOT_HEADER_FLAGS_NOFB
    75         .long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS_NOFB)  /* checksum */
    76 #endif
    7770        .long multiboot_header
    7871        .long unmapped_start
     
    8073        .long 0
    8174        .long multiboot_image_start
    82 #ifdef CONFIG_FB
    83         .long 0
    84         .long CONFIG_BFB_WIDTH
    85         .long CONFIG_BFB_HEIGHT
    86         .long CONFIG_BFB_BPP
    87 #endif
    8875
    8976SYMBOL(multiboot_image_start)
     
    117104
    118105        pm_status $status_prot
     106
     107#include "vesa_prot.inc"
    119108
    120109#ifndef PROCESSOR_i486
     
    696685        ret
    697686
     687#include "vesa_real.inc"
     688
    698689.section K_DATA_START, "aw", @progbits
    699690
     
    729720status_non_pse:
    730721        .asciz "[non_pse] "
     722status_vesa_copy:
     723        .asciz "[vesa_copy] "
    731724status_multiboot_cmdline:
    732725        .asciz "[multiboot_cmdline] "
     726status_vesa_real:
     727        .asciz "[vesa_real] "
    733728status_prot2:
    734729        .asciz "[prot2] "
  • kernel/genarch/include/genarch/multiboot/multiboot.h

    rec18e454 r8be3230  
    3939#include <genarch/multiboot/multiboot_info_struct.h>
    4040
    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
    4443
    4544#define MULTIBOOT_LOADER_MAGIC  0x2badb002
    4645
    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
    6053
    6154#ifndef __ASSEMBLER__
  • kernel/genarch/include/genarch/multiboot/multiboot_info_struct.h

    rec18e454 r8be3230  
    3030#define KERN_MULTIBOOT_INFO_STRUCT_H_
    3131
    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
    7143
    7244#ifndef __ASSEMBLER__
     
    8557        uint32_t mmap_length;
    8658        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));
    11859} __attribute__((packed)) multiboot_info_t;
    11960
  • kernel/genarch/src/multiboot/multiboot.c

    rec18e454 r8be3230  
    3535#include <typedefs.h>
    3636#include <genarch/multiboot/multiboot.h>
    37 #include <genarch/fb/bfb.h>
    3837#include <config.h>
    3938#include <stddef.h>
     
    169168                multiboot_memmap(info->mmap_length,
    170169                    (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
    196170}
    197171
  • tools/autocheck.awk

    rec18e454 r8be3230  
    3838
    3939/}.*;/ {
    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
    4544        }
     45        macro_name = toupper(struct_name) "_SIZE"
     46        print "_Static_assert(" macro_name " == sizeof(struct " struct_name "), \"\");"
     47        struct_name = ""
    4648}
    4749
    4850/;$/ {
    49         if (struct_name != "" && $0 !~ "}") {
     51        if (struct_name != "") {
    5052                # Remove array subscript, if any.
    5153                sub("(\\[.*\\])?;", "", $0)
Note: See TracChangeset for help on using the changeset viewer.