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

Changeset 8781e9d in mainline


Ignore:
Timestamp:
2018-11-12T20:20:36Z (3 years ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Branches:
lfn, master
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)
Message:

Remove realmode VESA code

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

Files:
8 deleted
6 edited

Legend:

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

    r15639ec r8781e9d  
    3838#include <arch/cpu.h>
    3939
     40// TODO: most of this file can be rewritten in C
     41
    4042#define START_STACK  (BOOT_OFFSET - BOOT_STACK_SIZE)
    4143
     
    5052
    5153.macro pm_status msg
    52 #ifdef CONFIG_EGA
     54#if defined(CONFIG_EGA) && !defined(CONFIG_FB)
    5355        pushl %esi
    5456        movl \msg, %esi
     
    6769multiboot_header:
    6870        .long MULTIBOOT_HEADER_MAGIC
     71#ifdef CONFIG_FB
    6972        .long MULTIBOOT_HEADER_FLAGS
    7073        .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
    7178        .long multiboot_header
    7279        .long unmapped_start
     
    7481        .long 0
    7582        .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
    7689
    7790SYMBOL(multiboot_image_start)
     
    158171        sse2_supported:
    159172
    160 #include "vesa_prot.inc"
    161 
    162173        pm2_status $status_prot2
    163174
     
    568579
    569580        ret
    570 
    571 #include "vesa_real.inc"
    572581
    573582.section K_INI_PTLS, "aw", @progbits
     
    708717status_prot:
    709718        .asciz "[prot] "
    710 status_vesa_copy:
    711         .asciz "[vesa_copy] "
    712719status_multiboot_cmdline:
    713720        .asciz "[multiboot_cmdline] "
    714 status_vesa_real:
    715         .asciz "[vesa_real] "
    716721status_prot2:
    717722        .asciz "[prot2] "
  • kernel/arch/ia32/src/boot/multiboot.S

    r15639ec r8781e9d  
    3838#include <arch/cpu.h>
    3939
     40// TODO: most of this file can be rewritten in C
     41
    4042#define START_STACK  (BOOT_OFFSET - BOOT_STACK_SIZE)
    4143
     
    5052
    5153.macro pm_status msg
    52 #ifdef CONFIG_EGA
     54#if defined(CONFIG_EGA) && !defined(CONFIG_FB)
    5355        pushl %esi
    5456        movl \msg, %esi
     
    6668multiboot_header:
    6769        .long MULTIBOOT_HEADER_MAGIC
     70#ifdef CONFIG_FB
    6871        .long MULTIBOOT_HEADER_FLAGS
    6972        .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
    7077        .long multiboot_header
    7178        .long unmapped_start
     
    7380        .long 0
    7481        .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
    7588
    7689SYMBOL(multiboot_image_start)
     
    104117
    105118        pm_status $status_prot
    106 
    107 #include "vesa_prot.inc"
    108119
    109120#ifndef PROCESSOR_i486
     
    685696        ret
    686697
    687 #include "vesa_real.inc"
    688 
    689698.section K_DATA_START, "aw", @progbits
    690699
     
    720729status_non_pse:
    721730        .asciz "[non_pse] "
    722 status_vesa_copy:
    723         .asciz "[vesa_copy] "
    724731status_multiboot_cmdline:
    725732        .asciz "[multiboot_cmdline] "
    726 status_vesa_real:
    727         .asciz "[vesa_real] "
    728733status_prot2:
    729734        .asciz "[prot2] "
  • kernel/genarch/include/genarch/multiboot/multiboot.h

    r15639ec r8781e9d  
    3939#include <genarch/multiboot/multiboot_info_struct.h>
    4040
    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
    4344
    4445#define MULTIBOOT_LOADER_MAGIC  0x2badb002
    4546
    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
    5360
    5461#ifndef __ASSEMBLER__
  • kernel/genarch/include/genarch/multiboot/multiboot_info_struct.h

    r15639ec r8781e9d  
    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_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
    4371
    4472#ifndef __ASSEMBLER__
     
    5785        uint32_t mmap_length;
    5886        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));
    59118} __attribute__((packed)) multiboot_info_t;
    60119
  • kernel/genarch/src/multiboot/multiboot.c

    r15639ec r8781e9d  
    3535#include <typedefs.h>
    3636#include <genarch/multiboot/multiboot.h>
     37#include <genarch/fb/bfb.h>
    3738#include <config.h>
    3839#include <stddef.h>
     
    168169                multiboot_memmap(info->mmap_length,
    169170                    (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
    170196}
    171197
  • tools/autocheck.awk

    r15639ec r8781e9d  
    3838
    3939/}.*;/ {
    40         pattern = "}( __attribute__\\(.*\\))? (" struct_name "_t)?;"
    41         if ($0 !~ pattern) {
    42                 print("Bad struct ending: " $0) > "/dev/stderr"
    43                 exit 1
     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 = ""
    4445        }
    45         macro_name = toupper(struct_name) "_SIZE"
    46         print "_Static_assert(" macro_name " == sizeof(struct " struct_name "), \"\");"
    47         struct_name = ""
    4846}
    4947
    5048/;$/ {
    51         if (struct_name != "") {
     49        if (struct_name != "" && $0 !~ "}") {
    5250                # Remove array subscript, if any.
    5351                sub("(\\[.*\\])?;", "", $0)
Note: See TracChangeset for help on using the changeset viewer.