Kernel modules system #2
@@ -20,7 +20,7 @@ Address ExceptionsHandler(ExceptionsContext* frame, ExceptionsType type) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (class == 0x15 && syndrome == 0) {
|
if (class == 0x15 && syndrome == 0) {
|
||||||
OSPanic("Wow! We are inside EL0! Syscall caught successfully! :D");
|
OSPanic("Hi from userspace!!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
OSPanicException(frame);
|
OSPanicException(frame);
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ if(APPLE)
|
|||||||
find_program(TERMOS_LD_LLD NAMES ld.lld HINTS /usr/local/bin /opt/homebrew/bin REQUIRED)
|
find_program(TERMOS_LD_LLD NAMES ld.lld HINTS /usr/local/bin /opt/homebrew/bin REQUIRED)
|
||||||
set(CMAKE_C_LINK_FLAGS "")
|
set(CMAKE_C_LINK_FLAGS "")
|
||||||
set(CMAKE_C_LINK_EXECUTABLE
|
set(CMAKE_C_LINK_EXECUTABLE
|
||||||
"${TERMOS_LD_LLD} <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
"${TERMOS_LD_LLD} <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_program(LLVM_OBJCOPY NAMES llvm-objcopy objcopy
|
find_program(LLVM_OBJCOPY NAMES llvm-objcopy objcopy
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
ENTRY(_start)
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
. = 0x400000;
|
||||||
|
|
||||||
|
.text : ALIGN(4K) {
|
||||||
|
*(.text .text.*)
|
||||||
|
}
|
||||||
|
|
||||||
|
.rodata : ALIGN(4K) {
|
||||||
|
*(.rodata .rodata.*)
|
||||||
|
}
|
||||||
|
|
||||||
|
.data : ALIGN(4K) {
|
||||||
|
*(.data .data.*)
|
||||||
|
}
|
||||||
|
|
||||||
|
.bss : ALIGN(4K) {
|
||||||
|
*(.bss .bss.*)
|
||||||
|
*(COMMON)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,8 @@
|
|||||||
# Copyright (c) 2026 0xKSor
|
# Copyright (c) 2026 0xKSor
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
project(ksOS_init LANGUAGES C)
|
project(ksOS_init LANGUAGES C ASM)
|
||||||
|
|
||||||
|
|
||||||
file(GLOB_RECURSE INIT_SOURCES CMAKE_CONFIGURE_DEPENDS
|
file(GLOB_RECURSE INIT_SOURCES CMAKE_CONFIGURE_DEPENDS
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/Source/*.S
|
${CMAKE_CURRENT_SOURCE_DIR}/Source/*.S
|
||||||
@@ -17,21 +18,27 @@ target_include_directories(init PRIVATE
|
|||||||
)
|
)
|
||||||
|
|
||||||
target_compile_options(init PRIVATE
|
target_compile_options(init PRIVATE
|
||||||
-std=c23
|
$<$<COMPILE_LANGUAGE:C>:
|
||||||
|
-std=c23
|
||||||
|
-fno-stack-protector
|
||||||
|
-fno-builtin
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
>
|
||||||
-ffreestanding
|
-ffreestanding
|
||||||
-fno-stack-protector
|
|
||||||
-fno-builtin
|
|
||||||
-Wall -Wextra
|
|
||||||
-g
|
-g
|
||||||
-mgeneral-regs-only
|
-mgeneral-regs-only
|
||||||
)
|
)
|
||||||
|
|
||||||
# Передаем "голые" аргументы напрямую для ld.lld
|
|
||||||
target_link_options(init PRIVATE
|
target_link_options(init PRIVATE
|
||||||
"-Ttext=0x400000"
|
-nostdlib
|
||||||
"-e" "_start"
|
-static
|
||||||
"-z" "max-page-size=0x1000"
|
-no-pie
|
||||||
"--no-dynamic-linker"
|
-T "${CMAKE_CURRENT_SOURCE_DIR}/../../Common/linker.ld"
|
||||||
|
-Ttext=0x400000
|
||||||
|
-e _start
|
||||||
|
-z max-page-size=0x1000
|
||||||
|
--no-dynamic-linker
|
||||||
)
|
)
|
||||||
|
|
||||||
set_target_properties(init PROPERTIES
|
set_target_properties(init PROPERTIES
|
||||||
|
|||||||
+1
-1
@@ -20,7 +20,7 @@ _default:
|
|||||||
|
|
||||||
echo " 🛠️ CMake build: ${TARGET_SUBPATH}"
|
echo " 🛠️ CMake build: ${TARGET_SUBPATH}"
|
||||||
|
|
||||||
TOOLCHAIN_FILE="{{ justfile_directory() }}/cmake/aarch64.cmake"
|
TOOLCHAIN_FILE="{{ justfile_directory() }}/Common/aarch64.cmake"
|
||||||
TOOLCHAIN=""
|
TOOLCHAIN=""
|
||||||
if [ -f "${TOOLCHAIN_FILE}" ]; then
|
if [ -f "${TOOLCHAIN_FILE}" ]; then
|
||||||
TOOLCHAIN="-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}"
|
TOOLCHAIN="-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}"
|
||||||
|
|||||||
Reference in New Issue
Block a user