diff options
Diffstat (limited to 'kernel/boot/idt/isr.s')
-rw-r--r-- | kernel/boot/idt/isr.s | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/kernel/boot/idt/isr.s b/kernel/boot/idt/isr.s new file mode 100644 index 0000000..925bb27 --- /dev/null +++ b/kernel/boot/idt/isr.s @@ -0,0 +1,72 @@ +;; +;; bubbl +;; Copyright (C) 2025 Raghuram Subramani <raghus2247@gmail.com> +;; +;; This program is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <http://www.gnu.org/licenses/>. +;; + +extern exception_handler; + +global isr_stub_table +isr_stub_table: +%assign i 0 +%rep 32 +dd ISR_%+i +%assign i i+1 +%endrep + +%macro ISR_WITH_ERROR 1 +ISR_%+%1: + call exception_handler + iret +%endmacro + +%macro ISR_NO_ERROR 1 +ISR_%+%1: + call exception_handler + iret +%endmacro + +ISR_NO_ERROR 0 +ISR_NO_ERROR 1 +ISR_NO_ERROR 2 +ISR_NO_ERROR 3 +ISR_NO_ERROR 4 +ISR_NO_ERROR 5 +ISR_NO_ERROR 6 +ISR_NO_ERROR 7 +ISR_WITH_ERROR 8 +ISR_NO_ERROR 9 +ISR_WITH_ERROR 10 +ISR_WITH_ERROR 11 +ISR_WITH_ERROR 12 +ISR_WITH_ERROR 13 +ISR_WITH_ERROR 14 +ISR_NO_ERROR 15 +ISR_NO_ERROR 16 +ISR_WITH_ERROR 17 +ISR_NO_ERROR 18 +ISR_NO_ERROR 19 +ISR_NO_ERROR 20 +ISR_NO_ERROR 21 +ISR_NO_ERROR 22 +ISR_NO_ERROR 23 +ISR_NO_ERROR 24 +ISR_NO_ERROR 25 +ISR_NO_ERROR 26 +ISR_NO_ERROR 27 +ISR_NO_ERROR 28 +ISR_NO_ERROR 29 +ISR_WITH_ERROR 30 +ISR_NO_ERROR 31 |