+++ /dev/null
-/*
- * x86 TSS data structure and routines
- * Copyright (c) 2001,2004 David H. Hovemeyer <daveho@cs.umd.edu>
- * $Revision: 1.1 $
- *
- * This is free software. You are permitted to use,
- * redistribute, and modify it as specified in the file "COPYING".
- */
-
-#ifndef GEEKOS_TSS_H
-#define GEEKOS_TSS_H
-
-/*
- * Source: _Protected Mode Software Architecture_ by Tom Shanley,
- * ISBN 020155447X.
- */
-
-/*
- * NOTE: all reserved fields must be set to zero.
- */
-
-struct TSS {
- /*
- * Link to nested task. For example, if an interrupt is handled
- * by a task gate, the link field will contain the selector for
- * the TSS of the interrupted task.
- */
- ushort_t link;
- ushort_t reserved1;
-
- /* Stacks for privilege levels. esp0/ss0 specifies the kernel stack. */
- ulong_t esp0;
- ushort_t ss0;
- ushort_t reserved2;
- ulong_t esp1;
- ushort_t ss1;
- ushort_t reserved3;
- ulong_t esp2;
- ushort_t ss2;
- ushort_t reserved4;
-
- /* Page directory register. */
- ulong_t cr3;
-
- /* General processor registers. */
- ulong_t eip;
- ulong_t eflags;
- ulong_t eax;
- ulong_t ecx;
- ulong_t edx;
- ulong_t ebx;
- ulong_t esp;
- ulong_t ebp;
- ulong_t esi;
- ulong_t edi;
-
- /* Segment registers and padding. */
- ushort_t es;
- ushort_t reserved5;
- ushort_t cs;
- ushort_t reserved6;
- ushort_t ss;
- ushort_t reserved7;
- ushort_t ds;
- ushort_t reserved8;
- ushort_t fs;
- ushort_t reserved9;
- ushort_t gs;
- ushort_t reserved10;
-
- /* GDT selector for the LDT descriptor. */
- ushort_t ldt;
- ushort_t reserved11;
-
- /*
- * The debug trap bit causes a debug exception upon a switch
- * to the task specified by this TSS.
- */
- uint_t debugTrap : 1;
- uint_t reserved12 : 15;
-
- /* Offset in the TSS specifying where the io map is located. */
- ushort_t ioMapBase;
-};
-
-void Init_TSS(void);
-void Set_Kernel_Stack_Pointer(ulong_t esp0);
-
-#endif /* GEEKOS_TSS_H */