~ubuntu-branches/ubuntu/wily/slof/wily

« back to all changes in this revision

Viewing changes to board-qemu/slof/tree.fs

  • Committer: Package Import Robot
  • Author(s): Aurelien Jarno
  • Date: 2012-09-16 23:05:23 UTC
  • Revision ID: package-import@ubuntu.com-20120916230523-r2ynulqmp2tyu2e5
Tags: upstream-20120217+dfsg
ImportĀ upstreamĀ versionĀ 20120217+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
8
\ *
 
9
\ * Contributors:
 
10
\ *     IBM Corporation - initial implementation
 
11
\ ****************************************************************************/
 
12
 
 
13
: strequal ( str1 len1 str2 len2 -- flag )
 
14
  rot dup rot = IF comp 0= ELSE 2drop drop 0 THEN ; 
 
15
 
 
16
400 cp
 
17
 
 
18
\ The root of the device tree and some of its kids.
 
19
" /" find-device
 
20
 
 
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:
 
23
 
 
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
 
28
 
 
29
480 cp
 
30
 
 
31
\ See 3.6.5, and the PowerPC OF binding document.
 
32
new-device
 
33
s" mmu" 2dup device-name device-type
 
34
0 0 s" translations" property
 
35
 
 
36
: open  true ;
 
37
: close ;
 
38
 
 
39
finish-device
 
40
device-end
 
41
 
 
42
4c0 cp
 
43
 
 
44
\ Fixup timebase frequency from device-tree
 
45
: fixup-tbfreq
 
46
    " /cpus/@0" find-device
 
47
    " timebase-frequency" get-node get-package-property IF
 
48
        2drop
 
49
    ELSE
 
50
        decode-int to tb-frequency 2drop
 
51
    THEN
 
52
    device-end
 
53
;
 
54
fixup-tbfreq
 
55
 
 
56
4d0 cp
 
57
 
 
58
include fbuffer.fs
 
59
 
 
60
500 cp
 
61
 
 
62
: populate-vios ( -- )
 
63
    \ Populate the /vdevice children with their methods
 
64
    \ WARNING: Quite a few SLOFisms here like get-node, set-node, ...
 
65
 
 
66
    ." Populating /vdevice methods" cr
 
67
    " /vdevice" find-device get-node child
 
68
    BEGIN
 
69
        dup 0 <>
 
70
    WHILE
 
71
        dup set-node
 
72
        dup " compatible" rot get-package-property 0 = IF
 
73
            drop dup from-cstring
 
74
            2dup " hvterm1" strequal IF
 
75
                " vio-hvterm.fs" included
 
76
            THEN
 
77
            2dup " IBM,v-scsi" strequal IF
 
78
                " vio-vscsi.fs" included
 
79
            THEN
 
80
            2dup " IBM,l-lan" strequal IF
 
81
                " vio-veth.fs" included
 
82
            THEN
 
83
            2drop
 
84
       THEN
 
85
       peer
 
86
    REPEAT drop
 
87
 
 
88
    device-end
 
89
;
 
90
 
 
91
\ Now do it
 
92
populate-vios
 
93
 
 
94
580 cp
 
95
 
 
96
5a0 cp
 
97
 
 
98
#include "pci-scan.fs"
 
99
 
 
100
: populate-pci-busses ( -- )
 
101
    \ Populate the /pci* children with their methods
 
102
    " /" find-device get-node child
 
103
    BEGIN
 
104
        dup 0 <>
 
105
    WHILE
 
106
        dup set-node
 
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
 
111
            THEN
 
112
            2drop
 
113
       THEN
 
114
       peer
 
115
    REPEAT drop
 
116
 
 
117
    device-end
 
118
;
 
119
 
 
120
populate-pci-busses
 
121
 
 
122
600 cp
 
123
 
 
124
\ Add rtas cleanup last
 
125
' rtas-quiesce add-quiesce-xt
 
126
 
 
127
640 cp
 
128
 
 
129
690 cp
 
130
 
 
131
6a0 cp
 
132
 
 
133
6a8 cp
 
134
 
 
135
6b0 cp
 
136
 
 
137
6b8 cp
 
138
 
 
139
6c0 cp
 
140
 
 
141
s" /cpus/@0" open-dev encode-int s" cpu" set-chosen
 
142
s" /memory" open-dev encode-int s" memory" set-chosen
 
143
 
 
144
6e0 cp
 
145
 
 
146
700 cp
 
147
 
 
148
\ See 3.5.
 
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
 
152
device-end
 
153
 
 
154
s" /aliases" find-device
 
155
   : open  true ;
 
156
   : close ;
 
157
device-end
 
158
 
 
159
s" /mmu" open-dev encode-int s" mmu" set-chosen
 
160
 
 
161
#include "available.fs"
 
162
 
 
163
\ Setup terminal IO
 
164
 
 
165
#include <term-io.fs>
 
166