[openfirmware] [commit] r3090 - cpu/arm/marvell
repository service
svn at openfirmware.info
Mon Jul 30 09:11:20 CEST 2012
Author: wmb
Date: Mon Jul 30 09:11:20 2012
New Revision: 3090
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3090
Log:
OLPC ARM - Marvell TIM compiler enhancements for version 4 of the TIM header.
Modified:
cpu/arm/marvell/tim.fth
Modified: cpu/arm/marvell/tim.fth
==============================================================================
--- cpu/arm/marvell/tim.fth Mon Jul 30 09:08:16 2012 (r3089)
+++ cpu/arm/marvell/tim.fth Mon Jul 30 09:11:20 2012 (r3090)
@@ -1,11 +1,17 @@
: >hex ( n -- n' ) d# 10 /mod h# 10 * + ;
+
+0 value tim-version
+: tim-v3? ( -- flag ) tim-version h# 00ffff00 and h# 00030400 = ;
+
: today>hex ( -- n )
today ( day month year )
d# 100 /mod ( day month yr century )
rot >hex >r ( day yr century r: hex-month )
rot >hex >r ( yr century r: hex-month hex-day )
>hex >r ( yr r: hex-month hex-day hex-century )
- >hex r> r> r> bljoin ( n )
+ >hex r> r> r>
+ tim-v3? if 2swap then
+ bljoin ( n )
;
0 value image-size
@@ -71,26 +77,29 @@
ofd @ fclose
image-adr image-size free-mem
;
+: id, ( -- )
+ get-word ( adr len )
+ \ Convert trailing number to binary byte value - e.g. NAN'6 -> NAN(06)
+ 2dup [char] ' left-parse-string 2drop ( adr len tail$ )
+ push-decimal $number pop-base abort" Bad number" ( adr len n )
+ nip over 3 + c! 4 ( adr 4 )
+ 4c,
+;
: tim: \ version trusted ID Processor
0 to last-image-adr
here to tim-adr
- hex,
+ get-hex dup l, to tim-version
" TIMH" 4c,
hex, \ Trusted
\ hex, \ Date
today>hex l,
- get-word -4c, \ OEM ID
+ id, \ OEM ID
get-word 2drop \ Processor
;
: flash: \ id (e.g. NAN6)
5 0 do -1 l, loop
- get-word ( adr len )
- \ Convert trailing number to binary byte value - e.g. NAN'6 -> NAN(06)
- 2dup [char] ' left-parse-string 2drop ( adr len tail$ )
- push-decimal $number pop-base abort" Bad number" ( adr len n )
- nip over 3 + c! 4 ( adr 4 )
- 4c,
+ id,
here to #images-adr 0 l,
here to #keys-adr 0 l,
@@ -112,12 +121,18 @@
ifd @ fgets ( size read-size )
over <> abort" Read failed" ( size )
ifd @ fclose ( size )
-\ h# 1000 round-up
- h# 800 round-up
-\ 4 round-up
+ \ Older BOOTROMs seem to want the size to be strongly aligned
+ tim-v3? if 4 else h# 800 then round-up ( size' )
;
: place-hash \ XXX need to implement non-null hash info
- d# 10 0 do 0 l, loop
+ tim-v3? if
+ 0 l, \ Size to hash (should be -1 but 0 is in the examples)
+ d# 20 l, \ HashAlgorithmID - SHA-160
+ d# 16 0 do 0 l, loop \ Hash
+ 0 l, \ Partition number
+ else
+ d# 10 0 do 0 l, loop \ Hash
+ then
;
: +#images ( -- ) #images-adr l@ 1+ #images-adr l! ;
: start-image ( adr len -- )
@@ -168,6 +183,8 @@
my-timh-adr if
here tim-adr - my-timh-adr 4 la+ l!
tim-adr image-adr my-timh-adr 2 la+ l@ + here tim-adr - move
+ else
+ tim-adr image-adr here tim-adr - move
then
;
: tbrx: \ xferloc
@@ -198,4 +215,16 @@
: cmcc: \
" CMCC" start-package
;
+: usb: \ Port# Enabled?
+ " "(00)USB" start-package hex, hex, end-package
+;
+: uart: \ Port# Enabled?
+ " "UART" start-package hex, hex, end-package
+;
+: cmon: \
+ " CMON" start-package end-package
+;
+: core: \ number mapping
+ " CORE" start-package hex, hex, end-package
+;
: term: " Term" start-package end-package ;
More information about the openfirmware
mailing list