Kernel/x86_64 - Separated task switching from timer interrupt
[tpg/acess2.git] / Kernel / arch / x86_64 / main.c
index 7d69368..d3b79c6 100644 (file)
@@ -3,18 +3,20 @@
  */
 #include <acess.h>
 #include <mboot.h>
+#include <init.h>
 
 // === IMPORTS ===
 extern void    Desctab_Init(void);
 extern void    MM_InitVirt(void);
 extern void    Heap_Install(void);
 extern void    Threads_Init(void);
-//extern void  Time_Setup(void);
+extern int     Time_Setup(void);
 extern void    System_Init(char *Commandline);
 
 extern void    MM_InitPhys_Multiboot(tMBoot_Info *MBoot);
 
 // === PROTOTYPES ===
+void   kmain(Uint MbMagic, void *MbInfoPtr);
 
 // === GLOBALS ==
 char   *gsBootCmdLine = NULL;
@@ -23,11 +25,14 @@ char        *gsBootCmdLine = NULL;
 void kmain(Uint MbMagic, void *MbInfoPtr)
 {
        tMBoot_Info     *mbInfo;
+
+       LogF("Acess2 x86_65 v"EXPAND_STR(KERNEL_VERSION)"\n");
+       LogF(" Build %i, Git Hash %s\n", BUILD_NUM, gsGitHash);
        
        Desctab_Init();
-       
+
        MM_InitVirt();
-       *(Uint16*)(0xB8000) = 0x1F00|'C';
+       *(Uint16*)(KERNEL_BASE|0xB8000) = 0x1F00|'C';
        
        switch(MbMagic)
        {
@@ -48,24 +53,21 @@ void kmain(Uint MbMagic, void *MbInfoPtr)
        
        Log("gsBootCmdLine = '%s'", gsBootCmdLine);
        
-       *(Uint16*)(0xB8000) = 0x1F00|'D';
+       *(Uint16*)(KERNEL_BASE|0xB8000) = 0x1F00|'D';
        Heap_Install();
        
-       *(Uint16*)(0xB8000) = 0x1F00|'E';
+       *(Uint16*)(KERNEL_BASE|0xB8000) = 0x1F00|'E';
        Log_Log("Arch", "Starting threading...");
        Threads_Init();
        
-       //Time_Setup();
-       *(Uint16*)(0xB8000) = 0x1F00|'F';
+       Time_Setup();
+       *(Uint16*)(KERNEL_BASE|0xB8000) = 0x1F00|'F';
        
        Log_Log("Arch", "Starting VFS...");
        // Load Virtual Filesystem
        VFS_Init();
        
-       *(Uint16*)(0xB8000) = 0x1F00|'Z';
-       *(Uint16*)(0xB8002) = 0x1F00|'Z';
-       *(Uint16*)(0xB8004) = 0x1F00|'Z';
-       *(Uint16*)(0xB8006) = 0x1F00|'Z';
+       *(Uint16*)(KERNEL_BASE|0xB8000) = 0x1F00|'Z';
        
        // Pass on to Independent Loader
        Log_Log("Arch", "Starting system");
@@ -81,7 +83,7 @@ void Arch_LoadBootModules(void)
        
 }
 
-void StartupPrint(char *String)
+void StartupPrint(const char *String)
 {
        
 }

UCC git Repository :: git.ucc.asn.au