summaryrefslogtreecommitdiffstats
path: root/src/arch/x86/include/librm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/include/librm.h')
-rw-r--r--src/arch/x86/include/librm.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/arch/x86/include/librm.h b/src/arch/x86/include/librm.h
index 311748be..597c65e6 100644
--- a/src/arch/x86/include/librm.h
+++ b/src/arch/x86/include/librm.h
@@ -376,6 +376,50 @@ struct interrupt_vector {
/** "jmp" instruction */
#define JMP_INSN 0xe9
+/** 32-bit interrupt wrapper stack frame */
+struct interrupt_frame32 {
+ uint32_t esp;
+ uint32_t ss;
+ uint32_t gs;
+ uint32_t fs;
+ uint32_t es;
+ uint32_t ds;
+ uint32_t ebp;
+ uint32_t edi;
+ uint32_t esi;
+ uint32_t edx;
+ uint32_t ecx;
+ uint32_t ebx;
+ uint32_t eax;
+ uint32_t eip;
+ uint32_t cs;
+ uint32_t eflags;
+} __attribute__ (( packed ));
+
+/** 64-bit interrupt wrapper stack frame */
+struct interrupt_frame64 {
+ uint64_t r15;
+ uint64_t r14;
+ uint64_t r13;
+ uint64_t r12;
+ uint64_t r11;
+ uint64_t r10;
+ uint64_t r9;
+ uint64_t r8;
+ uint64_t rbp;
+ uint64_t rdi;
+ uint64_t rsi;
+ uint64_t rdx;
+ uint64_t rcx;
+ uint64_t rbx;
+ uint64_t rax;
+ uint64_t rip;
+ uint64_t cs;
+ uint64_t rflags;
+ uint64_t rsp;
+ uint64_t ss;
+} __attribute__ (( packed ));
+
extern void set_interrupt_vector ( unsigned int intr, void *vector );
/** A page table */