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

📄 os_cpu_a.s

📁 UCOS 在ARM9_S3c2410上的移植
💻 S
字号:
	AREA	|subr|, CODE, READONLY

;//
	EXPORT 	OSStartHighRdy
	IMPORT	OSTaskSwHook
	IMPORT  OSTCBHighRdy 
	IMPORT  OSRunning
OSStartHighRdy
        BL 	OSTaskSwHook
        LDR 	r4,=OSRunning
        MOV 	r5, #1                   
        STRB 	r5, [r4]
        LDR 	r4, =OSTCBHighRdy
        LDR 	r4, [r4]
        LDR 	sp, [r4]
        LDMFD 	sp!, {r4}
        MSR 	cpsr_cxsf, r4
        LDMFD 	sp!, {r0-r12,lr,pc}

;//
        EXPORT 	OSCtxSw
        IMPORT	OSPrioCur
        IMPORT	OSPrioHighRdy
        IMPORT	OSTCBCur
        IMPORT	OSTaskSwHook
        IMPORT	OSTCBHighRdy
OSCtxSw
        STMFD 	sp!, {lr}
        STMFD 	sp!, {r0-r12,lr}
        MRS 	r4, cpsr
        STMFD 	sp!, {r4}
        LDR 	r4, =OSTCBCur
        LDR		r5, [r4]
        STR 	sp, [r5]
		;//
        EXPORT 	OSIntCtxSw
		IMPORT OSTaskSwHook
OSIntCtxSw
		BL		OSTaskSwHook
		LDR		r4, =OSTCBHighRdy
		LDR		r4, [r4]
		LDR		r5, =OSTCBCur
		STR		r4, [r5]
		LDR		r6, =OSPrioHighRdy
		LDRB	r6, [r6]
		LDR		r5, =OSPrioCur
		STRB	r6, [r5]
		LDR		sp, [r4]
		LDMFD 	sp!, {r4}
		MSR 	cpsr_cxsf, r4
		LDMFD 	sp!, {r0-r12,lr,pc}

;//
	IMPORT	OSIntExit
	IMPORT  OSIntNesting

LINK_SAVE	DCD		0
PSR_SAVE	DCD		0
;//操作系统中断的宏定义
    MACRO
$Handler CALL $Handle,$Handle_hook
	IMPORT  $Handle
	IMPORT  $Handle_hook
	EXPORT $Handler
$Handler
	STMFD	sp!, {r4}
	LDR		r4, =LINK_SAVE
	STR		lr, [r4]
	MRS		lr,	spsr
	STR		lr, [r4, #4]
	LDMFD	sp!, {r4}
	ORR		lr, lr,	#0x80
	MSR		cpsr_cxsf, lr
	SUB		sp, sp, #4
	STMFD	sp!, {r0-r12, lr}
	LDR		r4, =LINK_SAVE
	LDR		lr, [r4, #0]
	SUB		lr, lr, #4
	STR		lr, [sp, #(14*4)]
	LDR		r4, [r4, #4]
	STMFD	sp!, {r4}
	LDR     R2,  =OSIntNesting
	LDRB    R1, [R2]
	ADD     R1, R1, #1
	STRB    R1, [R2]
	CMP     R1, #1
	LDREQ		r4, =OSTCBCur
	LDREQ		r4, [r4]
	STREQ		sp, [r4]
	
	BL	$Handle_hook;
	BL 	$Handle;
	BL	OSIntExit

	LDMFD 	sp!, {r4}
	MSR 	cpsr_cxsf, r4
	LDMFD 	sp!, {r0-r12,lr,pc}
	MEND

OSTickISR  CALL  OSTimeTick,tick_hook
;//系统时钟
;//TIMER0  CALL  TIMER0isr,TIMER0HOOK
;//TIMER1  CALL  TIMER1isr,TIMER1HOOK
;//TIMER5  CALL  TIMER5isr,TIMER5HOOK
;//定时器0、定时器1、定时器5
UART0  CALL  UART0ISR,UART0hook
UART1  CALL  UART1ISR,UART1hook
UART2  CALL  UART2ISR,UART2hook
	EXPORT 	ARMDisableInt
ARMDisableInt
	STMFD	sp!, {r0}	
	MRS	r0, cpsr
	ORR	r0, r0, #0xC0
	MSR	cpsr_c, r0
	LDMIA	sp!, {r0}
	MOV	pc, lr

	EXPORT 	ARMEnableInt
ARMEnableInt
	STMDB	sp!, {r0}
	MRS	r0, CPSR
	BIC r0, r0, #0x80
	MSR	CPSR_c, r0
	LDMIA	sp!, {r0}
	MOV	pc, lr
    	
	END
	

⌨️ 快捷键说明

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