PERFORCE change 75974 for review
David Xu
davidxu at FreeBSD.org
Mon Apr 25 15:51:33 PDT 2005
http://perforce.freebsd.org/chv.cgi?CH=75974
Change 75974 by davidxu at davidxu_tiger on 2005/04/25 22:50:52
pickup sysenter work.
Affected files ...
.. //depot/projects/davidxu_thread/src/sys/i386/i386/genassym.c#4 edit
.. //depot/projects/davidxu_thread/src/sys/i386/i386/swtch.s#3 edit
.. //depot/projects/davidxu_thread/src/sys/i386/include/pcpu.h#5 edit
Differences ...
==== //depot/projects/davidxu_thread/src/sys/i386/i386/genassym.c#4 (text+ko) ====
@@ -71,6 +71,7 @@
#endif
#include <machine/cpu.h>
#include <machine/pcb.h>
+#include <machine/pcb_ext.h>
#include <machine/sigframe.h>
#include <machine/vm86.h>
#include <machine/proc.h>
@@ -133,6 +134,7 @@
ASSYM(PCB_PSL, offsetof(struct pcb, pcb_psl));
ASSYM(PCB_DBREGS, PCB_DBREGS);
ASSYM(PCB_EXT, offsetof(struct pcb, pcb_ext));
+ASSYM(PCB_EXT_TSS_ESP0, offsetof(struct pcb_ext, ext_tss.tss_esp0));
ASSYM(PCB_FSD, offsetof(struct pcb, pcb_fsd));
ASSYM(PCB_VM86, offsetof(struct pcb, pcb_vm86));
@@ -198,6 +200,7 @@
ASSYM(PC_CURRENTLDT, offsetof(struct pcpu, pc_currentldt));
ASSYM(PC_CPUID, offsetof(struct pcpu, pc_cpuid));
ASSYM(PC_CURPMAP, offsetof(struct pcpu, pc_curpmap));
+ASSYM(PC_SYSENTER_TSS_ESP0, offsetof(struct pcpu, pc_sysenter_tss_esp0));
#ifdef DEV_APIC
ASSYM(LA_VER, offsetof(struct LAPIC, version));
==== //depot/projects/davidxu_thread/src/sys/i386/i386/swtch.s#3 (text+ko) ====
@@ -199,6 +199,8 @@
je 1f /* If not, use the default */
btsl %esi, private_tss /* mark use of private tss */
movl PCB_EXT(%edx), %edi /* new tss descriptor */
+ movl PCB_EXT_TSS_ESP0(%edi), %ebx
+ movl %ebx, PCPU(SYSENTER_TSS_ESP0)
jmp 2f /* Load it up */
1: /*
@@ -208,6 +210,7 @@
*/
leal -16(%edx), %ebx /* leave space for vm86 */
movl %ebx, PCPU(COMMON_TSS) + TSS_ESP0
+ movl %ebx, PCPU(SYSENTER_TSS_ESP0)
/*
* Test this CPU's bit in the bitmap to see if this
==== //depot/projects/davidxu_thread/src/sys/i386/include/pcpu.h#5 (text+ko) ====
@@ -54,7 +54,8 @@
struct segment_descriptor *pc_fsgs_gdt; \
int pc_currentldt; \
u_int pc_acpi_id; \
- u_int pc_apic_id
+ u_int pc_apic_id; \
+ u_int pc_sysenter_tss_esp0
#if defined(lint)
More information about the p4-projects
mailing list