Reorganize early debug printing; initialize kernel stacks when needed
All checks were successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
2022-12-28 23:11:35 +01:00
parent 75ac59f48a
commit dec021b1ec
9 changed files with 110 additions and 9 deletions

View File

@@ -3,12 +3,14 @@ PROJECT(XTOSKRNL)
# Specify include directories
include_directories(
${EXECTOS_SOURCE_DIR}/sdk/xtdk)
${EXECTOS_SOURCE_DIR}/sdk/xtdk
${XTOSKRNL_SOURCE_DIR}/includes)
# 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/globals.c
${XTOSKRNL_SOURCE_DIR}/ke/krnlinit.c
${XTOSKRNL_SOURCE_DIR}/rtl/memory.c
${XTOSKRNL_SOURCE_DIR}/rtl/plist.c

View File

@@ -0,0 +1,24 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/globals.h
* DESCRIPTION: XT kernel global variables
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_GLOBALS_H
#define __XTOSKRNL_GLOBALS_H
#include <xtkmapi.h>
/* Kernel own boot stack */
EXTERN UCHAR KepKernelBootStackData[KERNEL_STACK_SIZE];
/* Kernel own fault stack */
EXTERN UCHAR KepKernelFaultStackData[KERNEL_STACK_SIZE];
/* Pointer to boot loader provided DbgPrint() routine */
EXTERN VOID (*LdrPrint)(IN PWCHAR Format, IN ...);
#endif /* __XTOSKRNL_GLOBALS_H */

13
xtoskrnl/includes/xtos.h Normal file
View File

@@ -0,0 +1,13 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/xtos.h
* DESCRIPTION: Top level header for the XT kernel
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
/* XT Development Kit */
#include <xtkmapi.h>
/* Kernel specific headers */
#include "globals.h"

19
xtoskrnl/ke/globals.c Normal file
View File

@@ -0,0 +1,19 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/ke/globals.c
* DESCRIPTION: XT kernel global variables
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#include <xtos.h>
/* Kernel own boot stack */
UCHAR KepKernelBootStackData[KERNEL_STACK_SIZE] = {0};
/* Kernel own fault stack */
UCHAR KepKernelFaultStackData[KERNEL_STACK_SIZE] = {0};
/* Pointer to boot loader provided DbgPrint() routine */
VOID (*LdrPrint)(IN PWCHAR Format, IN ...) = NULL;

View File

@@ -6,7 +6,7 @@
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#include <xtkmapi.h>
#include <xtos.h>
/**
@@ -23,14 +23,34 @@ XTAPI
VOID
KeStartXtSystem(IN PKERNEL_INITIALIZATION_BLOCK Parameters)
{
/* Use XTLDR provided DbgPrint() routine for early printing to serial console */
VOID (*DbgPrint)(IN PWCHAR Format, IN ...) = Parameters->LoaderInformation.DbgPrint;
/* Check if debugging enabled and if boot loader provided routine for debug printing */
if(DBG && Parameters->LoaderInformation.DbgPrint)
{
/* Use loader's provided DbgPrint() routine for early printing to serial console */
LdrPrint = Parameters->LoaderInformation.DbgPrint;
}
/* Make sure kernel boot stack is initialized */
if(!Parameters->KernelBootStack)
{
/* Initialize kernel boot stack */
LDRPRINT(L"Initializing kernel boot stack\n");
Parameters->KernelBootStack = (ULONG_PTR)&KepKernelBootStackData[KERNEL_STACK_SIZE];
}
/* Make sure kernel fault stack is initialized */
if(!Parameters->KernelFaultStack)
{
/* Initialize kernel fault stack */
LDRPRINT(L"Initializing kernel fault stack\n");
Parameters->KernelFaultStack = (ULONG_PTR)&KepKernelFaultStackData[KERNEL_STACK_SIZE];
}
/* Print some message to serial console */
DbgPrint(L"Hello world from ExectOS kernel!\n");
LDRPRINT(L"Hello world from ExectOS kernel!\n");
/* Test kernel parameters */
DbgPrint(L"\n\n------ Kernel parameters block ------\n"
LDRPRINT(L"\n\n------ Kernel parameters block ------\n"
L"Loader block size: %lu\n"
L"Loader block version: %lu\n"
L"EFI Revision: %lu\n"