diff --git a/kaleid/kernel/cpu/cpuf.inc b/kaleid/kernel/cpu/cpuf.inc new file mode 100644 index 0000000..be4d109 --- /dev/null +++ b/kaleid/kernel/cpu/cpuf.inc @@ -0,0 +1,78 @@ +;=----------------------------------------------------------------------------=; +; 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 . ; +;=----------------------------------------------------------------------------=; + +[BITS 64] + +%macro pushAll 0 + push r15 + push r14 + push r13 + push r12 + push r11 + push r10 + push r9 + push r8 + push rbp + push rdi + push rsi + push rdx + push rcx + push rbx + push rax +%endmacro + +%macro popAll 0 + pop rax + pop rbx + pop rcx + pop rdx + pop rsi + pop rdi + pop rbp + pop r8 + pop r9 + pop r10 + pop r11 + pop r12 + pop r13 + pop r14 + pop r15 +%endmacro + +%macro IsrWithoutErrCode 1 +global isr%1 +isr%1: + cli + push 0 + push %1 + jmp isrPreHandler +%endmacro + +%macro IsrWithErrCode 1 +global isr%1 +isr%1: + cli + push %1 + jmp isrPreHandler +%endmacro