tss.h 578 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /* vim: tabstop=4 shiftwidth=4 noexpandtab
  2. */
  3. #pragma once
  4. extern void tss_flush(void);
  5. typedef struct tss_entry {
  6. uint32_t prev_tss;
  7. uint32_t esp0;
  8. uint32_t ss0;
  9. uint32_t esp1;
  10. uint32_t ss1;
  11. uint32_t esp2;
  12. uint32_t ss2;
  13. uint32_t cr3;
  14. uint32_t eip;
  15. uint32_t eflags;
  16. uint32_t eax;
  17. uint32_t ecx;
  18. uint32_t edx;
  19. uint32_t ebx;
  20. uint32_t esp;
  21. uint32_t ebp;
  22. uint32_t esi;
  23. uint32_t edi;
  24. uint32_t es;
  25. uint32_t cs;
  26. uint32_t ss;
  27. uint32_t ds;
  28. uint32_t fs;
  29. uint32_t gs;
  30. uint32_t ldt;
  31. uint16_t trap;
  32. uint16_t iomap_base;
  33. } __attribute__ ((packed)) tss_entry_t;