aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Kardashevskiy <aik@ozlabs.ru>2017-10-17 14:10:47 +1100
committerAlexey Kardashevskiy <aik@ozlabs.ru>2017-11-03 14:53:14 +1100
commit14a876d38d9c352293a9d47850f8a4bb92eac594 (patch)
tree50f2d160e32b0df73dd953037597f6eab8059161
parent0cbcd1512b987603ca771ed2cfef446a5fa40636 (diff)
downloadSLOF-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.fs6
-rw-r--r--slof/fs/root.fs11
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