From c9394f466a1df1f7435a8336cf8e88516efdb21c Mon Sep 17 00:00:00 2001
From: phx <phx@NetBSD.org>
Date: Sat, 3 Oct 2009 22:28:33 +0000
Subject: [PATCH] SystemV-R4 ABI for M68k returns pointers in %a0, so we have
 to make sure that CERROR returns -1 in %a0 in addition to %d0 and %d1, to
 make functions like mmap(2), mremap(2), shmat(2) or sbrk(2) return -1 in case
 of an error. A side effect of this bug was a segfault caused by jemalloc,
 when mmap() failed.

---
 lib/libc/arch/m68k/sys/cerror.S | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/libc/arch/m68k/sys/cerror.S b/lib/libc/arch/m68k/sys/cerror.S
index 5db55806b6b4..40d2be20434d 100644
--- a/lib/libc/arch/m68k/sys/cerror.S
+++ b/lib/libc/arch/m68k/sys/cerror.S
@@ -1,4 +1,4 @@
-/*	$NetBSD: cerror.S,v 1.14 2003/08/07 16:42:14 agc Exp $	*/
+/*	$NetBSD: cerror.S,v 1.15 2009/10/03 22:28:33 phx Exp $	*/
 
 /*-
  * Copyright (c) 1990 The Regents of the University of California.
@@ -39,7 +39,7 @@
 #if 0
 	RCSID("from: @(#)cerror.s	5.1 (Berkeley) 5/12/90")
 #else
-	RCSID("$NetBSD: cerror.S,v 1.14 2003/08/07 16:42:14 agc Exp $")
+	RCSID("$NetBSD: cerror.S,v 1.15 2009/10/03 22:28:33 phx Exp $")
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -80,4 +80,7 @@ _ENTRY(CERROR)
 #endif	/* _REENTRANT */
 	movl	#-1,%d0
 	movl	#-1,%d1
+#ifdef	__SVR4_ABI__
+	movl	%d0,%a0
+#endif
 	rts