stos/amd64: Add trapframe defs
Signed-off-by: Chloe M. <chloe@mensia.org>
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Copyright (c) 2026, Chloe M.
|
||||
* Provided under the BSD-3 clause.
|
||||
*
|
||||
* Description: Trap frame defs
|
||||
* Author: Chloe M.
|
||||
*/
|
||||
|
||||
#ifndef _MACHINE_FRAME_H_
|
||||
#define _MACHINE_FRAME_H_ 1
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
#include <stdef.h>
|
||||
#endif /* !__ASSEMBLER__ */
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
typedef struct PACKED {
|
||||
UQUAD Vector;
|
||||
UQUAD Rax;
|
||||
UQUAD Rbx;
|
||||
UQUAD Rcx;
|
||||
UQUAD Rdx;
|
||||
UQUAD Rsi;
|
||||
UQUAD Rdi;
|
||||
UQUAD Rbp;
|
||||
UQUAD R8;
|
||||
UQUAD R9;
|
||||
UQUAD R10;
|
||||
UQUAD R11;
|
||||
UQUAD R12;
|
||||
UQUAD R13;
|
||||
UQUAD R14;
|
||||
UQUAD R15;
|
||||
/* Pushed by hardawre */
|
||||
UQUAD ErrorCode;
|
||||
UQUAD Rip;
|
||||
UQUAD CodeSeg;
|
||||
UQUAD Rflags;
|
||||
UQUAD Rsp;
|
||||
UQUAD StackSeg;
|
||||
} TRAP_FRAME;
|
||||
#else
|
||||
.macro PushFrame Vector
|
||||
.if \Vector == 10 || \Vector == 11 || \Vector == 12 || \Vector == 13 \
|
||||
|| \Vector == 14
|
||||
subq $8, %rsp
|
||||
.endif
|
||||
|
||||
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
|
||||
push $\Vector
|
||||
.endm
|
||||
|
||||
.macro PopFrame Vector
|
||||
.if \Vector == 10 || \Vector == 11 || \Vector == 12 || \Vector == 13 \
|
||||
|| \Vector == 14
|
||||
addq $8, %rsp
|
||||
.endif
|
||||
|
||||
add $8, %rsp
|
||||
pop %r15
|
||||
pop %r14
|
||||
pop %r13
|
||||
pop %r12
|
||||
pop %r11
|
||||
pop %r10
|
||||
pop %r9
|
||||
pop %r8
|
||||
pop %rbp
|
||||
pop %rdi
|
||||
pop %rsi
|
||||
pop %rdx
|
||||
pop %rcx
|
||||
pop %rbx
|
||||
pop %rax
|
||||
.endm
|
||||
#endif /* !__ASSEMBLER__ */
|
||||
#endif /* !_MACHINE_FRAME_H_ */
|
||||
Reference in New Issue
Block a user