From 472ec944d2ed81d0304cc6cac80946a6a44776be Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Sat, 19 Apr 2025 16:36:51 -0400 Subject: UEFI and republicans --- kernel/entry.S | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 60 insertions(+), 9 deletions(-) (limited to 'kernel/entry.S') diff --git a/kernel/entry.S b/kernel/entry.S index 0610495..fdb8a5a 100644 --- a/kernel/entry.S +++ b/kernel/entry.S @@ -12,24 +12,47 @@ # multiboot header mb_start: - .align 8 # magic + .align 8 .long 0xe85250d6 .long 0 .long mb_end - mb_start .long 0x100000000 - (0xe85250d6 + (mb_end - mb_start)) -mbi_start: - .align 8 # info request + .align 8 .short 1 .short 1 - .long mbi_end - mbi_start - .long 1 # cmdline - .long 6 # mmap - .long 9 # elf section -mbi_end: + .long 20 + .long 1 # cmdline + .long 6 # mmap + .long 9 # elf section + # bios entry + .align 8 + .short 3 + .short 0 + .long 12 + .long _start + # framebuffer + .align 8 + .short 5 + .short 1 + .long 20 + .long 720 # width + .long 480 # height + .long 32 # bpp + # efi boot services .align 8 + .short 7 + .short 0 + .long 8 + # efi amd64 entry + .align 8 + .short 9 + .short 0 + .long 12 + .long _start_efi # null + .align 8 .short 0 .short 0 .long 8 @@ -131,7 +154,7 @@ GDT: .code32 _start: - # enable interrupts + # disable interrupts cli # setup stack @@ -203,8 +226,36 @@ code64: pop %rsi call main + jmp halt + +_start_efi: + # disable interrupts cli + # setup stack + movq $kern_stack_end, %rsp + movq $kern_stack_end, %rbp + + # load gdt + lgdt GDT.Pointer + + # set segment registers + movw $GDT.Code, %dx + movw %dx, %cs + movw %dx, %es + movw $GDT.Data, %dx + movw %dx, %ds + movw %dx, %ss + + xorq %rbp, %rbp # set ebp to 0 so we know where to end stack traces + + movq %rax, %rdi + movq %rbx, %rsi + + call main + jmp halt + halt: + cli hlt jmp halt -- cgit v1.2.3-freya