From ba0776d6d030e58788126e50445f061a0a50b3dc Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Thu, 5 Jan 2023 19:19:30 +0400 Subject: [PATCH] Prepare to use all interrupts --- src/interrupts.asm | 255 ++++++++++++++++++++++++++++++++++++++++++--- src/interrupts.c | 21 +--- 2 files changed, 239 insertions(+), 37 deletions(-) diff --git a/src/interrupts.asm b/src/interrupts.asm index 1096242..bbc70e9 100644 --- a/src/interrupts.asm +++ b/src/interrupts.asm @@ -60,6 +60,7 @@ ERRCODE 0x0c ; #SS - Stack Fault Exception ERRCODE 0x0d ; #GP - General Protection Exception ERRCODE 0x0e ; #PF - Page-Fault Exception NOERRCODE 0x0f ; Reserved + NOERRCODE 0x10 ; #MF - x87 FPU Floating-Point Error ERRCODE 0x11 ; #AC - Alignment Check Exception NOERRCODE 0x12 ; #MC - Machine-Check Exception @@ -77,22 +78,242 @@ NOERRCODE 0x1d ; Reserved NOERRCODE 0x1e ; Reserved NOERRCODE 0x1f ; Reserved -; Hardware IRQs +; Other interrupts -NOERRCODE 0x20 ; Programmable Interval Timer -NOERRCODE 0x21 ; Keyboard -NOERRCODE 0x22 ; Slave PIC -NOERRCODE 0x23 ; COM 2/4 -NOERRCODE 0x24 ; COM 1/3 -NOERRCODE 0x25 ; LPT 2 -NOERRCODE 0x26 ; Floppy Drive Controller -NOERRCODE 0x27 ; LPT 1 +NOERRCODE 0x20 +NOERRCODE 0x21 +NOERRCODE 0x22 +NOERRCODE 0x23 +NOERRCODE 0x24 +NOERRCODE 0x25 +NOERRCODE 0x26 +NOERRCODE 0x27 +NOERRCODE 0x28 +NOERRCODE 0x29 +NOERRCODE 0x2a +NOERRCODE 0x2b +NOERRCODE 0x2c +NOERRCODE 0x2d +NOERRCODE 0x2e +NOERRCODE 0x2f -NOERRCODE 0x28 ; Real Time Clock -NOERRCODE 0x29 ; Master PIC -NOERRCODE 0x2a ; Reserved -NOERRCODE 0x2b ; Reserved -NOERRCODE 0x2c ; Reserved -NOERRCODE 0x2d ; Coprocessor exception -NOERRCODE 0x2e ; Hard Drive Controller -NOERRCODE 0x2f ; Reserved +NOERRCODE 0x30 +NOERRCODE 0x31 +NOERRCODE 0x32 +NOERRCODE 0x33 +NOERRCODE 0x34 +NOERRCODE 0x35 +NOERRCODE 0x36 +NOERRCODE 0x37 +NOERRCODE 0x38 +NOERRCODE 0x39 +NOERRCODE 0x3a +NOERRCODE 0x3b +NOERRCODE 0x3c +NOERRCODE 0x3d +NOERRCODE 0x3e +NOERRCODE 0x3f + +NOERRCODE 0x40 +NOERRCODE 0x41 +NOERRCODE 0x42 +NOERRCODE 0x43 +NOERRCODE 0x44 +NOERRCODE 0x45 +NOERRCODE 0x46 +NOERRCODE 0x47 +NOERRCODE 0x48 +NOERRCODE 0x49 +NOERRCODE 0x4a +NOERRCODE 0x4b +NOERRCODE 0x4c +NOERRCODE 0x4d +NOERRCODE 0x4e +NOERRCODE 0x4f + +NOERRCODE 0x50 +NOERRCODE 0x51 +NOERRCODE 0x52 +NOERRCODE 0x53 +NOERRCODE 0x54 +NOERRCODE 0x55 +NOERRCODE 0x56 +NOERRCODE 0x57 +NOERRCODE 0x58 +NOERRCODE 0x59 +NOERRCODE 0x5a +NOERRCODE 0x5b +NOERRCODE 0x5c +NOERRCODE 0x5d +NOERRCODE 0x5e +NOERRCODE 0x5f + +NOERRCODE 0x60 +NOERRCODE 0x61 +NOERRCODE 0x62 +NOERRCODE 0x63 +NOERRCODE 0x64 +NOERRCODE 0x65 +NOERRCODE 0x66 +NOERRCODE 0x67 +NOERRCODE 0x68 +NOERRCODE 0x69 +NOERRCODE 0x6a +NOERRCODE 0x6b +NOERRCODE 0x6c +NOERRCODE 0x6d +NOERRCODE 0x6e +NOERRCODE 0x6f + +NOERRCODE 0x70 +NOERRCODE 0x71 +NOERRCODE 0x72 +NOERRCODE 0x73 +NOERRCODE 0x74 +NOERRCODE 0x75 +NOERRCODE 0x76 +NOERRCODE 0x77 +NOERRCODE 0x78 +NOERRCODE 0x79 +NOERRCODE 0x7a +NOERRCODE 0x7b +NOERRCODE 0x7c +NOERRCODE 0x7d +NOERRCODE 0x7e +NOERRCODE 0x7f + +NOERRCODE 0x80 +NOERRCODE 0x81 +NOERRCODE 0x82 +NOERRCODE 0x83 +NOERRCODE 0x84 +NOERRCODE 0x85 +NOERRCODE 0x86 +NOERRCODE 0x87 +NOERRCODE 0x88 +NOERRCODE 0x89 +NOERRCODE 0x8a +NOERRCODE 0x8b +NOERRCODE 0x8c +NOERRCODE 0x8d +NOERRCODE 0x8e +NOERRCODE 0x8f + +NOERRCODE 0x90 +NOERRCODE 0x91 +NOERRCODE 0x92 +NOERRCODE 0x93 +NOERRCODE 0x94 +NOERRCODE 0x95 +NOERRCODE 0x96 +NOERRCODE 0x97 +NOERRCODE 0x98 +NOERRCODE 0x99 +NOERRCODE 0x9a +NOERRCODE 0x9b +NOERRCODE 0x9c +NOERRCODE 0x9d +NOERRCODE 0x9e +NOERRCODE 0x9f + +NOERRCODE 0xa0 +NOERRCODE 0xa1 +NOERRCODE 0xa2 +NOERRCODE 0xa3 +NOERRCODE 0xa4 +NOERRCODE 0xa5 +NOERRCODE 0xa6 +NOERRCODE 0xa7 +NOERRCODE 0xa8 +NOERRCODE 0xa9 +NOERRCODE 0xaa +NOERRCODE 0xab +NOERRCODE 0xac +NOERRCODE 0xad +NOERRCODE 0xae +NOERRCODE 0xaf + +NOERRCODE 0xb0 +NOERRCODE 0xb1 +NOERRCODE 0xb2 +NOERRCODE 0xb3 +NOERRCODE 0xb4 +NOERRCODE 0xb5 +NOERRCODE 0xb6 +NOERRCODE 0xb7 +NOERRCODE 0xb8 +NOERRCODE 0xb9 +NOERRCODE 0xba +NOERRCODE 0xbb +NOERRCODE 0xbc +NOERRCODE 0xbd +NOERRCODE 0xbe +NOERRCODE 0xbf + +NOERRCODE 0xc0 +NOERRCODE 0xc1 +NOERRCODE 0xc2 +NOERRCODE 0xc3 +NOERRCODE 0xc4 +NOERRCODE 0xc5 +NOERRCODE 0xc6 +NOERRCODE 0xc7 +NOERRCODE 0xc8 +NOERRCODE 0xc9 +NOERRCODE 0xca +NOERRCODE 0xcb +NOERRCODE 0xcc +NOERRCODE 0xcd +NOERRCODE 0xce +NOERRCODE 0xcf + +NOERRCODE 0xd0 +NOERRCODE 0xd1 +NOERRCODE 0xd2 +NOERRCODE 0xd3 +NOERRCODE 0xd4 +NOERRCODE 0xd5 +NOERRCODE 0xd6 +NOERRCODE 0xd7 +NOERRCODE 0xd8 +NOERRCODE 0xd9 +NOERRCODE 0xda +NOERRCODE 0xdb +NOERRCODE 0xdc +NOERRCODE 0xdd +NOERRCODE 0xde +NOERRCODE 0xdf + +NOERRCODE 0xe0 +NOERRCODE 0xe1 +NOERRCODE 0xe2 +NOERRCODE 0xe3 +NOERRCODE 0xe4 +NOERRCODE 0xe5 +NOERRCODE 0xe6 +NOERRCODE 0xe7 +NOERRCODE 0xe8 +NOERRCODE 0xe9 +NOERRCODE 0xea +NOERRCODE 0xeb +NOERRCODE 0xec +NOERRCODE 0xed +NOERRCODE 0xee +NOERRCODE 0xef + +NOERRCODE 0xf0 +NOERRCODE 0xf1 +NOERRCODE 0xf2 +NOERRCODE 0xf3 +NOERRCODE 0xf4 +NOERRCODE 0xf5 +NOERRCODE 0xf6 +NOERRCODE 0xf7 +NOERRCODE 0xf8 +NOERRCODE 0xf9 +NOERRCODE 0xfa +NOERRCODE 0xfb +NOERRCODE 0xfc +NOERRCODE 0xfd +NOERRCODE 0xfe +NOERRCODE 0xff diff --git a/src/interrupts.c b/src/interrupts.c index f6644d1..4430b80 100644 --- a/src/interrupts.c +++ b/src/interrupts.c @@ -57,6 +57,7 @@ void interrupts_setup(const uint16_t kernel_cs_selector) init_intr(0x0e, 0); init_intr(0x0f, 0); init_intr(0x10, 0); + init_intr(0x11, 0); init_intr(0x12, 0); init_intr(0x13, 0); @@ -72,24 +73,4 @@ void interrupts_setup(const uint16_t kernel_cs_selector) init_intr(0x1d, 0); init_intr(0x1e, 0); init_intr(0x1f, 0); - - // Hardware IRQs - - init_intr(0x20, 0); - init_intr(0x21, 0); - init_intr(0x22, 0); - init_intr(0x23, 0); - init_intr(0x24, 0); - init_intr(0x25, 0); - init_intr(0x26, 0); - init_intr(0x27, 0); - - init_intr(0x28, 0); - init_intr(0x29, 0); - init_intr(0x2a, 0); - init_intr(0x2b, 0); - init_intr(0x2c, 0); - init_intr(0x2d, 0); - init_intr(0x2e, 0); - init_intr(0x2f, 0); }