From 76e1fc60997c7a5f16b0541aae0b4d320fbf48ed Mon Sep 17 00:00:00 2001 From: Rafal Kupiec Date: Tue, 4 Jun 2024 21:36:09 +0200 Subject: [PATCH] Enable hardware layer initialization code --- xtoskrnl/CMakeLists.txt | 1 + xtoskrnl/hl/init.c | 34 ++++++++++++++++++++++++++++++++++ xtoskrnl/includes/hli.h | 4 ++++ xtoskrnl/ke/amd64/krnlinit.c | 10 ++++++++++ xtoskrnl/ke/i686/krnlinit.c | 10 ++++++++++ 5 files changed, 59 insertions(+) create mode 100644 xtoskrnl/hl/init.c diff --git a/xtoskrnl/CMakeLists.txt b/xtoskrnl/CMakeLists.txt index b9588b1..2703161 100644 --- a/xtoskrnl/CMakeLists.txt +++ b/xtoskrnl/CMakeLists.txt @@ -18,6 +18,7 @@ list(APPEND XTOSKRNL_SOURCE ${XTOSKRNL_SOURCE_DIR}/hl/cport.c ${XTOSKRNL_SOURCE_DIR}/hl/fbdev.c ${XTOSKRNL_SOURCE_DIR}/hl/globals.c + ${XTOSKRNL_SOURCE_DIR}/hl/init.c ${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/cpu.c ${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/pic.c ${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/ioport.c diff --git a/xtoskrnl/hl/init.c b/xtoskrnl/hl/init.c new file mode 100644 index 0000000..7b14e51 --- /dev/null +++ b/xtoskrnl/hl/init.c @@ -0,0 +1,34 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/hl/init.c + * DESCRIPTION: Hardware layer initialization code + * DEVELOPERS: Rafal Kupiec + */ + +#include + + +/** + * Initializes the hardware layer subsystem + * + * @return This routine returns a status code. + * + * @since XT 1.0 + */ +XTAPI +XTSTATUS +HlInitializeSystem(VOID) +{ + XTSTATUS Status; + + /* Initialize ACPI */ + Status = HlpInitializeAcpi(); + if(Status != STATUS_SUCCESS) + { + return Status; + } + + /* Return success */ + return STATUS_SUCCESS; +} diff --git a/xtoskrnl/includes/hli.h b/xtoskrnl/includes/hli.h index 1ceecfc..360cf64 100644 --- a/xtoskrnl/includes/hli.h +++ b/xtoskrnl/includes/hli.h @@ -68,6 +68,10 @@ XTAPI VOID HlInitializeProcessor(); +XTAPI +XTSTATUS +HlInitializeSystem(VOID); + XTAPI VOID HlPutCharacter(IN ULONG PositionX, diff --git a/xtoskrnl/ke/amd64/krnlinit.c b/xtoskrnl/ke/amd64/krnlinit.c index 863fcda..d1b3977 100644 --- a/xtoskrnl/ke/amd64/krnlinit.c +++ b/xtoskrnl/ke/amd64/krnlinit.c @@ -20,6 +20,16 @@ XTAPI VOID KepInitializeKernel(VOID) { + XTSTATUS Status; + + /* Initialize hardware layer subsystem */ + Status = HlInitializeSystem(); + if(Status != STATUS_SUCCESS) + { + /* Hardware layer initialization failed, kernel panic */ + DebugPrint(L"Failed to initialize hardware layer subsystem!\n"); + KePanic(0); + } } /** diff --git a/xtoskrnl/ke/i686/krnlinit.c b/xtoskrnl/ke/i686/krnlinit.c index e762941..b10f9f8 100644 --- a/xtoskrnl/ke/i686/krnlinit.c +++ b/xtoskrnl/ke/i686/krnlinit.c @@ -20,6 +20,16 @@ XTAPI VOID KepInitializeKernel(VOID) { + XTSTATUS Status; + + /* Initialize hardware layer subsystem */ + Status = HlInitializeSystem(); + if(Status != STATUS_SUCCESS) + { + /* Hardware layer initialization failed, kernel panic */ + DebugPrint(L"Failed to initialize hardware layer subsystem!\n"); + KePanic(0); + } } /**