Author: wmb Date: Sat Jul 7 04:20:04 2012 New Revision: 3041 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3041
Log: OLPC ARM - move the flattened device tree and the initrd to the end of memory, ensuring that they don't collide with one another (OLPC trac #11998).
Modified: cpu/arm/linux.fth cpu/arm/olpc/build-fw.fth
Modified: cpu/arm/linux.fth ============================================================================== --- cpu/arm/linux.fth Sat Jul 7 04:18:02 2012 (r3040) +++ cpu/arm/linux.fth Sat Jul 7 04:20:04 2012 (r3041) @@ -9,6 +9,7 @@
0 value linux-memtop
+defer mapped-limit defer memory-limit \ Find the end of the largest piece of memory : (memory-limit) ( -- limit ) @@ -32,6 +33,7 @@ + ( limit ) ; ' (memory-limit) to memory-limit \ Override by platform code if necessary +' memory-limit to mapped-limit \ Override by platform code if necessary
\ see http://www.simtec.co.uk/products/SWLINUX/files/booting_article.html
@@ -92,6 +94,7 @@ true value use-fdt? : use-fdt ( -- ) true to use-fdt? ;
+h# 10000 constant /fdt-max : linux-fixup ( -- ) [ifdef] linux-logo linux-logo [then] \ use-fdt? 0= if @@ -104,8 +107,8 @@ arm-linux-machine-type to r1 [ifdef] flatten-device-tree use-fdt? if - load-base h# 40000 - to linux-params - linux-params h# 40000 flatten-device-tree + ramdisk-adr ?dup 0= if mapped-limit then /fdt-max - to linux-params + linux-params /fdt-max flatten-device-tree else args-buf cscount linux-params set-parameters then @@ -122,7 +125,7 @@ : linux-place-ramdisk ( adr len -- ) to /ramdisk ( adr )
- dup memory-limit umin /ramdisk - ( adr new-ramdisk-adr ) + mapped-limit /ramdisk - ( adr new-ramdisk-adr ) tuck /ramdisk move ( new-ramdisk-adr ) \ dup to linux-memtop to ramdisk-adr
Modified: cpu/arm/olpc/build-fw.fth ============================================================================== --- cpu/arm/olpc/build-fw.fth Sat Jul 7 04:18:02 2012 (r3040) +++ cpu/arm/olpc/build-fw.fth Sat Jul 7 04:20:04 2012 (r3041) @@ -490,6 +490,8 @@ \ We give everything up to that address to Linux. : olpc-memory-limit ( -- adr ) extra-mem-va >physical ; ' olpc-memory-limit to memory-limit +: olpc-mapped-limit ( -- adr ) dma-mem-va >physical ; +' olpc-mapped-limit to mapped-limit
+ olpc-cl2 d# 9999 to arm-linux-machine-type \ XO-1.75 + olpc-cl3 d# 10000 to arm-linux-machine-type \ XO-3