[isrs] Use macros in ASM
This commit is contained in:
parent
c4b54ed3b7
commit
3e9f4d65a7
BIN
bootdisk.img
BIN
bootdisk.img
Binary file not shown.
430
start.asm
430
start.asm
@ -43,256 +43,55 @@ idt_load:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
; Interrupt Service Routines
|
; Interrupt Service Routines
|
||||||
global _isr0
|
%macro ISR_NOERR 1
|
||||||
global _isr1
|
global _isr%1
|
||||||
global _isr2
|
_isr%1:
|
||||||
global _isr3
|
cli
|
||||||
global _isr4
|
push byte 0
|
||||||
global _isr5
|
push byte %1
|
||||||
global _isr6
|
jmp isr_common_stub
|
||||||
global _isr7
|
%endmacro
|
||||||
global _isr8
|
|
||||||
global _isr9
|
|
||||||
global _isr10
|
|
||||||
global _isr11
|
|
||||||
global _isr12
|
|
||||||
global _isr13
|
|
||||||
global _isr14
|
|
||||||
global _isr15
|
|
||||||
global _isr16
|
|
||||||
global _isr17
|
|
||||||
global _isr18
|
|
||||||
global _isr19
|
|
||||||
global _isr20
|
|
||||||
global _isr21
|
|
||||||
global _isr22
|
|
||||||
global _isr23
|
|
||||||
global _isr24
|
|
||||||
global _isr25
|
|
||||||
global _isr26
|
|
||||||
global _isr27
|
|
||||||
global _isr28
|
|
||||||
global _isr29
|
|
||||||
global _isr30
|
|
||||||
global _isr31
|
|
||||||
|
|
||||||
; 0: Divide By Zero Exception
|
%macro ISR_ERR 1
|
||||||
_isr0:
|
global _isr%1
|
||||||
cli
|
_isr%1:
|
||||||
push byte 0
|
cli
|
||||||
push byte 0
|
push byte %1
|
||||||
jmp isr_common_stub
|
jmp isr_common_stub
|
||||||
|
%endmacro
|
||||||
|
|
||||||
; 1: Debug Exception
|
ISR_NOERR 0
|
||||||
_isr1:
|
ISR_NOERR 1
|
||||||
cli
|
ISR_NOERR 2
|
||||||
push byte 0
|
ISR_NOERR 3
|
||||||
push byte 1
|
ISR_NOERR 4
|
||||||
jmp isr_common_stub
|
ISR_NOERR 5
|
||||||
|
ISR_NOERR 6
|
||||||
; 2: Non Maskable Interrupt Exception
|
ISR_NOERR 7
|
||||||
_isr2:
|
ISR_ERR 8
|
||||||
cli
|
ISR_NOERR 9
|
||||||
push byte 0
|
ISR_ERR 10
|
||||||
push byte 2
|
ISR_ERR 11
|
||||||
jmp isr_common_stub
|
ISR_ERR 12
|
||||||
|
ISR_ERR 13
|
||||||
; 3: Int 3 Exception
|
ISR_ERR 14
|
||||||
_isr3:
|
ISR_NOERR 15
|
||||||
cli
|
ISR_NOERR 16
|
||||||
push byte 0
|
ISR_NOERR 17
|
||||||
push byte 3
|
ISR_NOERR 18
|
||||||
jmp isr_common_stub
|
ISR_NOERR 19
|
||||||
|
ISR_NOERR 20
|
||||||
; 4: INTO Exception
|
ISR_NOERR 21
|
||||||
_isr4:
|
ISR_NOERR 22
|
||||||
cli
|
ISR_NOERR 23
|
||||||
push byte 0
|
ISR_NOERR 24
|
||||||
push byte 4
|
ISR_NOERR 25
|
||||||
jmp isr_common_stub
|
ISR_NOERR 26
|
||||||
|
ISR_NOERR 27
|
||||||
; 5: Out of Bounds Exception
|
ISR_NOERR 28
|
||||||
_isr5:
|
ISR_NOERR 29
|
||||||
cli
|
ISR_NOERR 30
|
||||||
push byte 0
|
ISR_NOERR 31
|
||||||
push byte 5
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 6: Invalid Opcode Exception
|
|
||||||
_isr6:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 6
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 7: Coprocessor Not Available Exception
|
|
||||||
_isr7:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 7
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 8: Double Fault Exception (With Error Code!)
|
|
||||||
_isr8:
|
|
||||||
cli
|
|
||||||
push byte 8
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 9: Coprocessor Segment Overrun Exception
|
|
||||||
_isr9:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 9
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 10: Bad TSS Exception (With Error Code!)
|
|
||||||
_isr10:
|
|
||||||
cli
|
|
||||||
push byte 10
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 11: Segment Not Present Exception (With Error Code!)
|
|
||||||
_isr11:
|
|
||||||
cli
|
|
||||||
push byte 11
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 12: Stack Fault Exception (With Error Code!)
|
|
||||||
_isr12:
|
|
||||||
cli
|
|
||||||
push byte 12
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 13: General Protection Fault Exception (With Error Code!)
|
|
||||||
_isr13:
|
|
||||||
cli
|
|
||||||
push byte 13
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 14: Page Fault Exception (With Error Code!)
|
|
||||||
_isr14:
|
|
||||||
cli
|
|
||||||
push byte 14
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 15: Reserved Exception
|
|
||||||
_isr15:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 15
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 16: Floating Point Exception
|
|
||||||
_isr16:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 16
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 17: Alignment Check Exception
|
|
||||||
_isr17:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 17
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 18: Machine Check Exception
|
|
||||||
_isr18:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 18
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 19: Reserved
|
|
||||||
_isr19:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 19
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 20: Reserved
|
|
||||||
_isr20:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 20
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 21: Reserved
|
|
||||||
_isr21:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 21
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 22: Reserved
|
|
||||||
_isr22:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 22
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 23: Reserved
|
|
||||||
_isr23:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 23
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 24: Reserved
|
|
||||||
_isr24:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 24
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 25: Reserved
|
|
||||||
_isr25:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 25
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 26: Reserved
|
|
||||||
_isr26:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 26
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 27: Reserved
|
|
||||||
_isr27:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 27
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 28: Reserved
|
|
||||||
_isr28:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 28
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 29: Reserved
|
|
||||||
_isr29:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 29
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 30: Reserved
|
|
||||||
_isr30:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 30
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
; 31: Reserved
|
|
||||||
_isr31:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 31
|
|
||||||
jmp isr_common_stub
|
|
||||||
|
|
||||||
extern fault_handler
|
extern fault_handler
|
||||||
|
|
||||||
@ -320,118 +119,31 @@ isr_common_stub:
|
|||||||
add esp, 8
|
add esp, 8
|
||||||
iret
|
iret
|
||||||
|
|
||||||
global _irq0
|
%macro IRQ_ENTRY 2
|
||||||
global _irq1
|
global _irq%1
|
||||||
global _irq2
|
_irq%1:
|
||||||
global _irq3
|
cli
|
||||||
global _irq4
|
push byte 0
|
||||||
global _irq5
|
push byte %2
|
||||||
global _irq6
|
jmp irq_common_stub
|
||||||
global _irq7
|
%endmacro
|
||||||
global _irq8
|
|
||||||
global _irq9
|
|
||||||
global _irq10
|
|
||||||
global _irq11
|
|
||||||
global _irq12
|
|
||||||
global _irq13
|
|
||||||
global _irq14
|
|
||||||
global _irq15
|
|
||||||
|
|
||||||
_irq0:
|
IRQ_ENTRY 0, 32
|
||||||
cli
|
IRQ_ENTRY 1, 33
|
||||||
push byte 0
|
IRQ_ENTRY 2, 34
|
||||||
push byte 32
|
IRQ_ENTRY 3, 35
|
||||||
jmp irq_common_stub
|
IRQ_ENTRY 4, 36
|
||||||
|
IRQ_ENTRY 5, 37
|
||||||
_irq1:
|
IRQ_ENTRY 6, 38
|
||||||
cli
|
IRQ_ENTRY 7, 39
|
||||||
push byte 0
|
IRQ_ENTRY 8, 40
|
||||||
push byte 33
|
IRQ_ENTRY 9, 41
|
||||||
jmp irq_common_stub
|
IRQ_ENTRY 10, 42
|
||||||
|
IRQ_ENTRY 11, 43
|
||||||
_irq2:
|
IRQ_ENTRY 12, 44
|
||||||
cli
|
IRQ_ENTRY 13, 45
|
||||||
push byte 0
|
IRQ_ENTRY 14, 46
|
||||||
push byte 34
|
IRQ_ENTRY 15, 47
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq3:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 35
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq4:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 36
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq5:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 37
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq6:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 38
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq7:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 39
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq8:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 40
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq9:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 41
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq10:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 42
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq11:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 43
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq12:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 44
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq13:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 45
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq14:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 46
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
_irq15:
|
|
||||||
cli
|
|
||||||
push byte 0
|
|
||||||
push byte 47
|
|
||||||
jmp irq_common_stub
|
|
||||||
|
|
||||||
extern irq_handler
|
extern irq_handler
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user