aboutsummaryrefslogtreecommitdiffstats
path: root/src/boot/boot.stage2.asm
blob: 52c73e5d1a62dd81d18bd872a22e9821babf687d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
    ;; boot.stage2.asm

    [bits 16]
    [org 0x7e00]
    
    jmp 0x0000:_s2_entry

_s2_entry:  
    cli
    xor ax, ax
    mov ds, ax

    mov si, boot_s2_msg
    call _print_string

    call _enable_a20            ; Enable A20 line 
    lgdt [GDT32_ptr]            ; Load GDT

    ;; Setup Protected Mode
    mov eax, cr0
    or eax, 1
    mov cr0, eax

    jmp CODE_SEG32:_protected_mode

    [bits 32]
_protected_mode:    
    mov ax, DATA_SEG32
    mov ds, ax
    mov esp, 0x90000

    mov esi, boot_protmode_msg
    call _print_string_pm_vga 

    call 0x10000

    jmp $
    
    %include "boot.stage1.print.asm"
    %include "boot.stage2.a20.asm"
    %include "boot.stage2.gdt32.asm"
    %include "boot.stage2.print.asm"

boot_s2_msg:    
    db "Entering Stage 2", 13, 10, 0
boot_protmode_msg:  
    db "Enabling Protected Mode", 13, 10, 0