summaryrefslogtreecommitdiff
path: root/irq.asm
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2016-10-10 00:34:33 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2016-10-10 00:34:33 -0400
commit7c749e6838119d55f769ea76b0c5bfccdc3ccf65 (patch)
treefc0924061f712d884aac7e5f1163ea960b693d19 /irq.asm
parente1920318e390a14814def8f6b082c6d512f87182 (diff)
downloadkernel-fun-7c749e6838119d55f769ea76b0c5bfccdc3ccf65.tar.gz
Refactor pio_ usage
Diffstat (limited to 'irq.asm')
-rw-r--r--irq.asm91
1 files changed, 24 insertions, 67 deletions
diff --git a/irq.asm b/irq.asm
index 40ac990..8939220 100644
--- a/irq.asm
+++ b/irq.asm
@@ -4,8 +4,8 @@ global PIC_sendEOI
global idt_init
extern interrupt_handler
-extern pio_read
-extern pio_write
+extern inb
+extern outb
struc idt_entry
.base_low: resw 1
@@ -85,20 +85,6 @@ no_error_code_interrupt_handler 31
no_error_code_interrupt_handler 33
-;interrupt_handler:
-; cmp byte [esp + 4], 0x21
-; je .int21
-;
-; jmp .end
-;
-;.int21:
-; mov dword [0xB8000], ': ) '
-; push m
-; call kprint
-;
-;.end:
-; ret
-
PIC_sendEOI:
ret
@@ -114,86 +100,57 @@ PIC_remap:
sub ebp, 8
push PIC1_DATA
- call pio_read
+ call inb
mov [ebp - 4], al ; save PIC1 mask
push PIC2_DATA
- call pio_read
+ call inb
mov [ebp - 8], al ; save PIC2 mask
- push PIC1_COMMAND
push ICW1_INIT+ICW1_ICW4 ; initialization sequence (cascade)
- call pio_write
+ push PIC1_COMMAND
+ call outb
- push PIC2_COMMAND
push ICW1_INIT+ICW1_ICW4 ; initialization sequence (cascade)
- call pio_write
+ push PIC2_COMMAND
+ call outb
- push PIC1_DATA
push word [ebp + 8] ; ICW2: Master PIC vector offset
- call pio_write
+ push PIC1_DATA
+ call outb
- push PIC2_DATA
push word [ebp + 12] ; ICW2: Save PIC vector offset
- call pio_write
+ push PIC2_DATA
+ call outb
- push PIC1_DATA
push 0x4 ; ICW3: tell Master PIC there is a slave PIC at IRQ2 (0000 0100)
- call pio_write
+ push PIC1_DATA
+ call outb
- push PIC2_DATA
push 2 ; ICW3: tell Slave PIC its cacade identity (0000 0010)
- call pio_write
+ push PIC2_DATA
+ call outb
- push PIC1_DATA
push ICW4_8086
- call pio_write
+ push PIC1_DATA
+ call outb
- push PIC2_DATA
push ICW4_8086
- call pio_write
-
-
- ;; ICW3
- ;push PIC1_DATA
- ;push 0x20
- ;call pio_write
-
- ;push PIC2_DATA
- ;push 0x28
- ;call pio_write
-
- ;; ICW4
- ;push PIC1_DATA
- ;push 0x00
- ;call pio_write
-
- ;push PIC2_DATA
- ;push 0x01
- ;call pio_write
-
- ;; mask interrupts
- ;push PIC1_DATA
- ;push 0xff
- ;call pio_write
-
- ;push PIC2_DATA
- ;push 0xff
- ;call pio_write
+ push PIC2_DATA
+ call outb
- push PIC1_DATA
push word [ebp - 4]
- call pio_write
+ push PIC1_DATA
+ call outb
- push PIC2_DATA
push word [ebp - 8]
- call pio_write
+ push PIC2_DATA
+ call outb
add ebp, 8
leave
ret
-
idt_init:
push ebp
mov ebp, esp