%include "asm.inc" BITS 32 SECTION .text ; NB: il jmp dopo l'iret E` NECESSARIO perche` dopo che il task ha eseguito ; l'iret il TSS avra` eip che punta all'istruzione successiva, che e` ; appunto il jmp che fa ritornare al punto giusto. ; ; %macro EXCP 1 GLOBAL __excp_%1 EXTERN _excp_%1 CODE_ALIGN 8 __excp_%1 call _excp_%1 add esp,4 iret jmp __excp_%1 %endm EXCP 01 EXCP 03 EXCP 08 EXCP 0a EXCP 0c EXCP 0d EXCP 0e %macro TRAP 1 GLOBAL __trap_%1 EXTERN _trap_%1 CODE_ALIGN 8 __trap_%1 pushad push ds push es mov ax,KERNEL_DS mov ds,ax mov es,ax mov eax,esp call _trap_%1 pop es pop ds popad iret %endm TRAP 00 TRAP 02 TRAP 04 TRAP 05 TRAP 06 TRAP 07 TRAP 0b TRAP 16 EXTERN _irq_handler %macro IRQ 1 GLOBAL __irq_%1 CODE_ALIGN 8 __irq_%1 mov eax,0x%1 call _irq_handler iret jmp __irq_%1 %endm IRQ 0 IRQ 1 IRQ 2 IRQ 3 IRQ 4 IRQ 5 IRQ 6 IRQ 7 IRQ 8 IRQ 9 IRQ a IRQ b IRQ c IRQ d IRQ e IRQ f