| \ QEMU specific initialization code |
| \ |
| \ 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 |
| \ |
| |
| include config.fs |
| |
| \ --------- |
| \ DMA words |
| \ --------- |
| |
| : ppc-dma-free ( virt size -- ) |
| 2drop |
| ; |
| |
| : ppc-dma-map-out ( virt devaddr size -- ) |
| (dma-sync) |
| ; |
| |
| ['] ppc-dma-free to (dma-free) |
| ['] ppc-dma-map-out to (dma-map-out) |
| |
| \ ------------------------------------------------------------- |
| \ device-tree |
| \ ------------------------------------------------------------- |
| |
| " /" find-device |
| \ Apple calls the root node device-tree |
| " device-tree" device-name |
| [IFDEF] CONFIG_PPC64 2 [ELSE] 1 [THEN] encode-int " #address-cells" property |
| 1 encode-int " #size-cells" property |
| h# 05f5e100 encode-int " clock-frequency" property |
| |
| : dma-sync |
| (dma-sync) |
| ; |
| |
| : dma-alloc |
| (dma-alloc) |
| ; |
| |
| : dma-free |
| (dma-free) |
| ; |
| |
| : dma-map-in |
| (dma-map-in) |
| ; |
| |
| : dma-map-out |
| (dma-map-out) |
| ; |
| |
| new-device |
| " cpus" device-name |
| 1 encode-int " #address-cells" property |
| 0 encode-int " #size-cells" property |
| external |
| |
| : encode-unit ( unit -- str len ) |
| pocket tohexstr |
| ; |
| |
| : decode-unit ( str len -- unit ) |
| parse-hex |
| ; |
| |
| finish-device |
| |
| new-device |
| " memory" device-name |
| " memory" device-type |
| external |
| : open true ; |
| : close ; |
| finish-device |
| |
| new-device |
| " rom" device-name |
| h# ff800000 encode-int 0 encode-int encode+ " reg" property |
| 1 encode-int " #address-cells" property |
| h# ff800000 encode-int h# 800000 encode-int encode+ |
| h# ff800000 encode-int encode+ " ranges" property |
| finish-device |
| |
| \ ------------------------------------------------------------- |
| \ /packages |
| \ ------------------------------------------------------------- |
| |
| " /packages" find-device |
| |
| " packages" device-name |
| external |
| \ allow packages to be opened with open-dev |
| : open true ; |
| : close ; |
| |
| \ /packages/terminal-emulator |
| new-device |
| " terminal-emulator" device-name |
| external |
| : open true ; |
| : close ; |
| \ : write ( addr len -- actual ) |
| \ dup -rot type |
| \ ; |
| finish-device |
| |
| \ ------------------------------------------------------------- |
| \ The END |
| \ ------------------------------------------------------------- |
| device-end |