2003-01-13 Roland McGrath <roland@redhat.com>

* defs.h [POWERPC] (UESP, EIP, EAX, ORIG_EAX): Remove this cruft.
	[LINUX && POWERPC && !__powerpc64__] (ALIGN64): New macro.
	* io.c (sys_pread, sys_pwrite): Use ALIGN64.
	From Anton Blanchard <anton@samba.org>.
This commit is contained in:
Roland McGrath 2003-01-14 07:53:41 +00:00
parent 6e87ee0d5c
commit f5c450d3c5
2 changed files with 9 additions and 5 deletions

12
defs.h
View File

@ -124,11 +124,6 @@
#define __KERNEL__ #define __KERNEL__
#include <asm/ptrace.h> #include <asm/ptrace.h>
#undef __KERNEL__ #undef __KERNEL__
/* TEMP */
#define UESP PT_R1
#define EIP PT_NIP
#define EAX PT_R3
#define ORIG_EAX PT_ORIG_R3
#endif #endif
#ifdef __STDC__ #ifdef __STDC__
#ifdef LINUX #ifdef LINUX
@ -550,6 +545,13 @@ do { \
memmove (&tcp->u_arg[arg], &tcp->u_arg[arg + 1], \ memmove (&tcp->u_arg[arg], &tcp->u_arg[arg + 1], \
(tcp->u_nargs - arg - 1) * sizeof tcp->u_arg[0]); \ (tcp->u_nargs - arg - 1) * sizeof tcp->u_arg[0]); \
} while (0) } while (0)
#elif defined(LINUX) && defined(POWERPC) && !defined(__powerpc64__)
#define ALIGN64(tcp,arg) \
do { \
if (!(arg % 2)) \
memmove (&tcp->u_arg[arg], &tcp->u_arg[arg + 1], \
(tcp->u_nargs - arg - 1) * sizeof tcp->u_arg[0]); \
} while (0)
#else #else
#define ALIGN64(tcp,arg) do { } while (0) #define ALIGN64(tcp,arg) do { } while (0)
#endif #endif

2
io.c
View File

@ -242,6 +242,7 @@ struct tcb *tcp;
tprintf("%#lx", tcp->u_arg[1]); tprintf("%#lx", tcp->u_arg[1]);
else else
printstr(tcp, tcp->u_arg[1], tcp->u_rval); printstr(tcp, tcp->u_arg[1], tcp->u_rval);
ALIGN64 (tcp, 2); /* PowerPC alignment restriction */
tprintf(", %lu, %llu", tcp->u_arg[2], tprintf(", %lu, %llu", tcp->u_arg[2],
*(unsigned long long *)&tcp->u_arg[3]); *(unsigned long long *)&tcp->u_arg[3]);
} }
@ -255,6 +256,7 @@ struct tcb *tcp;
if (entering(tcp)) { if (entering(tcp)) {
tprintf("%ld, ", tcp->u_arg[0]); tprintf("%ld, ", tcp->u_arg[0]);
printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]); printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]);
ALIGN64 (tcp, 2); /* PowerPC alignment restriction */
tprintf(", %lu, %llu", tcp->u_arg[2], tprintf(", %lu, %llu", tcp->u_arg[2],
*(unsigned long long *)&tcp->u_arg[3]); *(unsigned long long *)&tcp->u_arg[3]);
} }