df57eb710a
Signed-off-by: Chloe M <chloe@mensia.org>
95 lines
1.8 KiB
C
95 lines
1.8 KiB
C
/*
|
|
* Copyright (c) 2026, Chloe M., et al
|
|
* Provided under the BSD-3 clause.
|
|
*
|
|
* Description: System bringup core
|
|
* Author: Chloe M.
|
|
*/
|
|
|
|
#include <ptdef.h>
|
|
#include <ke/bpal.h>
|
|
#include <ke/bugcheck.h>
|
|
#include <ex/trace.h>
|
|
#include <ps/process.h>
|
|
#include <mm/pm.h>
|
|
#include <mm/vm.h>
|
|
#include <hal/serial.h>
|
|
#include <hal/kpcr.h>
|
|
#include <drivers/bootvid/fbio.h>
|
|
#include <string.h>
|
|
|
|
/* Globals */
|
|
static KPCR BootstrapCore;
|
|
static PROCESS *RootProcess;
|
|
|
|
/*
|
|
* Display the copyright for legal reasons
|
|
*/
|
|
static VOID
|
|
Copyright(VOID)
|
|
{
|
|
TRACE("~ Plural Technology ~\n");
|
|
TRACE("Copyright (c) 2026, Chloe M., et al\n");
|
|
}
|
|
|
|
/*
|
|
* Initialize the first process
|
|
*/
|
|
static VOID
|
|
InitializeRootProcess(VOID)
|
|
{
|
|
PT_STATUS Status;
|
|
|
|
/* Create the client server runtime service */
|
|
Status = PsCreateProcess(
|
|
"csrts.sys",
|
|
0,
|
|
&RootProcess
|
|
);
|
|
|
|
if (PT_ERROR(Status)) {
|
|
KeBugCheck(
|
|
BUGCHECK_MISC,
|
|
"could not create csrts.sys process\n"
|
|
);
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Starting here is where the world is brought up and system
|
|
* components are initialized.
|
|
*/
|
|
VOID
|
|
KiKernelInit(VOID)
|
|
{
|
|
/* Initialize the boot protocol abstraction layer */
|
|
KeBpalInit();
|
|
|
|
/* Initialize the serial driver */
|
|
HalSerialInit();
|
|
|
|
/* Display the copyright */
|
|
Copyright();
|
|
|
|
/* Initialize the boot video driver */
|
|
BootVidInit();
|
|
|
|
/* Initialize the boot video console */
|
|
BootVidInitCons(NULL);
|
|
|
|
/* Initialize physical memory */
|
|
MmPmInit();
|
|
|
|
/* Phase 1 init of bootstrap core */
|
|
HalKpcrP1Init(&BootstrapCore);
|
|
|
|
/* Initialize virtual memory */
|
|
MmVmInit();
|
|
|
|
/* Phase 2 init of bootstrap core */
|
|
HalKpcrP2Init(&BootstrapCore);
|
|
|
|
/* Initialize the root process */
|
|
InitializeRootProcess();
|
|
}
|