idt in progress
This commit is contained in:
parent
79f7b736e6
commit
3fa203b6b1
|
@ -0,0 +1,124 @@
|
|||
;=----------------------------------------------------------------------------=;
|
||||
; 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 <https://www.gnu.org/licenses/>. ;
|
||||
;=----------------------------------------------------------------------------=;
|
||||
|
||||
%include "kaleid/kernel/cpu/isr.inc"
|
||||
|
||||
global idtInit
|
||||
extern idtPtr
|
||||
extern isrHandlerPrint
|
||||
|
||||
;;
|
||||
;; Loads the IDT
|
||||
;;
|
||||
idtInit:
|
||||
lidt [idtPtr]
|
||||
ret
|
||||
|
||||
;;
|
||||
;; ISR handler
|
||||
;;
|
||||
isrHandler:
|
||||
pushAll
|
||||
|
||||
mov ax, ds
|
||||
push rax
|
||||
|
||||
mov ax, 0x10
|
||||
mov ds, ax
|
||||
mov es, ax
|
||||
mov fs, ax
|
||||
mov gs, ax
|
||||
|
||||
call isrHandlerPrint
|
||||
|
||||
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
|
|
@ -0,0 +1,59 @@
|
|||
;=----------------------------------------------------------------------------=;
|
||||
; GNU GPL OS/K ;
|
||||
; ;
|
||||
; Desc: Interrupt Descriptor Table related macros ;
|
||||
; ;
|
||||
; ;
|
||||
; 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 <https://www.gnu.org/licenses/>. ;
|
||||
;=----------------------------------------------------------------------------=;
|
||||
%macro pushAll 0
|
||||
push rax
|
||||
push rcx
|
||||
push rdx
|
||||
push rbx
|
||||
push rbp
|
||||
push rsi
|
||||
push rdi
|
||||
%endmacro
|
||||
|
||||
%macro popAll 0
|
||||
pop rdi
|
||||
pop rsi
|
||||
pop rbp
|
||||
pop rbx
|
||||
pop rdx
|
||||
pop rcx
|
||||
pop rax
|
||||
%endmacro
|
||||
|
||||
%macro IsrWithoutErrCode 1
|
||||
global isr%1
|
||||
isr%1:
|
||||
cli
|
||||
push byte 0
|
||||
push byte %1
|
||||
jmp isrHandler
|
||||
%endmacro
|
||||
|
||||
%macro IsrWithErrCode 1
|
||||
global isr%1
|
||||
isr%1:
|
||||
cli
|
||||
push byte %1
|
||||
jmp isrHandler
|
||||
%endmacro
|
Loading…
Reference in New Issue