about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/socket.S13
2 files changed, 16 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 1596d6567e..9727fdd236 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+1998-04-06  Richard Henderson  <rth@cygnus.com>
+
+	* sysdeps/unix/sysv/linux/sparc/sparc32/socket.S: Revert 03-01 change,
+	as the buffer is not properly aligned.
+	Reported by Juan Cespedes <cespedes@debian.org>.
+
 1998-04-05  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
 
 	* manual/examples/mkfsock.c (make_named_socket): Use AF_LOCAL
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S b/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S
index db8eb4e8bb..8d6fd77c10 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S
@@ -48,11 +48,18 @@ ENTRY (__socket)
 
 	/* Drop up to 6 arguments (recvfrom) into the memory allocated by
 	   the caller for varargs, since that's really what we have.  */
-	std %o0, [%sp + 68 + 0]
+	st %o0, [%sp + 68 + 0]
+	st %o1, [%sp + 68 + 4]
 #if NARGS > 2
-	std %o2, [%sp + 68 + 8]
+	st %o2, [%sp + 68 + 8]
+#if NARGS > 3
+	st %o3, [%sp + 68 + 12]
 #if NARGS > 4
-	std %o4, [%sp + 68 + 16]
+	st %o4, [%sp + 68 + 16]
+#if NARGS > 5
+	st %o5, [%sp + 68 + 20]
+#endif
+#endif
 #endif
 #endif