genode/base-linux/src/platform/arm/crt0.s

67 lines
1.2 KiB
ArmAsm

/*
* \brief Startup code for Genode applications
* \author Christian Helmuth
* \author Christian Prochaska
* \date 2006-07-06
*/
/*
* Copyright (C) 2006-2012 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2.
*/
/*--- .text (program code) -------------------------*/
.text
.globl _start
_start:
ldr r1,=__initial_sp
str sp,[r1]
/*
* environ = &argv[argc + 1]
* in Genode argc is always 1
*/
add sp,sp,#12
ldr r1,=lx_environ
str sp,[r1]
/* XXX Switch to our own stack. */
ldr sp,=_stack_high
/* Clear the frame pointer and the link register so that stack backtraces will work. */
mov fp,#0
mov lr,#0
/* Jump into init C code */
b _main
/*--------------------------------------------------*/
.data
.globl __dso_handle
__dso_handle:
.long 0
.globl __initial_sp
__initial_sp:
.long 0
/*--- .eh_frame (exception frames) -----------------*/
/*
.section .eh_frame,"aw"
.globl __EH_FRAME_BEGIN__
__EH_FRAME_BEGIN__:
*/
/*--- .bss (non-initialized data) ------------------*/
.bss
.p2align 4
.globl _stack_low
_stack_low:
.space 64*1024
.globl _stack_high
_stack_high: