Kernel/x86 - Hacky multiboot->VESA hook
[tpg/acess2.git] / KernelLand / Kernel / arch / x86 / start.asm
index 1d4a35d..18b9f5f 100644 (file)
@@ -14,15 +14,26 @@ mboot:
        ; Multiboot macros to make a few lines later more readable
        MULTIBOOT_PAGE_ALIGN    equ 1<<0
        MULTIBOOT_MEMORY_INFO   equ 1<<1
+       MULTIBOOT_REQVIDMODE    equ 1<<2
        MULTIBOOT_HEADER_MAGIC  equ 0x1BADB002
-       MULTIBOOT_HEADER_FLAGS  equ MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO
+       MULTIBOOT_HEADER_FLAGS  equ MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO | MULTIBOOT_REQVIDMODE
        MULTIBOOT_CHECKSUM      equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
        
        ; This is the GRUB Multiboot header. A boot signature
        dd MULTIBOOT_HEADER_MAGIC
        dd MULTIBOOT_HEADER_FLAGS
        dd MULTIBOOT_CHECKSUM
+       
        dd mboot; - KERNEL_BASE ;Location of Multiboot Header
+       dd 0    ; load_addr
+       dd 0    ; load_end_addr
+       dd 0    ; bss_end_addr
+       dd 0    ; entry_addr
+       
+       dd 0    ; Mode type (0: LFB)
+       dd 0    ; Width (no preference)
+       dd 0    ; Height (no preference)
+       dd 32   ; Depth (32-bit preferred)
        
 ; Multiboot 2 Header
 ;mboot2:
@@ -55,7 +66,7 @@ mboot:
 ;      dd      8
 ;mboot2_end:
        
-[section .text]
+[section .inittext]
 [extern kmain]
 [extern Desctab_Install]
 [global start]
@@ -137,13 +148,13 @@ APStartup:
        ; Load initial GDT
        mov ax, 0xFFFF
        mov ds, ax
-       lgdt [DWORD ds:lGDTPtr-KERNEL_BASE-0xFFFF0]
+       lgdt [DWORD ds:lGDTPtr-0xFFFF0]
        ; Enable PMode in CR0
        mov eax, cr0
        or al, 1
        mov cr0, eax
        ; Jump into PMode
-       jmp 08h:DWORD .ProtectedMode-KERNEL_BASE
+       jmp 08h:DWORD .ProtectedMode
 [bits 32]
 .ProtectedMode:
        ; Load segment registers
@@ -218,6 +229,10 @@ APStartup:
        jmp .hlt
 %endif
 
+;
+;
+;
+[section .text]
 [global GetEIP]
 GetEIP:
        mov eax, [esp]

UCC git Repository :: git.ucc.asn.au