Pagingggggggg! (identity mapped low 4M)

This commit is contained in:
Jarkko Toivanen 2023-07-25 05:45:32 +03:00
parent d542ed42d6
commit 148634efff
Signed by: jt
GPG Key ID: 9151B109B73ECAD5
1 changed files with 42 additions and 2 deletions

View File

@ -17,7 +17,7 @@ multiboot:
dd MULTIBOOT_CHECKSUM
dd multiboot ; header address
dd 0x100000 ; load address
dd stack_bottom ; load end address
dd bss ; load end address
dd stack_top ; bss end address
dd start ; entry address
dd 0 ; video mode_type (0:fb, 1:txt) (set flags[2]!)
@ -99,6 +99,39 @@ start:
add esp, 36 ;Clean reserved uitoa return string from stack
;; Setup paging
;; Clear pagedir
cld
mov eax, 0x00000002 ;Supervisor only, Write enabled, Not present
mov ecx, 1024
mov edi, pagedir
rep stosd
;; Clear pagetable1
mov edi, pagetable1
mov cx, 0
.clearpt1loop:
mov eax, 0x00001000
mul ecx
or eax, 011b ;supervisor, rw, present
stosd
inc cx
cmp cx, 1024
jne .clearpt1loop
;; put table1 in dir
mov eax, pagetable1
or eax, 011b ;supervisor, rw, present
mov [pagedir], eax
;; Enable paging
mov eax, pagedir
mov cr3, eax
mov eax, cr0
or eax, 0x80000000
mov cr0, eax
jmp hang
hang:
@ -120,7 +153,14 @@ stuff:
.fbdimensionsmsgpfx db 10, "Framebuffer dimensions: ", 0
.x db "x", 0
bss:
align 4096
pagedir:
rb 4096
align 4096
pagetable1:
rb 4096
align 4096
stack_bottom:
rb 16384
stack_top: