;=----------------------------------------------------------------------------=;
;                            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/>.             ;
;=----------------------------------------------------------------------------=;

[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