|
|
|
@ -65,19 +65,13 @@ looks at the connected hardware is beyond the scope of this document. |
|
|
|
|
The boot loader must ultimately be able to provide a MACH_TYPE_xxx |
|
|
|
|
value to the kernel. (see linux/arch/arm/tools/mach-types). |
|
|
|
|
|
|
|
|
|
4. Setup boot data |
|
|
|
|
------------------ |
|
|
|
|
|
|
|
|
|
4. Setup the kernel tagged list |
|
|
|
|
------------------------------- |
|
|
|
|
|
|
|
|
|
Existing boot loaders: OPTIONAL, HIGHLY RECOMMENDED |
|
|
|
|
New boot loaders: MANDATORY |
|
|
|
|
|
|
|
|
|
The boot loader must provide either a tagged list or a dtb image for |
|
|
|
|
passing configuration data to the kernel. The physical address of the |
|
|
|
|
boot data is passed to the kernel in register r2. |
|
|
|
|
|
|
|
|
|
4a. Setup the kernel tagged list |
|
|
|
|
-------------------------------- |
|
|
|
|
|
|
|
|
|
The boot loader must create and initialise the kernel tagged list. |
|
|
|
|
A valid tagged list starts with ATAG_CORE and ends with ATAG_NONE. |
|
|
|
|
The ATAG_CORE tag may or may not be empty. An empty ATAG_CORE tag |
|
|
|
@ -107,24 +101,6 @@ The tagged list must be placed in a region of memory where neither |
|
|
|
|
the kernel decompressor nor initrd 'bootp' program will overwrite |
|
|
|
|
it. The recommended placement is in the first 16KiB of RAM. |
|
|
|
|
|
|
|
|
|
4b. Setup the device tree |
|
|
|
|
------------------------- |
|
|
|
|
|
|
|
|
|
The boot loader must load a device tree image (dtb) into system ram |
|
|
|
|
at a 64bit aligned address and initialize it with the boot data. The |
|
|
|
|
dtb format is documented in Documentation/devicetree/booting-without-of.txt. |
|
|
|
|
The kernel will look for the dtb magic value of 0xd00dfeed at the dtb |
|
|
|
|
physical address to determine if a dtb has been passed instead of a |
|
|
|
|
tagged list. |
|
|
|
|
|
|
|
|
|
The boot loader must pass at a minimum the size and location of the |
|
|
|
|
system memory, and the root filesystem location. The dtb must be |
|
|
|
|
placed in a region of memory where the kernel decompressor will not |
|
|
|
|
overwrite it. The recommended placement is in the first 16KiB of RAM |
|
|
|
|
with the caveat that it may not be located at physical address 0 since |
|
|
|
|
the kernel interprets a value of 0 in r2 to mean neither a tagged list |
|
|
|
|
nor a dtb were passed. |
|
|
|
|
|
|
|
|
|
5. Calling the kernel image |
|
|
|
|
--------------------------- |
|
|
|
|
|
|
|
|
@ -149,8 +125,7 @@ In either case, the following conditions must be met: |
|
|
|
|
- CPU register settings |
|
|
|
|
r0 = 0, |
|
|
|
|
r1 = machine type number discovered in (3) above. |
|
|
|
|
r2 = physical address of tagged list in system RAM, or |
|
|
|
|
physical address of device tree block (dtb) in system RAM |
|
|
|
|
r2 = physical address of tagged list in system RAM. |
|
|
|
|
|
|
|
|
|
- CPU mode |
|
|
|
|
All forms of interrupts must be disabled (IRQs and FIQs) |
|
|
|
|