diff options
Diffstat (limited to 'roms/SLOF/board-qemu/slof/qemu-bootlist.fs')
-rw-r--r-- | roms/SLOF/board-qemu/slof/qemu-bootlist.fs | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/roms/SLOF/board-qemu/slof/qemu-bootlist.fs b/roms/SLOF/board-qemu/slof/qemu-bootlist.fs new file mode 100644 index 00000000..4778e162 --- /dev/null +++ b/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 |