summaryrefslogtreecommitdiff
path: root/roms/SLOF/slof/fs/loaders.fs
diff options
context:
space:
mode:
Diffstat (limited to 'roms/SLOF/slof/fs/loaders.fs')
-rw-r--r--roms/SLOF/slof/fs/loaders.fs13
1 files changed, 9 insertions, 4 deletions
diff --git a/roms/SLOF/slof/fs/loaders.fs b/roms/SLOF/slof/fs/loaders.fs
index 6631c7a34..276ba6bca 100644
--- a/roms/SLOF/slof/fs/loaders.fs
+++ b/roms/SLOF/slof/fs/loaders.fs
@@ -19,9 +19,10 @@ CREATE load-list 2 cells allot load-list 2 cells erase
msr@ 7fffffffffffffff and 2000 or ciregs >srr1 ! call-client
;
-: start-elf64 ( arg len entry -- )
- msr@ 2000 or ciregs >srr1 !
- dup 8 + @ ciregs >r2 ! @ call-client \ entry point is pointer to .opd
+: start-elf64 ( arg len entry r2 -- )
+ msr@ 2000 or ciregs >srr1 !
+ ciregs >r2 !
+ call-client \ entry point is pointer to .opd
;
: set-bootpath
@@ -47,7 +48,9 @@ CREATE load-list 2 cells allot load-list 2 cells erase
s" snk" romfs-lookup 0<> IF
\ Load SNK client 15 MiB after Paflof... FIXME: Hard-coded offset is ugly!
paflof-start f00000 +
- elf-load-file-to-addr drop start-elf64 client-data
+ elf-load-file-to-addr drop \ FIXME - check this for LE, currently its BE only
+ dup @ swap 8 + @ \ populate entry r2
+ start-elf64 client-data
ELSE
2drop false
THEN
@@ -75,11 +78,13 @@ CREATE load-list 2 cells allot load-list 2 cells erase
my-self >r current-node @ >r \ Save my-self
(parse-line) open-dev dup IF
dup to my-self dup ihandle>phandle set-node
+ dup
s" ping" rot ['] $call-method CATCH IF
cr
." Not a pingable device"
cr 3drop
THEN
+ swap close-dev
ELSE
cr
." Usage: ping device-path:[device-args,]server-ip,[client-ip],[gateway-ip][,timeout]"