ldt.h 963 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * ldt.h
  3. *
  4. * Definitions of structures used with the modify_ldt system call.
  5. */
  6. #ifndef _ASM_X86_LDT_H
  7. #define _ASM_X86_LDT_H
  8. /* Maximum number of LDT entries supported. */
  9. #define LDT_ENTRIES 8192
  10. /* The size of each LDT entry. */
  11. #define LDT_ENTRY_SIZE 8
  12. #ifndef __ASSEMBLY__
  13. /*
  14. * Note on 64bit base and limit is ignored and you cannot set DS/ES/CS
  15. * not to the default values if you still want to do syscalls. This
  16. * call is more for 32bit mode therefore.
  17. */
  18. struct user_desc {
  19. unsigned int entry_number;
  20. unsigned int base_addr;
  21. unsigned int limit;
  22. unsigned int seg_32bit:1;
  23. unsigned int contents:2;
  24. unsigned int read_exec_only:1;
  25. unsigned int limit_in_pages:1;
  26. unsigned int seg_not_present:1;
  27. unsigned int useable:1;
  28. #ifdef __x86_64__
  29. unsigned int lm:1;
  30. #endif
  31. };
  32. #define MODIFY_LDT_CONTENTS_DATA 0
  33. #define MODIFY_LDT_CONTENTS_STACK 1
  34. #define MODIFY_LDT_CONTENTS_CODE 2
  35. #endif /* !__ASSEMBLY__ */
  36. #endif /* _ASM_X86_LDT_H */