Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / openbios / arch / ppc / briq / briq.fs
diff --git a/qemu/roms/openbios/arch/ppc/briq/briq.fs b/qemu/roms/openbios/arch/ppc/briq/briq.fs
new file mode 100644 (file)
index 0000000..78d7797
--- /dev/null
@@ -0,0 +1,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
+;