diff --git a/CMakeLists.txt b/CMakeLists.txt index d8a0f47..ef1a762 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,8 +10,6 @@ SET(CMAKE_CROSSCOMPILING 1) project(chroma) - - SET(src_files ${CMAKE_SOURCE_DIR}/src/kernel.c ${CMAKE_SOURCE_DIR}/src/video/draw.c @@ -53,6 +51,8 @@ SET(src_preamble set(src_epilogue ${CMAKE_SOURCE_DIR}/src/global/crtend.o ${CMAKE_SOURCE_DIR}/src/global/crtn.o + ${CMAKE_SOURCE_DIR}/src/assets/font.o + ${CMAKE_SOURCE_DIR}/src/assets/zerosharp.o ) set_property(SOURCE ${src_no_sse} PROPERTY COMPILE_FLAGS -mgeneral-regs-only) @@ -61,6 +61,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) add_executable(kernel) -target_sources(kernel PUBLIC ${src_preamble} PUBLIC ${src_files} PUBLIC ${src_no_sse} PUBLIC ${lib_files} PUBLIC ${CMAKE_SOURCE_DIR}/src/assets/font.o PUBLIC ${src_epilogue}) -target_compile_options(kernel PRIVATE -ffreestanding -O0 -Wall -Wextra -Wall -Werror -pedantic -fPIC -fno-exceptions -fno-omit-frame-pointer -mno-red-zone -fno-stack-protector -ggdb3) +target_sources(kernel PUBLIC ${src_preamble} PUBLIC ${src_files} PUBLIC ${src_no_sse} PUBLIC ${lib_files} PUBLIC ${src_epilogue}) +target_compile_options(kernel PRIVATE -ffreestanding -O0 -Wall -Wextra -Wall -Werror -fPIC -fno-exceptions -fno-omit-frame-pointer -mno-red-zone -fno-stack-protector -ggdb3) target_link_options(kernel PRIVATE -T linker.ld -ffreestanding -O2 -nostdlib -nostartfiles -lgcc) diff --git a/inc/kernel/chroma.h b/inc/kernel/chroma.h index 2b3c286..accbd3f 100644 --- a/inc/kernel/chroma.h +++ b/inc/kernel/chroma.h @@ -35,6 +35,8 @@ extern uint8_t fb; extern volatile unsigned char _binary_src_assets_font_psf_start; extern volatile size_t* _kernel_text_start; +extern int sharp_entryPoint(); + extern address_space_t KernelAddressSpace; extern e1000_device_t* E1000NIC; diff --git a/src/assets/zerosharp.o b/src/assets/zerosharp.o new file mode 100644 index 0000000..e85d847 Binary files /dev/null and b/src/assets/zerosharp.o differ diff --git a/src/kernel.c b/src/kernel.c index d97fe48..2958bbf 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -125,8 +125,8 @@ void TrackInternalBuffer(KeyboardData data) { UninstallKBCallback(InternalBufferID); StartEditor(CharPrinterCallbackID); } else if(strcmp(InternalBuffer, "zero")) { - /*entry entryPoint = (entry) ((size_t) _binary_zerosharp_obj_start + 0x20); - entryPoint();*/ // TODO: Zerosharp integration, maybe? + int returnVal = sharp_entryPoint(); + SerialPrintf("Sharp returned %d\r\n", returnVal); } else { SerialPrintf("[ Kbd] No match for %s\r\n", InternalBuffer); memset(InternalBuffer, 0, 4098);