Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / board-qemu / slof / qemu-bootlist.fs
diff --git a/qemu/roms/SLOF/board-qemu/slof/qemu-bootlist.fs b/qemu/roms/SLOF/board-qemu/slof/qemu-bootlist.fs
new file mode 100644 (file)
index 0000000..4778e16
--- /dev/null
@@ -0,0 +1,61 @@
+\ *****************************************************************************
+\ * Copyright (c) 2011 IBM Corporation
+\ * All rights reserved.
+\ * This program and the accompanying materials
+\ * are made available under the terms of the BSD License
+\ * which accompanies this distribution, and is available at
+\ * http://www.opensource.org/licenses/bsd-license.php
+\ *
+\ * Contributors:
+\ *     IBM Corporation - initial implementation
+\ ****************************************************************************/
+
+defer set-boot-device
+defer add-boot-device
+
+8 CONSTANT MAX-ALIAS
+: add-boot-aliases ( str -- )
+    2dup add-boot-device               ( $str )
+    MAX-ALIAS 1 DO
+       2dup i $cathex 2dup              ( $str $strN $strN )
+       find-alias 0 > IF                ( $str $strN false | $result )
+           drop strdup add-boot-device  ( $str )
+       ELSE 2drop THEN
+    LOOP
+    2drop
+;
+
+: qemu-read-bootlist ( -- )
+   \ See if QEMU has set exact boot device list
+   " qemu,boot-list" get-chosen IF
+        s" boot-device" $setenv
+        EXIT
+   THEN
+
+   0 0 set-boot-device
+
+   " qemu,boot-device" get-chosen not IF
+      \ No boot list set from qemu, so check nvram
+      " boot-device" evaluate swap drop 0= IF
+         \ Not set in nvram too, set default disk/cdrom alias
+         " disk" add-boot-aliases
+         " cdrom" add-boot-aliases
+         " net" add-boot-aliases
+      THEN
+      EXIT
+   THEN
+
+   0 ?DO
+       dup i + c@ CASE
+           0        OF ENDOF
+           [char] a OF ENDOF
+           [char] b OF ENDOF
+           [char] c OF " disk"  add-boot-aliases ENDOF
+           [char] d OF " cdrom" add-boot-aliases ENDOF
+           [char] n OF " net"   add-boot-aliases ENDOF
+       ENDCASE cr
+   LOOP
+   drop
+;
+
+' qemu-read-bootlist to read-bootlist