117 lines
2 KiB
Forth
117 lines
2 KiB
Forth
|
:noname
|
||
|
." Type 'help' for detailed information" cr
|
||
|
; DIAG-initializer
|
||
|
|
||
|
" /" find-device
|
||
|
|
||
|
new-device
|
||
|
" memory" device-name
|
||
|
\ 12230 encode-int " reg" property
|
||
|
external
|
||
|
: open true ;
|
||
|
: close ;
|
||
|
\ claim ( phys size align -- base )
|
||
|
\ release ( phys size -- )
|
||
|
finish-device
|
||
|
|
||
|
new-device
|
||
|
" cpus" device-name
|
||
|
1 " #address-cells" int-property
|
||
|
0 " #size-cells" int-property
|
||
|
|
||
|
external
|
||
|
: open true ;
|
||
|
: close ;
|
||
|
: decode-unit parse-hex ;
|
||
|
|
||
|
finish-device
|
||
|
|
||
|
: 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
|
||
|
;
|
||
|
|
||
|
:noname
|
||
|
set-defaults
|
||
|
; SYSTEM-initializer
|
||
|
|
||
|
|
||
|
\ preopen device nodes (and store the ihandles under /chosen)
|
||
|
:noname
|
||
|
" memory" " /memory" preopen
|
||
|
" mmu" " /cpus/@0" preopen
|
||
|
" stdout" " /builtin/console" preopen
|
||
|
" stdin" " /builtin/console" preopen
|
||
|
device-end
|
||
|
; SYSTEM-initializer
|
||
|
|
||
|
\ use the tty interface if available
|
||
|
:noname
|
||
|
" /builtin/console" find-dev if drop
|
||
|
" /builtin/console" " input-device" $setenv
|
||
|
" /builtin/console" " output-device" $setenv
|
||
|
then
|
||
|
; SYSTEM-initializer
|
||
|
|
||
|
:noname
|
||
|
" keyboard" input
|
||
|
; CONSOLE-IN-initializer
|
||
|
|
||
|
dev /
|
||
|
|
||
|
\ node suitable for non-PCI devices
|
||
|
new-device
|
||
|
" unix" device-name
|
||
|
0 encode-int " #address-cells" property
|
||
|
0 encode-int " #size-cells" property
|
||
|
|
||
|
external
|
||
|
: open true ;
|
||
|
: close ;
|
||
|
|
||
|
\ block device node
|
||
|
new-device
|
||
|
" block" device-name
|
||
|
" unix-block" device-type
|
||
|
1 " #address-cells" int-property
|
||
|
0 " #size-cells" int-property
|
||
|
|
||
|
external
|
||
|
: open true ;
|
||
|
: close ;
|
||
|
: decode-unit parse-hex ;
|
||
|
|
||
|
\ testnode
|
||
|
\ new-device
|
||
|
\ " kappa" device-name
|
||
|
\
|
||
|
\ 1 encode-int " reg" property
|
||
|
\ external
|
||
|
\ : open true ;
|
||
|
\ : close ;
|
||
|
\ finish-device
|
||
|
|
||
|
finish-device
|
||
|
finish-device
|
||
|
|
||
|
dev /aliases
|
||
|
" /unix/block/disk" encode-string " hd" property
|
||
|
|
||
|
device-end
|