93 lines
1.8 KiB
Forth
93 lines
1.8 KiB
Forth
include config.fs
|
|
|
|
\ -------------------------------------------------------------------------
|
|
\ UPA encode/decode unit
|
|
\ -------------------------------------------------------------------------
|
|
|
|
: decode-unit-upa ( str len -- id lun )
|
|
ascii , left-split
|
|
( addr-R len-R addr-L len-L )
|
|
parse-hex
|
|
-rot parse-hex
|
|
swap
|
|
;
|
|
|
|
: encode-unit-upa ( id lun -- str len)
|
|
swap
|
|
pocket tohexstr
|
|
" ," pocket tmpstrcat >r
|
|
rot pocket tohexstr r> tmpstrcat drop
|
|
;
|
|
|
|
\ ---------
|
|
\ DMA words
|
|
\ ---------
|
|
|
|
: sparc64-dma-free ( virt size -- )
|
|
2drop
|
|
;
|
|
|
|
: sparc64-dma-map-in ( virt size cacheable? -- devaddr )
|
|
2drop
|
|
;
|
|
|
|
: sparc64-dma-map-out ( virt devaddr size -- )
|
|
(dma-sync)
|
|
;
|
|
|
|
['] sparc64-dma-free to (dma-free)
|
|
['] sparc64-dma-map-in to (dma-map-in)
|
|
['] sparc64-dma-map-out to (dma-map-out)
|
|
|
|
\ -------------------------------------------------------------
|
|
\ device-tree
|
|
\ -------------------------------------------------------------
|
|
|
|
" /" find-device
|
|
2 encode-int " #address-cells" property
|
|
2 encode-int " #size-cells" property
|
|
" sun4u" encode-string " compatible" property
|
|
|
|
: encode-unit encode-unit-upa ;
|
|
: decode-unit decode-unit-upa ;
|
|
|
|
: dma-sync ( virt devaddr size -- )
|
|
(dma-sync)
|
|
;
|
|
|
|
: dma-alloc ( size -- virt )
|
|
(dma-alloc)
|
|
;
|
|
|
|
: dma-free ( virt size -- )
|
|
(dma-free)
|
|
;
|
|
|
|
: dma-map-in ( virt size cacheable? -- devaddr )
|
|
(dma-map-in)
|
|
;
|
|
|
|
: dma-map-out ( virt devaddr size -- )
|
|
(dma-map-out)
|
|
;
|
|
|
|
new-device
|
|
" memory" device-name
|
|
" memory" device-type
|
|
external
|
|
: open true ;
|
|
: close ;
|
|
\ see arch/sparc64/lib.c for methods
|
|
finish-device
|
|
|
|
new-device
|
|
" virtual-memory" device-name
|
|
external
|
|
\ see arch/sparc64/lib.c for methods
|
|
finish-device
|
|
|
|
" /options" find-device
|
|
" disk" encode-string " boot-from" property
|
|
|
|
" /openprom" find-device
|
|
" OBP 3.10.24 1999/01/01 01:01" encode-string " version" property
|