xref: /minix3/lib/csu/arch/arm/crt0.S (revision f14fb602092e015ff630df58e17c2a9cd57d29b3)
1*f14fb602SLionel Sambuc/*	$NetBSD: crt0.S,v 1.3 2012/08/11 07:25:44 matt Exp $	*/
2e83f7ba2SBen Gras
3*f14fb602SLionel Sambuc/*-
4*f14fb602SLionel Sambuc * Copyright (c) 2012 The NetBSD Foundation, Inc.
5e83f7ba2SBen Gras * All rights reserved.
6e83f7ba2SBen Gras *
7*f14fb602SLionel Sambuc * This code is derived from software contributed to The NetBSD Foundation
8*f14fb602SLionel Sambuc * by Matt Thomas of 3am Software Foundry.
9*f14fb602SLionel Sambuc *
10e83f7ba2SBen Gras * Redistribution and use in source and binary forms, with or without
11e83f7ba2SBen Gras * modification, are permitted provided that the following conditions
12e83f7ba2SBen Gras * are met:
13e83f7ba2SBen Gras * 1. Redistributions of source code must retain the above copyright
14e83f7ba2SBen Gras *    notice, this list of conditions and the following disclaimer.
15e83f7ba2SBen Gras * 2. Redistributions in binary form must reproduce the above copyright
16e83f7ba2SBen Gras *    notice, this list of conditions and the following disclaimer in the
17e83f7ba2SBen Gras *    documentation and/or other materials provided with the distribution.
18e83f7ba2SBen Gras *
19*f14fb602SLionel Sambuc * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20*f14fb602SLionel Sambuc * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21*f14fb602SLionel Sambuc * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22*f14fb602SLionel Sambuc * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23*f14fb602SLionel Sambuc * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24*f14fb602SLionel Sambuc * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25*f14fb602SLionel Sambuc * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26*f14fb602SLionel Sambuc * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27*f14fb602SLionel Sambuc * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28*f14fb602SLionel Sambuc * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29*f14fb602SLionel Sambuc * POSSIBILITY OF SUCH DAMAGE.
30e83f7ba2SBen Gras */
31e83f7ba2SBen Gras
32*f14fb602SLionel Sambuc#include <arm/asm.h>
33*f14fb602SLionel Sambuc
34*f14fb602SLionel SambucRCSID("$NetBSD: crt0.S,v 1.3 2012/08/11 07:25:44 matt Exp $")
35e83f7ba2SBen Gras
36e83f7ba2SBen GrasSTRONG_ALIAS(_start,__start)
37e83f7ba2SBen Gras
38e83f7ba2SBen Gras_ENTRY(__start)
39*f14fb602SLionel Sambuc	/*
40*f14fb602SLionel Sambuc	 * We need to swap ps_strings and cleanup
41*f14fb602SLionel Sambuc 	 */
42*f14fb602SLionel Sambuc	mov	ip, r0		/* ps_strings -> tmp */
43*f14fb602SLionel Sambuc	mov	r0, r2		/* cleanup -> ps_strings */
44*f14fb602SLionel Sambuc	mov	r2, ip		/* tmp -> ps_strings */
45e83f7ba2SBen Gras
46e83f7ba2SBen Gras	/* Ensure the stack is properly aligned before calling C code. */
47e83f7ba2SBen Gras	bic	sp, sp, #7
48*f14fb602SLionel Sambuc
49*f14fb602SLionel Sambuc	/*
50*f14fb602SLionel Sambuc	 * void ___start(void (*cleanup)(void),
51*f14fb602SLionel Sambuc	 *    const Obj_Entry *obj,
52*f14fb602SLionel Sambuc	 *    struct ps_strings *ps_strings);
53*f14fb602SLionel Sambuc	 */
54e83f7ba2SBen Gras
55e83f7ba2SBen Gras	b	___start
56