|
@@ -65,13 +65,19 @@ 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
|
|
The boot loader must ultimately be able to provide a MACH_TYPE_xxx
|
|
value to the kernel. (see linux/arch/arm/tools/mach-types).
|
|
value to the kernel. (see linux/arch/arm/tools/mach-types).
|
|
|
|
|
|
-
|
|
|
|
-4. Setup the kernel tagged list
|
|
|
|
--------------------------------
|
|
|
|
|
|
+4. Setup boot data
|
|
|
|
+------------------
|
|
|
|
|
|
Existing boot loaders: OPTIONAL, HIGHLY RECOMMENDED
|
|
Existing boot loaders: OPTIONAL, HIGHLY RECOMMENDED
|
|
New boot loaders: MANDATORY
|
|
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.
|
|
The boot loader must create and initialise the kernel tagged list.
|
|
A valid tagged list starts with ATAG_CORE and ends with ATAG_NONE.
|
|
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
|
|
The ATAG_CORE tag may or may not be empty. An empty ATAG_CORE tag
|
|
@@ -101,6 +107,24 @@ The tagged list must be placed in a region of memory where neither
|
|
the kernel decompressor nor initrd 'bootp' program will overwrite
|
|
the kernel decompressor nor initrd 'bootp' program will overwrite
|
|
it. The recommended placement is in the first 16KiB of RAM.
|
|
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
|
|
5. Calling the kernel image
|
|
---------------------------
|
|
---------------------------
|
|
|
|
|
|
@@ -125,7 +149,8 @@ In either case, the following conditions must be met:
|
|
- CPU register settings
|
|
- CPU register settings
|
|
r0 = 0,
|
|
r0 = 0,
|
|
r1 = machine type number discovered in (3) above.
|
|
r1 = machine type number discovered in (3) above.
|
|
- r2 = physical address of tagged list in system RAM.
|
|
|
|
|
|
+ r2 = physical address of tagged list in system RAM, or
|
|
|
|
+ physical address of device tree block (dtb) in system RAM
|
|
|
|
|
|
- CPU mode
|
|
- CPU mode
|
|
All forms of interrupts must be disabled (IRQs and FIQs)
|
|
All forms of interrupts must be disabled (IRQs and FIQs)
|