diff --git a/CMakeLists.txt b/CMakeLists.txt index 99901c4..81a094a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,6 +62,6 @@ add_compiler_flags(-D__RELFILE__="&__FILE__[__FILE__[0] == '.' ? sizeof \\\"${_P set_disk_image_size(128) # Build subprojects -add_subdirectory(sdk/xtklib) add_subdirectory(bootdata) add_subdirectory(xtldr) +add_subdirectory(xtoskrnl) diff --git a/README.md b/README.md index 9358883..cf388e8 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,6 @@ design, it requires a modern EFI enabled hardware. It is not possible currently | drivers | XT native drivers source code | | sdk/cmake | Host toolchain configuration and build-related functions | | sdk/xtdk | XT Software Development Kit headers | -| sdk/xtklib | XT Base kernel-mode library source code | | services | integral subsystems services source code | | subsystems | environment subsystems source code | | xtoskrnl | XTOS kernel source code | diff --git a/sdk/xtklib/includes/libhl.h b/sdk/xtdk/hlfuncs.h similarity index 83% rename from sdk/xtklib/includes/libhl.h rename to sdk/xtdk/hlfuncs.h index c275543..91ea3ee 100644 --- a/sdk/xtklib/includes/libhl.h +++ b/sdk/xtdk/hlfuncs.h @@ -1,13 +1,13 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: sdk/xtklib/includes/libhl.h - * DESCRIPTION: Hardware Abstraction Layer library + * FILE: sdk/xtdk/hlfuncs.h + * DESCRIPTION: XT hardware abstraction layer routines * DEVELOPERS: Rafal Kupiec */ -#ifndef __XTKLIB_LIBHL_H -#define __XTKLIB_LIBHL_H +#ifndef __XTDK_HLFUNCS_H +#define __XTDK_HLFUNCS_H #include "xtdefs.h" #include "xtstruct.h" @@ -46,4 +46,4 @@ VOID HlIoPortOutByte(IN USHORT Port, IN UCHAR Data); -#endif /* __XTKLIB_LIBHL_H */ +#endif /* __XTDK_HLFUNCS_H */ diff --git a/sdk/xtklib/includes/librtl.h b/sdk/xtdk/rtlfuncs.h similarity index 85% rename from sdk/xtklib/includes/librtl.h rename to sdk/xtdk/rtlfuncs.h index 3f15519..f508582 100644 --- a/sdk/xtklib/includes/librtl.h +++ b/sdk/xtdk/rtlfuncs.h @@ -1,13 +1,13 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: sdk/xtklib/includes/librtl.h - * DESCRIPTION: Kernel mode runtime library + * FILE: sdk/xtdk/rtlfuncs.h + * DESCRIPTION: XT runtime library routines * DEVELOPERS: Rafal Kupiec */ -#ifndef __XTKLIB_LIBRTL_H -#define __XTKLIB_LIBRTL_H +#ifndef __XTDK_RTLFUNCS_H +#define __XTDK_RTLFUNCS_H #include "xtdefs.h" #include "xtstruct.h" @@ -53,4 +53,4 @@ RtlWideStringTokenize(IN PWCHAR String, IN CONST PWCHAR Delimiter, IN OUT PWCHAR *SavePtr); -#endif /* __XTKLIB_LIBRTL_H */ +#endif /* __XTDK_RTLFUNCS_H */ diff --git a/sdk/xtdk/xtkmapi.h b/sdk/xtdk/xtkmapi.h index be40f7f..39be0e4 100644 --- a/sdk/xtdk/xtkmapi.h +++ b/sdk/xtdk/xtkmapi.h @@ -25,3 +25,7 @@ /* Low level data types headers */ #include "rtltypes.h" #include "hltypes.h" + +/* XT routines */ +#include "hlfuncs.h" +#include "rtlfuncs.h" diff --git a/sdk/xtklib/CMakeLists.txt b/sdk/xtklib/CMakeLists.txt deleted file mode 100644 index de73c23..0000000 --- a/sdk/xtklib/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -# XT kernel-mode library -PROJECT(XTKLIB) - -# Specify include directories -include_directories( - ${EXECTOS_SOURCE_DIR}/sdk/xtdk - ${XTKLIB_SOURCE_DIR}/includes) - -# Specify list of source code files -list(APPEND XTKLIB_SOURCE - ${XTKLIB_SOURCE_DIR}/hl/cport.c - ${XTKLIB_SOURCE_DIR}/hl/${ARCH}/cpufunc.c - ${XTKLIB_SOURCE_DIR}/rtl/memory.c - ${XTKLIB_SOURCE_DIR}/rtl/plist.c - ${XTKLIB_SOURCE_DIR}/rtl/widestr.c) - -# Add library -add_library(xtklib ${XTKLIB_SOURCE}) diff --git a/sdk/xtklib/includes/xtklib.h b/sdk/xtklib/includes/xtklib.h deleted file mode 100644 index 269ae77..0000000 --- a/sdk/xtklib/includes/xtklib.h +++ /dev/null @@ -1,10 +0,0 @@ -/** - * PROJECT: ExectOS - * COPYRIGHT: See COPYING.md in the top level directory - * FILE: sdk/xtklib/includes/xtklib.h - * DESCRIPTION: XT kernel-mode library - * DEVELOPERS: Rafal Kupiec - */ - -#include "libhl.h" -#include "librtl.h" diff --git a/xtldr/CMakeLists.txt b/xtldr/CMakeLists.txt index dfefbcc..b747b18 100644 --- a/xtldr/CMakeLists.txt +++ b/xtldr/CMakeLists.txt @@ -4,7 +4,6 @@ PROJECT(XTLDR) # Specify include directories include_directories( ${EXECTOS_SOURCE_DIR}/sdk/xtdk - ${EXECTOS_SOURCE_DIR}/sdk/xtklib/includes ${XTLDR_SOURCE_DIR}/includes) # Specify list of source code files @@ -15,11 +14,11 @@ list(APPEND XTLDR_SOURCE ${XTLDR_SOURCE_DIR}/volume.c ${XTLDR_SOURCE_DIR}/xtldr.c) -# Add executable +# Link bootloader executable add_executable(xtldr ${XTLDR_SOURCE}) # Add linker libraries -target_link_libraries(xtldr xtklib) +target_link_libraries(xtldr xtoslib) # Set proper binary name and install target if(ARCH STREQUAL "i686") diff --git a/xtldr/includes/xtbl.h b/xtldr/includes/xtbl.h index 3fee04c..0dcc3e7 100644 --- a/xtldr/includes/xtbl.h +++ b/xtldr/includes/xtbl.h @@ -10,7 +10,6 @@ #define __XTLDR_XTBL_H #include -#include #define XT_BOOT_DEVICE_UNKNOWN 0x00 diff --git a/xtoskrnl/CMakeLists.txt b/xtoskrnl/CMakeLists.txt new file mode 100644 index 0000000..845b5df --- /dev/null +++ b/xtoskrnl/CMakeLists.txt @@ -0,0 +1,38 @@ +# XT Kernel +PROJECT(XTOSKRNL) + +# Specify include directories +include_directories( + ${EXECTOS_SOURCE_DIR}/sdk/xtdk) + +# Specify list of source code files +list(APPEND XTOSKRNL_SOURCE + ${XTOSKRNL_SOURCE_DIR}/hl/cport.c + ${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/cpufunc.c + ${XTOSKRNL_SOURCE_DIR}/ke/krnlinit.c + ${XTOSKRNL_SOURCE_DIR}/rtl/memory.c + ${XTOSKRNL_SOURCE_DIR}/rtl/plist.c + ${XTOSKRNL_SOURCE_DIR}/rtl/widestr.c) + +# Set module definition SPEC file +set_specfile(xtoskrnl.spec) + +# Link static XTOS library +add_library(xtoslib ${XTOSKRNL_SOURCE}) + +# Link kernel executable +add_executable(xtoskrnl + ${XTOSKRNL_SOURCE} + ${CMAKE_CURRENT_BINARY_DIR}/xtoskrnl.def) + +# Add linker libraries +target_link_libraries(xtoskrnl) + +# Set instal target +set_install_target(xtoskrnl "exectos/system") + +# Set kernel entrypoint, imagebase address, ordinals and subsystem +set_entrypoint(xtoskrnl "KeStartXtSystem") +set_imagebase(xtoskrnl ${BASEADDRESS_XTOSKRNL}) +set_ordinals(xtoskrnl TRUE) +set_subsystem(xtoskrnl native) diff --git a/sdk/xtklib/hl/amd64/cpufunc.c b/xtoskrnl/hl/amd64/cpufunc.c similarity index 95% rename from sdk/xtklib/hl/amd64/cpufunc.c rename to xtoskrnl/hl/amd64/cpufunc.c index 0381ecd..634d3b3 100644 --- a/sdk/xtklib/hl/amd64/cpufunc.c +++ b/xtoskrnl/hl/amd64/cpufunc.c @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: sdk/xtklib/hl/cpufunc.c + * FILE: xtoskrnl/hl/amd64/cpufunc.c * DESCRIPTION: Routines to provide access to special AMD64 CPU instructions * DEVELOPERS: Rafal Kupiec */ diff --git a/sdk/xtklib/hl/cport.c b/xtoskrnl/hl/cport.c similarity index 99% rename from sdk/xtklib/hl/cport.c rename to xtoskrnl/hl/cport.c index 58aa879..c08c87d 100644 --- a/sdk/xtklib/hl/cport.c +++ b/xtoskrnl/hl/cport.c @@ -1,13 +1,12 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: sdk/xtklib/hl/cport.c + * FILE: xtoskrnl/hl/cport.c * DESCRIPTION: Serial (COM) port support * DEVELOPERS: Rafal Kupiec */ #include "xtkmapi.h" -#include "xtklib.h" /* I/O port addresses for COM1 - COM8 (valid only for ia32 and amd64) */ diff --git a/sdk/xtklib/hl/i686/cpufunc.c b/xtoskrnl/hl/i686/cpufunc.c similarity index 95% rename from sdk/xtklib/hl/i686/cpufunc.c rename to xtoskrnl/hl/i686/cpufunc.c index ea8e6d2..ac945e9 100644 --- a/sdk/xtklib/hl/i686/cpufunc.c +++ b/xtoskrnl/hl/i686/cpufunc.c @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: sdk/xtklib/hl/cpufunc.c + * FILE: xtoskrnl/hl/i686/cpufunc.c * DESCRIPTION: Routines to provide access to special i686 CPU instructions * DEVELOPERS: Rafal Kupiec */ diff --git a/xtoskrnl/ke/krnlinit.c b/xtoskrnl/ke/krnlinit.c new file mode 100644 index 0000000..77ca3cd --- /dev/null +++ b/xtoskrnl/ke/krnlinit.c @@ -0,0 +1,25 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/ke/krnlinit.c + * DESCRIPTION: XT kernel initialization + * DEVELOPERS: Rafal Kupiec + */ + +#include + + +/** + * This routine starts up the XT kernel. It is called by boot loader. + * + * @return This routine does not return any value. + * + * @since XT 1.0 + */ +XTAPI +VOID +KeStartXtSystem() +{ + /* Enter infinite kernel thread loop */ + for(;;); +} diff --git a/sdk/xtklib/rtl/memory.c b/xtoskrnl/rtl/memory.c similarity index 98% rename from sdk/xtklib/rtl/memory.c rename to xtoskrnl/rtl/memory.c index d45ced2..901c5a8 100644 --- a/sdk/xtklib/rtl/memory.c +++ b/xtoskrnl/rtl/memory.c @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: sdk/xtklib/rtl/memory.c + * FILE: xtoskrnl/rtl/memory.c * DESCRIPTION: Memory related routines * DEVELOPERS: Rafal Kupiec */ diff --git a/sdk/xtklib/rtl/plist.c b/xtoskrnl/rtl/plist.c similarity index 98% rename from sdk/xtklib/rtl/plist.c rename to xtoskrnl/rtl/plist.c index 78aef2e..79ed68c 100644 --- a/sdk/xtklib/rtl/plist.c +++ b/xtoskrnl/rtl/plist.c @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: sdk/xtklib/rtl/plist.c + * FILE: xtoskrnl/rtl/plist.c * DESCRIPTION: Linked list manipulation routines * DEVELOPERS: Rafal Kupiec */ diff --git a/sdk/xtklib/rtl/widestr.c b/xtoskrnl/rtl/widestr.c similarity index 98% rename from sdk/xtklib/rtl/widestr.c rename to xtoskrnl/rtl/widestr.c index f27610a..ff138c3 100644 --- a/sdk/xtklib/rtl/widestr.c +++ b/xtoskrnl/rtl/widestr.c @@ -1,7 +1,7 @@ /** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory - * FILE: sdk/xtrtlib/widestr.c + * FILE: xtoskrnl/rtl/widestr.c * DESCRIPTION: Wide string support * DEVELOPERS: Rafal Kupiec */ diff --git a/xtoskrnl/xtoskrnl.spec b/xtoskrnl/xtoskrnl.spec new file mode 100644 index 0000000..1737603 --- /dev/null +++ b/xtoskrnl/xtoskrnl.spec @@ -0,0 +1,2 @@ +@ stdcall HlIoPortInByte(ptr) +@ stdcall HlIoPortOutByte(ptr long)