home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-x86_64 / segment.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.1 KB  |  45 lines

  1. #ifndef _ASM_SEGMENT_H
  2. #define _ASM_SEGMENT_H
  3.  
  4. #include <asm/cache.h>
  5.  
  6. #define __KERNEL_CS    0x10
  7. #define __KERNEL_DS    0x18
  8.  
  9. #define __KERNEL32_CS   0x38
  10.  
  11. /* 
  12.  * we cannot use the same code segment descriptor for user and kernel
  13.  * -- not even in the long flat mode, because of different DPL /kkeil 
  14.  * The segment offset needs to contain a RPL. Grr. -AK
  15.  * GDT layout to get 64bit syscall right (sysret hardcodes gdt offsets) 
  16.  */
  17.  
  18. #define __USER32_CS   0x23   /* 4*8+3 */ 
  19. #define __USER_DS     0x2b   /* 5*8+3 */ 
  20. #define __USER_CS     0x33   /* 6*8+3 */ 
  21. #define __USER32_DS    __USER_DS 
  22.  
  23. #define GDT_ENTRY_TLS 1
  24. #define GDT_ENTRY_TSS 8    /* needs two entries */
  25. #define GDT_ENTRY_LDT 10 /* needs two entries */
  26. #define GDT_ENTRY_TLS_MIN 12
  27. #define GDT_ENTRY_TLS_MAX 14
  28. /* 15 free */
  29.  
  30. #define GDT_ENTRY_TLS_ENTRIES 3
  31.  
  32. /* TLS indexes for 64bit - hardcoded in arch_prctl */
  33. #define FS_TLS 0    
  34. #define GS_TLS 1    
  35.  
  36. #define GS_TLS_SEL ((GDT_ENTRY_TLS_MIN+GS_TLS)*8 + 3)
  37. #define FS_TLS_SEL ((GDT_ENTRY_TLS_MIN+FS_TLS)*8 + 3)
  38.  
  39. #define IDT_ENTRIES 256
  40. #define GDT_ENTRIES 16
  41. #define GDT_SIZE (GDT_ENTRIES * 8)
  42. #define TLS_SIZE (GDT_ENTRY_TLS_ENTRIES * 8) 
  43.  
  44. #endif
  45.