]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/i386/seg.h
xnu-4570.1.46.tar.gz
[apple/xnu.git] / osfmk / i386 / seg.h
index df191c5d16fc88a57132975ed39808a8a182c60d..75f5182e08b30ef5320ba7c46bca64ecbdec24fa 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000-2009 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2012 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
  */
 #ifndef        _I386_SEG_H_
 #define        _I386_SEG_H_
-#ifdef MACH_KERNEL
-#include <mach_kdb.h>
-#else
-#define        MACH_KDB 0
-#endif /* MACH_KERNEL */
 #ifndef __ASSEMBLER__
 #include <stdint.h>
 #include <mach/vm_types.h>
@@ -99,15 +94,7 @@ selector_to_sel(uint16_t selector)
 #define        LDTSZ_MIN       SEL_TO_INDEX(USER_SETTABLE)
                                        /* kernel ldt entries */
 
-#if    MACH_KDB
-#define        GDTSZ           20
-#else
 #define        GDTSZ           19
-#endif
-
-#ifdef __x86_64__
-#define PROT_MODE_GDT_SIZE 48 /* size of prot_mode_gdt in bytes */
-#endif
 
 /*
  * Interrupt table is always 256 entries long.
@@ -189,16 +176,15 @@ struct fake_descriptor64 {
        uint32_t        access:8;               /* access */
        uint32_t        reserved:32;            /* reserved/zero */
 };
-#ifdef __i386__
-#define        FAKE_UBER64(addr32)     { (uint32_t) (addr32), KERNEL_UBER_BASE_HI32 }
-#define        FAKE_COMPAT(addr32)     { (uint32_t) (addr32), 0x0 }
-#define        UBER64(addr32)          ((addr64_t) (uintptr_t)addr32 + KERNEL_UBER_BASE)
-#endif
+
+typedef struct __attribute__((packed)) {
+       uint16_t        size;
+       void            *ptr;
+} x86_64_desc_register_t;
 
 /*
  * Boot-time data for master (or only) CPU
  */
-extern struct fake_descriptor  master_idt[IDTSZ];
 extern struct real_descriptor  master_gdt[GDTSZ];
 extern struct real_descriptor  master_ldt[LDTSZ];
 extern struct i386_tss         master_ktss;
@@ -219,12 +205,6 @@ extern char                        mc_task_stack_end[];
 extern struct i386_tss         master_mctss;
 extern void                    mc_task_start(void);
 
-#if    MACH_KDB
-extern char                    db_task_stack_store[];
-extern struct i386_tss         master_dbtss;
-extern void                    db_task_start(void);
-#endif /* MACH_KDB */
-
 __END_DECLS
 
 #endif /*__ASSEMBLER__*/
@@ -281,46 +261,6 @@ __END_DECLS
 
 #define NULL_SEG       0
 
-#ifdef __i386__
-/*
- * User descriptors for MACH - 32-bit flat address space
- */
-#define        SYSENTER_CS     0x07            /* sysenter kernel code segment */
-#define        SYSENTER_DS     0x0f            /* sysenter kernel data segment */
-#define        USER_CS         0x17            /* user code segment
-                                          Must be SYSENTER_CS+16 for sysexit */
-/* Special case: sysenter with EFL_TF (trace bit) set - use iret not sysexit */
-#define SYSENTER_TF_CS (USER_CS|0x10000)
-#define        USER_DS         0x1f            /* user data segment 
-                                          Must be SYSENTER_CS+24 for sysexit */
-#define        USER64_CS       0x27            /* 64-bit user code segment 
-                                          Must be USER_CS+16 for sysret */
-#define        USER64_DS       USER_DS         /* 64-bit user data segment == 32-bit */
-#define        SYSCALL_CS      0x2f            /* 64-bit syscall pseudo-segment */
-#define        USER_CTHREAD    0x37            /* user cthread area */
-#define        USER_SETTABLE   0x3f            /* start of user settable ldt entries */
-
-/*
- * Kernel descriptors for MACH - 32-bit flat address space.
- */
-#define        KERNEL32_CS     0x08            /* kernel code */
-#define        KERNEL_DS       0x10            /* kernel data */
-#define        KERNEL_LDT      0x18            /* master LDT */
-#define        KERNEL_LDT_2    0x20            /* master LDT expanded for 64-bit */
-#define        KERNEL_TSS      0x28            /* master TSS */
-#define        KERNEL_TSS_2    0x30            /* master TSS expanded for 64-bit */
-
-#define        MC_TSS          0x38            /* machine-check handler TSS */
-
-#define        CPU_DATA_GS     0x48            /* per-cpu data */
-
-#define        DF_TSS          0x50            /* double-fault handler TSS */
-
-#define        USER_LDT        0x58
-#define        USER_TSS        0x60
-#define        FPE_CS          0x68
-
-#else // __x86_64__
 
 /*
  * Kernel descriptors for MACH - 64-bit flat address space.
@@ -341,23 +281,9 @@ __END_DECLS
                                        /* 12: other 8 bytes of USER_LDT */
 #define KERNEL_DS      0x68            /* 13: 32-bit kernel data */
 
-#endif
 
-#ifdef __i386__
-#if !defined(USER_WINDOW_SEL)
-#define USER_WINDOW_SEL        0x70            /* 14:  window for copyin/copyout */
-#define PHYS_WINDOW_SEL        0x78            /* 15:  window for copyin/copyout */
-#endif
-#define        KERNEL64_CS     0x80            /* 16:  kernel 64-bit code */
-#define        KERNEL64_SS     0x88            /* 17:  kernel 64-bit (syscall) stack */
-#else // __x86_64__
 #define SYSENTER_TF_CS (USER_CS|0x10000)
 #define        SYSENTER_DS     KERNEL64_SS     /* sysenter kernel data segment */
-#endif
-
-#if    MACH_KDB
-#define        DEBUG_TSS       0x90            /* 18:  debug TSS (uniprocessor) */
-#endif
 
 #ifdef __x86_64__
 /*