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

Update #3082.
This commit is contained in:
Sebastian Huber
2017-08-01 15:35:16 +02:00
parent d50124d51b
commit 0e26c19a07
5 changed files with 69 additions and 1 deletions

View File

@@ -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 \

View File

@@ -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}

View File

@@ -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

View File

@@ -1,7 +1,40 @@
/*
* Copyright (c) 2017 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <rtems@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,@function
_init:
mflr r0
std r0,16(1)
stdu r1,-96(1)
.section ".fini","ax"
.align 2
.globl _fini
.type _fini,@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

View File

@@ -0,0 +1,27 @@
/*
* Copyright (c) 2017 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <rtems@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