-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathasm_func.S
More file actions
55 lines (53 loc) · 779 Bytes
/
Copy pathasm_func.S
File metadata and controls
55 lines (53 loc) · 779 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include "io_port.h"
.global disable_irq
disable_irq:
mov 4(%esp), %ecx
pushf
cli
mov $1, %ah
rol %cl, %ah
cmp $8, %cl
jae disable_8
disable_0:
in $INT_M_CTLMASK, %al
test %ah, %al
jnz dis_already
or %ah, %al
outb %al, $INT_M_CTLMASK
popf
mov $1, %eax
retl
disable_8:
in $INT_S_CTLMASK, %al
test %ah, %al
jnz dis_already
or %ah, %al
outb %al, $INT_M_CTLMASK
popf
mov $1, %eax
retl
dis_already:
popf
xor %eax, %eax
retl
.global enable_irq
enable_irq:
mov 4(%esp), %ecx
pushf
cli
mov $~1, %ah
rol %cl, %ah
cmp $8, %cl
jae enable_8
enable_0:
in $INT_M_CTLMASK, %al
and %ah, %al
outb %al, $INT_M_CTLMASK
popf
retl
enable_8:
in $INT_S_CTLMASK, %al
and %ah, %al
outb %al, $INT_M_CTLMASK
popf
retl