[SLOF] [PATCH slof v5 3/6] fdt: Pass the resulting device tree to QEMU
Alexey Kardashevskiy
aik at ozlabs.ru
Wed Oct 18 20:34:57 AEDT 2017
On 18/10/17 20:24, Segher Boessenkool wrote:
> On Wed, Oct 18, 2017 at 01:45:43PM +1100, Alexey Kardashevskiy wrote:
>> On 17/10/17 20:48, Segher Boessenkool wrote:
>>>> -: fdt-boot-cpu ( -- bootcpu )
>>>> - s" cpu" s" /chosen" find-node get-property 0<> IF 0 EXIT THEN
>>>> - decode-int
>>>> - nip nip ihandle>phandle
>>>> - s" reg" rot get-property 0<> IF 0 EXIT THEN
>>>> - decode-int
>>>> - nip nip
>>>> -;
>>>> +DEFER chosen-cpu
>>>
>>> Chosen cpu what? chosen-cpu-address maybe?
>>
>> May be chosen-cpu>unit or chosen-cpu-unit ?
>
> ">" means "to" so that's a bit misleading (there is no chosen-cpu as
> input to this word). "chosen-cpu-unit" is fine with me.
>
>>>> +VARIABLE chosen-cpu-phandle
>>>> +VARIABLE chosen-cpu-ihandle
>>>> +: set-chosen-cpu ( -- )
>>>> + s" /cpus" find-node dup 0= ABORT" /cpus not found"
>>>> + child dup 0= ABORT" /cpus/cpu not found"
>>>> + dup chosen-cpu-phandle ! 0 0 rot open-node
>>>> + dup chosen-cpu-ihandle ! encode-int s" cpu" set-chosen
>>>> ;
>>>
>>> You can also calculate and store the address right here (and you of
>>> course do not need the phandle and ihandle if you do not want them
>>> for anything else).
>>
>> I can, I just have no good taste :) Ok, I'll store chosen-cpu-ihandle only
>> and use "ihandle>phandle >unit" in "chosen-cpu>unit".
>>
>>> There's no need for DEFER -- just define the
>>> variable before you first use it :-)
>>
>> Pfff. Where would I put it?
>
> The same place as you now have the DEFER? DEFER and VARIABLE are very
> much alike:
>
> : VARIABLE CREATE 0 , ;
> : DEFER CREATE POSTPONE ABORT DOES> @ EXECUTE ;
>
> or they looks even more alike if you write this as
>
> : VARIABLE CREATE 0 , DOES> ;
> : DEFER CREATE ['] ABORT , DOES> @ EXECUTE ;
>
> (this isn't how those words are actually implemented, it is optimised
> a little, but it works essentially the same way).
>
>> Won't it confuse future readers? :) But sure I
>> can do that and define chosen-cpu-ihandle in fdt.fs, and if we decide to
>> use chosen-cpu-ihandle for something else - move it, and so on.
>
> Or even not define words for the phandle and ihandle if you don't use
> them. Your choice :-)
I need either:
- a variable for the unit address or
- a word to get it ("chosen-cpu-unit").
They both are better be defined nearby set-chosen-cpu. But fdt.fs is parsed
before that.
If I do not use "defer", then it cannot be "chosen-cpu-unit" as it is going
to look weird - "set" is defined in one place and "get" - in another. If I
define chosen-cpu-ihandle in fdt.fs - this is better but still inconsistent
and I won't be able to use "chosen-cpu-unit" in fdt.fs anyway.
My choice was to do "defer chosen-cpu-unit" but you are opposing it which
makes me think I am missing something, again :)
--
Alexey
More information about the SLOF
mailing list