Mercurial > lcfOS
comparison cos/kernel/asmcode.asm @ 14:a58904747019
Added asm interrupt handler things, not yet working
author | windel |
---|---|
date | Mon, 14 Nov 2011 22:45:55 +0100 |
parents | |
children | f3e3e0e9c4bc |
comparison
equal
deleted
inserted
replaced
13:d07d4701a103 | 14:a58904747019 |
---|---|
1 ; The default interrupt handlers. | |
2 ; from 20 - 31 are reserved vectors. | |
3 ; below are the custom ones! | |
4 | |
5 section .text | |
6 align 4 | |
7 | |
8 ; Port helpers: | |
9 global outb | |
10 outb: | |
11 mov eax, [esp + 8] | |
12 mov edx, [esp + 4] | |
13 out dx, al | |
14 ret | |
15 | |
16 global inb | |
17 inb: | |
18 xor eax, eax | |
19 mov edx, [esp + 4] | |
20 in al, dx | |
21 ret | |
22 | |
23 ; Helper functions: | |
24 global enableinterrupts | |
25 enableinterrupts: | |
26 sti | |
27 ret | |
28 | |
29 global halt | |
30 halt: | |
31 cli | |
32 hlt | |
33 | |
34 global loadIDT | |
35 loadIDT: | |
36 ret | |
37 | |
38 ; Define macro with two arguments: | |
39 %macro INTX 2 | |
40 global %1 | |
41 %1: | |
42 ; Do some saving: | |
43 extern %2 | |
44 call %2 | |
45 ; Do restoration | |
46 iret | |
47 | |
48 %endmacro | |
49 | |
50 ; Exception handlers: | |
51 INTX INTDEF, INTDEF_handler | |
52 INTX INT0, INT0handler | |
53 INTX INT1, INT1handler | |
54 INTX INT2, INT2handler | |
55 INTX INT3, INT3handler | |
56 INTX INT4, INT4handler | |
57 INTX INT5, INT5handler | |
58 INTX INT6, INT6handler | |
59 INTX INT7, INT7handler | |
60 INTX INT8, INT8handler | |
61 INTX INT9, INT9handler | |
62 INTX INT10, INT10handler | |
63 INTX INT11, INT11handler | |
64 INTX INT12, INT12handler | |
65 INTX INT13, INT13handler | |
66 INTX INT14, INT14handler | |
67 INTX INT15, INT15handler | |
68 INTX INT16, INT16handler | |
69 INTX INT17, INT17handler | |
70 INTX INT18, INT18handler | |
71 INTX INT19, INT19handler | |
72 | |
73 INTX INT32, INT32handler | |
74 INTX INT33, INT33handler | |
75 INTX INT34, INT34handler | |
76 |