diff --git a/kernel/bio.inc b/kernel/bio.inc index 8312b6a..bca5c23 100644 --- a/kernel/bio.inc +++ b/kernel/bio.inc @@ -62,7 +62,7 @@ bio_bread: cmp ecx, aBlockDevices.end jb @f - mov esi, szErrorInvalidDevid + mov eax, szErrorInvalidDevid call klog jmp .end @@: diff --git a/kernel/dev/at/kbd.inc b/kernel/dev/at/kbd.inc index 048030a..1865c56 100644 --- a/kernel/dev/at/kbd.inc +++ b/kernel/dev/at/kbd.inc @@ -23,7 +23,7 @@ kbd_init: or al, al jz @f - mov esi, szMsgKbdFound + mov eax, szMsgKbdFound call klog @@: ret diff --git a/kernel/isr.inc b/kernel/isr.inc index 1936ed3..0831697 100644 --- a/kernel/isr.inc +++ b/kernel/isr.inc @@ -8,7 +8,7 @@ forward forward isr_#name#: cli - mov esi, szIntName + mov eax, szIntName call klog if error eq 0 push 0 @@ -36,7 +36,7 @@ isr_common: mov eax, [esp+IntFrame.intno] push eax - mov esi, szMsgInterrupt + mov eax, szMsgInterrupt call klog pop eax diff --git a/kernel/kernel.asm b/kernel/kernel.asm index c7953f6..85aad9a 100644 --- a/kernel/kernel.asm +++ b/kernel/kernel.asm @@ -76,23 +76,23 @@ kmain: mov ax, 100 ; 100Hz call pit_init - call bio_init + ;call bio_init - call proc_init + ;call proc_init - call dev_init + ;call dev_init - call vfs_init + ;call vfs_init ; Root inode ; rootino = newino(dev(0.0), BLK) ; fs_mountroot(rootino); - mov ah, 2 - call bio_bread + ;mov ah, 2 + ;call bio_bread - xor eax, eax - call bio_bread + ;xor eax, eax + ;call bio_bread ;mov eax, SYSCALL_EXIT ;int 0x42 @@ -104,7 +104,7 @@ kmain: ; hlt jmp $ .error_magic: - mov esi, szErrorBootProtocol + mov eax, szErrorBootProtocol .error: call klog jmp .halt diff --git a/kernel/mm/mm.old.inc b/kernel/mm/mm.old.inc deleted file mode 100644 index 039469d..0000000 --- a/kernel/mm/mm.old.inc +++ /dev/null @@ -1,217 +0,0 @@ - ;; File: mm.old.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.old.inc" -include "../sys/mmu.inc" - - ;; Macro: KV2P - ;; Convert virtual address to physical -macro KV2P reg { - sub reg, KERNEL_VIRT_BASE -} - - ;; Macro: KP2V - ;; Convert physical address to virtual -macro KP2V reg { - add reg, KERNEL_VIRT_BASE -} - - ;; Function: mm_kmap -mm_kmap: - push esp - mov ebp, esp - sub esp, 0x10 - - call pmm_alloc_page - mov [ebp-4], eax - - ; clear page dir - mov edi, eax - mov ecx, 4096 - xor al, al - rep stosb - - call pmm_alloc_page - xor esi, esi - xor ecx, ecx - mov edi, eax -@@: - mov edx, esi - or edx, (PTE_P or PTE_W) - mov [edi], edx - add edi, 4 - add esi, 4096 - inc ecx - cmp ecx, 1024 - jb @b - - or eax, (PDE_P or PDE_W) - mov edx, [ebp-4] - add edx, (768 * 4) - KV2P eax - mov [edx], eax - - mov eax, [ebp-4] - - leave - ret - - ;; Function: mm_clone_pte - ;; - ;; In: - ;; EAX - source page table - ;; - ;; Out: - ;; EAX - cloned page table - ;; -mm_clone_pte: - push esp - mov ebp, esp - sub esp, 0x10 - - leave - ret - - ;; Function: mm_clone_pgdir - ;; - ;; In: - ;; EAX - source page dir - ;; - ;; Out: - ;; EAX - cloned page dir -mm_clone_pgdir: - push esp - mov ebp, esp - sub esp, 0x10 - - mov [ebp-4], eax - call pmm_alloc_page - - mov [ebp-8], eax - mov ecx, 4096 - mov edi, eax - xor al, al - rep stosb - - xor ecx, ecx -.loop: - mov eax, [ebp-4] - add eax, ecx - mov eax, [eax] - cmp eax, 0 - je .next - cmp ecx, (768*4) - jb @f - mov edx, [ebp-8] - add edx, ecx - mov [edx], eax - jmp .next -@@: - mov edx, eax - call pmm_alloc_page -.next: - add ecx, 4 - cmp ecx, 4096 - jb .loop - - leave - ret - - ;; Function: mm_init - ;; Initialize the memory manager -mm_init: - mov esi, szMsgMmInit - call klog - - call mm_kmap - mov [pKernelPgDir], eax - - ; map whole memory - mov esi, 0x400000 - mov ebx, (769 * 4) -.loop: - call pmm_alloc_page - xor ecx, ecx - mov edi, eax -@@: - mov edx, esi - or edx, (PTE_P or PTE_W) - mov [edi], edx - add edi, 4 - add esi, 4096 - inc ecx - cmp ecx, 1024 - jb @b - - or eax, (PDE_P or PDE_W) - mov edx, [pKernelPgDir] - add edx, ebx - add ebx, 4 - KV2P eax - mov [edx], eax - - cmp esi, [stBootInfo.high_mem] - jb .loop - - ; reload cr3 - mov eax, [pKernelPgDir] - KV2P eax - mov cr3, eax - - push eax - mov esi, szMsgMmKernelPgDir - call klog - - ret - - ;; Function: mm_mmap - ;; - ;; In: - ;; XXX - addr - ;; XXX - length - ;; XXX - prot - ;; XXX - flags -mm_mmap: - ret - - ;; Function: mm_munmap - ;; - ;; In: - ;; XXX - addr - ;; XXX - length - ;; -mm_munmap: - ret - -mm_wallk_pagedir: - ret - -szMsgMmInit db "MM: initialize", 0 -szMsgMmKernelPgDir db "MM: Kernel page dir at %x phys", 0 -pKernelPgDir dd 0 diff --git a/kernel/mm/pmm.old.inc b/kernel/mm/pmm.old.inc deleted file mode 100644 index a615d08..0000000 --- a/kernel/mm/pmm.old.inc +++ /dev/null @@ -1,140 +0,0 @@ - ;; File: pmm.old.inc - -macro ALIGN reg { - local ..end - - push reg - and reg, 0xFFF - pop reg - jz ..end - and reg, 0xFFFFF000 - add reg, 0x1000 -..end: -} - - ;; Function: pmm_init - ;; - ;; In: - ;; EAX - Start - ;; EBX - End -pmm_init: - push eax - mov esi, szMsgPmmInit - call klog - pop eax - - call pmm_free_range - ret - - ;; Function: pmm_alloc_page - ;; - ;; Out: - ;; EAX - page address (return zero on error) -pmm_alloc_page: - mov eax, uPmmLock - call lock_acquire - - cmp [pFreeList], 0 - je .error - mov eax, [pFreeList] - mov edx, [eax] - mov [pFreeList], edx - - inc [cUsedPage] - dec [cFreePage] - - - push eax - mov eax, uPmmLock - call lock_release - pop eax - - ret -.error: - mov esi, szErrorNoMemLeft - call klog - - mov eax, uPmmLock - call lock_release - xor eax, eax - - ret - - ;; Function: pmm_free_page - ;; push page back to free list - ;; - ;; In: - ;; EAX - page to be freed -pmm_free_page: - mov eax, uPmmLock - call lock_acquire - or eax, eax - jz @f - mov edx, [pFreeList] - mov [eax], edx - mov [pFreeList], eax - - inc [cFreePage] - dec [cUsedPage] -@@: - mov eax, uPmmLock - call lock_release - ret - - ;; Function: pmm_free_range - ;; - ;; In: - ;; EAX - Start - ;; EBX - End -pmm_free_range: - push ebp - mov ebp, esp - sub esp, 0x10 - ALIGN eax - ALIGN ebx - mov [ebp-4], eax - mov [ebp-8], ebx - - push ebx - push eax - mov esi, szMsgPmmFreeRange - call klog - - mov esi, [ebp-4] -.loop: - mov eax, [pFreeList] - mov [esi], eax - mov [pFreeList], esi - - inc [cTotalPage] - inc [cFreePage] - - add esi, 4096 - cmp esi, [ebp-8] - jb .loop - - call pmm_stats - - leave - ret - - ;; Function: pmm_stats -pmm_stats: - push dword [cFreePage] - push dword [cUsedPage] - push dword [cTotalPage] - mov esi, szMsgPmmStats - call klog - ret - -pFreeList dd 0 -szMsgPmmInit db "PMM: initialize", 0 -szMsgPmmFreeRange db "PMM: add free memory range %x - %x", 0 -szErrorNoMemLeft db "Error: no free memory left", 0 -szMsgPmmStats db "PMM: Total page: %x | Used page: %x | Free page: %x", 0 -uPmmLock dd 0 - -; Some stats -cFreePage dd 0 -cUsedPage dd 0 -cTotalPage dd 0 diff --git a/kernel/mm/uvm/uvm.inc b/kernel/mm/uvm/uvm.inc deleted file mode 100644 index f10dce3..0000000 --- a/kernel/mm/uvm/uvm.inc +++ /dev/null @@ -1,9 +0,0 @@ - ;; File: uvm.inc - -include 'uvm_km.inc' - - ;; Function: uvm_init - ;; - ;; Sets up the UVM system -uvm_init: - ret diff --git a/kernel/mm/uvm/uvm_km.inc b/kernel/mm/uvm/uvm_km.inc deleted file mode 100644 index e69de29..0000000 diff --git a/kernel/mm/uvm/uvm_map.inc b/kernel/mm/uvm/uvm_map.inc deleted file mode 100644 index 96f5180..0000000 --- a/kernel/mm/uvm/uvm_map.inc +++ /dev/null @@ -1,5 +0,0 @@ - ;; File: uvm_map.inc - -struc VmMap { - -} diff --git a/kernel/vfs.inc b/kernel/vfs.inc index 848a89f..e728dd6 100644 --- a/kernel/vfs.inc +++ b/kernel/vfs.inc @@ -115,8 +115,9 @@ vfs_register: mov eax, [eax + VFS.name] push eax - mov esi, szMsgVFSRegister + mov eax, szMsgVFSRegister call klog + pop eax ret vfs_init: