* [Bug runtime/12341] New: deref()/store_deref() variations between arches
@ 2010-12-22 20:54 dsmith at redhat dot com
2011-01-04 21:50 ` [Bug runtime/12341] " dsmith at redhat dot com
2011-01-06 20:58 ` dsmith at redhat dot com
0 siblings, 2 replies; 3+ messages in thread
From: dsmith at redhat dot com @ 2010-12-22 20:54 UTC (permalink / raw)
To: systemtap
http://sourceware.org/bugzilla/show_bug.cgi?id=12341
Summary: deref()/store_deref() variations between arches
Product: systemtap
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: runtime
AssignedTo: systemtap@sources.redhat.com
ReportedBy: dsmith@redhat.com
There is a different deref()/store_deref() macro in runtime/loc2c-runtime.h for
each arch.
For i386/x86_64, deref() calls the kernel's __get_user_asm(). store_deref()
calls the kernel's __put_user_asm().
For ia64, deref() calls the kernel's __get_user_size(). store_deref() calls
the kernel's __put_user_size().
For powerpc, deref() calls __stp_get_user_asm(), which is custom powerpc
assembly code (that looks almost identical to the kernel's __get_user_asm()).
store_deref() calls __stp_put_user_asm(), which is custom powerpc assembly
code.
For s390, deref() calls __stp_get_user_asm(), which is custom s390 assembly.
store_deref() calls __stp_put_user_asm(), which is custom s390 assembly.
It might be possible for all arches to use the kernel's own routines, instead
of having custom (powerpc/s390) assembly code. The
__get_user_size()/__put_user_size() routines might be the most attractive
choice (as the ia64 uses), since they know how handle all the different size
combinations.
(If __get_user_size()/__put_user_size() works for the i386, that could
eliminate the need for the i386 special version of kread/kwrite that can handle
64-bit values.)
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug runtime/12341] deref()/store_deref() variations between arches
2010-12-22 20:54 [Bug runtime/12341] New: deref()/store_deref() variations between arches dsmith at redhat dot com
@ 2011-01-04 21:50 ` dsmith at redhat dot com
2011-01-06 20:58 ` dsmith at redhat dot com
1 sibling, 0 replies; 3+ messages in thread
From: dsmith at redhat dot com @ 2011-01-04 21:50 UTC (permalink / raw)
To: systemtap
http://sourceware.org/bugzilla/show_bug.cgi?id=12341
--- Comment #1 from David Smith <dsmith at redhat dot com> 2011-01-04 21:50:16 UTC ---
(In reply to comment #0)
> (If __get_user_size()/__put_user_size() works for the i386, that could
> eliminate the need for the i386 special version of kread/kwrite that can handle
> 64-bit values.)
Unfortunately, this idea won't work. Looking at the i386 header files in
kernels 2.6.9/2.6.18/2.6.36, none of the i386 __get_user_size() macros can
handle 64-bit values.
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug runtime/12341] deref()/store_deref() variations between arches
2010-12-22 20:54 [Bug runtime/12341] New: deref()/store_deref() variations between arches dsmith at redhat dot com
2011-01-04 21:50 ` [Bug runtime/12341] " dsmith at redhat dot com
@ 2011-01-06 20:58 ` dsmith at redhat dot com
1 sibling, 0 replies; 3+ messages in thread
From: dsmith at redhat dot com @ 2011-01-06 20:58 UTC (permalink / raw)
To: systemtap
http://sourceware.org/bugzilla/show_bug.cgi?id=12341
--- Comment #2 from David Smith <dsmith at redhat dot com> 2011-01-06 20:58:39 UTC ---
(In reply to comment #0)
> For powerpc, deref() calls __stp_get_user_asm(), which is custom powerpc
> assembly code (that looks almost identical to the kernel's __get_user_asm()).
> store_deref() calls __stp_put_user_asm(), which is custom powerpc assembly
> code.
For powerpc, I've discovered some history.
loc2c-runtime.h originally used the kernel's __get_user_asm() macros.
This changed on 20 Mar 2006 in the following commit:
<http://sources.redhat.com/git/gitweb.cgi?p=systemtap.git;a=commitdiff;h=15eeafe9465119eb443f59b332e24ecfeec10488>
To fix bug 2076 (ppc64 runtime is broken under kernel v2.6.15-RC5):
<http://sourceware.org/bugzilla/show_bug.cgi?id=2076>
which was caused by the "__get_user_asm" macro changing to taking 4 arguments
(from 5).
There is (hopefully) a better way to fix that problem than duplicating
__get_user_asm()/__put_user_asm().
Note that we just can't go back to calling __get_user_asm(), since in current
kernels __get_user_asm2() is used on powerpc to get 64-bit values. We'll need
to call something a bit higher up.
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-01-06 20:58 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-12-22 20:54 [Bug runtime/12341] New: deref()/store_deref() variations between arches dsmith at redhat dot com
2011-01-04 21:50 ` [Bug runtime/12341] " dsmith at redhat dot com
2011-01-06 20:58 ` dsmith at redhat dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).