📄 system_call.s
字号:
;; MShowTec - www.mshowtec.com
;; msLinux system_call.s ver1.0
;; 20051221 lmjx create limiao@mshowtec.com
;;
;;
;; MSLINUX_SYSTEM_CALL_S
CODE32
AREA |C$$code|, CODE, READONLY
EXPORT _sys_fork
IMPORT find_empty_and_copy_process
IMPORT schedule
IMPORT errno_print
IMPORT current
IMPORT fork_tcb
IMPORT last_pid
_sys_fork
mov r0,#0
stmfd sp!,{r0-r12,lr}
mrs v1,CPSR
stmfd sp!,{v1}
bl find_empty_and_copy_process
cmp r0,#0
bne %0
ldr r0,=current
ldr r0,[r0]
ldr r1,[r0,#0]
mov r2,sp
sub r3,r2,r1
ldr r0,=fork_tcb
ldr r0,[r0]
ldr r1,[r0,#0]
add r1,r1,r3
str r1,[r0,#4]
ldmfd sp!, {v1} ; Restore the current status register
msr CPSR_cf, v1
ldmfd sp!, {r0-r12, lr} ; Restore all registers
ldr r0,=last_pid
ldr r0,[r0]
bx lr
0
ldmfd sp!, {v1} ; Restore the current status register
msr CPSR_cf, v1
ldmfd sp!, {r0-r12, lr} ; Restore all registers
mov r0,#-1
bx lr
IMPORT schedule
EXPORT _sys_reschedule
_sys_reschedule
bl schedule
;_sys_setstack(old_sp_top)
IMPORT current
EXPORT _sys_setstack
_sys_setstack
mov r1,sp
sub r2,r1,r0
ldr r0,=current
ldr r0,[r0]
ldr r3,[r0,#4]
add r3,r3,r2
str r3,[r0,#4]
mov sp,r3
bx lr
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -