Skip to content

Commit 3e1673e

Browse files
refactor(opentmk): interrupt handler doesn't need to save state for all the registers
1 parent 351199b commit 3e1673e

File tree

1 file changed

+1
-80
lines changed

1 file changed

+1
-80
lines changed

opentmk/src/arch/x86_64/interrupt_handler_register.rs

Lines changed: 1 addition & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -9,86 +9,7 @@ static COMMON_HANDLER_MUTEX: Mutex<()> = Mutex::new(());
99
macro_rules! create_fn {
1010
($name:ident, $i: expr) => {
1111
extern "x86-interrupt" fn $name(stack_frame: InterruptStackFrame) {
12-
unsafe {
13-
asm!(r#"
14-
push rax
15-
push rbx
16-
push rcx
17-
push rdx
18-
push rsi
19-
push rdi
20-
push rbp
21-
push rsp
22-
push r8
23-
push r9
24-
push r10
25-
push r11
26-
push r12
27-
push r13
28-
push r14
29-
push r15
30-
31-
sub rsp, 256
32-
movups [rsp + 16 * 0], xmm0
33-
movups [rsp + 16 * 1], xmm1
34-
movups [rsp + 16 * 2], xmm2
35-
movups [rsp + 16 * 3], xmm3
36-
movups [rsp + 16 * 4], xmm4
37-
movups [rsp + 16 * 5], xmm5
38-
movups [rsp + 16 * 6], xmm6
39-
movups [rsp + 16 * 7], xmm7
40-
movups [rsp + 16 * 8], xmm8
41-
movups [rsp + 16 * 9], xmm9
42-
movups [rsp + 16 * 10], xmm10
43-
movups [rsp + 16 * 11], xmm11
44-
movups [rsp + 16 * 12], xmm12
45-
movups [rsp + 16 * 13], xmm13
46-
movups [rsp + 16 * 14], xmm14
47-
movups [rsp + 16 * 15], xmm15
48-
"#);
49-
50-
unsafe { (COMMON_HANDLER)(stack_frame, $i) };
51-
52-
asm!(r#"
53-
54-
55-
movups xmm0, [rsp + 16 * 0]
56-
movups xmm1, [rsp + 16 * 1]
57-
movups xmm2, [rsp + 16 * 2]
58-
movups xmm3, [rsp + 16 * 3]
59-
movups xmm4, [rsp + 16 * 4]
60-
movups xmm5, [rsp + 16 * 5]
61-
movups xmm6, [rsp + 16 * 6]
62-
movups xmm7, [rsp + 16 * 7]
63-
movups xmm8, [rsp + 16 * 8]
64-
movups xmm9, [rsp + 16 * 9]
65-
movups xmm10, [rsp + 16 * 10]
66-
movups xmm11, [rsp + 16 * 11]
67-
movups xmm12, [rsp + 16 * 12]
68-
movups xmm13, [rsp + 16 * 13]
69-
movups xmm14, [rsp + 16 * 14]
70-
movups xmm15, [rsp + 16 * 15]
71-
add rsp, 16 * 16
72-
73-
pop r15
74-
pop r14
75-
pop r13
76-
pop r12
77-
pop r11
78-
pop r10
79-
pop r9
80-
pop r8
81-
pop rsp
82-
pop rbp
83-
pop rdi
84-
pop rsi
85-
pop rdx
86-
pop rcx
87-
pop rbx
88-
pop rax
89-
90-
"#);
91-
}
12+
unsafe { (COMMON_HANDLER)(stack_frame, $i) };
9213
}
9314
};
9415
}

0 commit comments

Comments
 (0)