2 * Acess2 x86_64 Project
9 extern void Desctab_Init(void);
10 extern void MM_InitVirt(void);
11 extern void Heap_Install(void);
12 extern int Time_Setup(void);
14 extern void MM_InitPhys_Multiboot(tMBoot_Info *MBoot);
17 void kmain(Uint MbMagic, void *MbInfoPtr);
20 char *gsBootCmdLine = NULL;
23 void kmain(Uint MbMagic, void *MbInfoPtr)
27 LogF("Acess2 x86_64 v"EXPAND_STR(KERNEL_VERSION)"\n");
28 LogF(" Build %i, Git Hash %s\n", BUILD_NUM, gsGitHash);
33 *(Uint16*)(KERNEL_BASE|0xB8000) = 0x1F00|'C';
39 // Adjust Multiboot structure address
40 mbInfo = (void*)( (Uint)MbInfoPtr + KERNEL_BASE );
41 gsBootCmdLine = (char*)( (Uint)mbInfo->CommandLine + KERNEL_BASE);
42 MM_InitPhys_Multiboot( mbInfo ); // Set up physical memory manager
45 Panic("Multiboot magic invalid %08x, expected %08x\n",
46 MbMagic, MULTIBOOT_MAGIC);
50 Log("gsBootCmdLine = '%s'", gsBootCmdLine);
52 *(Uint16*)(KERNEL_BASE|0xB8000) = 0x1F00|'D';
55 *(Uint16*)(KERNEL_BASE|0xB8000) = 0x1F00|'E';
59 *(Uint16*)(KERNEL_BASE|0xB8000) = 0x1F00|'F';
61 // Load Virtual Filesystem
62 Log_Log("Arch", "Starting VFS...");
65 *(Uint16*)(KERNEL_BASE|0xB8000) = 0x1F00|'Z';
67 // Pass on to Independent Loader
68 Log_Log("Arch", "Starting system");
69 System_Init(gsBootCmdLine);
71 // Sleep forever (sleeping beauty)
76 void Arch_LoadBootModules(void)
81 void StartupPrint(const char *String)