kernel/fxf/launch: Don't always show error message (oops)
This commit is contained in:
parent
7d877618a1
commit
a484da1526
|
@ -10,7 +10,7 @@
|
||||||
; r5: argument 3
|
; r5: argument 3
|
||||||
; r6: argument 4
|
; r6: argument 4
|
||||||
; outputs:
|
; outputs:
|
||||||
; none
|
; r0: task ID of the new task
|
||||||
launch_fxf_from_disk:
|
launch_fxf_from_disk:
|
||||||
push r0
|
push r0
|
||||||
push r1
|
push r1
|
||||||
|
@ -30,14 +30,14 @@ launch_fxf_from_disk:
|
||||||
mov r2, launch_fxf_struct
|
mov r2, launch_fxf_struct
|
||||||
call open
|
call open
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
ifz jmp allocate_error
|
ifz jmp launch_fxf_from_disk_file_error
|
||||||
|
|
||||||
; allocate memory for the binary
|
; allocate memory for the binary
|
||||||
mov r0, launch_fxf_struct
|
mov r0, launch_fxf_struct
|
||||||
call ryfs_get_size
|
call ryfs_get_size
|
||||||
call allocate_memory
|
call allocate_memory
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
ifz jmp allocate_error
|
ifz jmp launch_fxf_from_disk_allocate_error
|
||||||
mov [launch_fxf_binary_ptr], r0
|
mov [launch_fxf_binary_ptr], r0
|
||||||
|
|
||||||
; read the file into memory
|
; read the file into memory
|
||||||
|
@ -49,7 +49,7 @@ launch_fxf_from_disk:
|
||||||
mov r0, 65536
|
mov r0, 65536
|
||||||
call allocate_memory
|
call allocate_memory
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
ifz jmp allocate_error
|
ifz jmp launch_fxf_from_disk_allocate_error
|
||||||
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
|
||||||
|
@ -77,12 +77,14 @@ launch_fxf_from_disk:
|
||||||
; create a new task
|
; create a new task
|
||||||
mov r1, r0
|
mov r1, r0
|
||||||
call get_unused_task_id
|
call get_unused_task_id
|
||||||
|
mov.8 [launch_fxf_task_id], r0
|
||||||
mov r2, [launch_fxf_stack_ptr]
|
mov r2, [launch_fxf_stack_ptr]
|
||||||
add r2, 65516 ; point to the end of the stack (stack grows down!!)
|
add r2, 65516 ; point to the end of the stack (stack grows down!!)
|
||||||
mov r3, [launch_fxf_binary_ptr]
|
mov r3, [launch_fxf_binary_ptr]
|
||||||
mov r4, [launch_fxf_stack_ptr]
|
mov r4, [launch_fxf_stack_ptr]
|
||||||
call new_task
|
call new_task
|
||||||
allocate_error:
|
jmp launch_fxf_from_disk_end
|
||||||
|
launch_fxf_from_disk_allocate_error:
|
||||||
mov r0, launch_fxf_allocate_error_string1
|
mov r0, launch_fxf_allocate_error_string1
|
||||||
mov r1, launch_fxf_allocate_error_string2
|
mov r1, launch_fxf_allocate_error_string2
|
||||||
mov r2, launch_fxf_allocate_error_string3
|
mov r2, launch_fxf_allocate_error_string3
|
||||||
|
@ -90,19 +92,30 @@ allocate_error:
|
||||||
mov r4, 64
|
mov r4, 64
|
||||||
mov r5, 336
|
mov r5, 336
|
||||||
call new_messagebox
|
call new_messagebox
|
||||||
|
jmp launch_fxf_from_disk_end
|
||||||
|
launch_fxf_from_disk_file_error:
|
||||||
|
mov r0, 0
|
||||||
|
mov r1, launch_fxf_file_error_string
|
||||||
|
mov r2, 0
|
||||||
|
mov r3, 64
|
||||||
|
mov r4, 64
|
||||||
|
mov r5, 280
|
||||||
|
call new_messagebox
|
||||||
|
launch_fxf_from_disk_end:
|
||||||
pop r6
|
pop r6
|
||||||
pop r5
|
pop r5
|
||||||
pop r4
|
pop r4
|
||||||
pop r3
|
pop r3
|
||||||
pop r2
|
pop r2
|
||||||
pop r1
|
pop r1
|
||||||
pop r0
|
movz.8 r0, [launch_fxf_task_id]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
launch_fxf_struct: data.fill 0, 8
|
launch_fxf_struct: data.fill 0, 8
|
||||||
|
launch_fxf_task_id: data.8 0
|
||||||
launch_fxf_binary_ptr: data.32 0
|
launch_fxf_binary_ptr: data.32 0
|
||||||
launch_fxf_stack_ptr: data.32 0
|
launch_fxf_stack_ptr: data.32 0
|
||||||
launch_fxf_allocate_error_string1: data.strz "Failed to allocate memory for a new task"
|
launch_fxf_allocate_error_string1: data.strz "Failed to allocate memory for a new task"
|
||||||
launch_fxf_allocate_error_string2: data.strz "The memory allocator seems to be in an"
|
launch_fxf_allocate_error_string2: data.strz "The memory allocator seems to be in an"
|
||||||
launch_fxf_allocate_error_string3: data.strz "invalid state, a reboot is recommended"
|
launch_fxf_allocate_error_string3: data.strz "invalid state, a reboot is recommended"
|
||||||
|
launch_fxf_file_error_string: data.strz "Failed to open file for a new task"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user