summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-10-04 02:44:47 +0000
committerThomas Schwinge <tschwinge@gnu.org>2009-06-17 23:50:18 +0200
commit3b39a75826362826518c252c2a9a9c8c862e9336 (patch)
treed8722deb0bcf9a19a92949a8ced5d9455b5dcbe1
parent163bb85c18e8f9e30e2f14d27f091639fcf71d57 (diff)
2002-10-03 Roland McGrath <roland@frob.com>
* i386/include/mach/i386/mach_i386.defs (i386_set_gdt, i386_get_gdt): New routines. * i386/i386/user_ldt.c (i386_set_gdt, i386_get_gdt): New functions. * i386/i386/gdt.h (USER_GDT, USER_GDT_SLOTS): New macros. * i386/i386/thread.h (struct i386_machine_state): New member user_gdt. * i386/i386/pcb.c (switch_ktss): Copy those slots into the GDT.
-rw-r--r--i386/include/mach/i386/mach_i386.defs16
1 files changed, 16 insertions, 0 deletions
diff --git a/i386/include/mach/i386/mach_i386.defs b/i386/include/mach/i386/mach_i386.defs
index 57f43188..b8357ccc 100644
--- a/i386/include/mach/i386/mach_i386.defs
+++ b/i386/include/mach/i386/mach_i386.defs
@@ -94,3 +94,19 @@ routine i386_io_perm_modify(
target_task : task_t;
io_perm : io_perm_t;
enable : boolean_t);
+
+/* Modify one of a few available thread-specific segment descriptor slots.
+ The SELECTOR must be a value from a previous call (on any thread),
+ or -1 to allocate an available slot and return the segment selector for it.
+ These slots are copied into the CPU on each thread switch.
+ Returns KERN_NO_SPACE when there are no more slots available. */
+routine i386_set_gdt(
+ target_thread : thread_t;
+ inout selector : int;
+ desc : descriptor_t);
+
+/* Fetch a segment descriptor set with a prior i386_set_gdt call. */
+routine i386_get_gdt(
+ target_thread : thread_t;
+ selector : int;
+ out desc : descriptor_t);