Ignore:
Timestamp:
2009-03-13T14:44:40Z (15 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d9167a1c
Parents:
421c833
Message:

support for overriding the preconfigured VESA mode via GRUB command line option

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia32/src/boot/vesa_prot.inc

    r421c833 rb6dfc32  
    11#ifdef CONFIG_FB
     2
     3#define MULTIBOOT_LOADER_MAGIC  0x2BADB002
     4#define MBINFO_BIT_CMDLINE      2
     5#define MBINFO_OFFSET_CMDLINE   16
     6
     7        # copy real mode VESA initialization code
     8       
    29        mov $vesa_init, %esi
    310        mov $VESA_INIT_SEGMENT << 4, %edi
     
    512        rep movsb
    613       
     14        # check for GRUB command line
     15       
     16        mov grub_eax, %eax
     17        cmp $MULTIBOOT_LOADER_MAGIC, %eax
     18        jne no_cmdline
     19       
     20        mov grub_ebx, %ebx
     21        mov (%ebx), %eax
     22        bt $MBINFO_BIT_CMDLINE, %eax
     23        jnc no_cmdline
     24       
     25        # skip the kernel path in command line
     26       
     27        mov MBINFO_OFFSET_CMDLINE(%ebx), %esi
     28       
     29        skip_loop:
     30                lodsb
     31               
     32                cmp $0, %al
     33                je no_cmdline
     34               
     35                cmp $' ', %al
     36                je skip_loop_done
     37               
     38                jmp skip_loop
     39        skip_loop_done:
     40       
     41        mov (%esi), %al
     42        cmp $0, %al
     43        je no_cmdline
     44       
     45        # copy at most 23 characters from command line
     46       
     47        mov $VESA_INIT_SEGMENT << 4, %edi
     48        add $default_mode - vesa_init, %edi
     49        mov $23, %ecx
     50       
     51        cmd_loop:
     52                lodsb
     53                stosb
     54               
     55                cmp $0, %al
     56                je cmd_loop_done
     57               
     58                loop cmd_loop
     59        cmd_loop_done:
     60       
     61        # zero termination
     62       
     63        xor %eax, %eax
     64        stosb
     65       
     66        no_cmdline:
     67       
     68        # jump to the real mode
     69       
    770        mov $VESA_INIT_SEGMENT << 4, %edi
    871        jmpl *%edi
    972       
    1073        vesa_meeting_point:
     74                # returned back to protected mode
     75               
    1176                mov %esi, KA2PA(vesa_ph_addr)
    1277                mov %di, KA2PA(vesa_height)
Note: See TracChangeset for help on using the changeset viewer.