about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/unix/sysv/linux/hppa/sysdep.h8
2 files changed, 10 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index b18db0afb9..ed54ff9776 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2001-04-19  Matthew Wilcox  <willy@ldl.fc.hp.com>
+
+	* sysdeps/unix/sysv/linux/hppa/sysdep.h (INLINE_SYSCALL):
+	Change to return a signed result for compatibility with other
+	architectures, and correctness.
+
 2001-04-19  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_32BITUIDS):
diff --git a/sysdeps/unix/sysv/linux/hppa/sysdep.h b/sysdeps/unix/sysv/linux/hppa/sysdep.h
index 10e360dfd5..1430642612 100644
--- a/sysdeps/unix/sysv/linux/hppa/sysdep.h
+++ b/sysdeps/unix/sysv/linux/hppa/sysdep.h
@@ -192,21 +192,21 @@
 
 #undef INLINE_SYSCALL
 #define INLINE_SYSCALL(name, nr, args...)	({		\
-	unsigned long __sys_res;				\
+	long __sys_res;						\
 	{							\
 		register unsigned long __res asm("r28");	\
 		LOAD_ARGS_##nr(args)				\
 		asm volatile(					\
-			"ble  0x100(%%sr2, %%r0)\n\t"	\
+			"ble  0x100(%%sr2, %%r0)\n\t"		\
 			" ldi %1, %%r20"			\
 			: "=r" (__res)				\
 			: "i" (SYS_ify(name)) ASM_ARGS_##nr	\
 			 );					\
 		__sys_res = __res;				\
 	}							\
-	if (__sys_res >= (unsigned long)-4095) {		\
+	if ((unsigned long)__sys_res >= (unsigned long)-4095) {	\
 		__set_errno(-__sys_res);			\
-		__sys_res = (unsigned long)-1;			\
+		__sys_res = -1;					\
 	}							\
 	__sys_res;						\
 })