On Mon, 15 Jul 2019, Segher Boessenkool wrote:
0 > my-self . 1fc5abfc ok 0 > my-space ok 1 > . 0 ok
This one should be 7800
0 > my-address ok 2 > . 0 ok 1 > . 0 ok 0 > my-unit ok 3 > . 7800 ok 2 > . 0 ok 1 > . 0 ok
Those all look fine.
I think these my-* values should have some numbers instead of 0. What's the problem here? Looks like it returns first value from reg but shouldn't it return something from assigned-addresses instead?
my-address is two zeroes for configuration space addresses. But my-space shouldn't be zero, it's 7800 here. my-unit should be exactly identical to my-address my-space , but it isn't for you?
So you say it should be
: my-unit my-address my-space ;
but in OpenBIOS we have (in forth/device/package.fs):
\ \ 5.3.4.3 Get local arguments \
: my-address ( -- phys.lo ... ) ?my-self >in.device-node @
dn.probe-addr
my-#acells tuck /l* + swap 1- 0 ?do /l - dup l@ swap loop drop ;
: my-space ( -- phys.hi ) ?my-self >in.device-node @
dn.probe-addr @
;
: my-unit ( -- phys.lo ... phys.hi ) ?my-self >in.my-unit my-#acells tuck /l* + swap 0 ?do /l - dup l@ swap loop drop ;
my-unit seems to get the info from a different place (>in.my-unit vs.
dn.probe-addr) here. Why is that? Also this brings up further questions:
What are in, dn, ihandle, phandle? (I can probably find what do /l and /l* do.)
Regards, BALATON Zoltan