2#include <memory/memory.h>
6#include <kernel/kernel.h>
7#include <kernel/modules/xboxkrnl.h>
11uint32_t mainThreadStackSize;
18int main(
int argc,
char** argv)
20 VFS::SetRootDirectory(
".waternoose");
21 VFS::MountDirectory(
"/SystemRoot",
"systemroot");
22 VFS::MountDirectory(
"/Device/Flash",
"flash");
23 VFS::MountDirectory(
"/Device/Harddisk0/Partition0",
"drv0p0");
24 VFS::MountDirectory(
"/Device/Harddisk0/Partition1",
"drv0p1");
25 VFS::MountDirectory(
"/Device/Cdrom0",
"cdrom");
29 printf(
"Usage: %s <xex name>\n", argv[0]);
36 std::ifstream file(
".waternoose/systemroot/xam.xex", std::ios::binary | std::ios::ate);
38 printf(
"Failed to open file %s\n",
".waternoose/systemroot/xam.xex");
39 xam_size = file.tellg();
40 file.seekg(0, std::ios::beg);
41 xam_buf =
new char[xam_size];
42 file.read(xam_buf, xam_size);
48 file.open(argv[1], std::ios::binary | std::ios::ate);
50 file.seekg(0, std::ios::beg);
57 krnlModule.Initialize();
59 std::atexit(Memory::Dump);
61 xam =
new XexLoader((uint8_t*)xam_buf, xam_size,
".waternoose/SystemRoot/xam.xex");
65 mainThreadStackSize = xam->GetStackSize();
66 mainThread =
new CPUThread(xam->GetEntryPoint(), xam->GetStackSize(), *xam);
67 mainThread->SetArg(0, 0xBCBCBCBC);
68 mainThread->SetArg(1, 1);
69 mainThread->SetArg(2, 0);
71 mainThreadStackSize = loader.GetStackSize();
72 mainThread =
new CPUThread(loader.GetEntryPoint(), loader.GetStackSize(), loader);
75 std::atexit(atexit_handler);