kernel/fxf/launch: Specify disk ID, and fix issue with argument passing
This commit is contained in:
parent
8103ec8bcd
commit
59c688fc87
|
@ -3,11 +3,12 @@
|
||||||
; launch an FXF binary from a file on disk
|
; launch an FXF binary from a file on disk
|
||||||
; inputs:
|
; inputs:
|
||||||
; r0: pointer to FXF binary name (8.3 format, for example "testfile.fxf" or "test.fxf")
|
; r0: pointer to FXF binary name (8.3 format, for example "testfile.fxf" or "test.fxf")
|
||||||
; r1: argument 0
|
; r1: disk ID
|
||||||
; r2: argument 1
|
; r2: argument 0
|
||||||
; r3: argument 2
|
; r3: argument 1
|
||||||
; r4: argument 3
|
; r4: argument 2
|
||||||
; r5: argument 4
|
; r5: argument 3
|
||||||
|
; r6: argument 4
|
||||||
; outputs:
|
; outputs:
|
||||||
; none
|
; none
|
||||||
launch_fxf_from_disk:
|
launch_fxf_from_disk:
|
||||||
|
@ -16,9 +17,16 @@ launch_fxf_from_disk:
|
||||||
push r2
|
push r2
|
||||||
push r3
|
push r3
|
||||||
push r4
|
push r4
|
||||||
|
push r5
|
||||||
|
push r6
|
||||||
|
|
||||||
|
push r2
|
||||||
|
push r3
|
||||||
|
push r4
|
||||||
|
push r5
|
||||||
|
push r6
|
||||||
|
|
||||||
; open the file
|
; open the file
|
||||||
mov r1, 0
|
|
||||||
mov r2, launch_fxf_struct
|
mov r2, launch_fxf_struct
|
||||||
call open
|
call open
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
|
@ -45,17 +53,22 @@ launch_fxf_from_disk:
|
||||||
mov [launch_fxf_stack_ptr], r0
|
mov [launch_fxf_stack_ptr], r0
|
||||||
|
|
||||||
; push the arguments to the task's stack
|
; push the arguments to the task's stack
|
||||||
mov r4, rsp
|
pop r4
|
||||||
|
pop r3
|
||||||
|
pop r2
|
||||||
|
pop r1
|
||||||
|
pop r0
|
||||||
|
mov r5, rsp
|
||||||
mov rsp, [launch_fxf_stack_ptr]
|
mov rsp, [launch_fxf_stack_ptr]
|
||||||
add rsp, 65536 ; point to the end of the stack (stack grows down!!)
|
add rsp, 65536 ; point to the end of the stack (stack grows down!!)
|
||||||
push r5
|
|
||||||
push r4
|
push r4
|
||||||
push r3
|
push r3
|
||||||
push r2
|
push r2
|
||||||
push r1
|
push r1
|
||||||
|
push r0
|
||||||
sub rsp, 65516
|
sub rsp, 65516
|
||||||
mov [launch_fxf_stack_ptr], rsp
|
mov [launch_fxf_stack_ptr], rsp
|
||||||
mov rsp, r4
|
mov rsp, r5
|
||||||
|
|
||||||
; relocate the binary
|
; relocate the binary
|
||||||
mov r0, [launch_fxf_binary_ptr]
|
mov r0, [launch_fxf_binary_ptr]
|
||||||
|
@ -70,6 +83,8 @@ launch_fxf_from_disk:
|
||||||
mov r4, [launch_fxf_stack_ptr]
|
mov r4, [launch_fxf_stack_ptr]
|
||||||
call new_task
|
call new_task
|
||||||
allocate_error:
|
allocate_error:
|
||||||
|
pop r6
|
||||||
|
pop r5
|
||||||
pop r4
|
pop r4
|
||||||
pop r3
|
pop r3
|
||||||
pop r2
|
pop r2
|
||||||
|
|
Loading…
Reference in New Issue
Block a user