[rtems commit] bsps/powerpc: Add 64-bit CRT init/fini support

Sebastian Huber sebh at rtems.org
Tue Aug 22 14:54:29 UTC 2017


Module:    rtems
Branch:    master
Commit:    0e26c19a07853422e15444835394ba28e1f17e2a
Changeset: http://git.rtems.org/rtems/commit/?id=0e26c19a07853422e15444835394ba28e1f17e2a

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Aug  1 15:35:16 2017 +0200

bsps/powerpc: Add 64-bit CRT init/fini support

Update #3082.

---

 c/src/lib/libbsp/powerpc/qoriq/Makefile.am         |  3 ++
 c/src/lib/libbsp/powerpc/qoriq/bsp_specs           |  2 +-
 c/src/lib/libbsp/powerpc/qoriq/preinstall.am       |  4 +++
 c/src/lib/libbsp/powerpc/shared/start/rtems_crti.S | 34 ++++++++++++++++++++++
 c/src/lib/libbsp/powerpc/shared/start/rtems_crtn.S | 27 +++++++++++++++++
 5 files changed, 69 insertions(+), 1 deletion(-)

diff --git a/c/src/lib/libbsp/powerpc/qoriq/Makefile.am b/c/src/lib/libbsp/powerpc/qoriq/Makefile.am
index f24b0ca..166c16b 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/Makefile.am
+++ b/c/src/lib/libbsp/powerpc/qoriq/Makefile.am
@@ -39,6 +39,9 @@ project_lib_DATA = start.$(OBJEXT)
 libbspstart_a_SOURCES += ../../powerpc/shared/start/rtems_crti.S
 project_lib_DATA += rtems_crti.$(OBJEXT)
 
+libbspstart_a_SOURCES += ../../powerpc/shared/start/rtems_crtn.S
+project_lib_DATA += rtems_crtn.$(OBJEXT)
+
 dist_project_lib_DATA += startup/linkcmds \
 	../shared/startup/linkcmds.base \
 	startup/linkcmds.qoriq_core_0 \
diff --git a/c/src/lib/libbsp/powerpc/qoriq/bsp_specs b/c/src/lib/libbsp/powerpc/qoriq/bsp_specs
index 92f6c58..6fc7e3d 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/bsp_specs
+++ b/c/src/lib/libbsp/powerpc/qoriq/bsp_specs
@@ -7,7 +7,7 @@
 %{!nostdlib: %{qrtems: ecrti%O%s rtems_crti%O%s  crtbegin.o%s start.o%s}}
 
 *endfile:
-%{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s ecrtn.o%s}
+%{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s rtems_crtn.o%s ecrtn.o%s}
 
 *link:
 %{!qrtems: %(old_link)} %{qrtems: -dc -dp -u __vectors -N}
diff --git a/c/src/lib/libbsp/powerpc/qoriq/preinstall.am b/c/src/lib/libbsp/powerpc/qoriq/preinstall.am
index 85871e6..2cc68c7 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/preinstall.am
+++ b/c/src/lib/libbsp/powerpc/qoriq/preinstall.am
@@ -113,6 +113,10 @@ $(PROJECT_LIB)/rtems_crti.$(OBJEXT): rtems_crti.$(OBJEXT) $(PROJECT_LIB)/$(dirst
 	$(INSTALL_DATA) $< $(PROJECT_LIB)/rtems_crti.$(OBJEXT)
 TMPINSTALL_FILES += $(PROJECT_LIB)/rtems_crti.$(OBJEXT)
 
+$(PROJECT_LIB)/rtems_crtn.$(OBJEXT): rtems_crtn.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
+	$(INSTALL_DATA) $< $(PROJECT_LIB)/rtems_crtn.$(OBJEXT)
+TMPINSTALL_FILES += $(PROJECT_LIB)/rtems_crtn.$(OBJEXT)
+
 $(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
 	$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
 PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds
diff --git a/c/src/lib/libbsp/powerpc/shared/start/rtems_crti.S b/c/src/lib/libbsp/powerpc/shared/start/rtems_crti.S
index c72e195..a664ae2 100644
--- a/c/src/lib/libbsp/powerpc/shared/start/rtems_crti.S
+++ b/c/src/lib/libbsp/powerpc/shared/start/rtems_crti.S
@@ -1,7 +1,40 @@
+/*
+ * Copyright (c) 2017 embedded brains GmbH.  All rights reserved.
+ *
+ *  embedded brains GmbH
+ *  Dornierstr. 4
+ *  82178 Puchheim
+ *  Germany
+ *  <rtems at embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
 /* rtems_crti.S */
 #include <rtems/asm.h>
 #include <rtems/score/cpu.h>
 
+#if defined(__powerpc64__)
+	.section ".init","ax"
+	.align 2
+	.globl	_init
+	.type	_init, at function
+_init:
+	mflr	r0
+	std	r0,16(1)
+	stdu	r1,-96(1)
+
+	.section ".fini","ax"
+	.align 2
+	.globl	_fini
+	.type	_fini, at function
+_fini:
+	mflr	r0
+	std	r0,16(r1)
+	stdu	r1,-96(r1)
+#else
 	/* terminate the __init() function and create
 	 * a new head '_init' for use by RTEMS to
 	 * invoke C++ global constructors
@@ -32,3 +65,4 @@ _init:
 	stwu	r1,-16(r1)
 	mflr	r0
 	stw		r0,20(r1)
+#endif
diff --git a/c/src/lib/libbsp/powerpc/shared/start/rtems_crtn.S b/c/src/lib/libbsp/powerpc/shared/start/rtems_crtn.S
new file mode 100644
index 0000000..747d83d
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/shared/start/rtems_crtn.S
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2017 embedded brains GmbH.  All rights reserved.
+ *
+ *  embedded brains GmbH
+ *  Dornierstr. 4
+ *  82178 Puchheim
+ *  Germany
+ *  <rtems at embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#if defined(__powerpc64__)
+	.section ".init","ax"
+	addi	1,1,96
+	ld	0,16(1)
+	mtlr	0
+	blr
+
+	.section ".fini","ax"
+	addi	1,1,96
+	ld	0,16(1)
+	mtlr	0
+	blr
+#endif




More information about the vc mailing list