X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86_64%2Fstart64.asm;h=33c77d6277330dd39eac664662595542802c6c27;hb=e6d539f85a06fb3d25b985d1a27d8648d23736f0;hp=9302c0522fdacedb6eb0305b7b1d32c3ee0a1c56;hpb=eecce4b7a55315f6c385ad8be35c25dbb12d43d8;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86_64/start64.asm b/Kernel/arch/x86_64/start64.asm index 9302c052..33c77d62 100644 --- a/Kernel/arch/x86_64/start64.asm +++ b/Kernel/arch/x86_64/start64.asm @@ -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