1
\ *****************************************************************************
2
\ * Copyright (c) 2004, 2011 IBM Corporation
3
\ * All rights reserved.
4
\ * This program and the accompanying materials
5
\ * are made available under the terms of the BSD License
6
\ * which accompanies this distribution, and is available at
7
\ * http://www.opensource.org/licenses/bsd-license.php
10
\ * IBM Corporation - initial implementation
11
\ ****************************************************************************/
13
: strequal ( str1 len1 str2 len2 -- flag )
14
rot dup rot = IF comp 0= ELSE 2drop drop 0 THEN ;
18
\ The root of the device tree and some of its kids.
21
\ The following properties have been provided by the FDT from QEMU already,
22
\ so we do not have to create them on our own:
24
\ " QEMU" encode-string s" model" property
25
\ 2 encode-int s" #address-cells" property
26
\ 2 encode-int s" #size-cells" property
27
\ s" chrp" device-type
31
\ See 3.6.5, and the PowerPC OF binding document.
33
s" mmu" 2dup device-name device-type
34
0 0 s" translations" property
44
\ Fixup timebase frequency from device-tree
46
" /cpus/@0" find-device
47
" timebase-frequency" get-node get-package-property IF
50
decode-int to tb-frequency 2drop
62
: populate-vios ( -- )
63
\ Populate the /vdevice children with their methods
64
\ WARNING: Quite a few SLOFisms here like get-node, set-node, ...
66
." Populating /vdevice methods" cr
67
" /vdevice" find-device get-node child
72
dup " compatible" rot get-package-property 0 = IF
74
2dup " hvterm1" strequal IF
75
" vio-hvterm.fs" included
77
2dup " IBM,v-scsi" strequal IF
78
" vio-vscsi.fs" included
80
2dup " IBM,l-lan" strequal IF
81
" vio-veth.fs" included
98
#include "pci-scan.fs"
100
: populate-pci-busses ( -- )
101
\ Populate the /pci* children with their methods
102
" /" find-device get-node child
107
dup " name" rot get-package-property 0 = IF
108
drop dup from-cstring
109
2dup s" pci" strequal IF
110
s" pci-phb.fs" included
124
\ Add rtas cleanup last
125
' rtas-quiesce add-quiesce-xt
141
s" /cpus/@0" open-dev encode-int s" cpu" set-chosen
142
s" /memory" open-dev encode-int s" memory" set-chosen
149
s" /openprom" find-device
150
s" SLOF," slof-build-id here swap rmove here slof-build-id nip $cat encode-string s" model" property
151
0 0 s" relative-addressing" property
154
s" /aliases" find-device
159
s" /mmu" open-dev encode-int s" mmu" set-chosen
161
#include "available.fs"
165
#include <term-io.fs>