aboutsummaryrefslogtreecommitdiff
path: root/mirai/interrupts/pic/eoi.zig
diff options
context:
space:
mode:
Diffstat (limited to 'mirai/interrupts/pic/eoi.zig')
-rw-r--r--mirai/interrupts/pic/eoi.zig20
1 files changed, 20 insertions, 0 deletions
diff --git a/mirai/interrupts/pic/eoi.zig b/mirai/interrupts/pic/eoi.zig
new file mode 100644
index 0000000..810ea37
--- /dev/null
+++ b/mirai/interrupts/pic/eoi.zig
@@ -0,0 +1,20 @@
+//! PIC End-of-Interrupt
+
+const ports = @import("ports.zig");
+const asm_io = @import("../../asm/io/io.zig");
+
+pub fn send(irq: u4) void {
+ if (irq >= 8) {
+ asm_io.outb(ports.pic2_command, ports.eoi);
+ }
+ asm_io.outb(ports.pic1_command, ports.eoi);
+}
+
+pub fn send_master() void {
+ asm_io.outb(ports.pic1_command, ports.eoi);
+}
+
+pub fn send_slave() void {
+ asm_io.outb(ports.pic2_command, ports.eoi);
+ asm_io.outb(ports.pic1_command, ports.eoi);
+}