]>
Commit | Line | Data |
---|---|---|
a187559e | 1 | U-Boot for arm64 |
0ae76531 DF |
2 | |
3 | Summary | |
4 | ======= | |
8add6791 AP |
5 | The initial arm64 U-Boot port was developed before hardware was available, |
6 | so the first supported platforms were the Foundation and Fast Model for ARMv8. | |
7 | These days U-Boot runs on a variety of 64-bit capable ARM hardware, from | |
8 | embedded development boards to servers. | |
0ae76531 DF |
9 | |
10 | Notes | |
11 | ===== | |
12 | ||
8add6791 AP |
13 | 1. U-Boot can run at any exception level it is entered in, it is |
14 | recommened to enter it in EL3 if U-Boot takes some responsibilities of a | |
15 | classical firmware (like initial hardware setup, CPU errata workarounds | |
16 | or SMP bringup). U-Boot can be entered in EL2 when its main purpose is | |
17 | that of a boot loader. It can drop to lower exception levels before | |
18 | entering the OS. | |
0ae76531 | 19 | |
a187559e | 20 | 2. U-Boot for arm64 is compiled with AArch64-gcc. AArch64-gcc |
0ae76531 DF |
21 | use rela relocation format, a tool(tools/relocate-rela) by Scott Wood |
22 | is used to encode the initial addend of rela to u-boot.bin. After running, | |
a187559e | 23 | the U-Boot will be relocated to destination again. |
0ae76531 | 24 | |
8add6791 AP |
25 | 3. Earlier Linux kernel versions required the FDT to be placed at a |
26 | 2 MB boundary and within the same 512 MB section as the kernel image, | |
27 | resulting in fdt_high to be defined specially. | |
28 | Since kernel version 4.2 Linux is more relaxed about the DT location, so it | |
29 | can be placed anywhere in memory. | |
0ae76531 DF |
30 | Please reference linux/Documentation/arm64/booting.txt for detail. |
31 | ||
32 | 4. Spin-table is used to wake up secondary processors. One location | |
33 | (or per processor location) is defined to hold the kernel entry point | |
34 | for secondary processors. It must be ensured that the location is | |
35 | accessible and zero immediately after secondary processor | |
36 | enter slave_cpu branch execution in start.S. The location address | |
37 | is encoded in cpu node of DTS. Linux kernel store the entry point | |
38 | of secondary processors to it and send event to wakeup secondary | |
39 | processors. | |
40 | Please reference linux/Documentation/arm64/booting.txt for detail. | |
41 | ||
42 | 5. Generic board is supported. | |
43 | ||
44 | 6. CONFIG_ARM64 instead of CONFIG_ARMV8 is used to distinguish aarch64 and | |
45 | aarch32 specific codes. | |
46 | ||
94f7ff36 | 47 | |
8add6791 AP |
48 | Contributors |
49 | ============ | |
94f7ff36 ST |
50 | Tom Rini <[email protected]> |
51 | Scott Wood <[email protected]> | |
52 | York Sun <[email protected]> | |
53 | Simon Glass <[email protected]> | |
54 | Sharma Bhupesh <[email protected]> | |
55 | Rob Herring <[email protected]> | |
56 | Sergey Temerkhanov <[email protected]> |