;=----------------------------------------------------------------------------=; ; GNU GPL OS/K ; ; ; ; Desc: Interrupt Descriptor Table related functions ; ; ; ; ; ; Copyright © 2018-2019 The OS/K Team ; ; ; ; This file is part of OS/K. ; ; ; ; OS/K 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. ; ; ; ; OS/K 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 OS/K. If not, see . ; ;=----------------------------------------------------------------------------=; %include "kaleid/kernel/cpu/isr.inc" global IdtInit global divideByZero extern idtPtr extern IdtHandler ;; ;; Loads the IDT ;; IdtInit: lidt [idtPtr] ret ;; ;; Bug test ;; divideByZero: pushAll mov eax, 17 mov ebx, 0 xor edx, edx div ebx popAll ret ;; ;; ISR handler ;; isrPreHandler: mov ax, ds push rax mov ax, 0x0 mov ds, ax mov es, ax mov fs, ax mov gs, ax call IdtHandler pop rbx mov ds, bx mov es, bx mov fs, bx mov gs, bx popAll add rsp, 8 sti iretq ;; Divide Error Fault IsrWithoutErrCode 0 ;; Debug Exception Fault/trap IsrWithoutErrCode 1 ;; NMI Interrupt IsrWithoutErrCode 2 ;; Breakpoint Trap IsrWithoutErrCode 3 ;; Overflow Trap IsrWithoutErrCode 4 ;; Bound Range Exceeded Fault IsrWithoutErrCode 5 ;; Invalid Opcode Fault IsrWithoutErrCode 6 ;; Device Not Available or No Math Coprocessor Fault IsrWithoutErrCode 7 ;; Coprocessor Segment Overrun Fault IsrWithoutErrCode 9 ;; x87 FPU Floating Point or Math Fault IsrWithoutErrCode 16 ;; Alignment Check Fault IsrWithoutErrCode 17 ;; Machine Check Abort IsrWithoutErrCode 18 ;; SIMD Floating Point Fault IsrWithoutErrCode 19 ;; Virtualization Exception Fault IsrWithoutErrCode 20 ;; Double Fault Abort IsrWithErrCode 8 ;; Invalid TSS Fault IsrWithErrCode 10 ;; Segment Not Present Fault IsrWithErrCode 11 ;; Stack Segment Fault IsrWithErrCode 12 ;; General Protection Fault IsrWithErrCode 13 ;; Page Fault IsrWithErrCode 14 ;; Reserved IsrWithoutErrCode 15 IsrWithoutErrCode 21 IsrWithoutErrCode 22 IsrWithoutErrCode 23 IsrWithoutErrCode 24 IsrWithoutErrCode 25 IsrWithoutErrCode 26 IsrWithoutErrCode 27 IsrWithoutErrCode 28 IsrWithoutErrCode 29 IsrWithoutErrCode 30 IsrWithoutErrCode 31