~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/openbios/arch/ppc/briq/briq.fs

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
\   briq specific initialization code
 
2
 
3
\   Copyright (C) 2004 Greg Watson
 
4
 
5
\   This program is free software; you can redistribute it and/or
 
6
\   modify it under the terms of the GNU General Public License
 
7
\   as published by the Free Software Foundation
 
8
 
9
 
 
10
 
 
11
\ -------------------------------------------------------------------------
 
12
\ initialization
 
13
\ -------------------------------------------------------------------------
 
14
 
 
15
: make-openable ( path )
 
16
  find-dev if
 
17
    begin ?dup while
 
18
      \ install trivial open and close methods
 
19
      dup active-package! is-open
 
20
      parent
 
21
    repeat
 
22
  then
 
23
;
 
24
 
 
25
: preopen ( chosen-str node-path )
 
26
  2dup make-openable
 
27
  
 
28
  " /chosen" find-device
 
29
  open-dev ?dup if
 
30
    encode-int 2swap property
 
31
  else
 
32
    2drop
 
33
  then
 
34
;
 
35
 
 
36
\ preopen device nodes (and store the ihandles under /chosen)
 
37
:noname
 
38
  " rtc" " /pci/isa/rtc" preopen
 
39
  " memory" " /memory" preopen
 
40
  " mmu" " /cpu@0" preopen
 
41
  " stdout" " /packages/terminal-emulator" preopen
 
42
  " stdin" " keyboard" preopen
 
43
 
 
44
; SYSTEM-initializer
 
45
 
 
46
 
 
47
\ -------------------------------------------------------------------------
 
48
\ device tree fixing
 
49
\ -------------------------------------------------------------------------
 
50
 
 
51
\ add decode-address methods
 
52
: (make-decodable) ( phandle -- )
 
53
 
 
54
    dup " #address-cells" rot get-package-property 0= if
 
55
      decode-int nip nip
 
56
      over " decode-unit" rot find-method if 2drop else
 
57
        ( save phandle ncells )
 
58
      
 
59
        over active-package!
 
60
        case
 
61
          1 of ['] parse-hex " decode-unit" is-xt-func endof
 
62
          3 of
 
63
            " bus-range" active-package get-package-property 0= if
 
64
              decode-int nip nip
 
65
              ['] encode-unit-pci " encode-unit" is-xt-func
 
66
              " decode-unit" is-func-begin
 
67
                ['] (lit) , ,
 
68
                ['] decode-unit-pci-bus ,
 
69
              is-func-end
 
70
            then
 
71
          endof
 
72
        endcase
 
73
      then
 
74
    then
 
75
    drop
 
76
;
 
77
    
 
78
: init-briq-tree ( -- )
 
79
  active-package
 
80
  
 
81
  iterate-tree-begin
 
82
  begin ?dup while
 
83
 
 
84
    dup (make-decodable)
 
85
    
 
86
    iterate-tree
 
87
  repeat
 
88
 
 
89
  active-package!
 
90
;
 
91
 
 
92
\ use the tty interface if available
 
93
: activate-tty-interface
 
94
  " /packages/terminal-emulator" find-dev if drop
 
95
    " /packages/terminal-emulator" " input-device" $setenv
 
96
    " /packages/terminal-emulator" " output-device" $setenv
 
97
  then
 
98
;
 
99
 
 
100
:noname
 
101
  " keyboard" input
 
102
; CONSOLE-IN-initializer
 
103
 
 
104
 
 
105
\ -------------------------------------------------------------------------
 
106
\ pre-booting
 
107
\ -------------------------------------------------------------------------
 
108
 
 
109
: update-chosen
 
110
  " /chosen" find-device
 
111
  stdin @ encode-int " stdin" property
 
112
  stdout @ encode-int " stdout" property
 
113
  " /pci/isa/interrupt-controller" find-dev if encode-int " interrupt-controller" property then
 
114
  device-end
 
115
;