blob: d15e5650c3724c0761ce57f5ceafac37f31edd42 (
plain)
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
|
section .asm
extern int21h_handler
extern default_int_handler
global int21h
global default_handler
global idt_load
global enable_interrupts
global disable_interrupts
enable_interrupts:
sti
ret
disable_interrupts:
cli
ret
idt_load:
push ebp
mov ebp, esp
mov ebx, [ebp + 8]
lidt [ebx]
pop ebp
ret
int21h:
cli
pushad ; Push all general-purpose registers to the stack
call int21h_handler
popad
sti
iret
default_handler:
cli
pushad ; Push all general-purpose registers to the stack
call default_int_handler
popad
sti
iret
|