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 @echo off
fasm kernel\boot\bootx64.asm fasm kernel\boot\bootx64.asm
fasm kernel\kernel64.asm
if errorlevel 1 ( if errorlevel 1 (
echo build failed echo build failed
exit /b 1 exit /b 1
) )
rd /s /q image rd /s /q image
mkdir image\EFI\BOOT 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\ 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 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/ qemu-system-x86_64 -m 128 -cpu qemu64 -bios OVMF.fd -drive driver=vvfat,rw=on,dir=image/
else else
echo "build failed" echo "build failed"

View File

@@ -1,7 +1,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;; ;; ;;
;; Copyright (C) KolibriOS team 2025-2025. All rights reserved. ;; ;; 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 format pe64 efi
@@ -206,6 +206,9 @@ e820_typenames:
dq msg_dummy dq msg_dummy
dq msg_e820_persistent dq msg_e820_persistent
kernel_file_path du '\EFI\KERNEL64.BIN', 0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
section '.bss' data readable writeable discardable section '.bss' data readable writeable discardable
memory_map dq ? 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.