.
Code: Select all
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; irq.asm ;;
;; Version 0.0.3 ;;
;; Copyright (c) 2006 Kenneth P. Hough ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[BITS 32]
global irq0, irq1, irq2, irq3, irq4, irq5, irq6, irq7, irq8, irq9, irq10, irq11, irq12, irq13, irq14, irq15
extern irq_hndlr_0, irq_hndlr_1, irq_hndlr_2, irq_hndlr_3, irq_hndlr_4, irq_hndlr_5, irq_hndlr_6, irq_hndlr_7, irq_hndlr_8, irq_hndlr_9, irq_hndlr_10, irq_hndlr_11, irq_hndlr_12, irq_hndlr_13, irq_hndlr_14, irq_hndlr_15
irq0:
cli
push byte 0
push byte 32
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_0
pop ds
pop es
pop fs
pop gs
popa
iret
irq1:
cli
push byte 0
push byte 33
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_1
pop ds
pop es
pop fs
pop gs
popa
iret
irq2:
cli
push byte 0
push byte 34
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_2
pop ds
pop es
pop fs
pop gs
popa
iret
irq3:
cli
push byte 0
push byte 35
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_3
pop ds
pop es
pop fs
pop gs
popa
iret
irq4:
cli
push byte 0
push byte 36
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_4
pop ds
pop es
pop fs
pop gs
popa
iret
irq5:
cli
push byte 0
push byte 37
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_5
pop ds
pop es
pop fs
pop gs
popa
iret
irq6:
cli
push byte 0
push byte 38
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_6
pop ds
pop es
pop fs
pop gs
popa
iret
irq7:
cli
push byte 0
push byte 39
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_7
pop ds
pop es
pop fs
pop gs
popa
iret
irq8:
cli
push byte 0
push byte 40
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_8
pop ds
pop es
pop fs
pop gs
popa
iret
irq9:
cli
push byte 0
push byte 41
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_9
pop ds
pop es
pop fs
pop gs
popa
iret
irq10:
cli
push byte 0
push byte 42
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_10
pop ds
pop es
pop fs
pop gs
popa
iret
irq11:
cli
push byte 0
push byte 43
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_11
pop ds
pop es
pop fs
pop gs
popa
iret
irq12:
cli
push byte 0
push byte 44
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_12
pop ds
pop es
pop fs
pop gs
popa
iret
irq13:
cli
push byte 0
push byte 45
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_13
pop ds
pop es
pop fs
pop gs
popa
iret
irq14:
cli
push byte 0
push byte 46
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_14
pop ds
pop es
pop fs
pop gs
popa
iret
irq15:
cli
push byte 0
push byte 47
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call irq_hndlr_15
pop ds
pop es
pop fs
pop gs
popa
iret
Code: Select all
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; isr.asm ;;
;; Version 0.0.1 ;;
;; Copyright (c) 2006 Kenneth P. Hough ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[BITS 32]
global isr0, isr1, isr2, isr3, isr4, isr5, isr6, isr7, isr8, isr9, isr10, isr11, isr12, isr13, isr14, isr15, isr16, isr17, isr18, isr19, isr20, isr21, isr22, isr23, isr24, isr25, isr26, isr27, isr28, isr29, isr30, isr31
extern excp_hndlr_0, excp_hndlr_1, excp_hndlr_2, excp_hndlr_3, excp_hndlr_4, excp_hndlr_5, excp_hndlr_6, excp_hndlr_7, excp_hndlr_8, excp_hndlr_9, excp_hndlr_10, excp_hndlr_11, excp_hndlr_12, excp_hndlr_13, excp_hndlr_14, excp_hndlr_15, excp_hndlr_16, excp_hndlr_17, excp_hndlr_18, excp_hndlr_19, excp_hndlr_20, excp_hndlr_21, excp_hndlr_22, excp_hndlr_23, excp_hndlr_24, excp_hndlr_25, excp_hndlr_26, excp_hndlr_27, excp_hndlr_28, excp_hndlr_29, excp_hndlr_30, excp_hndlr_31
global load_idt
extern idtp
load_idt:
lidt[idtp]
ret
isr0:
cli
push byte 0
push byte 0
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_0
pop ds
pop es
pop fs
pop gs
popa
iret
isr1:
cli
push byte 0
push byte 1
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_1
pop ds
pop es
pop fs
pop gs
popa
iret
isr2:
cli
push byte 0
push byte 2
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_2
pop ds
pop es
pop fs
pop gs
popa
iret
isr3:
cli
push byte 0
push byte 3
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_3
pop ds
pop es
pop fs
pop gs
popa
iret
isr4:
cli
push byte 0
push byte 4
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_4
pop ds
pop es
pop fs
pop gs
popa
iret
isr5:
cli
push byte 0
push byte 5
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_5
pop ds
pop es
pop fs
pop gs
popa
iret
isr6:
cli
push byte 0
push byte 6
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_6
pop ds
pop es
pop fs
pop gs
popa
iret
isr7:
cli
push byte 0
push byte 7
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_7
pop ds
pop es
pop fs
pop gs
popa
iret
isr8:
cli
push byte 0
push byte 8
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_8
pop ds
pop es
pop fs
pop gs
popa
iret
isr9:
cli
push byte 0
push byte 9
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_9
pop ds
pop es
pop fs
pop gs
popa
iret
isr10:
cli
push byte 0
push byte 10
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_10
pop ds
pop es
pop fs
pop gs
popa
iret
isr11:
cli
push byte 0
push byte 11
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_11
pop ds
pop es
pop fs
pop gs
popa
iret
isr12:
cli
push byte 0
push byte 12
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_12
pop ds
pop es
pop fs
pop gs
popa
iret
isr13:
cli
push byte 0
push byte 13
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_13
pop ds
pop es
pop fs
pop gs
popa
iret
isr14:
cli
push byte 0
push byte 14
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_14
pop ds
pop es
pop fs
pop gs
popa
iret
isr15:
cli
push byte 0
push byte 15
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_15
pop ds
pop es
pop fs
pop gs
popa
iret
isr16:
cli
push byte 0
push byte 16
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_16
pop ds
pop es
pop fs
pop gs
popa
iret
isr17:
cli
push byte 0
push byte 17
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_17
pop ds
pop es
pop fs
pop gs
popa
iret
isr18:
cli
push byte 0
push byte 18
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_18
pop ds
pop es
pop fs
pop gs
popa
iret
isr19:
cli
push byte 0
push byte 19
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_19
pop ds
pop es
pop fs
pop gs
popa
iret
isr20:
cli
push byte 0
push byte 20
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_20
pop ds
pop es
pop fs
pop gs
popa
iret
isr21:
cli
push byte 0
push byte 21
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_21
pop ds
pop es
pop fs
pop gs
popa
iret
isr22:
cli
push byte 0
push byte 22
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_22
pop ds
pop es
pop fs
pop gs
popa
iret
isr23:
cli
push byte 0
push byte 23
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_23
pop ds
pop es
pop fs
pop gs
popa
iret
isr24:
cli
push byte 0
push byte 24
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_24
pop ds
pop es
pop fs
pop gs
popa
iret
isr25:
cli
push byte 0
push byte 25
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_25
pop ds
pop es
pop fs
pop gs
popa
iret
isr26:
cli
push byte 0
push byte 26
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_26
pop ds
pop es
pop fs
pop gs
popa
iret
isr27:
cli
push byte 0
push byte 27
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_27
pop ds
pop es
pop fs
pop gs
popa
iret
isr28:
cli
push byte 0
push byte 28
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_28
pop ds
pop es
pop fs
pop gs
popa
iret
isr29:
cli
push byte 0
push byte 29
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_29
pop ds
pop es
pop fs
pop gs
popa
iret
isr30:
cli
push byte 0
push byte 30
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_30
pop ds
pop es
pop fs
pop gs
popa
iret
isr31:
cli
push byte 0
push byte 31
pusha
push gs
push fs
push es
push ds
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
call excp_hndlr_31
pop ds
pop es
pop fs
pop gs
popa
iret