proc: fix gs/fs-related bug in exception handler

1. %rip -> %rsp (misspelt a register name, damn)
2. Rename swapgs_if_needed to iret_swapgs_if_needed for clarification
3. Add iret_swapgs_if_needed before iret from exception handler
This commit is contained in:
Mark
2020-10-18 23:48:27 +03:00
parent 877a5f455d
commit c2db4e94a6
7 changed files with 16 additions and 16 deletions
+2 -2
View File
@@ -11,9 +11,9 @@
(__amd64_cpu + off)(%rip)
#endif
// To be used in interrupt handlers
// To be used in interrupt handlers or anything with iret-like stack layout
// DIRECTLY AFTER ENTRY without prior stack modification
.macro swapgs_if_needed
.macro iret_swapgs_if_needed
cmpq $0x08, 0x08(%rsp)
je 1f
swapgs
+2 -2
View File
@@ -13,7 +13,7 @@
.global amd64_irq\n
amd64_irq\n:
cli
swapgs_if_needed
iret_swapgs_if_needed
pushq %r11
pushq %r10
@@ -39,7 +39,7 @@ amd64_irq\n:
popq %r10
popq %r11
swapgs_if_needed
iret_swapgs_if_needed
iretq
.endm