Integrate xtklib with the kernel

This commit is contained in:
Rafal Kupiec 2022-08-30 23:22:38 +02:00
parent 6ef36cbd26
commit a7d07e7ecb
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
18 changed files with 88 additions and 51 deletions

View File

@ -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)

View File

@ -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 |

View File

@ -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 <belliash@codingworkshop.eu.org>
*/
#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 */

View File

@ -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 <belliash@codingworkshop.eu.org>
*/
#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 */

View File

@ -25,3 +25,7 @@
/* Low level data types headers */
#include "rtltypes.h"
#include "hltypes.h"
/* XT routines */
#include "hlfuncs.h"
#include "rtlfuncs.h"

View File

@ -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})

View File

@ -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 <belliash@codingworkshop.eu.org>
*/
#include "libhl.h"
#include "librtl.h"

View File

@ -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")

View File

@ -10,7 +10,6 @@
#define __XTLDR_XTBL_H
#include <xtkmapi.h>
#include <xtklib.h>
#define XT_BOOT_DEVICE_UNKNOWN 0x00

38
xtoskrnl/CMakeLists.txt Normal file
View File

@ -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)

View File

@ -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 <belliash@codingworkshop.eu.org>
*/

View File

@ -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 <belliash@codingworkshop.eu.org>
*/
#include "xtkmapi.h"
#include "xtklib.h"
/* I/O port addresses for COM1 - COM8 (valid only for ia32 and amd64) */

View File

@ -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 <belliash@codingworkshop.eu.org>
*/

25
xtoskrnl/ke/krnlinit.c Normal file
View File

@ -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 <belliash@codingworkshop.eu.org>
*/
#include <xtkmapi.h>
/**
* 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(;;);
}

View File

@ -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 <belliash@codingworkshop.eu.org>
*/

View File

@ -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 <belliash@codingworkshop.eu.org>
*/

View File

@ -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 <belliash@codingworkshop.eu.org>
*/

2
xtoskrnl/xtoskrnl.spec Normal file
View File

@ -0,0 +1,2 @@
@ stdcall HlIoPortInByte(ptr)
@ stdcall HlIoPortOutByte(ptr long)