|
@@ -61,18 +61,14 @@
|
|
#define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1)
|
|
#define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1)
|
|
|
|
|
|
#define GDT_ENTRY_DEFAULT_USER_CS 14
|
|
#define GDT_ENTRY_DEFAULT_USER_CS 14
|
|
-#define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS * 8 + 3)
|
|
|
|
|
|
|
|
#define GDT_ENTRY_DEFAULT_USER_DS 15
|
|
#define GDT_ENTRY_DEFAULT_USER_DS 15
|
|
-#define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS * 8 + 3)
|
|
|
|
|
|
|
|
#define GDT_ENTRY_KERNEL_BASE 12
|
|
#define GDT_ENTRY_KERNEL_BASE 12
|
|
|
|
|
|
#define GDT_ENTRY_KERNEL_CS (GDT_ENTRY_KERNEL_BASE + 0)
|
|
#define GDT_ENTRY_KERNEL_CS (GDT_ENTRY_KERNEL_BASE + 0)
|
|
-#define __KERNEL_CS (GDT_ENTRY_KERNEL_CS * 8)
|
|
|
|
|
|
|
|
#define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE + 1)
|
|
#define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE + 1)
|
|
-#define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8)
|
|
|
|
|
|
|
|
#define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE + 4)
|
|
#define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE + 4)
|
|
#define GDT_ENTRY_LDT (GDT_ENTRY_KERNEL_BASE + 5)
|
|
#define GDT_ENTRY_LDT (GDT_ENTRY_KERNEL_BASE + 5)
|
|
@@ -139,10 +135,11 @@
|
|
#else
|
|
#else
|
|
#include <asm/cache.h>
|
|
#include <asm/cache.h>
|
|
|
|
|
|
-#define __KERNEL_CS 0x10
|
|
|
|
-#define __KERNEL_DS 0x18
|
|
|
|
|
|
+#define GDT_ENTRY_KERNEL32_CS 1
|
|
|
|
+#define GDT_ENTRY_KERNEL_CS 2
|
|
|
|
+#define GDT_ENTRY_KERNEL_DS 3
|
|
|
|
|
|
-#define __KERNEL32_CS 0x08
|
|
|
|
|
|
+#define __KERNEL32_CS (GDT_ENTRY_KERNEL32_CS * 8)
|
|
|
|
|
|
/*
|
|
/*
|
|
* we cannot use the same code segment descriptor for user and kernel
|
|
* we cannot use the same code segment descriptor for user and kernel
|
|
@@ -150,10 +147,10 @@
|
|
* The segment offset needs to contain a RPL. Grr. -AK
|
|
* The segment offset needs to contain a RPL. Grr. -AK
|
|
* GDT layout to get 64bit syscall right (sysret hardcodes gdt offsets)
|
|
* GDT layout to get 64bit syscall right (sysret hardcodes gdt offsets)
|
|
*/
|
|
*/
|
|
-
|
|
|
|
-#define __USER32_CS 0x23 /* 4*8+3 */
|
|
|
|
-#define __USER_DS 0x2b /* 5*8+3 */
|
|
|
|
-#define __USER_CS 0x33 /* 6*8+3 */
|
|
|
|
|
|
+#define GDT_ENTRY_DEFAULT_USER32_CS 4
|
|
|
|
+#define GDT_ENTRY_DEFAULT_USER_DS 5
|
|
|
|
+#define GDT_ENTRY_DEFAULT_USER_CS 6
|
|
|
|
+#define __USER32_CS (GDT_ENTRY_DEFAULT_USER32_CS * 8 + 3)
|
|
#define __USER32_DS __USER_DS
|
|
#define __USER32_DS __USER_DS
|
|
|
|
|
|
#define GDT_ENTRY_TSS 8 /* needs two entries */
|
|
#define GDT_ENTRY_TSS 8 /* needs two entries */
|
|
@@ -175,6 +172,10 @@
|
|
|
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+#define __KERNEL_CS (GDT_ENTRY_KERNEL_CS * 8)
|
|
|
|
+#define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8)
|
|
|
|
+#define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS* 8 + 3)
|
|
|
|
+#define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS* 8 + 3)
|
|
#ifndef CONFIG_PARAVIRT
|
|
#ifndef CONFIG_PARAVIRT
|
|
#define get_kernel_rpl() 0
|
|
#define get_kernel_rpl() 0
|
|
#endif
|
|
#endif
|