| \ ***************************************************************************** |
| \ * Copyright (c) 2004, 2008 IBM Corporation |
| \ * All rights reserved. |
| \ * This program and the accompanying materials |
| \ * are made available under the terms of the BSD License |
| \ * which accompanies this distribution, and is available at |
| \ * http://www.opensource.org/licenses/bsd-license.php |
| \ * |
| \ * Contributors: |
| \ * IBM Corporation - initial implementation |
| \ ****************************************************************************/ |
| |
| \ this creates the root and common branches of the device tree |
| |
| defer (client-exec) |
| defer client-exec |
| |
| \ defined in slof/fs/client.fs |
| defer callback |
| defer continue-client |
| |
| 0 VALUE chosen-node |
| |
| : chosen |
| chosen-node dup 0= IF |
| drop s" /chosen" find-node dup to chosen-node |
| THEN |
| ; |
| |
| : set-chosen ( prop len name len -- ) |
| chosen set-property ; |
| |
| : 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 existing root, create one if needed |
| " /" find-node dup 0= IF |
| drop |
| new-device |
| s" /" device-name |
| ELSE |
| extend-device |
| THEN |
| |
| \ Create /chosen if it doesn't exist |
| " /chosen" find-node dup 0= IF |
| drop |
| new-device |
| s" chosen" device-name |
| s" " encode-string s" bootargs" property |
| s" " encode-string s" bootpath" property |
| finish-device |
| ELSE |
| drop |
| THEN |
| |
| \ Create /aliases |
| new-device |
| s" aliases" device-name |
| : open true ; |
| : close ; |
| finish-device |
| |
| \ Create /options |
| new-device |
| s" options" device-name |
| finish-device |
| |
| \ Create /openprom |
| new-device |
| s" openprom" device-name |
| 0 0 s" relative-addressing" property |
| finish-device |
| |
| \ Create /packages |
| new-device |
| #include <packages.fs> |
| finish-device |
| |
| : open true ; |
| : close ; |
| |
| \ Finish root |
| finish-device |
| |