add kernel test skeleton, todo: load it

This commit is contained in:
rgimad
2025-02-09 19:55:01 +03:00
parent 98b3d652d1
commit 64700394fa
5 changed files with 62 additions and 5 deletions

View File

@@ -1,10 +1,12 @@
@echo off
fasm kernel\boot\bootx64.asm
fasm kernel\kernel64.asm
if errorlevel 1 (
echo build failed
exit /b 1
)
rd /s /q image
mkdir image\EFI\BOOT
copy kernel\boot\bootx64.efi image\EFI\BOOT\
copy kernel\boot\bootx64.efi image\EFI\BOOT\BOOTX64.EFI
copy kernel\kernel64.bin image\EFI\KERNEL64.BIN
qemu-system-x86_64 -cpu qemu64 -bios OVMF.fd -drive driver=vvfat,rw=on,dir=image\

View File

@@ -1,6 +1,9 @@
if fasm kernel/boot/bootx64.asm; then
#!/bin/sh
if fasm kernel/boot/bootx64.asm && fasm kernel/kernel64.asm; then
rm -rf image
mkdir -p image/EFI/BOOT
cp kernel/boot/bootx64.efi image/EFI/BOOT
cp kernel/boot/bootx64.efi image/EFI/BOOT/BOOTX64.EFI
cp kernel/kernel64.bin image/EFI/KERNEL64.BIN
qemu-system-x86_64 -m 128 -cpu qemu64 -bios OVMF.fd -drive driver=vvfat,rw=on,dir=image/
else
echo "build failed"

View File

@@ -1,7 +1,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2025-2025. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License. ;;
;; Distributed under terms of the GNU General Public License v2 ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
format pe64 efi
@@ -185,7 +185,7 @@ msg_firmware_revision du "UEFI revision: ", 0
msg_newline du 13,10,0
msg_failed_disable_watchdog du "Failed to disable watchdog timer!", 13,10,0
msg_end_1 du 13,10,"---------- test printing functions:", 13,10,0
msg_spacer du " ", 0
msg_spacer du " ", 0
msg_dummy du "<....>", 0
msg_e820_memmap_here du "Memory map (phys_start, phys_end, e820 type)",13,10,0
@@ -206,6 +206,9 @@ e820_typenames:
dq msg_dummy
dq msg_e820_persistent
kernel_file_path du '\EFI\KERNEL64.BIN', 0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
section '.bss' data readable writeable discardable
memory_map dq ?

49
kernel/kernel64.asm Normal file
View File

@@ -0,0 +1,49 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;
;; Copyright (C) KolibriOS team 2025-2025. All rights reserved. ;;
;; Distributed under terms of the GNU General Public License v2 ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
use64
VIRT_KERNEL_BASE = 0xFFFFFFFF80000000
org VIRT_KERNEL_BASE
dq 'KERNEL64' ; magic
dq k64_entry - VIRT_KERNEL_BASE
; maybe more fields in header
; 64 bit kernel entry point
k64_entry:
pop qword [qword puthex_ptr - VIRT_KERNEL_BASE]
pop qword [qword putstr_ptr - VIRT_KERNEL_BASE]
sub rsp, 0x20
mov rcx, kmsg_hello - VIRT_KERNEL_BASE
call qword [qword putstr_ptr - VIRT_KERNEL_BASE]
add rsp, 0x20
sub rsp, 0x20
mov rcx, kmsg_ripis - VIRT_KERNEL_BASE
call qword [qword putstr_ptr - VIRT_KERNEL_BASE]
add rsp, 0x20
sub rsp, 0x20
lea rcx, [rip]
call qword [qword puthex_ptr - VIRT_KERNEL_BASE]
add rsp, 0x20
jmp $
kmsg_hello db 'Hello from KERNEL',13,10,0
kmsg_ripis db 'RIP = ',13,10,0
puthex_ptr dq 0
putstr_ptr dq 0
rb 8192
kernel_tmp_stack:

BIN
kernel/kernel64.bin Normal file

Binary file not shown.