/* * start-arm.c * * Copyright (c) 2010 Sascha Hauer , Pengutronix * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #include #include #include #include #include #include #include #include /* * First function in the uncompressed image. We get here from * the pbl. */ void __naked __section(.text_entry) start(void) { #ifdef CONFIG_PBL_IMAGE board_init_lowlevel_return(); #else barebox_arm_head(); #endif } /* * The actual reset vector. This code is position independent and usually * does not run at the address it's linked at. */ #ifndef CONFIG_MACH_DO_LOWLEVEL_INIT void __naked __bare_init reset(void) { common_reset(); board_init_lowlevel_return(); } #endif /* * Board code can jump here by either returning from board_init_lowlevel * or by calling this function directly. */ void __naked board_init_lowlevel_return(void) { arm_setup_stack(STACK_BASE + STACK_SIZE - 16); setup_c(); start_barebox(); }