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