mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 08:24:32 -08:00
Switch push/pop_all macros from push/pop to mov
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
extern isr_handler
|
||||
global isr_handler_prelude
|
||||
isr_handler_prelude:
|
||||
push_all_and_segments
|
||||
push_all
|
||||
check_swap_gs
|
||||
|
||||
mov rdi, rsp
|
||||
@@ -15,7 +15,7 @@ isr_handler_prelude:
|
||||
extern irq_handler
|
||||
global irq_handler_prelude
|
||||
irq_handler_prelude:
|
||||
push_all_and_segments
|
||||
push_all
|
||||
check_swap_gs
|
||||
|
||||
mov rdi, rsp
|
||||
@@ -27,7 +27,7 @@ irq_handler_prelude:
|
||||
global isr_handler_return
|
||||
isr_handler_return:
|
||||
check_swap_gs
|
||||
pop_all_and_segments
|
||||
pop_all
|
||||
|
||||
add rsp, 16 ; because the ISRs added err/num
|
||||
iretq
|
||||
|
||||
@@ -27,7 +27,7 @@ ramdisk_process_loader:
|
||||
mov fs, ax
|
||||
mov gs, ax
|
||||
|
||||
pop_all_and_segments
|
||||
pop_all
|
||||
add rsp, 16 ; because the ISRs add err/num
|
||||
iretq
|
||||
|
||||
|
||||
@@ -1,47 +1,43 @@
|
||||
%macro push_all_and_segments 0
|
||||
; ss ; rsp + a8
|
||||
; rsp ; rsp + a0
|
||||
; rflags ; rsp + 98
|
||||
; cs ; rsp + 90
|
||||
; rip ; rsp + 88
|
||||
; error ; rsp + 80
|
||||
; vector ; rsp + 78
|
||||
%macro push_all 0
|
||||
sub rsp, 0x78
|
||||
|
||||
push rax ; rsp + 70
|
||||
push rcx ; rsp + 68
|
||||
push rdx ; rsp + 60
|
||||
push rbx ; rsp + 58
|
||||
push rbp ; rsp + 50
|
||||
push rsi ; rsp + 48
|
||||
push rdi ; rsp + 40
|
||||
mov [rsp + 0x70], rax
|
||||
mov [rsp + 0x68], rcx
|
||||
mov [rsp + 0x60], rdx
|
||||
mov [rsp + 0x58], rbx
|
||||
mov [rsp + 0x50], rbp
|
||||
mov [rsp + 0x48], rsi
|
||||
mov [rsp + 0x40], rdi
|
||||
|
||||
push r8 ; rsp + 38
|
||||
push r9 ; rsp + 30
|
||||
push r10 ; rsp + 28
|
||||
push r11 ; rsp + 20
|
||||
push r12 ; rsp + 18
|
||||
push r13 ; rsp + 10
|
||||
push r14 ; rsp + 08
|
||||
push r15 ; rsp + 00
|
||||
mov [rsp + 0x38], r8
|
||||
mov [rsp + 0x30], r9
|
||||
mov [rsp + 0x28], r10
|
||||
mov [rsp + 0x20], r11
|
||||
mov [rsp + 0x18], r12
|
||||
mov [rsp + 0x10], r13
|
||||
mov [rsp + 0x08], r14
|
||||
mov [rsp + 0x00], r15
|
||||
%endmacro
|
||||
|
||||
%macro pop_all_and_segments 0
|
||||
pop r15
|
||||
pop r14
|
||||
pop r13
|
||||
pop r12
|
||||
pop r11
|
||||
pop r10
|
||||
pop r9
|
||||
pop r8
|
||||
%macro pop_all 0
|
||||
mov rax, [rsp + 0x70]
|
||||
mov rcx, [rsp + 0x68]
|
||||
mov rdx, [rsp + 0x60]
|
||||
mov rbx, [rsp + 0x58]
|
||||
mov rbp, [rsp + 0x50]
|
||||
mov rsi, [rsp + 0x48]
|
||||
mov rdi, [rsp + 0x40]
|
||||
|
||||
pop rdi
|
||||
pop rsi
|
||||
pop rbp
|
||||
pop rbx
|
||||
pop rdx
|
||||
pop rcx
|
||||
pop rax
|
||||
mov r8, [rsp + 0x38]
|
||||
mov r9, [rsp + 0x30]
|
||||
mov r10, [rsp + 0x28]
|
||||
mov r11, [rsp + 0x20]
|
||||
mov r12, [rsp + 0x18]
|
||||
mov r13, [rsp + 0x10]
|
||||
mov r14, [rsp + 0x08]
|
||||
mov r15, [rsp + 0x00]
|
||||
|
||||
add rsp, 0x78
|
||||
%endmacro
|
||||
|
||||
%macro check_swap_gs 0
|
||||
|
||||
@@ -18,7 +18,7 @@ syscall_handler_prelude:
|
||||
push rcx ; user rip
|
||||
push 0 ; bogus interrupt
|
||||
push 0 ; bogus errorcode
|
||||
push_all_and_segments
|
||||
push_all
|
||||
|
||||
inc qword [rel __counter_syscall_enter]
|
||||
|
||||
@@ -39,7 +39,7 @@ syscall_handler_prelude:
|
||||
|
||||
swapgs
|
||||
|
||||
pop_all_and_segments
|
||||
pop_all
|
||||
add rsp, 16 ; ignore bogus interrupt / error
|
||||
pop rcx ; user rip
|
||||
add rsp, 32 ; ignore cs, flags, rsp, ss
|
||||
|
||||
Reference in New Issue
Block a user