Author: wmb Date: Sat Oct 13 03:30:13 2012 New Revision: 3366 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3366
Log: OLPC trac #12106 and #12181 - inflate initrd images from inside a .zip bundle.
Modified: cpu/x86/pc/olpc/security.fth ofw/core/infltdi.fth
Modified: cpu/x86/pc/olpc/security.fth ============================================================================== --- cpu/x86/pc/olpc/security.fth Sat Oct 13 01:08:50 2012 (r3365) +++ cpu/x86/pc/olpc/security.fth Sat Oct 13 03:30:13 2012 (r3366) @@ -796,7 +796,7 @@ " RD found - " ?lease-debug img$ sig$ sha-valid? if show-unlock - img$ place-ramdisk + img$ $inflated? drop place-ramdisk exit else show-unlock
Modified: ofw/core/infltdi.fth ============================================================================== --- ofw/core/infltdi.fth Sat Oct 13 01:08:50 2012 (r3365) +++ ofw/core/infltdi.fth Sat Oct 13 03:30:13 2012 (r3366) @@ -51,12 +51,27 @@ ; ' try-inflate to ?inflate
+\ Inflates the image at adr len if it is compressed. +\ The uncompressed image is placed after the compressed image in memory, +\ so sufficient space must be available there. In practice, this +\ usually means that adr should be in the region beginning at load-base . + +: $inflated? ( adr len -- adr' len' true | adr len false ) + over " "(1f8b08)" comp 0= if ( adr len ) + over + 4 round-up tuck ( adr+len adr adr+len ) + inflate true ( adr' len' true ) + else ( adr len ) + false ( adr len false ) + then +; : (?inflate-loaded) ( -- ) - load-base " "(1f8b08)" comp 0= if - load-base loaded + tuck inflate !load-size ( infl-adr ) - loaded move ( ) + loaded $inflated? if ( adr len ) + !load-size loaded move ( ) + else ( adr len ) + 2drop ( ) then ; + ' (?inflate-loaded) to ?inflate-loaded headers \ LICENSE_BEGIN
openfirmware@openfirmware.info