summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-arm.dox
blob: 862b3396f113f6ccaa0ff1bd51c60fb84efb376a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/* This document is intended to provide the developer with information
 * how to integrate a new CPU (MACH) into this part of the U-Boot tree
 */

/** @page dev_arm_mach ARM based CPU (MACH) into the tree

FIXME

@par What's happens when the reset signal is gone

@note Code running immediately after reset runs at an address it is not linked
      to: "runtime address != link address". You should only use branches and
      do not refer to fixed data. This implies the use of assembler code only.

The ARM CPU starts at lable \<reset\> in one of the corresponding start-*.S
files. After some basic hardware setup it can call a function
\<arch_init_lowlevel\> if not disabled. This call is intended to give all
developers a chance to use a standard reset vector file, but also do some
special things required only on their specific CPU.

After handling some MMU related things \<board_init_lowlevel\> can be called (if
not disabled). This is a board specific function for SDRAM setup for example.
As its board specific, your can do whatever you need to bring your board up.

When \<board_init_lowlevel\> returns it will be assumed there is now a working
RAM that can be used for all further steps.

Next step is relocation of U-Boot itself. It gets copied to RAM and the last
assembler instruction is a jump into \<start_uboot\>. This target address is
the first C instruction in U-Boot. At this point of time:\n
"runtime address == link address".

*/