diff options
Diffstat (limited to 'dev/ZKA/HALKit/AMD64')
| -rw-r--r-- | dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx (renamed from dev/ZKA/HALKit/AMD64/HalBitMapMgr.cxx) | 0 | ||||
| -rw-r--r-- | dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm | 34 |
2 files changed, 12 insertions, 22 deletions
diff --git a/dev/ZKA/HALKit/AMD64/HalBitMapMgr.cxx b/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx index 7bafd075..7bafd075 100644 --- a/dev/ZKA/HALKit/AMD64/HalBitMapMgr.cxx +++ b/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx diff --git a/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm b/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm index 1f31c880..c26a346f 100644 --- a/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm +++ b/dev/ZKA/HALKit/AMD64/HalMPContextSwitch.asm @@ -21,8 +21,6 @@ section .text ;; rcx: code ptr. ;; rdx: stack ptr. mp_do_context_switch: - swapgs - mov fs, rcx mov gs, rdx @@ -36,27 +34,12 @@ mp_do_context_switch: mov r11, gs mov r12, fs - ; Enable SCE that enables sysret and syscall - mov rcx, 0xc0000082 - wrmsr - mov rcx, 0xc0000080 - rdmsr - or eax, 1 - wrmsr - mov rcx, 0xc0000081 - rdmsr - mov edx, 0x00180008 - wrmsr - mov r11, 0x202 mov fs, [r8 + (8 * 4)] mov gs, [r8 + (8 * 9)] mov r8, [r8] - swapgs - sti - o64 sysret ;; @brief Gets the current stack frame. @@ -68,8 +51,6 @@ extern hal_system_call_enter global mp_system_call_handler mp_system_call_handler: - swapgs - push r8 push r9 push r10 @@ -80,9 +61,6 @@ mp_system_call_handler: pop r9 pop r8 - swapgs - sti - o64 sysret mp_do_context_switch_pre: @@ -96,4 +74,16 @@ mp_do_context_switch_pre: mov rcx, 0xc0000082 wrmsr + ; Enable SCE that enables sysret and syscall + mov rcx, 0xc0000082 + wrmsr + mov rcx, 0xc0000080 + rdmsr + or eax, 1 + wrmsr + mov rcx, 0xc0000081 + rdmsr + mov edx, 0x00180008 + wrmsr + ret |
