summaryrefslogtreecommitdiffstats
path: root/qemu/roms/SLOF/board-qemu/slof/qemu-bootlist.fs
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/SLOF/board-qemu/slof/qemu-bootlist.fs')
-rw-r--r--qemu/roms/SLOF/board-qemu/slof/qemu-bootlist.fs61
1 files changed, 61 insertions, 0 deletions
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
index 000000000..4778e1629
--- /dev/null
+++ b/qemu/roms/SLOF/board-qemu/slof/qemu-bootlist.fs
@@ -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