diff options
author | sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> | 2006-12-08 21:29:46 +0000 |
---|---|---|
committer | sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> | 2006-12-08 21:29:46 +0000 |
commit | 1c5bcb1e17532ec1630056fb2e58ef8e15267f15 (patch) | |
tree | a69aad21c684fd2100a108e621c914d487821b27 /include/valgrind.h | |
parent | 9f9ab89a162dcbec13545b74cfec6177ae160a89 (diff) | |
download | valgrind-1c5bcb1e17532ec1630056fb2e58ef8e15267f15.tar.gz |
Get rid of the use of explicit register variables in the ppc32-linux
magic macros.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6386 a5019735-40e9-0310-863c-91ae7b9d1cf9
Diffstat (limited to 'include/valgrind.h')
-rw-r--r-- | include/valgrind.h | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/include/valgrind.h b/include/valgrind.h index 9cc0af9b3..4d895bf03 100644 --- a/include/valgrind.h +++ b/include/valgrind.h @@ -299,8 +299,8 @@ typedef _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5) \ \ { unsigned int _zzq_args[6]; \ - register unsigned int _zzq_result __asm__("r3"); \ - register unsigned int* _zzq_ptr __asm__("r4"); \ + unsigned int _zzq_result; \ + unsigned int* _zzq_ptr; \ _zzq_args[0] = (unsigned int)(_zzq_request); \ _zzq_args[1] = (unsigned int)(_zzq_arg1); \ _zzq_args[2] = (unsigned int)(_zzq_arg2); \ @@ -308,24 +308,28 @@ typedef _zzq_args[4] = (unsigned int)(_zzq_arg4); \ _zzq_args[5] = (unsigned int)(_zzq_arg5); \ _zzq_ptr = _zzq_args; \ - __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ + __asm__ volatile("mr 3,%1\n\t" /*default*/ \ + "mr 4,%2\n\t" /*ptr*/ \ + __SPECIAL_INSTRUCTION_PREAMBLE \ /* %R3 = client_request ( %R4 ) */ \ - "or 1,1,1" \ - : "=r" (_zzq_result) \ - : "0" (_zzq_default), "r" (_zzq_ptr) \ - : "cc", "memory"); \ + "or 1,1,1\n\t" \ + "mr %0,3" /*result*/ \ + : "=b" (_zzq_result) \ + : "b" (_zzq_default), "b" (_zzq_ptr) \ + : "cc", "memory", "r3", "r4"); \ _zzq_rlval = _zzq_result; \ } #define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) \ { volatile OrigFn* _zzq_orig = &(_zzq_rlval); \ - register unsigned int __addr __asm__("r3"); \ + unsigned int __addr; \ __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE \ /* %R3 = guest_NRADDR */ \ - "or 2,2,2" \ - : "=r" (__addr) \ + "or 2,2,2\n\t" \ + "mr %0,3" \ + : "=b" (__addr) \ : \ - : "cc", "memory" \ + : "cc", "memory", "r3" \ ); \ _zzq_orig->nraddr = __addr; \ } |