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