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

« back to all changes in this revision

Viewing changes to roms/openbios/arch/ppc/mol/mol.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
 
 
2
 
 
3
\ -------------------------------------------------------------------------
 
4
\ initialization
 
5
\ -------------------------------------------------------------------------
 
6
 
 
7
: make-openable ( path )
 
8
  find-dev if
 
9
    begin ?dup while
 
10
      \ install trivial open and close methods
 
11
      dup active-package! is-open
 
12
      parent
 
13
    repeat
 
14
  then
 
15
;
 
16
 
 
17
: preopen ( chosen-str node-path )
 
18
  2dup make-openable
 
19
  
 
20
  " /chosen" find-device
 
21
  open-dev ?dup if
 
22
    encode-int 2swap property
 
23
  else
 
24
    2drop
 
25
  then
 
26
;
 
27
 
 
28
\ preopen device nodes (and store the ihandles under /chosen)
 
29
:noname
 
30
  " memory" " /memory" preopen
 
31
  " mmu" " /cpus/@0" preopen
 
32
  " stdout" " /packages/mol-stdout" preopen
 
33
  " stdin" " keyboard" preopen
 
34
  " nvram" " /pci/pci-bridge/mac-io/nvram" preopen
 
35
  " nvram" " /mol/nvram" preopen
 
36
 
 
37
; SYSTEM-initializer
 
38
 
 
39
 
 
40
\ -------------------------------------------------------------------------
 
41
\ device tree fixing
 
42
\ -------------------------------------------------------------------------
 
43
 
 
44
\ add decode-address methods
 
45
: (make-decodable) ( phandle -- )
 
46
 
 
47
    dup " #address-cells" rot get-package-property 0= if
 
48
      decode-int nip nip
 
49
      over " decode-unit" rot find-method if 2drop else
 
50
        ( save phandle ncells )
 
51
      
 
52
        over active-package!
 
53
        case
 
54
          1 of ['] parse-hex " decode-unit" is-xt-func endof
 
55
          3 of
 
56
            " bus-range" active-package get-package-property 0= if
 
57
              decode-int nip nip
 
58
              ['] encode-unit-pci " encode-unit" is-xt-func
 
59
              " decode-unit" is-func-begin
 
60
                ['] (lit) , ,
 
61
                ['] decode-unit-pci-bus ,
 
62
              is-func-end
 
63
            then
 
64
          endof
 
65
        endcase
 
66
      then
 
67
    then
 
68
    drop
 
69
;
 
70
    
 
71
: tree-fixes ( -- )
 
72
  active-package
 
73
  
 
74
  iterate-tree-begin
 
75
  begin ?dup while
 
76
 
 
77
    dup (make-decodable)
 
78
    
 
79
    iterate-tree
 
80
  repeat
 
81
 
 
82
  active-package!
 
83
;
 
84
 
 
85
\ use the tty interface if available
 
86
: activate-tty-interface
 
87
  " /mol/mol-tty" find-dev if drop
 
88
    " /mol/mol-tty" " input-device" $setenv
 
89
    " /mol/mol-tty" " output-device" $setenv
 
90
  then
 
91
;
 
92
 
 
93
:noname
 
94
  " keyboard" input
 
95
; CONSOLE-IN-initializer
 
96
 
 
97
 
 
98
\ -------------------------------------------------------------------------
 
99
\ pre-booting
 
100
\ -------------------------------------------------------------------------
 
101
 
 
102
: update-chosen
 
103
  " /chosen" find-device
 
104
  stdin @ encode-int " stdin" property
 
105
  stdout @ encode-int " stdout" property
 
106
  device-end
 
107
;