From 4f54c1e2510fa11a31bd09af2b72ed8650d1cd1c Mon Sep 17 00:00:00 2001 From: marcel Date: Tue, 31 Jul 2007 06:23:26 +0000 Subject: Fix backward compatibility of the "old" (i.e. FreeBSD6) lseek syscall. It was broken when a new lseek syscall was introduced. The problem is that we need to swap the 32-bit td_retval values for the __syscall indirect syscall when the actual syscall has a 32-bit return value. Hence, we need to exclude lseek(2). And this means the "old" lseek(2) as well -- which we didn't. Based on a patch from: grehan@ Approved by: re (rwatson) --- sys/powerpc/aim/trap.c | 4 ++-- sys/powerpc/powerpc/trap.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'sys/powerpc') diff --git a/sys/powerpc/aim/trap.c b/sys/powerpc/aim/trap.c index 1f25b26..2cae6a3 100644 --- a/sys/powerpc/aim/trap.c +++ b/sys/powerpc/aim/trap.c @@ -433,8 +433,8 @@ syscall(struct trapframe *frame) } switch (error) { case 0: - if ((frame->fixreg[0] == SYS___syscall) && - (code != SYS_lseek)) { + if (frame->fixreg[0] == SYS___syscall && + code != SYS_freebsd6_lseek && code != SYS_lseek) { /* * 64-bit return, 32-bit syscall. Fixup byte order */ diff --git a/sys/powerpc/powerpc/trap.c b/sys/powerpc/powerpc/trap.c index 1f25b26..2cae6a3 100644 --- a/sys/powerpc/powerpc/trap.c +++ b/sys/powerpc/powerpc/trap.c @@ -433,8 +433,8 @@ syscall(struct trapframe *frame) } switch (error) { case 0: - if ((frame->fixreg[0] == SYS___syscall) && - (code != SYS_lseek)) { + if (frame->fixreg[0] == SYS___syscall && + code != SYS_freebsd6_lseek && code != SYS_lseek) { /* * 64-bit return, 32-bit syscall. Fixup byte order */ -- cgit v1.1