Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Apr 2005 13:38:40 GMT
From:      David Xu <davidxu@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 75324 for review
Message-ID:  <200504161338.j3GDceEQ070289@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=75324

Change 75324 by davidxu@davidxu_tiger on 2005/04/16 13:37:39

	Implement cpu_set_user_tls for AMD64.

Affected files ...

.. //depot/projects/davidxu_thread/src/sys/amd64/amd64/vm_machdep.c#6 edit

Differences ...

==== //depot/projects/davidxu_thread/src/sys/amd64/amd64/vm_machdep.c#6 (text+ko) ====

@@ -327,7 +327,7 @@
 	 * Set the trap frame to point at the beginning of the uts
 	 * function.
 	 */
-	td->td_frame->tf_rbp = 0; 
+	td->td_frame->tf_rbp = 0;
 	td->td_frame->tf_rsp =
 	    ((register_t)stack->ss_sp + stack->ss_size) & ~0x0f;
 	td->td_frame->tf_rsp -= 8;
@@ -341,6 +341,21 @@
 	td->td_frame->tf_rdi = (register_t)arg;
 }
 
+void
+cpu_set_user_tls(struct thread *td, void *tls_base, size_t tls_size __unused,
+	int tls_seg __unused)
+{
+
+	if (td == curthread) {
+		critical_enter();
+		td->pcb->pcb_fsbase = tls_base;
+		wrmsr(MSR_FSBASE, pcb->pcb_fsbase);
+		critical_leave();
+	} else {
+		td->pcb->pcb_fsbase = tls_base;
+	}
+}
+
 #ifdef SMP
 static void
 cpu_reset_proxy()



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200504161338.j3GDceEQ070289>