Module Name:    src
Committed By:   martin
Date:           Wed Feb  4 22:00:25 UTC 2015

Modified Files:
        src/compat/powerpc64/powerpc [netbsd-7]: bsd.powerpc.mk
        src/lib/libc/arch/powerpc [netbsd-7]: SYS.h
        src/lib/libc/arch/powerpc/sys [netbsd-7]: __clone.S __syscall.S brk.S
            getcontext.S pipe.S sbrk.S
        src/lib/libc/arch/powerpc64 [netbsd-7]: Makefile.inc SYS.h
        src/lib/libc/arch/powerpc64/gen [netbsd-7]: __setjmp14.S
            __sigsetjmp14.S
        src/lib/libc/arch/powerpc64/sys [netbsd-7]: __clone.S __sigtramp2.S
            __syscall.S __vfork14.S brk.S cerror.S fork.S getcontext.S pipe.S
            ptrace.S sbrk.S syscall.S
        src/lib/libc/compiler_rt [netbsd-7]: Makefile.inc
        src/sys/arch/powerpc/include [netbsd-7]: asm.h
Added Files:
        src/lib/libc/arch/powerpc64 [netbsd-7]: genassym.cf

Log Message:
Pull up following revision(s) (requested by chs in ticket #492):
        lib/libc/arch/powerpc64/sys/__vfork14.S: revision 1.2
        lib/libc/arch/powerpc64/sys/__syscall.S: revision 1.2
        lib/libc/arch/powerpc/sys/__syscall.S: revision 1.3
        lib/libc/arch/powerpc64/sys/syscall.S: revision 1.2
        lib/libc/arch/powerpc/sys/__clone.S: revision 1.6
        lib/libc/arch/powerpc64/gen/__setjmp14.S: revision 1.3
        sys/arch/powerpc/include/asm.h: revision 1.47
        lib/libc/arch/powerpc64/sys/cerror.S: revision 1.6
        lib/libc/arch/powerpc64/sys/getcontext.S: revision 1.5
        lib/libc/arch/powerpc64/sys/brk.S: revision 1.5
        lib/libc/arch/powerpc64/sys/ptrace.S: revision 1.3
        lib/libc/arch/powerpc64/genassym.cf: revision 1.1
        lib/libc/arch/powerpc64/gen/__sigsetjmp14.S: revision 1.3
        lib/libc/arch/powerpc/sys/getcontext.S: revision 1.6
        compat/powerpc64/powerpc/bsd.powerpc.mk: revision 1.3
        lib/libc/arch/powerpc64/sys/pipe.S: revision 1.2
        lib/libc/arch/powerpc/sys/brk.S: revision 1.14
        lib/libc/arch/powerpc64/SYS.h: revision 1.3
        lib/libc/arch/powerpc64/sys/fork.S: revision 1.2
        lib/libc/arch/powerpc64/sys/__sigtramp2.S: revision 1.4
        lib/libc/arch/powerpc64/Makefile.inc: revision 1.3
        lib/libc/arch/powerpc/sys/pipe.S: revision 1.9
        lib/libc/compiler_rt/Makefile.inc: revision 1.25
        lib/libc/arch/powerpc64/sys/sbrk.S: revision 1.4, 1.5
        lib/libc/arch/powerpc64/sys/__clone.S: revision 1.2
        lib/libc/arch/powerpc/sys/sbrk.S: revision 1.13
        lib/libc/arch/powerpc/SYS.h: revision 1.13
powerpc64 uses the same sources as powerpc and needs the long double as
double-double sources.
-
Spell LdAddr consistently
-
Add LDFLAGS+=-Wl,-m,elf32ppc_nbsd
-
Fix cmpptr/cmpreq/etc to use right mnemonics
-
Minimize differences between powerpc and powerpc64
-
Fix powerpc64 assembly to use right instructions for 64bit CPUs.
-
Use hidden for __curbrk and __minbrk to avoid GOT/TOC relocations.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.2.6.1 src/compat/powerpc64/powerpc/bsd.powerpc.mk
cvs rdiff -u -r1.12 -r1.12.24.1 src/lib/libc/arch/powerpc/SYS.h
cvs rdiff -u -r1.5 -r1.5.4.1 src/lib/libc/arch/powerpc/sys/__clone.S
cvs rdiff -u -r1.2 -r1.2.4.1 src/lib/libc/arch/powerpc/sys/__syscall.S
cvs rdiff -u -r1.13 -r1.13.4.1 src/lib/libc/arch/powerpc/sys/brk.S
cvs rdiff -u -r1.5 -r1.5.24.1 src/lib/libc/arch/powerpc/sys/getcontext.S
cvs rdiff -u -r1.8 -r1.8.24.1 src/lib/libc/arch/powerpc/sys/pipe.S
cvs rdiff -u -r1.12 -r1.12.4.1 src/lib/libc/arch/powerpc/sys/sbrk.S
cvs rdiff -u -r1.2 -r1.2.64.1 src/lib/libc/arch/powerpc64/Makefile.inc
cvs rdiff -u -r1.2 -r1.2.24.1 src/lib/libc/arch/powerpc64/SYS.h
cvs rdiff -u -r0 -r1.1.2.2 src/lib/libc/arch/powerpc64/genassym.cf
cvs rdiff -u -r1.2 -r1.2.24.1 src/lib/libc/arch/powerpc64/gen/__setjmp14.S \
    src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S
cvs rdiff -u -r1.1 -r1.1.64.1 src/lib/libc/arch/powerpc64/sys/__clone.S \
    src/lib/libc/arch/powerpc64/sys/__syscall.S \
    src/lib/libc/arch/powerpc64/sys/__vfork14.S \
    src/lib/libc/arch/powerpc64/sys/fork.S \
    src/lib/libc/arch/powerpc64/sys/pipe.S \
    src/lib/libc/arch/powerpc64/sys/syscall.S
cvs rdiff -u -r1.3 -r1.3.24.1 src/lib/libc/arch/powerpc64/sys/__sigtramp2.S
cvs rdiff -u -r1.4 -r1.4.20.1 src/lib/libc/arch/powerpc64/sys/brk.S \
    src/lib/libc/arch/powerpc64/sys/getcontext.S
cvs rdiff -u -r1.5 -r1.5.4.1 src/lib/libc/arch/powerpc64/sys/cerror.S
cvs rdiff -u -r1.2 -r1.2.4.1 src/lib/libc/arch/powerpc64/sys/ptrace.S
cvs rdiff -u -r1.3 -r1.3.64.1 src/lib/libc/arch/powerpc64/sys/sbrk.S
cvs rdiff -u -r1.24.2.1 -r1.24.2.2 src/lib/libc/compiler_rt/Makefile.inc
cvs rdiff -u -r1.46 -r1.46.4.1 src/sys/arch/powerpc/include/asm.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/compat/powerpc64/powerpc/bsd.powerpc.mk
diff -u src/compat/powerpc64/powerpc/bsd.powerpc.mk:1.2 src/compat/powerpc64/powerpc/bsd.powerpc.mk:1.2.6.1
--- src/compat/powerpc64/powerpc/bsd.powerpc.mk:1.2	Fri Mar  7 05:48:30 2014
+++ src/compat/powerpc64/powerpc/bsd.powerpc.mk	Wed Feb  4 22:00:24 2015
@@ -1,6 +1,10 @@
-#	$NetBSD: bsd.powerpc.mk,v 1.2 2014/03/07 05:48:30 matt Exp $
+#	$NetBSD: bsd.powerpc.mk,v 1.2.6.1 2015/02/04 22:00:24 martin Exp $
 
 LD+=			-m elf32ppc_nbsd
+.if empty(LDFLAGS:M*elf32ppc_nbsd*)
+LDFLAGS+=		-Wl,-m,elf32ppc_nbsd
+.endif
+.ifndef MLIBDIR
 MLIBDIR=		powerpc
 LIBC_MACHINE_ARCH=	${MLIBDIR}
 COMMON_MACHINE_ARCH=	${MLIBDIR}
@@ -13,3 +17,4 @@ LDELFSO_MACHINE_ARCH=	${MLIBDIR}
 GOMP_MACHINE_ARCH=	${MLIBDIR}
 
 .include "${.PARSEDIR}/../../m32.mk"
+.endif

Index: src/lib/libc/arch/powerpc/SYS.h
diff -u src/lib/libc/arch/powerpc/SYS.h:1.12 src/lib/libc/arch/powerpc/SYS.h:1.12.24.1
--- src/lib/libc/arch/powerpc/SYS.h:1.12	Sat Jan 15 07:31:12 2011
+++ src/lib/libc/arch/powerpc/SYS.h	Wed Feb  4 22:00:24 2015
@@ -1,24 +1,21 @@
-/*	$NetBSD: SYS.h,v 1.12 2011/01/15 07:31:12 matt Exp $	*/
+/*	$NetBSD: SYS.h,v 1.12.24.1 2015/02/04 22:00:24 martin Exp $	*/
 
 #include <machine/asm.h>
 #include <sys/syscall.h>
 
-#ifdef __STDC__
+#define	BRANCH_TO_CERROR()	b	_C_LABEL(__cerror)
+
 #define	_DOSYSCALL(x)		li	%r0,(SYS_ ## x)		;\
 				sc
-#else
-#define	_DOSYSCALL(x)		li	%r0,(SYS_/**/x)		;\
-				sc
-#endif /* __STDC__ */
 
 #define	_SYSCALL_NOERROR(x,y)	.text				;\
-				.align	2			;\
+				.p2align 2			;\
 			ENTRY(x)				;\
 				_DOSYSCALL(y)
 
 #define _SYSCALL(x,y)		.text				;\
-				.align	2			;\
-			2:	b	_C_LABEL(__cerror)	;\
+				.p2align 2			;\
+			2:	BRANCH_TO_CERROR()		;\
 				_SYSCALL_NOERROR(x,y)		;\
 				bso	2b
 
@@ -32,7 +29,7 @@
 
 #define PSEUDO(x,y)		_SYSCALL_NOERROR(x,y)		;\
 				bnslr				;\
-				b	_C_LABEL(__cerror)	;\
+				BRANCH_TO_CERROR()		;\
 				END(x)
 
 #define RSYSCALL_NOERROR(x)	PSEUDO_NOERROR(x,x)

Index: src/lib/libc/arch/powerpc/sys/__clone.S
diff -u src/lib/libc/arch/powerpc/sys/__clone.S:1.5 src/lib/libc/arch/powerpc/sys/__clone.S:1.5.4.1
--- src/lib/libc/arch/powerpc/sys/__clone.S:1.5	Thu Sep 12 15:36:15 2013
+++ src/lib/libc/arch/powerpc/sys/__clone.S	Wed Feb  4 22:00:24 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: __clone.S,v 1.5 2013/09/12 15:36:15 joerg Exp $	*/
+/*	$NetBSD: __clone.S,v 1.5.4.1 2015/02/04 22:00:24 martin Exp $	*/
 
 /*-
  * Copyright (c) 2001 Tsubai Masanari.  All rights reserved.
@@ -30,7 +30,7 @@
 #include "SYS.h"
 
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: __clone.S,v 1.5 2013/09/12 15:36:15 joerg Exp $")
+__RCSID("$NetBSD: __clone.S,v 1.5.4.1 2015/02/04 22:00:24 martin Exp $")
 #endif /* LIBC_SCCS && !lint */
 
 #ifdef WEAK_ALIAS
@@ -44,9 +44,9 @@ ENTRY(__clone)
 	/*
 	 * Sanity checks: func and stack may not be NULL.
 	 */
-	cmpwi	%r3,0
+	cmpptri	%r3,0
 	beq	1f
-	cmpwi	%r4,0
+	cmpptri	%r4,0
 	beq	1f
 
 	mr	%r7,%r3		/* Save fn in r7. */
@@ -54,7 +54,7 @@ ENTRY(__clone)
 	_DOSYSCALL(__clone)	/* (flags, stack) */
 	bso	2f		/* error... */
 
-	cmpwi	%r3,0
+	cmpptri	%r3,0
 	bnelr			/* We're the parent, just return. */
 
 	mtlr	%r7		/* fn */
@@ -69,5 +69,5 @@ ENTRY(__clone)
 1:
 	li	%r3,EINVAL
 2:
-	b	_C_LABEL(__cerror)
+	BRANCH_TO_CERROR()
 END(__clone)

Index: src/lib/libc/arch/powerpc/sys/__syscall.S
diff -u src/lib/libc/arch/powerpc/sys/__syscall.S:1.2 src/lib/libc/arch/powerpc/sys/__syscall.S:1.2.4.1
--- src/lib/libc/arch/powerpc/sys/__syscall.S:1.2	Sat Feb  1 20:26:21 2014
+++ src/lib/libc/arch/powerpc/sys/__syscall.S	Wed Feb  4 22:00:24 2015
@@ -1,9 +1,9 @@
-/*	$NetBSD: __syscall.S,v 1.2 2014/02/01 20:26:21 matt Exp $	*/
+/*	$NetBSD: __syscall.S,v 1.2.4.1 2015/02/04 22:00:24 martin Exp $	*/
 
-#include <powerpc/asm.h>
+#include "SYS.h"
 
 	.text
-	.align	2
+	.p2align 2
 ENTRY(__syscall)
 	mr	%r0,%r3		/* syscall number */
 	mr	%r3,%r4
@@ -13,10 +13,10 @@ ENTRY(__syscall)
 	mr	%r7,%r8
 	mr	%r8,%r9
 	mr	%r9,%r10
-	lwz	%r10,8(%r1)	/* final argument is on the stack */
+	ldreg	%r10,(2*__SIZEOF_POINTER__)(%r1) /* final argument is on the stack */
 	sc
 	bnslr
-	b	_C_LABEL(__cerror)
+	BRANCH_TO_CERROR()
 END(__syscall)
 
 STRONG_ALIAS(syscall, __syscall)

Index: src/lib/libc/arch/powerpc/sys/brk.S
diff -u src/lib/libc/arch/powerpc/sys/brk.S:1.13 src/lib/libc/arch/powerpc/sys/brk.S:1.13.4.1
--- src/lib/libc/arch/powerpc/sys/brk.S:1.13	Thu Sep 12 15:36:15 2013
+++ src/lib/libc/arch/powerpc/sys/brk.S	Wed Feb  4 22:00:24 2015
@@ -1,12 +1,14 @@
-/*	$NetBSD: brk.S,v 1.13 2013/09/12 15:36:15 joerg Exp $	*/
+/*	$NetBSD: brk.S,v 1.13.4.1 2015/02/04 22:00:24 martin Exp $	*/
 
 #include "SYS.h"
 
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: brk.S,v 1.13 2013/09/12 15:36:15 joerg Exp $")
+__RCSID("$NetBSD: brk.S,v 1.13.4.1 2015/02/04 22:00:24 martin Exp $")
 #endif /* LIBC_SCCS && !lint */
 
+	.hidden	_C_LABEL(__curbrk)
 	.globl	_C_LABEL(__curbrk)
+	.hidden	_C_LABEL(__minbrk)
 	.globl	_C_LABEL(__minbrk)
 	.globl	_C_LABEL(_end)
 
@@ -15,36 +17,38 @@ WEAK_ALIAS(brk, _brk)
 #endif
 
 	.data
+	.p2align 2
 _C_LABEL(__minbrk):
-	.long	_C_LABEL(_end)		# XXX not used yet
+	.long	_C_LABEL(_end)
+_C_LABEL(__curbrk):
+	.long	_C_LABEL(_end)
 
-	.text
 ENTRY(_brk)
 #ifdef __PIC__
-	mflr	%r10
-	PIC_GOTSETUP(%r9)
-	mtlr	%r10
-	lwz	%r5,_C_LABEL(_end)@got(%r9)
+	mflr	%r0
+	bcl	20,31,.LPIC0
+.LPIC0:	mflr    %r9
+	mtlr	%r0
+	addis	%r9,%r9,(_C_LABEL(__minbrk)-.LPIC0)@ha 
+	ldptru	%r5,(_C_LABEL(__minbrk)-.LPIC0)@l(%r9)	# r5 = &_end
 #else
-	lis	%r5,_C_LABEL(_end)@ha	# r5 = &_end
-	addi	%r5,%r5,_C_LABEL(_end)@l
+	lis	%r9,_C_LABEL(__minbrk)@ha
+	ldptru	%r5,_C_LABEL(__minbrk)@l(%r9)	# r5 = &_end
 #endif
-	cmplw	%r5,%r3			# if (&_end <= r3)
+	cmpptrl	%r5,%r3			# if (__minbrk <= r3)
+#ifdef __PPC_ISEL__
+	iselgt	%r3,%r5,%r3
+#else
 	bgt	0f
 	mr	%r5,%r3			# r5 = r3
 0:
 	mr	%r3,%r5			# new break value
-	_DOSYSCALL(break)		# assume, that r5 is kept
-	bso	1f
-#ifdef __PIC__
-	lwz	%r6,_C_LABEL(__curbrk)@got(%r9)
-	stw	%r5,0(%r6)
-#else
-	lis	%r6,_C_LABEL(__curbrk)@ha	# record new break
-	stw	%r5,_C_LABEL(__curbrk)@l(%r6)
 #endif
+	_DOSYSCALL(break)		# assume that r5 is preserved
+	bso	1f
+	stptr	%r5,__SIZEOF_POINTER__(%r9)
 	blr				# return 0
 
 1:
-	b	_C_LABEL(__cerror)
+	BRANCH_TO_CERROR()
 END(_brk)

Index: src/lib/libc/arch/powerpc/sys/getcontext.S
diff -u src/lib/libc/arch/powerpc/sys/getcontext.S:1.5 src/lib/libc/arch/powerpc/sys/getcontext.S:1.5.24.1
--- src/lib/libc/arch/powerpc/sys/getcontext.S:1.5	Sat Jan 15 07:31:13 2011
+++ src/lib/libc/arch/powerpc/sys/getcontext.S	Wed Feb  4 22:00:24 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: getcontext.S,v 1.5 2011/01/15 07:31:13 matt Exp $	*/
+/*	$NetBSD: getcontext.S,v 1.5.24.1 2015/02/04 22:00:24 martin Exp $	*/
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
 #include "assym.h"
 
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: getcontext.S,v 1.5 2011/01/15 07:31:13 matt Exp $")
+__RCSID("$NetBSD: getcontext.S,v 1.5.24.1 2015/02/04 22:00:24 martin Exp $")
 #endif /* LIBC_SCCS && !lint */
 
 #ifdef WEAK_ALIAS
@@ -45,9 +45,9 @@ ENTRY(_getcontext)
 	_DOSYSCALL(getcontext)
 	bso	1f
 	mflr	%r4
-	stw	%r4,UC_GREGS_PC(%r5)		# saved pc <- lr
-	stw	%r3,UC_GREGS_R3(%r5)		# arrange for return value 0
+	stptr	%r4,UC_GREGS_PC(%r5)		# saved pc <- lr
+	stint	%r3,UC_GREGS_R3(%r5)		# arrange for return value 0
 	blr
 1:
-	b	_C_LABEL(__cerror)
+	BRANCH_TO_CERROR()
 END(_getcontext)

Index: src/lib/libc/arch/powerpc/sys/pipe.S
diff -u src/lib/libc/arch/powerpc/sys/pipe.S:1.8 src/lib/libc/arch/powerpc/sys/pipe.S:1.8.24.1
--- src/lib/libc/arch/powerpc/sys/pipe.S:1.8	Sat Jan 15 07:31:13 2011
+++ src/lib/libc/arch/powerpc/sys/pipe.S	Wed Feb  4 22:00:24 2015
@@ -1,9 +1,9 @@
-/*	$NetBSD: pipe.S,v 1.8 2011/01/15 07:31:13 matt Exp $	*/
+/*	$NetBSD: pipe.S,v 1.8.24.1 2015/02/04 22:00:24 martin Exp $	*/
 
 #include "SYS.h"
 
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: pipe.S,v 1.8 2011/01/15 07:31:13 matt Exp $")
+__RCSID("$NetBSD: pipe.S,v 1.8.24.1 2015/02/04 22:00:24 martin Exp $")
 #endif /* LIBC_SCCS && !lint */
 
 #ifdef WEAK_ALIAS
@@ -14,10 +14,10 @@ ENTRY(_pipe)
 	mr	%r5,%r3		# save pointer
 	_DOSYSCALL(pipe)	# assume, that r5 is kept
 	bso	1f
-	stw	%r3,0(%r5)	# success, store fds
-	stw	%r4,4(%r5)
+	stint	%r3,0(%r5)	# success, store fds
+	stint	%r4,4(%r5)
 	li	%r3,0
 	blr			# and return 0
 1:
-	b	_C_LABEL(__cerror)
+	BRANCH_TO_CERROR()
 END(_pipe)

Index: src/lib/libc/arch/powerpc/sys/sbrk.S
diff -u src/lib/libc/arch/powerpc/sys/sbrk.S:1.12 src/lib/libc/arch/powerpc/sys/sbrk.S:1.12.4.1
--- src/lib/libc/arch/powerpc/sys/sbrk.S:1.12	Thu Sep 12 15:36:15 2013
+++ src/lib/libc/arch/powerpc/sys/sbrk.S	Wed Feb  4 22:00:24 2015
@@ -1,41 +1,37 @@
-/*	$NetBSD: sbrk.S,v 1.12 2013/09/12 15:36:15 joerg Exp $	*/
+/*	$NetBSD: sbrk.S,v 1.12.4.1 2015/02/04 22:00:24 martin Exp $	*/
 
 #include "SYS.h"
 
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: sbrk.S,v 1.12 2013/09/12 15:36:15 joerg Exp $")
+__RCSID("$NetBSD: sbrk.S,v 1.12.4.1 2015/02/04 22:00:24 martin Exp $")
 #endif /* LIBC_SCCS && !lint */
 
+	.hidden	_C_LABEL(__curbrk)
 	.globl	_C_LABEL(__curbrk)
-	.globl	_C_LABEL(_end)
 
 #ifdef WEAK_ALIAS
 WEAK_ALIAS(sbrk, _sbrk)
 #endif
 
-	.data
-_C_LABEL(__curbrk):
-	.long	_C_LABEL(_end)
-	.text
-
 ENTRY(_sbrk)
 #ifdef __PIC__
-	mflr	%r10
-	PIC_GOTSETUP(%r5)
-	mtlr	%r10
-	lwz	%r5,_C_LABEL(__curbrk)@got(%r5)
-	lwz	%r6,0(%r5)
+	mflr	%r0
+	bcl	20,31,.LPIC0
+.LPIC0:	mflr	%r5
+	mtlr	%r0
+	addis	%r8,%r5,(_C_LABEL(__curbrk)-.LPIC0)@ha
+	ldptru	%r6,(_C_LABEL(__curbrk)-.LPIC0)@l(%r8)
 #else
-	lis	%r5,_C_LABEL(__curbrk)@ha
-	lwzu	%r6,_C_LABEL(__curbrk)@l(%r5)	# r6 = old break, r5 = &curbrk
+	lis	%r8,_C_LABEL(__curbrk)@ha
+	ldptru	%r6,_C_LABEL(__curbrk)@l(%r8)	# r6 = old break, r5 = &curbrk
 #endif
 	add	%r3,%r3,%r6
 	mr	%r7,%r3				# r7 = new break
 	_DOSYSCALL(break)			# break(new_break)
 	bso	1f
 	mr	%r3,%r6				# set return value
-	stw	%r7,0(%r5)			# record new break
+	stptr	%r7,0(%r8)			# record new break
 	blr
 1:
-	b	_C_LABEL(__cerror)
+	BRANCH_TO_CERROR()
 END(_sbrk)

Index: src/lib/libc/arch/powerpc64/Makefile.inc
diff -u src/lib/libc/arch/powerpc64/Makefile.inc:1.2 src/lib/libc/arch/powerpc64/Makefile.inc:1.2.64.1
--- src/lib/libc/arch/powerpc64/Makefile.inc:1.2	Fri Jul  7 06:56:34 2006
+++ src/lib/libc/arch/powerpc64/Makefile.inc	Wed Feb  4 22:00:24 2015
@@ -1,6 +1,8 @@
-#	$NetBSD: Makefile.inc,v 1.2 2006/07/07 06:56:34 ross Exp $
+#	$NetBSD: Makefile.inc,v 1.2.64.1 2015/02/04 22:00:24 martin Exp $
 
 KMINCLUDES=
 KMSRCS=	
 
-SRCS+=	__sigaction14_sigtramp.c __sigtramp2.S
+CPPFLAGS+=	-I.
+
+SRCS+=		__sigaction14_sigtramp.c __sigtramp2.S

Index: src/lib/libc/arch/powerpc64/SYS.h
diff -u src/lib/libc/arch/powerpc64/SYS.h:1.2 src/lib/libc/arch/powerpc64/SYS.h:1.2.24.1
--- src/lib/libc/arch/powerpc64/SYS.h:1.2	Mon Mar 22 02:17:23 2010
+++ src/lib/libc/arch/powerpc64/SYS.h	Wed Feb  4 22:00:24 2015
@@ -1,25 +1,25 @@
-/*	$NetBSD: SYS.h,v 1.2 2010/03/22 02:17:23 mrg Exp $	*/
+/*	$NetBSD: SYS.h,v 1.2.24.1 2015/02/04 22:00:24 martin Exp $	*/
 
 #include <machine/asm.h>
 #include <sys/syscall.h>
 
-#ifdef __STDC__
-#define	_DOSYSCALL(x)		li	%r0,(SYS_ ## x)		;\
-				sc
+#ifdef _CALL_AIX
+#define	BRANCH_TO_CERROR()	b	._C_LABEL(__cerror); nop
 #else
-#define	_DOSYSCALL(x)		li	%r0,(SYS_/**/x)		;\
+#define	BRANCH_TO_CERROR()	b	_C_LABEL(__cerror)
+#endif
+
+#define	_DOSYSCALL(x)		li	%r0,(SYS_ ## x)		;\
 				sc
-#endif /* __STDC__ */
 
 #define	_SYSCALL_NOERROR(x,y)	.text				;\
-				.align	2			;\
+				.p2align 2			;\
 			ENTRY(x)				;\
 				_DOSYSCALL(y)
 
 #define _SYSCALL(x,y)		.text				;\
-				.align	2			;\
-			2:	b	PIC_PLT(_C_LABEL(__cerror));\
-				nop				;\
+				.p2align 2			;\
+			2:	BRANCH_TO_CERROR()		;\
 				_SYSCALL_NOERROR(x,y)		;\
 				bso	2b
 
@@ -28,12 +28,13 @@
 #define SYSCALL(x)		_SYSCALL(x,x)
 
 #define PSEUDO_NOERROR(x,y)	_SYSCALL_NOERROR(x,y)		;\
-				blr
+				blr				;\
+				END(x)
 
 #define PSEUDO(x,y)		_SYSCALL_NOERROR(x,y)		;\
 				bnslr				;\
-				b	PIC_PLT(_C_LABEL(__cerror));\
-				nop
+				BRANCH_TO_CERROR()		;\
+				END(x)
 
 #define RSYSCALL_NOERROR(x)	PSEUDO_NOERROR(x,x)
 

Index: src/lib/libc/arch/powerpc64/gen/__setjmp14.S
diff -u src/lib/libc/arch/powerpc64/gen/__setjmp14.S:1.2 src/lib/libc/arch/powerpc64/gen/__setjmp14.S:1.2.24.1
--- src/lib/libc/arch/powerpc64/gen/__setjmp14.S:1.2	Sun Mar  8 18:57:12 2009
+++ src/lib/libc/arch/powerpc64/gen/__setjmp14.S	Wed Feb  4 22:00:24 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: __setjmp14.S,v 1.2 2009/03/08 18:57:12 he Exp $	*/
+/*	$NetBSD: __setjmp14.S,v 1.2.24.1 2015/02/04 22:00:24 martin Exp $	*/
 
 #include <sys/syscall.h>
 
@@ -6,7 +6,7 @@
 
 #if defined(LIBC_SCCS)
 	.text
-	.asciz "$NetBSD: __setjmp14.S,v 1.2 2009/03/08 18:57:12 he Exp $"
+	.asciz "$NetBSD: __setjmp14.S,v 1.2.24.1 2015/02/04 22:00:24 martin Exp $"
 #endif
 
 /*
@@ -24,8 +24,7 @@ ENTRY(__setjmp14)
 	li	%r3,1			# SIG_BLOCK
 	li	%r4,0
 	addi	%r5,%r6,100		# &sigmask
-	li	%r0,SYS___sigprocmask14
-	sc				# assume no error	XXX
+	_DOSYSCALL(__sigprocmask14)	# assume no error	XXX
 	mflr	%r11
 	mfcr	%r12
 	mr	%r10,%r1
@@ -58,6 +57,7 @@ ENTRY(__setjmp14)
 
 	li	%r3,0
 	blr
+END(__setjmp14)
 
 ENTRY(__longjmp14)
 	ld	%r8,8(%r6)		# load r8-r31
@@ -93,9 +93,9 @@ ENTRY(__longjmp14)
 	addi	%r4,%r3,100		# &sigmask
 	li	%r3,3			# SIG_SETMASK
 	li	%r5,0
-	li	%r0,SYS___sigprocmask14
-	sc				# assume no error	XXX
+	_DOSYSCALL(__sigprocmask14)	# assume no error	XXX
 	or.	%r3,%r6,%r6
 	bnelr
 	li	%r3,1
 	blr
+END(__longjmp14)
Index: src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S
diff -u src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S:1.2 src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S:1.2.24.1
--- src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S:1.2	Mon Mar 22 01:39:11 2010
+++ src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S	Wed Feb  4 22:00:24 2015
@@ -1,11 +1,10 @@
-/*	$NetBSD: __sigsetjmp14.S,v 1.2 2010/03/22 01:39:11 mrg Exp $	*/
+/*	$NetBSD: __sigsetjmp14.S,v 1.2.24.1 2015/02/04 22:00:24 martin Exp $	*/
 
-#include <sys/syscall.h>
-#include <machine/asm.h>
+#include "SYS.h"
 
 #if defined(LIBC_SCCS)
 	.text
-	.asciz "$NetBSD: __sigsetjmp14.S,v 1.2 2010/03/22 01:39:11 mrg Exp $"
+	.asciz "$NetBSD: __sigsetjmp14.S,v 1.2.24.1 2015/02/04 22:00:24 martin Exp $"
 #endif
 
 ENTRY(__sigsetjmp14)
@@ -15,8 +14,7 @@ ENTRY(__sigsetjmp14)
 	li	%r3,1			# SIG_BLOCK
 	li	%r4,0
 	addi	%r5,%r6,100		# &sigmask
-	li	%r0,SYS___sigprocmask14
-	sc				# assume no error	XXX
+	_DOSYSCALL(__sigprocmask14)	# assume no error	XXX
 1:
 	mflr	%r11
 	mfcr	%r12
@@ -29,6 +27,7 @@ ENTRY(__sigsetjmp14)
 	.endr
 	li	%r3,0
 	blr
+END(__sigsetjmp14)
 
 ENTRY(__siglongjmp14)
 	i = 0
@@ -46,10 +45,10 @@ ENTRY(__siglongjmp14)
 	addi	%r4,%r3,100		# &sigmask
 	li	%r3,3			# SIG_SETMASK
 	li	%r5,0
-	li	%r0,SYS___sigprocmask14
-	sc				# assume no error	XXX
+	_DOSYSCALL(__sigprocmask14)	# assume no error	XXX
 1:
 	or.	%r3,%r6,%r6
 	bnelr
 	li	%r3,1
 	blr
+END(__siglongjmp14)

Index: src/lib/libc/arch/powerpc64/sys/__clone.S
diff -u src/lib/libc/arch/powerpc64/sys/__clone.S:1.1 src/lib/libc/arch/powerpc64/sys/__clone.S:1.1.64.1
--- src/lib/libc/arch/powerpc64/sys/__clone.S:1.1	Sat Jul  1 16:37:20 2006
+++ src/lib/libc/arch/powerpc64/sys/__clone.S	Wed Feb  4 22:00:24 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: __clone.S,v 1.1 2006/07/01 16:37:20 ross Exp $	*/
+/*	$NetBSD: __clone.S,v 1.1.64.1 2015/02/04 22:00:24 martin Exp $	*/
 
 /*-
  * Copyright (c) 2001 Tsubai Masanari.  All rights reserved.
@@ -40,18 +40,17 @@ ENTRY(__clone)
 	/*
 	 * Sanity checks: func and stack may not be NULL.
 	 */
-	cmpdi	%r3,0
+	cmpptri	%r3,0
 	beq	1f
-	cmpdi	%r4,0
+	cmpptri	%r4,0
 	beq	1f
 
 	mr	%r7,%r3		/* Save fn in r7. */
 	mr	%r3,%r5
-	li	%r0,SYS___clone	/* (flags, stack) */
-	sc
+	_DOSYSCALL(__clone)	/* (flags, stack) */
 	bso	2f		/* error... */
 
-	cmpdi	%r3,0
+	cmpptri	%r3,0
 	bnelr			/* We're the parent, just return. */
 
 	mtlr	%r7		/* fn */
@@ -59,8 +58,10 @@ ENTRY(__clone)
 	blrl			/* Call the clone's entry point. */
 
 	bl	PIC_PLT(_C_LABEL(_exit))
+	nop
 
 1:
 	li	%r3,EINVAL
 2:
-	b	PIC_PLT(_C_LABEL(__cerror))
+	BRANCH_TO_CERROR()
+END(__clone)
Index: src/lib/libc/arch/powerpc64/sys/__syscall.S
diff -u src/lib/libc/arch/powerpc64/sys/__syscall.S:1.1 src/lib/libc/arch/powerpc64/sys/__syscall.S:1.1.64.1
--- src/lib/libc/arch/powerpc64/sys/__syscall.S:1.1	Sat Jul  1 16:37:20 2006
+++ src/lib/libc/arch/powerpc64/sys/__syscall.S	Wed Feb  4 22:00:24 2015
@@ -1,5 +1,22 @@
-/*	$NetBSD: __syscall.S,v 1.1 2006/07/01 16:37:20 ross Exp $	*/
+/*	$NetBSD: __syscall.S,v 1.1.64.1 2015/02/04 22:00:24 martin Exp $	*/
 
 #include "SYS.h"
 
-RSYSCALL(__syscall)
+	.text
+	.p2align 2
+ENTRY(__syscall)
+	mr	%r0,%r3		/* syscall number */
+	mr	%r3,%r4
+	mr	%r4,%r5
+	mr	%r5,%r6
+	mr	%r6,%r7
+	mr	%r7,%r8
+	mr	%r8,%r9
+	mr	%r9,%r10
+	ldreg	%r10,(2*__SIZEOF_POINTER__)(%r1) /* final argument is on the stack */
+	sc
+	bnslr
+	BRANCH_TO_CERROR()
+END(__syscall)
+
+STRONG_ALIAS(syscall, __syscall)
Index: src/lib/libc/arch/powerpc64/sys/__vfork14.S
diff -u src/lib/libc/arch/powerpc64/sys/__vfork14.S:1.1 src/lib/libc/arch/powerpc64/sys/__vfork14.S:1.1.64.1
--- src/lib/libc/arch/powerpc64/sys/__vfork14.S:1.1	Thu Jul  6 17:04:22 2006
+++ src/lib/libc/arch/powerpc64/sys/__vfork14.S	Wed Feb  4 22:00:24 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: __vfork14.S,v 1.1 2006/07/06 17:04:22 ross Exp $	*/
+/*	$NetBSD: __vfork14.S,v 1.1.64.1 2015/02/04 22:00:24 martin Exp $	*/
 
 /*
  * pid = vfork();
@@ -13,3 +13,4 @@ SYSCALL(__vfork14)
 	addi	%r4,%r4,-1	# from 1 to 0 in child, 0 to -1 in parent
 	and	%r3,%r3,%r4	# return 0 in child, pid in parent
 	blr
+END(__vfork14)
Index: src/lib/libc/arch/powerpc64/sys/fork.S
diff -u src/lib/libc/arch/powerpc64/sys/fork.S:1.1 src/lib/libc/arch/powerpc64/sys/fork.S:1.1.64.1
--- src/lib/libc/arch/powerpc64/sys/fork.S:1.1	Sat Jul  1 16:37:20 2006
+++ src/lib/libc/arch/powerpc64/sys/fork.S	Wed Feb  4 22:00:24 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: fork.S,v 1.1 2006/07/01 16:37:20 ross Exp $	*/
+/*	$NetBSD: fork.S,v 1.1.64.1 2015/02/04 22:00:24 martin Exp $	*/
 
 /*
  * pid = fork();
@@ -13,3 +13,4 @@ _SYSCALL(__fork,fork)
 	addi	%r4,%r4,-1	# from 1 to 0 in child, 0 to -1 in parent
 	and	%r3,%r3,%r4	# return 0 in child, pid in parent
 	blr
+END(__fork)
Index: src/lib/libc/arch/powerpc64/sys/pipe.S
diff -u src/lib/libc/arch/powerpc64/sys/pipe.S:1.1 src/lib/libc/arch/powerpc64/sys/pipe.S:1.1.64.1
--- src/lib/libc/arch/powerpc64/sys/pipe.S:1.1	Sat Jul  1 16:37:20 2006
+++ src/lib/libc/arch/powerpc64/sys/pipe.S	Wed Feb  4 22:00:24 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pipe.S,v 1.1 2006/07/01 16:37:20 ross Exp $	*/
+/*	$NetBSD: pipe.S,v 1.1.64.1 2015/02/04 22:00:24 martin Exp $	*/
 
 #include "SYS.h"
 
@@ -8,12 +8,12 @@ WEAK_ALIAS(pipe, _pipe)
 
 ENTRY(_pipe)
 	mr	%r5,%r3		# save pointer
-	li	%r0,SYS_pipe
-	sc			# assume, that r5 is kept
+	_DOSYSCALL(pipe)	# assume, that r5 is kept
 	bso	1f
-	stw	%r3,0(%r5)	# success, store fds
-	stw	%r4,4(%r5)
+	stint	%r3,0(%r5)	# success, store fds
+	stint	%r4,4(%r5)
 	li	%r3,0
 	blr			# and return 0
 1:
-	b	PIC_PLT(_C_LABEL(__cerror))
+	BRANCH_TO_CERROR()
+END(_pipe)
Index: src/lib/libc/arch/powerpc64/sys/syscall.S
diff -u src/lib/libc/arch/powerpc64/sys/syscall.S:1.1 src/lib/libc/arch/powerpc64/sys/syscall.S:1.1.64.1
--- src/lib/libc/arch/powerpc64/sys/syscall.S:1.1	Sat Jul  1 16:37:20 2006
+++ src/lib/libc/arch/powerpc64/sys/syscall.S	Wed Feb  4 22:00:24 2015
@@ -1,5 +1,3 @@
-/*	$NetBSD: syscall.S,v 1.1 2006/07/01 16:37:20 ross Exp $	*/
+/*	$NetBSD: syscall.S,v 1.1.64.1 2015/02/04 22:00:24 martin Exp $	*/
 
-#include "SYS.h"
-
-RSYSCALL(syscall)
+/* aliased to __syscall */

Index: src/lib/libc/arch/powerpc64/sys/__sigtramp2.S
diff -u src/lib/libc/arch/powerpc64/sys/__sigtramp2.S:1.3 src/lib/libc/arch/powerpc64/sys/__sigtramp2.S:1.3.24.1
--- src/lib/libc/arch/powerpc64/sys/__sigtramp2.S:1.3	Mon Jan 17 08:23:54 2011
+++ src/lib/libc/arch/powerpc64/sys/__sigtramp2.S	Wed Feb  4 22:00:24 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: __sigtramp2.S,v 1.3 2011/01/17 08:23:54 matt Exp $	*/
+/*	$NetBSD: __sigtramp2.S,v 1.3.24.1 2015/02/04 22:00:24 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -46,3 +46,4 @@ ENTRY_NOPROFILE(__sigtramp_siginfo_2)
 	mr	%r3,%r30		/* restore ucontext pointer */
 	_DOSYSCALL(setcontext)		/* restore machine state */
 	_DOSYSCALL(exit)		/* or exit with errno if failed */
+END(__sigtramp_siginfo_2)

Index: src/lib/libc/arch/powerpc64/sys/brk.S
diff -u src/lib/libc/arch/powerpc64/sys/brk.S:1.4 src/lib/libc/arch/powerpc64/sys/brk.S:1.4.20.1
--- src/lib/libc/arch/powerpc64/sys/brk.S:1.4	Sat Oct 29 16:03:33 2011
+++ src/lib/libc/arch/powerpc64/sys/brk.S	Wed Feb  4 22:00:24 2015
@@ -1,8 +1,11 @@
-/*	$NetBSD: brk.S,v 1.4 2011/10/29 16:03:33 christos Exp $	*/
+/*	$NetBSD: brk.S,v 1.4.20.1 2015/02/04 22:00:24 martin Exp $	*/
 
 #include "SYS.h"
 
+
+	.hidden	_C_LABEL(__curbrk)
 	.globl	_C_LABEL(__curbrk)
+	.hidden	_C_LABEL(__minbrk)
 	.globl	_C_LABEL(__minbrk)
 	.globl	_C_LABEL(_end)
 
@@ -10,32 +13,30 @@
 WEAK_ALIAS(brk, _brk)
 #endif
 
-	.macro  LdAddr  r,sym
-	.pushsection    ".toc","aw"
-100:	.tc \sym[TC],\sym
-	.popsection
-	ld      \r,100b@toc(2)
-	.endm
-
-        .data
+	.data
+	.p2align 3
 _C_LABEL(__minbrk):
-	.long   _C_LABEL(_end)      
-	.text
+	.quad	_C_LABEL(_end)
+_C_LABEL(__curbrk):
+	.quad	_C_LABEL(_end)
 
 ENTRY(_brk)
-	LdAddr	%r5,_end
-	cmpld	%r5,%r3			# if (&_end <= r3)
+	addis	%r9,%r2,_C_LABEL(__minbrk)@toc@ha
+	ldptru	%r5,_C_LABEL(__minbrk)@toc@l(%r9)
+	cmpptrl	%r5,%r3			# if (__minbrk <= r3)
+#ifdef __PPC_ISEL__
+	iselgt	%r3,%r5,%r3
+#else
 	bgt	0f
 	mr	%r5,%r3			# r5 = r3
 0:
 	mr	%r3,%r5			# new break value
-	li	%r0,SYS_break
-	sc				# assume, that r5 is kept
+#endif
+	_DOSYSCALL(break)		# assume that r5 is preserved
 	bso	1f
-	LdAddr	%r6,__curbrk
-	std	%r5,0(%r6)
+	stptr	%r5,__SIZEOF_POINTER__(%r9)
 	blr				# return 0
 
 1:
-	b	PIC_PLT(_C_LABEL(__cerror))
-
+	BRANCH_TO_CERROR()
+END(_brk)
Index: src/lib/libc/arch/powerpc64/sys/getcontext.S
diff -u src/lib/libc/arch/powerpc64/sys/getcontext.S:1.4 src/lib/libc/arch/powerpc64/sys/getcontext.S:1.4.20.1
--- src/lib/libc/arch/powerpc64/sys/getcontext.S:1.4	Sat Oct 29 16:03:33 2011
+++ src/lib/libc/arch/powerpc64/sys/getcontext.S	Wed Feb  4 22:00:24 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: getcontext.S,v 1.4 2011/10/29 16:03:33 christos Exp $	*/
+/*	$NetBSD: getcontext.S,v 1.4.20.1 2015/02/04 22:00:24 martin Exp $	*/
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
 
 #if defined(SYSLIBC_SCCS) && !defined(lint)
 	.text
-	.asciz "$NetBSD: getcontext.S,v 1.4 2011/10/29 16:03:33 christos Exp $"
+	.asciz "$NetBSD: getcontext.S,v 1.4.20.1 2015/02/04 22:00:24 martin Exp $"
 #endif /* SYSLIBC_SCCS && !lint */
 
 #ifdef WEAK_ALIAS
@@ -42,12 +42,12 @@ WEAK_ALIAS(getcontext, _getcontext)
 
 ENTRY(_getcontext)
 	mr	%r5,%r3				# must save pointer
-	li	%r0,SYS_getcontext
-	sc
+	_DOSYSCALL(getcontext)
 	bso	1f
 	mflr	%r4
-	stw	%r4,(48 + 34 * 4)(%r5)		# saved pc <- lr
-	stw	%r3,(48 +  3 * 4)(%r5)		# arrange for return value 0
+	stptr	%r4,UC_GREGS_PC(%r5)		# saved pc <- lr
+	stint	%r3,UC_GREGS_R3(%r5)		# arrange for return value 0
 	blr
 1:
-	b	PIC_PLT(_C_LABEL(__cerror))
+	BRANCH_TO_CERROR()
+END(_getcontext)

Index: src/lib/libc/arch/powerpc64/sys/cerror.S
diff -u src/lib/libc/arch/powerpc64/sys/cerror.S:1.5 src/lib/libc/arch/powerpc64/sys/cerror.S:1.5.4.1
--- src/lib/libc/arch/powerpc64/sys/cerror.S:1.5	Thu Sep 12 15:36:15 2013
+++ src/lib/libc/arch/powerpc64/sys/cerror.S	Wed Feb  4 22:00:24 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: cerror.S,v 1.5 2013/09/12 15:36:15 joerg Exp $	*/
+/*	$NetBSD: cerror.S,v 1.5.4.1 2015/02/04 22:00:24 martin Exp $	*/
 
 #include <machine/asm.h>
 #include "SYS.h"
@@ -13,29 +13,26 @@
 ENTRY(__cerror)
 #ifdef _REENTRANT
 	mflr	%r0
-	stwu	%r1,-16(%r1)		# allocate new stack frame
-	stw	%r0,20(%r1)
-	stw	%r31,8(%r1)
+	streg	%r0,__SIZEOF_POINTER__(%r1)
+	stptru	%r1,-(4*__SIZEOF_POINTER__)(%r1) # allocate new stack frame
+	streg	%r31,(3*__SIZEOF_POINTER__)(%r1)
 	mr	%r31,%r3		# stash away in callee-saved register
 	bl	PIC_PLT(_C_LABEL(__errno))
-	stw	%r31,0(%r3)
-	lwz	%r0,20(%r1)
-	lwz	%r31,8(%r1)
+	nop
+	stint	%r31,0(%r3)
+
+	ldreg	%r31,(3*__SIZEOF_POINTER__)(%r1)
+	addi	%r1,%r1,4*__SIZEOF_POINTER__
+	ldreg	%r0,__SIZEOF_POINTER__(%r1)
 	mtlr	%r0
-	la	%r1,16(%r1)
 #else
-#ifdef __PIC__
-	mflr	%r10
-	bl	_GLOBAL_OFFSET_TABLE_@local-4
-	mflr	%r4
-	lwz	%r4,_C_LABEL(errno)@got(%r4)
+	.pushsection ".toc", "aw"
+.Lerrno:.tc	errno[TC], errno
+	.popsection
+	lwz	%r4,_C_LABEL(.Lerrno)@toc(%r2)
 	stw	%r3,0(%r4)
-	mtlr	%r10
-#else
-	lis	%r4,_C_LABEL(errno)@ha
-	stw	%r3,_C_LABEL(errno)@l(%r4)
-#endif /* __PIC__ */
 #endif /* _REENTRANT */
 	li	%r3,-1
 	li	%r4,-1
 	blr
+END(__cerror)

Index: src/lib/libc/arch/powerpc64/sys/ptrace.S
diff -u src/lib/libc/arch/powerpc64/sys/ptrace.S:1.2 src/lib/libc/arch/powerpc64/sys/ptrace.S:1.2.4.1
--- src/lib/libc/arch/powerpc64/sys/ptrace.S:1.2	Thu Sep 12 15:36:15 2013
+++ src/lib/libc/arch/powerpc64/sys/ptrace.S	Wed Feb  4 22:00:24 2015
@@ -1,46 +1,43 @@
-/*	$NetBSD: ptrace.S,v 1.2 2013/09/12 15:36:15 joerg Exp $	*/
+/*	$NetBSD: ptrace.S,v 1.2.4.1 2015/02/04 22:00:24 martin Exp $	*/
 
 #include "SYS.h"
 
 ENTRY(ptrace)
 #ifdef _REENTRANT
 	mflr	%r0
-	stwu	%r1,-32(%r1)
-	stw	%r0,36(%r1)
-	stw	%r3,8(%r1)
-	stw	%r4,12(%r1)
-	stw	%r5,16(%r1)
-	stw	%r6,20(%r1)
+	streg	%r0,SZREG(%r1)
+	stregu	%r1,-(SZREG*6)(%r1)
+	streg	%r3,(SZREG*2)(%r1)
+	streg	%r4,(SZREG*3)(%r1)
+	streg	%r5,(SZREG*4)(%r1)
+	streg	%r6,(SZREG*5)(%r1)
 
 	bl	PIC_PLT(_C_LABEL(__errno))
+	nop
 	li	%r7,0
-	stw	%r7,0(%r3)
+	stint	%r7,0(%r3)
 
-	lwz	%r3,8(%r1)
-	lwz	%r4,12(%r1)
-	lwz	%r5,16(%r1)
-	lwz	%r0,36(%r1)
-	lwz	%r6,20(%r1)
+	ldreg	%r3,(SZREG*2)(%r1)
+	ldreg	%r4,(SZREG*3)(%r1)
+	ldreg	%r5,(SZREG*4)(%r1)
+	ldreg	%r6,(SZREG*5)(%r1)
+	addi	%r1,%r1,SZREG*6
+	ldreg	%r0,SZREG(%r1)
 	mtlr	%r0
-	la	%r1,32(%r1)
 #else
-#ifdef __PIC__
-	mflr	%r0
-	bl	_GLOBAL_OFFSET_TABLE_@local-4
-	mflr	%r7
-	lwz	%r7,_C_LABEL(errno)@got(%r7)
+	.pushsection ".toc","aw"
+.Lerrno:
+	.tc	errno[TC], errno
+	.popsection
+	addis	%r7,%r2,_C_LABEL(errno)@toc@ha
+	ldptr	%r7,_C_LABEL(errno)@toc@l(%r7)
 	li	%r8,0
-	stw	%r8,0(%r7)
+	stint	%r8,0(%r7)
 	mtlr	0
-#else
-	lis	%r7,_C_LABEL(errno)@ha
-	li	%r8,0
-	stw	%r8,_C_LABEL(errno)@l(%r7)
-#endif /* __PIC__ */
 #endif /* _REENTRANT */
-	li	%r0,SYS_ptrace
-	sc
+	_DOSYSCALL(ptrace)
 	bso	1f
 	blr
 1:
-	b	PIC_PLT(_C_LABEL(__cerror))
+	BRANCH_TO_CERROR()
+END(ptrace)

Index: src/lib/libc/arch/powerpc64/sys/sbrk.S
diff -u src/lib/libc/arch/powerpc64/sys/sbrk.S:1.3 src/lib/libc/arch/powerpc64/sys/sbrk.S:1.3.64.1
--- src/lib/libc/arch/powerpc64/sys/sbrk.S:1.3	Fri Jul  7 06:50:06 2006
+++ src/lib/libc/arch/powerpc64/sys/sbrk.S	Wed Feb  4 22:00:24 2015
@@ -1,37 +1,24 @@
-/*	$NetBSD: sbrk.S,v 1.3 2006/07/07 06:50:06 ross Exp $	*/
+/*	$NetBSD: sbrk.S,v 1.3.64.1 2015/02/04 22:00:24 martin Exp $	*/
 
 #include "SYS.h"
 
+	.hidden	_C_LABEL(__curbrk)
 	.globl	_C_LABEL(__curbrk)
-	.globl	_C_LABEL(_end)
 
 #ifdef WEAK_ALIAS
 WEAK_ALIAS(sbrk, _sbrk)
 #endif
 
-
-	.data
-_C_LABEL(__curbrk):
-	.long	_C_LABEL(_end)
-	.text
-
-	.macro  LdAddr  r,sym
-	.pushsection    ".toc","aw"
-100:	.tc \sym[TC],\sym
-	.popsection
-	ld      \r,100b@toc(2)
-	.endm
-
 ENTRY(_sbrk)
-	ldAddr	%r6,__curbrk
+	addis	%r8,%r2,_C_LABEL(__curbrk)@toc@ha
+	ldptru	%r6,_C_LABEL(__curbrk)@toc@l(%r8)
 	add	%r3,%r3,%r6
 	mr	%r7,%r3				# r7 = new break
-	li	%r0,SYS_break
-	sc					# break(new_break)
+	_DOSYSCALL(break)			# break(new_break)
 	bso	1f
 	mr	%r3,%r6				# set return value
-	LdAddr	%r6,__curbrk
-	std	%r7,0(%r6)
+	stptr	%r7,0(%r8)			# record new break
 	blr
 1:
-	b	PIC_PLT(_C_LABEL(__cerror))
+	BRANCH_TO_CERROR()
+END(_sbrk)

Index: src/lib/libc/compiler_rt/Makefile.inc
diff -u src/lib/libc/compiler_rt/Makefile.inc:1.24.2.1 src/lib/libc/compiler_rt/Makefile.inc:1.24.2.2
--- src/lib/libc/compiler_rt/Makefile.inc:1.24.2.1	Wed Aug 20 13:49:28 2014
+++ src/lib/libc/compiler_rt/Makefile.inc	Wed Feb  4 22:00:24 2015
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile.inc,v 1.24.2.1 2014/08/20 13:49:28 martin Exp $
+# $NetBSD: Makefile.inc,v 1.24.2.2 2015/02/04 22:00:24 martin Exp $
 
 COMPILER_RT_SRCDIR=	${NETBSDSRCDIR}/sys/external/bsd/compiler_rt/dist
 
-.if ${LIBC_MACHINE_ARCH} == "powerpc"
+.if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64"
 COMPILER_RT_CPU_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/ppc
 COMPILER_RT_ARCH_DIR=	${COMPILER_RT_SRCDIR}/lib/builtins/ppc
 .else
@@ -206,7 +206,7 @@ GENERIC_SRCS+= \
 	InstrProfilingFile.c \
 	InstrProfilingPlatformOther.c
 
-.if ${LIBC_MACHINE_ARCH} == "powerpc"
+.if ${LIBC_MACHINE_ARCH} == "powerpc" || ${LIBC_MACHINE_ARCH} == "powerpc64"
 GENERIC_SRCS+= \
 	fixtfdi.c \
 	fixunstfdi.c \

Index: src/sys/arch/powerpc/include/asm.h
diff -u src/sys/arch/powerpc/include/asm.h:1.46 src/sys/arch/powerpc/include/asm.h:1.46.4.1
--- src/sys/arch/powerpc/include/asm.h:1.46	Thu Mar  6 19:05:24 2014
+++ src/sys/arch/powerpc/include/asm.h	Wed Feb  4 22:00:24 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: asm.h,v 1.46 2014/03/06 19:05:24 matt Exp $	*/
+/*	$NetBSD: asm.h,v 1.46.4.1 2015/02/04 22:00:24 martin Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -356,12 +356,12 @@ y:	.quad	.##y,.TOC.@tocbase,0;	\
 # define cmpptri	cmpwi
 # define cmplongi	cmpwi
 # define cmpregi	cmpwi
-# define cmpptrl	cmpwl
-# define cmplongl	cmpwl
-# define cmpregl	cmpwl
-# define cmpptrli	cmpwli
-# define cmplongli	cmpwli
-# define cmpregli	cmpwli
+# define cmpptrl	cmplw
+# define cmplongl	cmplw
+# define cmpregl	cmplw
+# define cmpptrli	cmplwi
+# define cmplongli	cmplwi
+# define cmpregli	cmplwi
 
 #else /* __LP64__ */
 
@@ -401,12 +401,12 @@ y:	.quad	.##y,.TOC.@tocbase,0;	\
 # define cmpptri	cmpdi
 # define cmplongi	cmpdi
 # define cmpregi	cmpdi
-# define cmpptrl	cmpdl
-# define cmplongl	cmpdl
-# define cmpregl	cmpdl
-# define cmpptrli	cmpdli
-# define cmplongli	cmpdli
-# define cmpregli	cmpdli
+# define cmpptrl	cmpld
+# define cmplongl	cmpld
+# define cmpregl	cmpld
+# define cmpptrli	cmpldi
+# define cmplongli	cmpldi
+# define cmpregli	cmpldi
 
 #endif /* __LP64__ */
 

Added files:

Index: src/lib/libc/arch/powerpc64/genassym.cf
diff -u /dev/null src/lib/libc/arch/powerpc64/genassym.cf:1.1.2.2
--- /dev/null	Wed Feb  4 22:00:25 2015
+++ src/lib/libc/arch/powerpc64/genassym.cf	Wed Feb  4 22:00:24 2015
@@ -0,0 +1,45 @@
+#	$NetBSD: genassym.cf,v 1.1.2.2 2015/02/04 22:00:24 martin Exp $
+
+#
+# Copyright (c) 2001 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Matt Thomas <m...@3am-sfotware.com>.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+include <sys/types.h>
+include <sys/queue.h>
+include <sys/cpu.h>
+include <sys/signal.h>
+include <sys/ucontext.h>
+
+include <machine/frame.h>
+
+define UC_GREGS_R1	offsetof(ucontext_t, uc_mcontext.__gregs[_REG_R1])
+define UC_GREGS_R3	offsetof(ucontext_t, uc_mcontext.__gregs[_REG_R3])
+define UC_GREGS_PC	offsetof(ucontext_t, uc_mcontext.__gregs[_REG_PC])
+
+define SIG_BLOCK	SIG_BLOCK
+define SIG_SETMASK	SIG_SETMASK

Reply via email to