feat: working bootloader and basic kernel (just dyes screen green)

This commit is contained in:
karina
2026-04-20 08:30:08 +04:00
parent 9b549d4184
commit 1ee5dcbd0b
9 changed files with 258 additions and 16 deletions
+30
View File
@@ -0,0 +1,30 @@
cmake_minimum_required(VERSION 3.10)
project(MyShittyKernel LANGUAGES ASM C)
if(NOT LLVM_BIN)
execute_process(COMMAND brew --prefix llvm OUTPUT_VARIABLE LLVM_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE)
set(LLVM_BIN "${LLVM_PREFIX}/bin")
endif()
set(CMAKE_C_COMPILER "${LLVM_BIN}/clang")
set(CMAKE_ASM_COMPILER "${LLVM_BIN}/clang")
set(LLVM_OBJCOPY "${LLVM_BIN}/llvm-objcopy")
set(TARGET_TRIPLE aarch64-none-elf)
add_compile_options(--target=${TARGET_TRIPLE} -ffreestanding -nostdlib -O0 -g)
set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld)
add_link_options(
--target=${TARGET_TRIPLE}
-fuse-ld=lld
-nostdlib
-static
-Wl,-T,${LINKER_SCRIPT}
)
add_executable(kernel.elf Source/entry.S)
add_custom_command(TARGET kernel.elf POST_BUILD
COMMAND ${LLVM_OBJCOPY} -O binary kernel.elf kernel.bin
COMMENT "kernel.elf -> kernel.bin"
)
+22
View File
@@ -0,0 +1,22 @@
.section .text.boot, "ax"
.global _start
_start:
add x1, x0, #64 // x1 = BIFramebuffer
ldr x2, [x1] // x2 = base
ldr x3, [x1, #16] // x3 = width
ldr x4, [x1, #24] // x4 = height
mul x5, x3, x4
mov w6, #0x00FF00
movk w6, #0x0000, lsl #16
fill_loop:
cbz x5, done
str w6, [x2], #4
sub x5, x5, #1
b fill_loop
done:
b done
+12
View File
@@ -0,0 +1,12 @@
BUILD_DIR := env_var_or_default("BUILD_DIR", justfile_directory() + "/.build")
TEMP_DIR := env_var_or_default("TEMP_DIR", BUILD_DIR + "/temp")
build:
cmake -B {{TEMP_DIR}}/Kernel -S .
cmake --build {{TEMP_DIR}}/Kernel
cp {{TEMP_DIR}}/Kernel/kernel.bin {{BUILD_DIR}}/Kernel/ksOSKernel.bin
@echo "✅ Kernel ready at: {{BUILD_DIR}}/Kernel/ksOSKernel.bin"
clean:
rm -rf {{TEMP_DIR}}/Kernel
View File