[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnumach/i386 i386/mp_desc.c i386/pcb.c i386/thr...
From: |
Roland McGrath |
Subject: |
gnumach/i386 i386/mp_desc.c i386/pcb.c i386/thr... |
Date: |
Sun, 07 Apr 2002 20:09:44 -0400 |
CVSROOT: /cvsroot/hurd
Module name: gnumach
Branch: oskit-branch
Changes by: Roland McGrath <address@hidden> 02/04/07 20:09:43
Modified files:
i386/i386 : mp_desc.c pcb.c thread.h mp_desc.h ldt.c
user_ldt.c ldt.h
i386/intel : pmap.c
Log message:
2002-04-07 Roland McGrath <address@hidden>
Provide a new special segment to user tasks so %gs:0 points to one
writable word, a different word on each CPU, saved by thread switching.
* i386/i386/ldt.h (USER_GS): New macro.
* i386/i386/ldt.c (ldt_init): Set USER_GS to point at global variable
`user_thread_register'.
* i386/i386/mp_desc.h (struct mp_desc_table): New member
`user_thread_register'.
* i386/i386/mp_desc.c (mp_desc_init): Set USER_GS descriptor in LDT to
point at that member.
* i386/intel/pmap.c (pmap_bootstrap): Make direct-mapped pages
accessible in user mode.
* i386/i386/user_ldt.c (i386_set_ldt): Silently cap user segment
limits to VM_MAX_ADDRESS.
* i386/i386/thread.h (struct i386_machine_state): New member
`user_thread_register'.
* i386/i386/pcb.c (pcb_init, thread_setstatus): Set user threads' %gs
register to USER_GS rather than USER_DS.
(switch_ktss): Take new arg OLD_PCB.
Don't do set_ldt at all if old and new match.
Switch the per-CPU user thread variable into OLD_PCB and out of PCB.
(stack_handoff, load_context, switch_context): Update callers.
* i386/i386/user_ldt.c (i386_set_ldt): Likewise.
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnumach/gnumach/i386/i386/mp_desc.c.diff?only_with_tag=oskit-branch&tr1=1.1.1.1.2.9&tr2=1.1.1.1.2.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnumach/gnumach/i386/i386/pcb.c.diff?only_with_tag=oskit-branch&tr1=1.2.2.3&tr2=1.2.2.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnumach/gnumach/i386/i386/thread.h.diff?only_with_tag=oskit-branch&tr1=1.2.2.3&tr2=1.2.2.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnumach/gnumach/i386/i386/mp_desc.h.diff?only_with_tag=oskit-branch&tr1=1.1.1.1.2.5&tr2=1.1.1.1.2.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnumach/gnumach/i386/i386/ldt.c.diff?only_with_tag=oskit-branch&tr1=1.1.1.1.2.1&tr2=1.1.1.1.2.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnumach/gnumach/i386/i386/user_ldt.c.diff?only_with_tag=oskit-branch&tr1=1.2.2.1&tr2=1.2.2.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnumach/gnumach/i386/i386/ldt.h.diff?only_with_tag=oskit-branch&tr1=1.1.1.1.2.2&tr2=1.1.1.1.2.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnumach/gnumach/i386/intel/pmap.c.diff?only_with_tag=oskit-branch&tr1=1.3.2.3&tr2=1.3.2.4&r1=text&r2=text
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnumach/i386 i386/mp_desc.c i386/pcb.c i386/thr...,
Roland McGrath <=