[PATCH] pathres: consistently encode unit address on 64bit target

From: Igor V. Kovalenko <igor.v.kovalenko@gmail.com> 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@gmail.com> --- forth/device/pathres.fs | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/forth/device/pathres.fs b/forth/device/pathres.fs index 4184d07..f248e8d 100644 --- a/forth/device/pathres.fs +++ b/forth/device/pathres.fs @@ -125,7 +125,7 @@ constant sinfo.size 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 @@ constant sinfo.size ( ... 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!

On 2/1/10 10:05 PM, Igor V. Kovalenko wrote:
From: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
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@gmail.com>
Thanks for finding this! Stefan

Thanks, applied. On Mon, Feb 1, 2010 at 11:05 PM, Igor V. Kovalenko <igor.v.kovalenko@gmail.com> wrote:
From: Igor V. Kovalenko <igor.v.kovalenko@gmail.com>
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@gmail.com> --- forth/device/pathres.fs | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/forth/device/pathres.fs b/forth/device/pathres.fs index 4184d07..f248e8d 100644 --- a/forth/device/pathres.fs +++ b/forth/device/pathres.fs @@ -125,7 +125,7 @@ constant sinfo.size 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 @@ constant sinfo.size ( ... 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!
-- OpenBIOS http://openbios.org/ Mailinglist: http://lists.openbios.org/mailman/listinfo Free your System - May the Forth be with you
participants (3)
-
Blue Swirl
-
Igor V. Kovalenko
-
Stefan Reinauer