add kernel test skeleton, todo: load it
This commit is contained in:
@@ -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\
|
||||||
|
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
|
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"
|
||||||
|
@@ -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
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