add kernel test skeleton, todo: load it
This commit is contained in:
@@ -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\
|
||||
|
7
build.sh
7
build.sh
@@ -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"
|
||||
|
@@ -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
|
||||
@@ -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
49
kernel/kernel64.asm
Normal 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
BIN
kernel/kernel64.bin
Normal file
Binary file not shown.
Reference in New Issue
Block a user