X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86_64%2Fstart64.asm;h=d0cc503fc1cbf8a2760aa85b4aad65987667bab3;hb=8a998da38a4eecface76749701079c833d64a7d8;hp=c98afdbd7af55d0a95e37590ec15b35f34cf2282;hpb=c6061d381c0af2dcc7c971347d036dc17399887a;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86_64/start64.asm b/Kernel/arch/x86_64/start64.asm index c98afdbd..d0cc503f 100644 --- a/Kernel/arch/x86_64/start64.asm +++ b/Kernel/arch/x86_64/start64.asm @@ -2,9 +2,14 @@ ; Acess2 x86_64 Port ; [bits 64] +;KERNEL_BASE equ 0xFFFF800000000000 +KERNEL_BASE equ 0xFFFFFFFF80000000 [extern kmain] +[extern gMultibootPtr] +[extern gMultibootMagic] + [section .text] [global start64] start64: @@ -20,6 +25,9 @@ start64: jmp rax .himem: + xor rax, rax + mov dr0, rax ; Set CPU0 + ; Clear the screen mov rax, 0x1F201F201F201F20 ; Set the screen to White on blue, space (4 characters) mov edi, 0xB8000 @@ -30,6 +38,8 @@ start64: mov rsp, gInitialKernelStack ; Call main + mov edi, [gMultibootMagic - KERNEL_BASE] + mov esi, [gMultibootPtr - KERNEL_BASE] call kmain cli @@ -44,10 +54,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 @@ -121,6 +131,6 @@ User_Syscall_Exit: [section .bss] [global gInitialKernelStack] - resd 1024*1 ; 1 Page + resd 1024*4 ; 4 Pages gInitialKernelStack: