summaryrefslogtreecommitdiff
path: root/src/as
diff options
context:
space:
mode:
authorAleksa Vučković <aleksav013@gmail.com>2021-10-25 22:41:21 +0200
committerAleksa Vučković <aleksav013@gmail.com>2021-10-25 22:41:21 +0200
commit39822cdb0acdd1eec66c2e18e0711fd3cd6f033d (patch)
tree313eb08002f6e6e1c6564f2d411287745079da22 /src/as
parent20dd72e40dc2728d3c5335d860e4b8ab8da14fcc (diff)
Adding first 32 IRQs; PIT finally working
Diffstat (limited to 'src/as')
-rw-r--r--src/as/boot.s12
-rw-r--r--src/as/irq.s273
2 files changed, 273 insertions, 12 deletions
diff --git a/src/as/boot.s b/src/as/boot.s
index 6fe5ab8..68e5947 100644
--- a/src/as/boot.s
+++ b/src/as/boot.s
@@ -14,14 +14,9 @@
.global load_gdt
.global load_idt
.global enable_interrupts
-.global keyboard_handler
.global ioport_in
.global ioport_out
-.extern init_gdt_table
-.extern handle_keyboard_interrupt
-.extern kernel_main
-
load_gdt:
movl 4(%esp), %edx
lgdt (%edx)
@@ -33,13 +28,6 @@ load_idt:
sti
ret
-keyboard_handler:
- pushal
- cld
- call handle_keyboard_interrupt
- popal
- iretl
-
ioport_in:
movl 4(%esp),%edx
in %dx,%al
diff --git a/src/as/irq.s b/src/as/irq.s
new file mode 100644
index 0000000..71d578d
--- /dev/null
+++ b/src/as/irq.s
@@ -0,0 +1,273 @@
+.global irq0
+.global irq1
+.global irq2
+.global irq3
+.global irq4
+.global irq5
+.global irq6
+.global irq7
+.global irq8
+.global irq9
+.global irq10
+.global irq11
+.global irq12
+.global irq13
+.global irq14
+.global irq15
+.global irq16
+.global irq17
+.global irq18
+.global irq19
+.global irq20
+.global irq21
+.global irq22
+.global irq23
+.global irq24
+.global irq25
+.global irq26
+.global irq27
+.global irq28
+.global irq29
+.global irq30
+.global irq31
+.global timer_irq
+.global keyboard_irq
+
+
+irq0:
+ pushal
+ cld
+ call irq0_handler
+ popal
+ iretl
+
+irq1:
+ pushal
+ cld
+ call irq1_handler
+ popal
+ iretl
+
+irq2:
+ pushal
+ cld
+ call irq2_handler
+ popal
+ iretl
+
+irq3:
+ pushal
+ cld
+ call irq3_handler
+ popal
+ iretl
+
+irq4:
+ pushal
+ cld
+ call irq4_handler
+ popal
+ iretl
+
+irq5:
+ pushal
+ cld
+ call irq5_handler
+ popal
+ iretl
+
+irq6:
+ pushal
+ cld
+ call irq6_handler
+ popal
+ iretl
+
+irq7:
+ pushal
+ cld
+ call irq7_handler
+ popal
+ iretl
+
+irq8:
+ pushal
+ cld
+ call irq8_handler
+ popal
+ iretl
+
+irq9:
+ pushal
+ cld
+ call irq9_handler
+ popal
+ iretl
+
+irq10:
+ pushal
+ cld
+ call irq10_handler
+ popal
+ iretl
+
+irq11:
+ pushal
+ cld
+ call irq11_handler
+ popal
+ iretl
+
+irq12:
+ pushal
+ cld
+ call irq12_handler
+ popal
+ iretl
+
+irq13:
+ pushal
+ cld
+ call irq13_handler
+ popal
+ iretl
+
+irq14:
+ pushal
+ cld
+ call irq14_handler
+ popal
+ iretl
+
+irq15:
+ pushal
+ cld
+ call irq15_handler
+ popal
+ iretl
+
+irq16:
+ pushal
+ cld
+ call irq16_handler
+ popal
+ iretl
+
+irq17:
+ pushal
+ cld
+ call irq17_handler
+ popal
+ iretl
+
+irq18:
+ pushal
+ cld
+ call irq18_handler
+ popal
+ iretl
+
+irq19:
+ pushal
+ cld
+ call irq19_handler
+ popal
+ iretl
+
+irq20:
+ pushal
+ cld
+ call irq20_handler
+ popal
+ iretl
+
+irq21:
+ pushal
+ cld
+ call irq21_handler
+ popal
+ iretl
+
+irq22:
+ pushal
+ cld
+ call irq22_handler
+ popal
+ iretl
+
+irq23:
+ pushal
+ cld
+ call irq23_handler
+ popal
+ iretl
+
+irq24:
+ pushal
+ cld
+ call irq24_handler
+ popal
+ iretl
+
+irq25:
+ pushal
+ cld
+ call irq25_handler
+ popal
+ iretl
+
+irq26:
+ pushal
+ cld
+ call irq26_handler
+ popal
+ iretl
+
+irq27:
+ pushal
+ cld
+ call irq27_handler
+ popal
+ iretl
+
+irq28:
+ pushal
+ cld
+ call irq28_handler
+ popal
+ iretl
+
+irq29:
+ pushal
+ cld
+ call irq29_handler
+ popal
+ iretl
+
+irq30:
+ pushal
+ cld
+ call irq30_handler
+ popal
+ iretl
+
+irq31:
+ pushal
+ cld
+ call irq31_handler
+ popal
+ iretl
+
+timer_irq:
+ pushal
+ cld
+ call timer_handler
+ popal
+ iretl
+
+keyboard_irq:
+ pushal
+ cld
+ call keyboard_handler
+ popal
+ iretl