diff options
author | Alexey Kardashevskiy <aik@ozlabs.ru> | 2017-10-17 14:10:47 +1100 |
---|---|---|
committer | Alexey Kardashevskiy <aik@ozlabs.ru> | 2017-11-03 14:53:14 +1100 |
commit | 14a876d38d9c352293a9d47850f8a4bb92eac594 (patch) | |
tree | 50f2d160e32b0df73dd953037597f6eab8059161 | |
parent | 0cbcd1512b987603ca771ed2cfef446a5fa40636 (diff) | |
download | SLOF-14a876d38d9c352293a9d47850f8a4bb92eac594.zip SLOF-14a876d38d9c352293a9d47850f8a4bb92eac594.tar.gz SLOF-14a876d38d9c352293a9d47850f8a4bb92eac594.tar.bz2 |
tree: Rework set-chosen-cpu and store /chosen ihandle and phandle
This replaces current set-chosen-cpu with a cleaner and faster
implementation which does not clobber the current node and stores
the chosen CPU phandle/ihandle.
This adds a helper to get the chosen CPU unit address.
This moves chosen cpu words to root.fs as otherwise it is quite hard
to maintain dependencies.
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Reviewed-by: Segher Boessenkool <segher@kernel.crashing.org>
-rw-r--r-- | board-qemu/slof/tree.fs | 6 | ||||
-rw-r--r-- | slof/fs/root.fs | 11 |
2 files changed, 11 insertions, 6 deletions
diff --git a/board-qemu/slof/tree.fs b/board-qemu/slof/tree.fs index cc35fa3..d95fde3 100644 --- a/board-qemu/slof/tree.fs +++ b/board-qemu/slof/tree.fs @@ -155,12 +155,6 @@ populate-pci-busses 6c0 cp -\ Do not assume that cpu0 is available -: set-chosen-cpu - " /cpus" find-device - get-node child dup 0= ABORT" CPU not found" - node>path open-dev encode-int s" cpu" set-chosen -; set-chosen-cpu s" /memory@0" open-dev encode-int s" memory" set-chosen diff --git a/slof/fs/root.fs b/slof/fs/root.fs index 44d087a..3818790 100644 --- a/slof/fs/root.fs +++ b/slof/fs/root.fs @@ -33,6 +33,17 @@ defer continue-client : get-chosen ( name len -- [ prop len ] success ) chosen get-property 0= ; +\ Do not assume that cpu0 is available +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" + 0 0 rot open-node + dup chosen-cpu-ihandle ! encode-int s" cpu" set-chosen +; + +: chosen-cpu-unit ( -- ret ) chosen-cpu-ihandle @ ihandle>phandle >unit ; + \ Look for an exising root, create one if needed " /" find-node dup 0= IF drop |