Date: Tue, 10 May 2005 07:27:43 -0400 From: Jake Burkholder <jake@locore.ca> To: John Baldwin <jhb@FreeBSD.org> Cc: David Xu <davidxu@FreeBSD.org> Subject: Re: PERFORCE change 75366 for review Message-ID: <42809AAF.5060904@locore.ca> In-Reply-To: <87f1dd37c46f5e61c68035b9989ae5b7@FreeBSD.org> References: <200504171042.j3HAgeTQ054345@repoman.freebsd.org> <87f1dd37c46f5e61c68035b9989ae5b7@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
John Baldwin wrote: > > On Apr 17, 2005, at 6:42 AM, David Xu wrote: > >> http://perforce.freebsd.org/chv.cgi?CH=75366 >> >> Change 75366 by davidxu@davidxu_alona on 2005/04/17 10:42:05 >> >> Implement cpu_set_user_tls for sparc64. >> >> Affected files ... >> >> .. >> //depot/projects/davidxu_thread/src/sys/sparc64/sparc64/vm_machdep.c#6 >> edit >> >> Differences ... >> >> ==== >> //depot/projects/davidxu_thread/src/sys/sparc64/sparc64/vm_machdep.c#6 >> (text+ko) ==== >> >> @@ -194,6 +194,15 @@ >> td->td_retval[1] = tf->tf_out[1]; >> } >> >> +void >> +cpu_set_user_tls(struct thread *td, void *tls_base, size_t tls_size, >> + int tls_seg __unused) >> +{ >> + if (td == curthread) >> + flushw(); >> + td->td_frame->tf_global[7] = tls_base; >> +} >> + > > > I think for at least this one and Alpha you might want a critical > section in the curthread case like you do on i386 and amd64 since > calling the Alpha PAL and setting tls_base + flushw() are more than > one instruction long. > Just FWIW, you don't need a flushw when setting the global registers since they're not windowed and guaranteed to be reloaded on return to user mode. Jake
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?42809AAF.5060904>