From 9a2d5cbdc7972d1d5bfb1ea93f82f66d113faa17 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Wed, 7 Jul 2021 19:13:11 +0200 Subject: Strange implementations --- src/loader/jmp.asm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/loader/jmp.asm (limited to 'src/loader/jmp.asm') diff --git a/src/loader/jmp.asm b/src/loader/jmp.asm new file mode 100644 index 0000000..f591dda --- /dev/null +++ b/src/loader/jmp.asm @@ -0,0 +1,28 @@ +; MIT License, Copyright (c) 2021 Marvin Borner +; Exit the bootloader and clear registers + +bits 32 + +; Empty (invalid) idt +idt: + dd 0, 0 + +global jmp_kernel +jmp_kernel: + cli ; Disable interrupts because of invalid idt + lidt [idt] ; Load empty (invalid) idt + + xor eax, eax + lldt ax ; Clear LDT by pointing to nothing + + add esp, 4 + pop edi + add esp, 4 + + mov eax, 0x00000001 + mov cr0, eax ; Clear cr0 except protected mode + + xor eax, eax + mov cr4, eax ; Clear cr4 completely + + call edi ; Call custom (specified) jumper -- cgit v1.2.3