refactor: replace magic values with consts
This commit is contained in:
		
							parent
							
								
									6b89f3c48b
								
							
						
					
					
						commit
						c5ea67ad1d
					
				
					 4 changed files with 63 additions and 55 deletions
				
			
		|  | @ -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…
	
	Add table
		
		Reference in a new issue