summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToomas Soome <tsoome@me.com>2018-01-24 16:18:00 +0200
committerDan McDonald <danmcd@joyent.com>2018-01-25 10:07:48 -0500
commit9aa2d72c0b7ffd836b0f633a523c698cfa854256 (patch)
treecca2adc1742d55724cc173f4d489ce28f09a5a88
parenta48ca82f1984529f9cbef045f39cd6efa1be7713 (diff)
downloadillumos-joyent-9aa2d72c0b7ffd836b0f633a523c698cfa854256.tar.gz
8986 loader: try_multiple_kernels does not try multiple kernels
Reviewed by: Yuri Pankov <yuripv@icloud.com> Reviewed by: Rich Lowe <richlowe@richlowe.net> Approved by: Dan McDonald <danmcd@joyent.com>
-rw-r--r--usr/src/boot/sys/boot/forth/support.4th29
1 files changed, 13 insertions, 16 deletions
diff --git a/usr/src/boot/sys/boot/forth/support.4th b/usr/src/boot/sys/boot/forth/support.4th
index 8b30502724..b95068f745 100644
--- a/usr/src/boot/sys/boot/forth/support.4th
+++ b/usr/src/boot/sys/boot/forth/support.4th
@@ -1553,17 +1553,6 @@ also builtins
\ Parse filename from a semicolon-separated list
-\ replacement, not working yet
-: newparse-; { addr len | a1 -- a' len-x addr x }
- addr len [char] ; strchr dup if ( a1 len1 )
- swap to a1 ( store address )
- 1 - a1 @ 1 + swap ( remove match )
- addr a1 addr -
- else
- 0 0 addr len
- then
-;
-
: parse-; ( addr len -- addr' len-x addr x )
over 0 2swap ( addr 0 addr len )
begin
@@ -1594,11 +1583,19 @@ also builtins
dup 2 = if ." Flags : " >r 2over type r> cr then
then
\ if it's xen, the xen kernel is loaded, unix needs to be loaded as module
- s" xen_kernel" getenv -1 = if
- 1 load \ normal kernel
- else
- drop
- >r s" kernel" s" -t " r> 2 + 1 load
+ s" xen_kernel" getenv -1 <> if
+ drop \ drop address from getenv
+ >r \ argument count to R
+ s" kernel" s" -t " \ push 2 strings into the stack
+ r> 2 + \ increment argument count
+ then
+
+ 1 ['] load catch dup if
+ ( addr0 len0 addr1 len1 ... args 1 error )
+ >r \ error code to R
+ drop \ drop 1
+ 0 do 2drop loop \ drop addr len pairs
+ r> \ set flag for while
then
while
dup 0=