[OpenBIOS] [commit] r674 - trunk/openbios-devel/forth/device

repository service svn at openbios.org
Wed Feb 3 18:54:15 CET 2010


Author: blueswirl
Date: Wed Feb  3 18:54:14 2010
New Revision: 674
URL: http://tracker.coreboot.org/trac/openbios/changeset/674

Log:
pathres: consistently encode unit address on 64bit target

This change fixes node unit address matching on arch
where cell is not 4 byte integer (tested with sparc64.)

Since we encode "reg" property chunks with encode-int
we need to use the same encoding while preparing unit
phys addr for comparison at path resolution time.

- (exact-match): calculate phys addr length using 4 byte
  member encoding with /l* not cells

- find-child: encode phys addr components similar to
  encode-int with 4 byte stores

Signed-off-by: Igor V. Kovalenko <igor.v.kovalenko at gmail.com>
Signed-off-by: Blue Swirl <blauwirbel at gmail.com>

Modified:
   trunk/openbios-devel/forth/device/pathres.fs

Modified: trunk/openbios-devel/forth/device/pathres.fs
==============================================================================
--- trunk/openbios-devel/forth/device/pathres.fs	Sun Jan 31 13:16:46 2010	(r673)
+++ trunk/openbios-devel/forth/device/pathres.fs	Wed Feb  3 18:54:14 2010	(r674)
@@ -125,7 +125,7 @@
   r@ common-match
 
   \ b) UNIT_PHYS nonempty?
-  r@ >si.unit_phys_len @ cells ?dup if
+  r@ >si.unit_phys_len @ /l* ?dup if
     \ check if unit_phys matches
     " reg" r@ >si.child @ get-package-property if -3 throw then
     ( unitbytes propaddr proplen )
@@ -191,7 +191,7 @@
       ( ... a_lo ... a_hi olddepth n )
       r@ >si.unit_phys >r
       begin 1- dup 0>= while
-        rot r> dup na1+ >r !
+        rot r> dup la1+ >r l!-be
       repeat
       r> 2drop
       depth!



More information about the OpenBIOS mailing list