Skip to content

Commit 171eacd

Browse files
modified CLI & STI
1 parent d50f4a3 commit 171eacd

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

include/timerandirq.h

+1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
#define _TIMERANDIRQ_H_
33
extern void timer_init();
44
extern void enable_irq();
5+
extern void disable_irq();
56
#endif

lib/entry.S

+15-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
#include<entry.h>
22

3+
.macro CLI
4+
msr daifset, #2//close interrupt
5+
.endm
6+
7+
.macro STI
8+
msr daifclr, #2//open interrupt
9+
.endm
10+
311
.macro handler label
412
.align 7
513
b \label
@@ -43,10 +51,11 @@ b \label
4351
ldp x28, x29, [sp, #16 * 14]
4452
ldr x30, [sp, #16 * 15]
4553
add sp, sp, 256
46-
eret
4754
.endm
4855

56+
4957
.macro unimplement_entry type
58+
CLI
5059
saveall
5160
mov x0,#\type
5261
mrs x1,esr_el1
@@ -56,6 +65,7 @@ bl unimplement_handler
5665
//exception vectors
5766
.align 11
5867
.global vectors
68+
5969
vectors:
6070
handler sync_invalid_el1t // Synchronous EL1t
6171
handler irq_invalid_el1t // IRQ EL1t
@@ -123,10 +133,13 @@ error_invalid_el0_32:
123133
unimplement_entry ERROR_INVALID_EL0_32
124134

125135
el1_irq:
136+
CLI
126137
saveall
127138
bl handle_irq
128139
restore
129-
140+
STI
141+
eret
142+
130143
.globl irq_vector_init
131144
.extern vectors
132145
irq_vector_init:

0 commit comments

Comments
 (0)