u-boot/arch/arm/cpu/arm720t/start.S

79 lines
1.5 KiB
ArmAsm
Raw Normal View History

2002-11-03 00:38:21 +00:00
/*
* armboot - Startup Code for ARM720 CPU-core
*
* Copyright (c) 2001 Marius Gröger <mag@sysgo.de>
* Copyright (c) 2002 Alex Züpke <azu@sysgo.de>
2002-11-03 00:38:21 +00:00
*
* SPDX-License-Identifier: GPL-2.0+
2002-11-03 00:38:21 +00:00
*/
#include <asm-offsets.h>
2002-11-03 00:38:21 +00:00
#include <config.h>
/*
*************************************************************************
*
* Startup Code (reset vector)
*
* do important init only if we don't start from RAM!
2002-11-03 00:38:21 +00:00
* relocate armboot to ram
* setup stack
* jump to second stage
*
*************************************************************************
*/
.globl reset
reset:
/*
* set the cpu to SVC32 mode
*/
mrs r0,cpsr
bic r0,r0,#0x1f
orr r0,r0,#0xd3
msr cpsr,r0
/*
* we do sys-critical inits only at reboot,
* not when booting from ram!
*/
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
bl cpu_init_crit
#endif
bl _main
/*------------------------------------------------------------------------------*/
.globl c_runtime_cpu_setup
c_runtime_cpu_setup:
mov pc, lr
2002-11-03 00:38:21 +00:00
/*
*************************************************************************
*
* CPU_init_critical registers
*
* setup important registers
* setup memory timing
*
*************************************************************************
*/
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
2002-11-03 00:38:21 +00:00
cpu_init_crit:
mov ip, lr
2002-11-03 00:38:21 +00:00
/*
* before relocating, we have to setup RAM timing
* because memory timing is board-dependent, you will
* find a lowlevel_init.S in your board directory.
2002-11-03 00:38:21 +00:00
*/
bl lowlevel_init
2002-11-03 00:38:21 +00:00
mov lr, ip
mov pc, lr
#endif /* CONFIG_SKIP_LOWLEVEL_INIT */