crti.S revision 1.2
11.2Smatt/* $NetBSD: crti.S,v 1.2 2014/02/27 16:47:48 matt Exp $ */
21.1Smatt
31.1Smatt/*-
41.1Smatt * Copyright (c) 2011 The NetBSD Foundation, Inc.
51.1Smatt * All rights reserved.
61.1Smatt *
71.1Smatt * This code is derived from software contributed to The NetBSD Foundation
81.1Smatt * by Matt Thomas of 3am Software Foundry.
91.1Smatt *
101.1Smatt * Redistribution and use in source and binary forms, with or without
111.1Smatt * modification, are permitted provided that the following conditions
121.1Smatt * are met:
131.1Smatt * 1. Redistributions of source code must retain the above copyright
141.1Smatt *    notice, this list of conditions and the following disclaimer.
151.1Smatt * 2. Redistributions in binary form must reproduce the above copyright
161.1Smatt *    notice, this list of conditions and the following disclaimer in the
171.1Smatt *    documentation and/or other materials provided with the distribution.
181.1Smatt *
191.1Smatt * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
201.1Smatt * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
211.1Smatt * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
221.1Smatt * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
231.1Smatt * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
241.1Smatt * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
251.1Smatt * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
261.1Smatt * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
271.1Smatt * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
281.1Smatt * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
291.1Smatt * POSSIBILITY OF SUCH DAMAGE.
301.1Smatt */
311.1Smatt
321.1Smatt#include <powerpc/asm.h>
331.1Smatt
341.2SmattRCSID("$NetBSD: crti.S,v 1.2 2014/02/27 16:47:48 matt Exp $")
351.1Smatt
361.1Smatt#include "sysident.S"
371.1Smatt
381.2Smatt	.globl	_init
391.2Smatt	.type	_init,@function
401.1Smatt	.section ".init", "ax", @progbits
411.2Smatt	.align	P2SZREG
421.2Smatt#ifdef _LP64
431.2Smatt	.globl	._init
441.2Smatt	.pushsection ".opd", "aw"
451.2Smatt	.align	3
461.2Smatt_init:	.quad	._init,.TOC.@tocbase,0
471.2Smatt	.size	_init, (3*SZREG)
481.2Smatt	.popsection
491.2Smatt._init:
501.2Smatt#else
511.1Smatt_init:
521.2Smatt#endif
531.1Smatt	mflr	%r0
541.2Smatt#ifdef _LP64
551.2Smatt	stlongu	%r1, -(6*SZREG)(%r1)
561.2Smatt	stlong	%r0, (2*SZREG)(%r1)
571.2Smatt#else
581.1Smatt	stw	%r0, (1*SZREG)(%r1)
591.1Smatt	stwu	%r1, -(4*SZREG)(%r1)
601.2Smatt#endif
611.1Smatt
621.2Smatt	.globl _fini
631.2Smatt	.type	_fini,@function
641.1Smatt	.section ".fini", "ax", @progbits
651.2Smatt	.align	P2SZREG
661.2Smatt#ifdef _LP64
671.2Smatt	.globl	._fini
681.2Smatt	.pushsection ".opd", "aw"
691.2Smatt	.align	3
701.2Smatt_fini:	.quad	._fini,.TOC.@tocbase,0
711.2Smatt	.size	_fini, (3*SZREG)
721.2Smatt	.popsection
731.2Smatt._fini:
741.2Smatt#else
751.1Smatt_fini:
761.2Smatt#endif
771.1Smatt	mflr	%r0
781.2Smatt#ifdef _LP64
791.2Smatt	stlongu	%r1, -(6*SZREG)(%r1)
801.2Smatt	stlong	%r0, (2*SZREG)(%r1)
811.2Smatt#else
821.1Smatt	stw	%r0, (1*SZREG)(%r1)
831.1Smatt	stwu	%r1, -(4*SZREG)(%r1)
841.2Smatt#endif
85