亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os_cpu_a.s

?? 基于ADS1.2環(huán)境編寫的UC/OS-II的移植源代碼
?? S
字號:
;*
;* File: os_cpu_a.s
;*
;*            (c) Copyright ARM Limited 1999.  All rights reserved. 
;*
;*                               ARM Specific code
;*
;*
;     Port for SanJiang DVK By Eric Rong(2002-3-19-12-53)
;	the last version in 0601 by softmcu
;	Functions defined in this module:
;
;	void uHALir_DisableInt(void)	/* disable interrupts when in SVC */
;	void uHALir_EnableInt(void)	/* enable interrupts when in SVC */
;	void OS_TASK_SWAP(void)		/* context switch */
;	void OSStartHighRdy(void)	/* start highest priority task */

SwiV		EQU	0x08
IrqV			EQU	0x18
FiqV			EQU	0x1C
NoInt		EQU	0x80

SVC32Mode	EQU	0x13
IRQ32Mode	EQU	0x12
FIQ32Mode	EQU	0x11

OSEnterSWI	EQU	0x00


BIT_TIMER0	EQU		(0x1<<13)
BIT_URXD1	EQU     (0x1<<6)
BIT_URXD0	EQU     (0x1<<7)
BIT_EINT4567 EQU    (0x1<<21)

I_ISPC		EQU		0x1e00024
INTMSK		EQU		0x1e0000c
EXTINTPND   EQU		0x1d20054


	AREA	|subr|, CODE, READONLY

	; External symbols we need the addresses of
			IMPORT	OSTCBCur
addr_OSTCBCur		DCD	OSTCBCur
			IMPORT	OSTCBHighRdy
addr_OSTCBHighRdy	DCD	OSTCBHighRdy
			IMPORT	OSPrioCur
addr_OSPrioCur		DCD	OSPrioCur
			IMPORT	OSPrioHighRdy
addr_OSPrioHighRdy	DCD	OSPrioHighRdy

	IMPORT	need_to_swap_context
	IMPORT	IrqStart
	IMPORT	OSTimeTick
	IMPORT	IrqFinish
	IMPORT  OSRunning             ;feng port 2.61 add
;	IMPORT	MilliSecondTick
;	IMPORT	OutDebug
;	IMPORT	uHALr_BreakPoint
	EXPORT	IRQContextSwap
	EXPORT	TickHandler
	EXPORT  Uart0_RxHandle
IRQContextSwap
	MOV	a1, #1
	MOV	lr, pc
Uart0_RxHandle
	STMDB    sp!,{r0-r11,lr}
	LDMIA    sp!,{r0-r11, lr}
	SUBS	pc, lr, #4
	
TickHandler
	STMDB    sp!,{r0-r12,lr}

	;interrupt disable(not nessary)
	mrs		r0, CPSR
	orr		r0, r0, #0x80		; and set IRQ disable flag
	msr		CPSR_cxsf, r0
	
	;End of interrupt
	;(Clear pending bit of INTPEND that don't accessed it.)
	;	rI_ISPC= BIT_TIMER0;
	LDR	r0, =I_ISPC
	LDR	r1, =BIT_TIMER0
	STR	r1, [r0]


	
	BL	IrqStart
	
	BL	OSTimeTick

	BL	IrqFinish		;a1= return value	0:not context switch, otherwise:context switch

	CMP		a1, #0
	LDRNE	pc, =_CON_SWAP


_NOT_CON_SWAP
	;not context switching
	LDMIA    sp!,{r0-r12, lr}
	SUBS	pc, lr, #4


_CON_SWAP
	;now context switching
	LDMIA    sp!,{r0-r12,lr}
	SUB		lr, lr, #4
	STR		lr, SAVED_LR		;STR lr, [pc, #SAVED_LR-.-8]


	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	;Change Supervisor mode
	;!!!r12 register don't preserved. (r12 that PC of task)

	MRS             lr, SPSR
	ORR		lr,lr,#0x80	;added 0526 by softmcu
	AND				lr, lr, #0xFFFFFFE0
	ORR				lr, lr, #0x13
	MSR             CPSR_cxsf, lr


	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	;Now  Supervisor mode
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	STR		r12, [sp, #-8]	; saved r12
	LDR		r12, SAVED_LR	;LDR r12, [pc, #SAVED_LR-.-8]
	STMFD	sp!, {r12}		; r12 that PC of task
	SUB		sp, sp, #4		; inclease stack point
	LDMIA	sp!, {r12}		; restore r12
	STMFD	sp!, {lr}		; save lr
	STMFD	sp!, {r0-r12}	; save register file and ret address
	MRS		r4, CPSR
	AND	r4, r4, #0xFFFFFF7F	;added 0526
	STMFD	sp!, {r4}		; save current PSR
	MRS		r4, SPSR		; YYY+
	STMFD	sp!, {r4}		; YYY+ save SPSR


	; OSPrioCur = OSPrioHighRdy
	LDR	r4, addr_OSPrioCur
	LDR	r5, addr_OSPrioHighRdy
	LDRB	r6, [r5]
	STRB	r6, [r4]
	
	; Get current task TCB address
	LDR	r4, addr_OSTCBCur
	LDR	r5, [r4]
	STR	sp, [r5]		; store sp in preempted tasks's TCB

	; Get highest priority task TCB address
	LDR	r6, addr_OSTCBHighRdy
	LDR	r6, [r6]
	LDR	sp, [r6]		; get new task's stack pointer

	; OSTCBCur = OSTCBHighRdy
	STR	r6, [r4]		; set new current task TCB address

	LDMFD	sp!, {r4}		; YYY+
;	AND		r4, r4, #0xFFFFFF20
;	ORR		r4, r4, #0x13
	MSR	SPSR_cxsf, r4		; YYY+
	LDMFD	sp!, {r4}		; YYY+
;	AND		r4, r4, #0xFFFFFF20
;	ORR		r4, r4, #0x13
	MSR	CPSR_cxsf, r4		; YYY+
	LDMFD	sp!, {r0-r12, lr, pc}	; YYY+ softmcu modified


SAVED_LR		DCD		0


;	void DisableInt(void)
;	void EnableInt(void)
;
;	Disable and enable IRQ and FIQ preserving current CPU mode.
;
	EXPORT	DisableInt
DisableInt
	STMDB	sp!, {r0}
	MRS	r0, CPSR
	ORR	r0, r0, #NoInt
	MSR	CPSR_cxsf, r0
	LDMIA	sp!, {r0}
	MOV	pc, lr


	EXPORT	EnableInt
EnableInt
	STMDB	sp!, {r0}
	MRS	r0, CPSR
	AND 	r0, r0, #0x1f
	CMP 	r0, #IRQ32Mode
	LDREQ 	pc, =ARMInIRQMode
	MRS 	r0, CPSR
	BIC	r0, r0, #NoInt
	MSR	CPSR_cxsf, r0
ARMInIRQMode	
	LDMIA	sp!, {r0}
	MOV	pc, lr

	EXPORT	ARMIsDisableInt
ARMIsDisableInt		;return value [disable: 1      enable: 0]
	MRS	a1, CPSR
	AND	a1, a1, #NoInt
	MOV	pc, lr		


;	void OS_TASK_SW(void)
;	
;	Perform a context switch.
;
;	On entry, OSTCBCur and OSPrioCur hold the current TCB and priority
;	and OSTCBHighRdy and OSPrioHighRdy contain the same for the task
;	to be switched to.
;
;	The following code assumes that the virtual memory is directly
;	mapped into  physical memory. If this is not true, the cache must 
;	be flushed at context switch to avoid address aliasing.
	EXPORT	OS_TASK_SW
OS_TASK_SW
	STMFD	sp!, {lr}		; save pc
	STMFD	sp!, {lr}		; save lr
	STMFD	sp!, {r0-r12}	; save register file and ret address
	MRS	r4, CPSR
	STMFD	sp!, {r4}		; save current PSR
	MRS	r4, SPSR		; YYY+
	STMFD	sp!, {r4}		; YYY+ save SPSR

	; OSPrioCur = OSPrioHighRdy
	LDR	r4, addr_OSPrioCur
	LDR	r5, addr_OSPrioHighRdy
	LDRB	r6, [r5]
	STRB	r6, [r4]
	
	; Get current task TCB address
	LDR	r4, addr_OSTCBCur
	LDR	r5, [r4]
	STR	sp, [r5]		; store sp in preempted tasks's TCB

	; Get highest priority task TCB address
	LDR	r6, addr_OSTCBHighRdy
	LDR	r6, [r6]
	LDR	sp, [r6]		; get new task's stack pointer

	; OSTCBCur = OSTCBHighRdy
	STR	r6, [r4]		; set new current task TCB address

	LDMFD	sp!, {r4}		; YYY+
	MSR	SPSR_cxsf, r4		; YYY+
	LDMFD	sp!, {r4}		; YYY+
	MSR	CPSR_cxsf, r4		; YYY+
	LDMFD	sp!, {r0-r12, lr, pc}	; YYY+



;	void OSStartHighRdy(void)
;	
;	Start the task with the highest priority;
;
	EXPORT	OSStartHighRdy
OSStartHighRdy
	LDR     r5,=OSRunning            ;feng port 2.61 add
	LDRB    r4,=01                  ;feng
	STRB    r4,[r5]                 ;feng

	LDR	r4, addr_OSTCBCur	; Get current task TCB address
	LDR	r5, addr_OSTCBHighRdy	; Get highest priority task TCB address

	LDR	r5, [r5]		; get stack pointer
	LDR	sp, [r5]		; switch to the new stack

	STR	r5, [r4]		; set new current task TCB address

	LDMFD	sp!, {r4}		; YYY
	MSR	SPSR_cxsf, r4
	LDMFD	sp!, {r4}		; get new state from top of the stack
	MSR	CPSR_cxsf, r4		; CPSR should be SVC32Mode
	LDMFD	sp!, {r0-r12, lr, pc }	; start the new task

	END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产sm最大网站| 亚洲一区二区三区精品在线| 亚洲高清在线视频| 国产一区二区视频在线播放| 欧美三级蜜桃2在线观看| 精品88久久久久88久久久 | www.亚洲激情.com| 欧美一区二区三区四区在线观看| 最新日韩在线视频| 国内一区二区视频| 91.麻豆视频| 一区二区免费看| jvid福利写真一区二区三区| 欧美zozozo| 日日摸夜夜添夜夜添精品视频| 国产iv一区二区三区| 日韩亚洲欧美在线| 天天影视色香欲综合网老头| 色噜噜狠狠色综合中国| 中文字幕+乱码+中文字幕一区| 久久国产乱子精品免费女| 欧美亚洲动漫制服丝袜| 亚洲欧洲日韩在线| 成人免费黄色在线| 国产日韩一级二级三级| 免费一区二区视频| 91麻豆精品国产91久久久资源速度| 亚洲精品国产精品乱码不99| 成人激情免费电影网址| 亚洲国产电影在线观看| 国产 日韩 欧美大片| 久久久久九九视频| 国产成人精品一区二区三区四区 | 亚洲二区在线视频| 99精品1区2区| 国产精品黄色在线观看| 国产一区在线精品| 国产亚洲精品bt天堂精选| 国产一区不卡在线| 久久久久国产精品厨房| 国产宾馆实践打屁股91| 久久久久国产精品厨房| 国产mv日韩mv欧美| 国产精品国产三级国产aⅴ入口| 成人丝袜视频网| 国产精品你懂的| 色综合咪咪久久| 性做久久久久久久久| 日韩午夜精品电影| 国产伦精一区二区三区| 国产精品国产自产拍高清av王其 | 久久精品国产999大香线蕉| 日韩一级免费观看| 国产精品自产自拍| 亚洲日本在线天堂| 欧美日韩视频在线一区二区| 免费在线观看成人| 亚洲制服欧美中文字幕中文字幕| 欧美另类变人与禽xxxxx| 日韩成人午夜精品| 国产性做久久久久久| 91论坛在线播放| 日本视频在线一区| 欧美激情一区二区| 欧美色精品在线视频| 国产毛片精品一区| 亚洲曰韩产成在线| 亚洲精品一区二区三区福利| eeuss国产一区二区三区| 三级一区在线视频先锋| 久久久蜜桃精品| 欧美日韩的一区二区| 国产一区二区三区香蕉| 伊人一区二区三区| 久久一区二区三区四区| 日本久久一区二区| 国产成人av一区二区| 无吗不卡中文字幕| ●精品国产综合乱码久久久久| 欧美久久久久久蜜桃| 成人动漫一区二区三区| 久久成人久久鬼色| 亚洲久草在线视频| 国产亚洲精品超碰| 91精品国产一区二区三区 | 在线观看日韩精品| 国产麻豆精品在线观看| 亚洲成人av福利| 国产精品动漫网站| 久久综合九色综合欧美就去吻 | 99精品一区二区三区| 蜜桃视频一区二区| 亚洲国产成人精品视频| 国产精品久久久久久久蜜臀 | 国产亚洲欧美激情| 亚洲卡通动漫在线| 国产色综合久久| 欧美成va人片在线观看| 欧美色图免费看| 一本大道av伊人久久综合| 成人午夜视频福利| 国产一区二区伦理| 国产一区二区福利| 国产主播一区二区三区| 久久国产精品色婷婷| 美女视频网站久久| 蜜桃av一区二区| 青青草97国产精品免费观看无弹窗版| 夜夜操天天操亚洲| 一区二区视频在线看| 1000精品久久久久久久久| 国产精品久久久久久久久动漫| 久久久精品综合| 久久久久国色av免费看影院| 亚洲精品一区二区三区四区高清| 日韩一区二区三区观看| 欧美大胆一级视频| 精品日产卡一卡二卡麻豆| 欧美成人三级电影在线| 久久午夜羞羞影院免费观看| 久久先锋影音av鲁色资源网| 国产日产精品1区| 日本一区二区成人在线| 欧美国产1区2区| 中文字幕人成不卡一区| 一区二区三区在线视频观看| 一区av在线播放| 三级不卡在线观看| 久久精品国产99| 国产福利一区二区三区视频在线| 丁香一区二区三区| 91社区在线播放| 欧美日韩不卡一区二区| 欧美一区二区私人影院日本| xfplay精品久久| 国产精品理伦片| 亚洲国产一区二区三区青草影视| 免费不卡在线视频| 国产一级精品在线| 91黄视频在线| 日韩精品一区二区在线| 国产欧美精品一区aⅴ影院| 亚洲色图制服丝袜| 日本亚洲电影天堂| 丁香婷婷综合激情五月色| 在线视频你懂得一区| 18成人在线观看| 亚洲va欧美va国产va天堂影院| 美女视频一区二区| 99久久99久久综合| 91精品在线免费观看| 欧美国产成人精品| 视频在线在亚洲| 国产成人av电影在线播放| 欧美日韩一本到| 国产欧美精品日韩区二区麻豆天美| 亚洲精品乱码久久久久久久久| 蜜臀av国产精品久久久久| 99在线视频精品| 欧美xfplay| 一区二区三区免费| 国产黄色成人av| 制服丝袜成人动漫| 国产精品不卡一区| 精品亚洲aⅴ乱码一区二区三区| 91网站黄www| 久久久噜噜噜久久人人看 | 日韩欧美电影一区| 最新久久zyz资源站| 六月丁香婷婷色狠狠久久| 色综合亚洲欧洲| 久久久国产精华| 麻豆精品一区二区| 欧美另类久久久品| 亚洲精品美腿丝袜| 不卡视频在线观看| 精品久久久久久无| 亚洲mv大片欧洲mv大片精品| 波多野结衣亚洲| 日本一区二区三区视频视频| 日韩激情一二三区| 欧美日韩午夜在线视频| 亚洲欧美日韩中文字幕一区二区三区 | 欧美va天堂va视频va在线| 亚洲一区在线视频观看| 99精品视频一区二区三区| 久久综合九色综合欧美就去吻| 亚洲成人精品在线观看| 色婷婷久久一区二区三区麻豆| 国产亚洲一本大道中文在线| 久久se精品一区精品二区| 欧美一区二区三区喷汁尤物| 午夜欧美视频在线观看| 欧美日韩中文国产| 亚洲国产精品自拍| 91黄视频在线| 亚洲成人www| 91精品国产综合久久香蕉麻豆| 亚洲成a人v欧美综合天堂| 欧美精品亚洲一区二区在线播放|