diff --git a/Makefile b/Makefile index 5635782..14af716 100644 --- a/Makefile +++ b/Makefile @@ -84,7 +84,7 @@ make_disk: @echo ${CL2}[make_disk]${CL} OK${CL3} testloader: loader - @qemu-system-x86_64 -hda build/bin/disk.img -d cpu_reset,guest_errors,pcall,int -s -S -enable-kvm 2> qemu.log & + @qemu-system-x86_64 -hda build/bin/disk.img -d cpu_reset,guest_errors,pcall -s -S -enable-kvm 2> qemu.log & @ndisasm $(OBJDIR)/boot/loader.bin -b 32 > loader_dism.asm diff --git a/boot/loader/loader.asm b/boot/loader/loader.asm index 586d18e..1fb8f51 100644 --- a/boot/loader/loader.asm +++ b/boot/loader/loader.asm @@ -86,28 +86,7 @@ main: call Is64Bits call Setup_paging - - ;; Registering paging - mov eax, PML4_table - mov cr3, eax ; Load PML4 to cr3 - - mov eax, cr4 - or eax, 1 << 5 - mov cr4, eax ; Enable PAE - - ;; Activate long mode - mov ecx, 0xC0000080 ; address of MSR - rdmsr ; read MSR - or eax, 1 << 8 ; LME = 1. (Long Mode Enable) - wrmsr ; write MSR - - ;; Enable paging - mov eax, cr0 - or eax, 1 << 31 ; make MSR bit 31 (PG = Paging) to 1 : - ; |1|000000000000000000000000000000 - ; | - ; `------ Paging bit - mov cr0, eax + call Go64 mov dword [0xb8000], 0x2f4b2f4f ret diff --git a/build/obj/boot/loader.bin b/build/obj/boot/loader.bin index 182a3e2..8721f45 100644 Binary files a/build/obj/boot/loader.bin and b/build/obj/boot/loader.bin differ