Module Name: src
Committed By: matt
Date: Thu Feb 27 16:47:48 UTC 2014
Modified Files:
src/lib/csu/arch/powerpc: crt0.S crtend.S crti.S crtn.S
Log Message:
Add powerpc64 support
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/lib/csu/arch/powerpc/crt0.S
cvs rdiff -u -r1.2 -r1.3 src/lib/csu/arch/powerpc/crtend.S
cvs rdiff -u -r1.1 -r1.2 src/lib/csu/arch/powerpc/crti.S \
src/lib/csu/arch/powerpc/crtn.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/csu/arch/powerpc/crt0.S
diff -u src/lib/csu/arch/powerpc/crt0.S:1.4 src/lib/csu/arch/powerpc/crt0.S:1.5
--- src/lib/csu/arch/powerpc/crt0.S:1.4 Sat Jul 2 20:16:09 2011
+++ src/lib/csu/arch/powerpc/crt0.S Thu Feb 27 16:47:48 2014
@@ -29,25 +29,34 @@
#include <powerpc/asm.h>
-RCSID("$NetBSD: crt0.S,v 1.4 2011/07/02 20:16:09 matt Exp $")
+RCSID("$NetBSD: crt0.S,v 1.5 2014/02/27 16:47:48 matt Exp $")
STRONG_ALIAS(_start,__start)
.hidden ___start
+#ifndef _LP64
.weak _SDA_BASE_
+#endif
ENTRY_NOPROFILE(__start)
+#ifndef _LP64
bcl 20,31,1f
1:
mflr %r11
/* SVR4 ABI says small data is in r13 */
addis %r13,%r11,_SDA_BASE_-1b@ha
addi %r13,%r13,_SDA_BASE_-1b@l
+#endif
mr %r3,%r7 /* cleanup */
mr %r4,%r6 /* obj */
mr %r5,%r8 /* ps_strings */
+#ifdef _LP64
+ b .___start
+ nop
+#else
b ___start
+#endif
END(__start)
Index: src/lib/csu/arch/powerpc/crtend.S
diff -u src/lib/csu/arch/powerpc/crtend.S:1.2 src/lib/csu/arch/powerpc/crtend.S:1.3
--- src/lib/csu/arch/powerpc/crtend.S:1.2 Thu Jun 27 21:24:39 2013
+++ src/lib/csu/arch/powerpc/crtend.S Thu Feb 27 16:47:48 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: crtend.S,v 1.2 2013/06/27 21:24:39 matt Exp $ */
+/* $NetBSD: crtend.S,v 1.3 2014/02/27 16:47:48 matt Exp $ */
/*-
* Copyright (c) 2011 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -30,26 +30,42 @@
#include <powerpc/asm.h>
-RCSID("$NetBSD: crtend.S,v 1.2 2013/06/27 21:24:39 matt Exp $")
+RCSID("$NetBSD: crtend.S,v 1.3 2014/02/27 16:47:48 matt Exp $")
.section .ctors, "aw", @progbits
- .p2align 2
+ .p2align P2SZREG
.global __CTOR_LIST_END__
.hidden __CTOR_LIST_END__
__CTOR_LIST_END__:
+#ifdef _LP64
+ .quad 0
+#else
.long 0
+#endif
.section .dtors, "aw", @progbits
- .p2align 2
+ .p2align P2SZREG
.global __DTOR_LIST_END__
.hidden __DTOR_LIST_END__
__DTOR_LIST_END__:
+#ifdef _LP64
+ .quad 0
+#else
.long 0
+#endif
.section .eh_frame, "a", @progbits
- .p2align 2
+ .p2align P2SZREG
+#ifdef _LP64
+ .quad 0
+#else
.long 0
+#endif
.section .jcr, "aw", @progbits
- .p2align 2
+ .p2align P2SZREG
+#ifdef _LP64
+ .quad 0
+#else
.long 0
+#endif
Index: src/lib/csu/arch/powerpc/crti.S
diff -u src/lib/csu/arch/powerpc/crti.S:1.1 src/lib/csu/arch/powerpc/crti.S:1.2
--- src/lib/csu/arch/powerpc/crti.S:1.1 Tue Feb 8 02:02:25 2011
+++ src/lib/csu/arch/powerpc/crti.S Thu Feb 27 16:47:48 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: crti.S,v 1.1 2011/02/08 02:02:25 matt Exp $ */
+/* $NetBSD: crti.S,v 1.2 2014/02/27 16:47:48 matt Exp $ */
/*-
* Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -31,20 +31,54 @@
#include <powerpc/asm.h>
-RCSID("$NetBSD: crti.S,v 1.1 2011/02/08 02:02:25 matt Exp $")
+RCSID("$NetBSD: crti.S,v 1.2 2014/02/27 16:47:48 matt Exp $")
#include "sysident.S"
+ .globl _init
+ .type _init,@function
.section ".init", "ax", @progbits
- .align 2; .globl _init; .type _init,@function
+ .align P2SZREG
+#ifdef _LP64
+ .globl ._init
+ .pushsection ".opd", "aw"
+ .align 3
+_init: .quad ._init,.TOC.@tocbase,0
+ .size _init, (3*SZREG)
+ .popsection
+._init:
+#else
_init:
+#endif
mflr %r0
+#ifdef _LP64
+ stlongu %r1, -(6*SZREG)(%r1)
+ stlong %r0, (2*SZREG)(%r1)
+#else
stw %r0, (1*SZREG)(%r1)
stwu %r1, -(4*SZREG)(%r1)
+#endif
+ .globl _fini
+ .type _fini,@function
.section ".fini", "ax", @progbits
- .align 2; .globl _fini; .type _fini,@function
+ .align P2SZREG
+#ifdef _LP64
+ .globl ._fini
+ .pushsection ".opd", "aw"
+ .align 3
+_fini: .quad ._fini,.TOC.@tocbase,0
+ .size _fini, (3*SZREG)
+ .popsection
+._fini:
+#else
_fini:
+#endif
mflr %r0
+#ifdef _LP64
+ stlongu %r1, -(6*SZREG)(%r1)
+ stlong %r0, (2*SZREG)(%r1)
+#else
stw %r0, (1*SZREG)(%r1)
stwu %r1, -(4*SZREG)(%r1)
+#endif
Index: src/lib/csu/arch/powerpc/crtn.S
diff -u src/lib/csu/arch/powerpc/crtn.S:1.1 src/lib/csu/arch/powerpc/crtn.S:1.2
--- src/lib/csu/arch/powerpc/crtn.S:1.1 Tue Feb 8 02:02:25 2011
+++ src/lib/csu/arch/powerpc/crtn.S Thu Feb 27 16:47:48 2014
@@ -29,16 +29,26 @@
#include <powerpc/asm.h>
-RCSID("$NetBSD: crtn.S,v 1.1 2011/02/08 02:02:25 matt Exp $")
+RCSID("$NetBSD: crtn.S,v 1.2 2014/02/27 16:47:48 matt Exp $")
.section ".init", "ax", @progbits
+#ifdef _LP64
+ ldreg %r0, (2*SZREG)(%r1)
+ addi %r1, %r1, (6*SZREG)
+#else
addi %r1, %r1, (4*SZREG)
lwz %r0, (1*SZREG)(%r1)
+#endif
mtlr %r0
blr
.section ".fini", "ax", @progbits
+#ifdef _LP64
+ ldreg %r0, (2*SZREG)(%r1)
+ addi %r1, %r1, (6*SZREG)
+#else
addi %r1, %r1, (4*SZREG)
lwz %r0, (1*SZREG)(%r1)
+#endif
mtlr %r0
blr