diff options
Diffstat (limited to 'roms/SLOF/slof/fs/loaders.fs')
-rw-r--r-- | roms/SLOF/slof/fs/loaders.fs | 13 |
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]" |