Speedups to physical memory allocation, fixed a stupid error in the
[tpg/acess2.git] / Kernel / arch / x86_64 / start64.asm
index 9302c05..33c77d6 100644 (file)
@@ -2,9 +2,13 @@
 ; Acess2 x86_64 Port
 ;
 [bits 64]
+KERNEL_BASE    equ     0xFFFF800000000000
 
 [extern kmain]
 
+[extern gMultibootPtr]
+[extern gMultibootMagic]
+
 [section .text]
 [global start64]
 start64:
@@ -30,6 +34,8 @@ start64:
        mov rsp, gInitialKernelStack
        
        ; Call main
+       mov edi, [gMultibootMagic - KERNEL_BASE]
+       mov esi, [gMultibootPtr - KERNEL_BASE]
        call kmain
        
        cli
@@ -44,10 +50,10 @@ GetRIP:
 
 [global GetCPUNum]
 GetCPUNum:
-       str ax
-       mov gs, ax
        xor rax, rax
-       mov al, [gs:104]        ; End of TSS
+       str ax
+       sub ax, 0x38    ; TSS Base
+       shr ax, 4       ; One 16-byte TSS per CPU
        ret
 
 KSTACK_USERSTATE_SIZE  equ     (16+1+5)*8      ; GPRegs, CPU, IRET

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