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

Blue Swirl blauwirbel at gmail.com
Wed Feb 3 18:54:57 CET 2010


Thanks, applied.


On Mon, Feb 1, 2010 at 11:05 PM, Igor V. Kovalenko
<igor.v.kovalenko at gmail.com> wrote:
> From: Igor V. Kovalenko <igor.v.kovalenko at 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 at 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
>



More information about the OpenBIOS mailing list