From a2cdf21167ac12c314a719d2c90a5863256df354 Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jackpot51@gmail.com> Date: Sat, 17 Jun 2017 14:32:09 -0600 Subject: [PATCH] Allow both filesystem and live modes --- x86_64/disk.asm | 17 ++++++++++++++--- x86_64/startup-common.asm | 23 +++++++++++++++++++++-- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/x86_64/disk.asm b/x86_64/disk.asm index 6376521..fce7e94 100644 --- a/x86_64/disk.asm +++ b/x86_64/disk.asm @@ -11,7 +11,18 @@ startup_start: align 512, db 0 startup_end: -filesystem: - %defstr FILESYSTEM_STR %[FILESYSTEM] - incbin FILESYSTEM_STR +%ifdef KERNEL + kernel_file: + %defstr KERNEL_STR %[KERNEL] + incbin KERNEL_STR + .end: align 512, db 0 +%endif + +%ifdef FILESYSTEM + filesystem: + %defstr FILESYSTEM_STR %[FILESYSTEM] + incbin FILESYSTEM_STR + .end: + align 512, db 0 +%endif diff --git a/x86_64/startup-common.asm b/x86_64/startup-common.asm index 2b9bd92..fb29d7f 100644 --- a/x86_64/startup-common.asm +++ b/x86_64/startup-common.asm @@ -10,8 +10,25 @@ startup: or al, 2 out 0x92, al - call redoxfs + %ifdef KERNEL + mov edi, [kernel_base] + mov ecx, (kernel_file.end - kernel_file) + mov [kernel_size], ecx + mov eax, (kernel_file - boot)/512 + add ecx, 511 + shr ecx, 9 + call load_extent + + jmp .loaded_kernel + %endif + + %ifdef FILESYSTEM + call redoxfs + jmp .loaded_kernel + %endif + +.loaded_kernel: call memory_map call vesa @@ -113,7 +130,9 @@ load_extent: %include "memory_map.asm" %include "vesa.asm" %include "initialize.asm" -%include "redoxfs.asm" +%ifdef FILESYSTEM + %include "redoxfs.asm" +%endif init_fpu_msg: db "Init FPU",13,10,0 init_sse_msg: db "Init SSE",13,10,0 -- GitLab