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