diff options
Diffstat (limited to 'roms/openbios/arch/sparc64/tree.fs')
-rw-r--r-- | roms/openbios/arch/sparc64/tree.fs | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/roms/openbios/arch/sparc64/tree.fs b/roms/openbios/arch/sparc64/tree.fs new file mode 100644 index 000000000..af8948d12 --- /dev/null +++ b/roms/openbios/arch/sparc64/tree.fs @@ -0,0 +1,93 @@ +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 |