Changeset 8781e9d in mainline for kernel/genarch


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

Remove realmode VESA code

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

Location:
kernel/genarch
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.