refactor: replace magic values with consts
This commit is contained in:
parent
6b89f3c48b
commit
c5ea67ad1d
|
@ -148,6 +148,7 @@ _start:
|
|||
include 'gdt.inc'
|
||||
include '../common/bootinfo.inc'
|
||||
include '../../kernel/sys/register.inc'
|
||||
include '../../kernel/sys/mmu.inc'
|
||||
|
||||
uDrive rb 1
|
||||
bDriveLBA db FALSE
|
||||
|
@ -192,7 +193,7 @@ common32:
|
|||
mov edi, boot_0_page_table
|
||||
@@:
|
||||
mov edx, esi
|
||||
or edx, 0x3
|
||||
or edx, (PTE_P or PTE_W)
|
||||
mov [edi], edx
|
||||
add edi, 4
|
||||
add esi, 4096
|
||||
|
@ -200,15 +201,15 @@ common32:
|
|||
cmp ecx, 1024
|
||||
jb @b
|
||||
|
||||
mov dword [boot_page_directory], boot_0_page_table + 0x3 ; preset and writable
|
||||
mov dword [boot_page_directory], boot_0_page_table + (PDE_P or PDE_W) ; preset and writable
|
||||
|
||||
mov dword [boot_page_directory + (768 * 4)], boot_0_page_table + 0x3
|
||||
mov dword [boot_page_directory + (768 * 4)], boot_0_page_table + (PDE_P or PDE_W)
|
||||
|
||||
mov eax, boot_page_directory
|
||||
mov cr3, eax
|
||||
|
||||
mov eax, cr0
|
||||
or eax, CR0_PG or CR0_WP
|
||||
or eax, (CR0_PG or CR0_WP)
|
||||
mov cr0, eax
|
||||
|
||||
mov eax, STPDBOOT_MAGIC
|
||||
|
|
|
@ -1,32 +1 @@
|
|||
File: Introduction
|
||||
|
||||
About: kernel memory map
|
||||
|
||||
Kernel Source Overview:
|
||||
|
||||
> kernel
|
||||
> ├── dev
|
||||
> ├── fs
|
||||
> └── mm
|
||||
|
||||
|
||||
>
|
||||
> Physical map virtual map
|
||||
> +---------------+
|
||||
> | |
|
||||
> +---------------+
|
||||
> | ISA hole ? |
|
||||
> 0x00F00000 +---------------+
|
||||
> | RAM |
|
||||
> +---------------+
|
||||
> | kernel |
|
||||
> 0x00100000 +---------------+
|
||||
> | ROM |
|
||||
> 0x000BFFFF +---------------+
|
||||
> | video display |
|
||||
> | memory |
|
||||
> 0x0009FFFF +---------------+
|
||||
> | RAM |
|
||||
> | |
|
||||
> 0x00000000 +---------------+
|
||||
>
|
||||
|
|
|
@ -1,12 +1,50 @@
|
|||
;; File: mm.inc
|
||||
;; StupidOS Memory Manager
|
||||
;;
|
||||
;; About: Memory Layout
|
||||
;;
|
||||
;; > Virtual
|
||||
;; > 0xFFFFFFFF +---------------+
|
||||
;; > | |
|
||||
;; > | Device Memory |
|
||||
;; > | |
|
||||
;; > +---------------+
|
||||
;; > | |
|
||||
;; > | Kernel Heap |
|
||||
;; > | |
|
||||
;; > KERN_END +---------------+
|
||||
;; > | |
|
||||
;; > | Stupid Kernel |
|
||||
;; > | |
|
||||
;; > 0xC0100000 +---------------+
|
||||
;; > | I/O Space and |
|
||||
;; > | phys memory |
|
||||
;; > | Lower than 1M | kernel mode only
|
||||
;; > 0xC0000000 +---------------+
|
||||
;; > | | user mode
|
||||
;; > | userspace |
|
||||
;; > | |
|
||||
;; > 0x00000000 +---------------+
|
||||
;;
|
||||
|
||||
include "pmm.inc"
|
||||
include "../sys/mmu.inc"
|
||||
|
||||
;; Macro: KV2P
|
||||
;; Convert virtual address to physical
|
||||
macro KV2P reg {
|
||||
sub reg, KERNEL_VIRT_BASE
|
||||
}
|
||||
|
||||
;; Macro: KP2V
|
||||
macro KP2V reg {
|
||||
add reg, KERNEL_VIRT_BASE
|
||||
}
|
||||
|
||||
mm_kmap:
|
||||
ret
|
||||
|
||||
;; Function: mm_init
|
||||
mm_init:
|
||||
mov esi, szMsgMmInit
|
||||
call klog
|
||||
|
@ -27,7 +65,7 @@ mm_init:
|
|||
mov edi, eax
|
||||
@@:
|
||||
mov edx, esi
|
||||
or edx, 0x3
|
||||
or edx, (PTE_P or PTE_W)
|
||||
mov [edi], edx
|
||||
add edi, 4
|
||||
add esi, 4096
|
||||
|
@ -35,7 +73,7 @@ mm_init:
|
|||
cmp ecx, 1024
|
||||
jb @b
|
||||
|
||||
or eax, 0x03
|
||||
or eax, (PDE_P or PDE_W)
|
||||
mov edx, [pKernelPgDir]
|
||||
add edx, (768 * 4)
|
||||
KV2P eax
|
||||
|
|
|
@ -39,15 +39,15 @@
|
|||
;; PDE_U - User
|
||||
;; PDE_PWT - Write-Through
|
||||
;; PDE_PS - 4MiB page
|
||||
PDE_P equ 1 << 0
|
||||
PDE_W equ 1 << 1
|
||||
PDE_U equ 1 << 2
|
||||
PDE_PWT equ 1 << 3
|
||||
PDE_PCD equ 1 << 4
|
||||
PDE_A equ 1 << 5
|
||||
PDE_D equ 1 << 6
|
||||
PDE_PS equ 1 << 7
|
||||
PDE_G equ 1 << 8
|
||||
PDE_P = 0x001
|
||||
PDE_W = 0x002
|
||||
PDE_U = 0x004
|
||||
PDE_PWT = 0x008
|
||||
PDE_PCD = 0x010
|
||||
PDE_A = 0x020
|
||||
PDE_D = 0x040
|
||||
PDE_PS = 0x080
|
||||
PDE_G = 0x100
|
||||
|
||||
;; Defines: Page Table Flags
|
||||
;; PTE_P - Present
|
||||
|
@ -59,12 +59,12 @@ PDE_G equ 1 << 8
|
|||
;; PTE_D - Dirty
|
||||
;; PTE_PAT - TODO
|
||||
;; PTE_G - TODO
|
||||
PTE_P equ 1 << 0
|
||||
PTE_W equ 1 << 1
|
||||
PTE_U equ 1 << 2
|
||||
PTE_PWT equ 1 << 3
|
||||
PTE_PCD equ 1 << 4
|
||||
PTE_A equ 1 << 5
|
||||
PTE_D equ 1 << 6
|
||||
PTE_PAT equ 1 << 7
|
||||
PTE_G equ 1 << 8
|
||||
PTE_P = 0x001
|
||||
PTE_W = 0x002
|
||||
PTE_U = 0x004
|
||||
PTE_PWT = 0x008
|
||||
PTE_PCD = 0x010
|
||||
PTE_A = 0x020
|
||||
PTE_D = 0x040
|
||||
PTE_PAT = 0x080
|
||||
PTE_G = 0x100
|
||||
|
|
Loading…
Reference in a new issue