Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Merge branch 'devel'
[palacios.git] / kitten / include / arch-x86_64 / segment.h
1 #ifndef _ARCH_SEGMENT_H
2 #define _ARCH_SEGMENT_H
3
4 #include <arch/cache.h>
5
6 #define __KERNEL_CS     0x10
7 #define __KERNEL_DS     0x18
8
9 #define __KERNEL32_CS   0x08
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_TSS 8 /* needs two entries */
24 #define GDT_ENTRY_LDT 10 /* needs two entries */
25 #define GDT_ENTRY_TLS_MIN 12
26 #define GDT_ENTRY_TLS_MAX 14
27
28 #define GDT_ENTRY_TLS_ENTRIES 3
29
30 #define GDT_ENTRY_PER_CPU 15    /* Abused to load per CPU data from limit */
31 #define __PER_CPU_SEG   (GDT_ENTRY_PER_CPU * 8 + 3)
32
33 /* TLS indexes for 64bit - hardcoded in arch_prctl */
34 #define FS_TLS 0        
35 #define GS_TLS 1        
36
37 #define GS_TLS_SEL ((GDT_ENTRY_TLS_MIN+GS_TLS)*8 + 3)
38 #define FS_TLS_SEL ((GDT_ENTRY_TLS_MIN+FS_TLS)*8 + 3)
39
40 #define IDT_ENTRIES 256
41 #define GDT_ENTRIES 16
42 #define GDT_SIZE (GDT_ENTRIES * 8)
43 #define TLS_SIZE (GDT_ENTRY_TLS_ENTRIES * 8) 
44
45 #endif