⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 system_call.s

📁 ADS环境下的类似linux内核的操作系统
💻 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 + -