summaryrefslogtreecommitdiff
path: root/sys/include/arch
diff options
context:
space:
mode:
Diffstat (limited to 'sys/include/arch')
-rw-r--r--sys/include/arch/amd64/tss.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/include/arch/amd64/tss.h b/sys/include/arch/amd64/tss.h
index 90f6289..bca572e 100644
--- a/sys/include/arch/amd64/tss.h
+++ b/sys/include/arch/amd64/tss.h
@@ -100,6 +100,20 @@ struct __packed tss_desc {
uint32_t reserved;
};
+/*
+ * Holds the address of the address pointing
+ * to the top of an interrupt stack.
+ */
+union tss_stack {
+ struct {
+ uint32_t top_lo;
+ uint32_t top_hi;
+ };
+ uint64_t top;
+};
+
+int tss_alloc_stack(union tss_stack *entry_out, size_t size);
+int tss_update_ist(struct cpu_info *ci, union tss_stack stack, uint8_t istno);
void write_tss(struct cpu_info *cpu, struct tss_desc *desc);
void tss_load(void); /* In tss.S */