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 <[email protected]>.
+#
+# 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