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

📄 swi_s3c2410.s

📁 一个基于MMU的操作系统的实现(代码很少
💻 S
字号:
#define 	PID_OFT		0#define	STATE_OFT		4#define	COUNT_OFT		8#define	PRIORITY_OFT	12#define	CONTENT_OFT	 	16#define	KERNELSP_OFT	96#define	KERNELSTACK_OFT	100#define	MAX_SWI_NUM		3		@ 虚拟地址=物理地址	#define	SDRAM_BASE		0x30000000#define	SDRAM_SIZE		0x04000000		.extern 	swi_table.text	.global HandleSWIHandleSWI:	stmdb	sp!,{ r0-r12,lr }	@ 保存使用到的寄存器和返回地址,不必保存那么多,以后要提高实时性时再改吧	ldr	r4, [lr,#-4]	@ lr-4为指令"swi n"的地址,此指令低24位就是n	bic	r4, r4,#0xff000000		cmp	r4, #3	ldrls	r5, =swi_table	@ swi跳转表基址	ldrls	lr, =swi_return	@ 返回地址	ldrls	pc, [r5,r4,lsl #2]	@ 跳转到相应汇编处理函数	mov	r0, #-1		@ 出错,返回-1swi_return:			ldmia	sp!,{ r0-r12,pc }^	@ 中断返回, ^表示将spsr的值复制到cpsr@ 进程退出处理函数,比如处理main函数退出.text.global sys_exit		sys_exit:	@ 将调用C函数do_exit(int error_code)	@ r0=error_code	ldr	pc, =do_exit	@ do_exit返回到swi_return.text.global sys_sleep		sys_sleep:			@ 将调用C函数int sleep(int time)	@ r0=sleep time	ldr	pc, =do_sleep	@ do_exit返回到swi_return.text.global sys_write		sys_write:			@ 将调用C函数int write(char *str)	@ r0=sleep time	ldr	pc, =do_write	@ do_exit返回到swi_return

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -