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

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

?? os_cpu_a.s

?? ucOS的GPS系統
?? S
字號:
;---------------------------------------------------------------------------------------------------------
;	2004.3.17
;---------------------------------------------------------------------------------------------------------
;改寫了OSIntCtxSw函數中棧指針調整的算法,根據:
;	1、IRQStack棧的位置是固定的
;	2、IRQ中斷以后,在調用ISR_IrqHandler函數之前,僅僅有
;	STMFD	sp!, {r0-r12, lr}
;	入棧,計算出棧指針調整的位置。避免了因為OSIntExit等函數經過編譯器優化入棧不固定的問題
;---------------------------------------------------------------------------------------------------------
;
; File: os_cpu_a.s
;
;            Copyright 2002 by Interniche Technologies Inc.  All rights reserved. 
;
;            ARM Specific code for ChronOS port to Samsung/ARM7 board.
;
;

	AREA	|subr|, CODE, READONLY

	EXPORT	OSIntCtxSw
	EXPORT	OS_TASK_SW
	
	EXPORT   INTS_OFF
	EXPORT   INTS_ON


INTS_OFF
   mrs   r0, cpsr          ; current CSR
   mov   r1, r0            ; make a copy for masking
   orr   r1, r1, #0xC0     ; mask off int bits
   msr   CPSR_cxsf, r1     ; disable ints (IRQ and FIQ)
   and   r0, r0, #0x80     ; return FIQ bit from original CSR
   mov   pc,lr             ; return


INTS_ON
   mrs   r0, cpsr          ; current CSR
   bic   r0, r0, #0xC0     ; mask on ints
   msr   CPSR_cxsf, r0     ; enable ints (IRQ and FIQ)
   mov   pc,lr             ; return


	; 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 IRQStack	;FIQ_STACK

OSIntCtxSw
; post FIQ Context switcher. This is called from OSIntExit when a hooked ISR
; wants to return in the context of another task. We load the new tasks context
; (from OSPrioHighRdy) and do the return from interrupt.
;

   ; Get pointer to stack where ISR_FiqHandler saved interrupted context
   ; ISR entry only saves first seven regs and LR.
   ;
	;add      r7, sp, #24   ; save pointer to register file, we must adjust this pointer to the position that just Enter Interrupt
	LDR	sp, =IRQStack	;IRQ_STACK ;test to del it
	sub	r7, sp, #4	;r7 is the position that just Enter Interrupt

	; Change ARM CPU to SVC mode for stack operations.
	; This gets the CPU off the interrupt stack and back to the
	; interrupted task's stack, which is the one we want to alter.
	;
	mrs      r1, SPSR                ; get suspended PSR
	orr      r1, r1, #0xC0           ; disable IRQ, FIQ.
	msr      CPSR_cxsf, r1           ; switch mode (shold be SVC_MODE)

   ; PSR, SP, LR regs are now restored to the interrupted SVC_MODE.
   ; now set up the task's stack frame as OS_TASK_SW does...

;	ldr      r0, [r7, #52]     ; get IRQ's LR (tasks PC) from IRQ stack //r0-r12
	ldr	 r0, [r7]	; get IRQ's LR (tasks PC) from IRQ stack
	sub      r0, r0, #4        ; Actual PC address is (saved_LR - 4)
	STMFD	sp!, {r0}		      ; save task PC
	STMFD	sp!, {lr}		      ; save LR

	sub	lr, r7, #52	;//we save the r0-r12 when we enter IRQ.
;	mov      lr, r7            ; save FIQ stack ptr in LR (going to nuke r7)
	ldmfd    lr!, {r0-r12}      ; get saved registers from FIQ stack
	STMFD	sp!, {r0-r12}	      ; save registers on task stack

   ; save PSR and PSR for task on task's stack
	MRS	r4, CPSR
	bic   r4, r4, #0xC0  ; leave interrupt bits in enabled mode
	STMFD	sp!, {r4}		; save task's current PSR
	MRS	r4, SPSR
	STMFD	sp!, {r4}		; SPSR too

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

	; Get new 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}
	MSR	SPSR_cxsf, r4
	LDMFD	sp!, {r4}
	BIC   r4, r4, #0xC0         ; we must exit to new task with ints enabled
	MSR	CPSR_cxsf, r4

	LDMFD	sp!, {r0-r12, lr, pc}


;	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.


OS_TASK_SW
	STMFD	sp!, {lr}		; save pc
	STMFD	sp!, {lr}		; save lr
	STMFD	sp!, {r0-r12}	; save registers and ret address
	MRS	r4, CPSR
	STMFD	sp!, {r4}		; save current PSR
	MRS	r4, SPSR	
	STMFD	sp!, {r4}		; 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

   ; restore task's mode regsiters
	LDMFD	sp!, {r4}
	MSR	SPSR_cxsf, r4
	LDMFD	sp!, {r4}
	MSR	CPSR_cxsf, r4

   ; return in new task context
	LDMFD	sp!, {r0-r12, lr, pc}



;	void OSStartHighRdy(void)
;	
;	Start the task with the highest priority;
;
	EXPORT	OSStartHighRdy
OSStartHighRdy
	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一区二区三区免费野_久草精品视频
成人av第一页| 国产精品亚洲视频| 亚洲欧洲成人精品av97| 久久久av毛片精品| 国产三级久久久| 亚洲国产激情av| 国产精品视频第一区| 国产精品久久久久久久第一福利 | 国产剧情一区二区三区| 看国产成人h片视频| 免费观看一级特黄欧美大片| 蜜桃视频在线观看一区| 黄页视频在线91| 国产99久久久国产精品潘金| 国产麻豆成人精品| heyzo一本久久综合| 在线观看一区不卡| 日韩欧美一区在线| 欧美国产日韩a欧美在线观看| 中文字幕日韩av资源站| 亚洲精品免费一二三区| 日韩av不卡一区二区| 国产一区三区三区| 一本色道久久综合亚洲91| 精品婷婷伊人一区三区三| 日韩精品在线看片z| 国产精品久线观看视频| 午夜影院在线观看欧美| 狠狠色丁香婷综合久久| av男人天堂一区| 欧美日韩国产综合一区二区| 久久久三级国产网站| 亚洲欧美区自拍先锋| 麻豆精品视频在线观看视频| 波多野结衣在线aⅴ中文字幕不卡| 欧洲在线/亚洲| 久久久久久久久久美女| 亚洲成人av免费| 波多野结衣中文一区| 日韩欧美一区在线观看| 专区另类欧美日韩| 国产伦理精品不卡| 555www色欧美视频| 日韩一区欧美小说| 国产经典欧美精品| 91精品中文字幕一区二区三区| 136国产福利精品导航| 久久精品国产久精国产| 欧美系列在线观看| 欧美国产激情二区三区 | 精品国产a毛片| 亚洲乱码国产乱码精品精小说| 精品一区二区三区视频 | 久久99久久久久久久久久久| 99免费精品视频| 久久久久国产一区二区三区四区| 午夜激情久久久| 色拍拍在线精品视频8848| 欧美国产一区视频在线观看| 男女激情视频一区| 4438x成人网最大色成网站| 一区二区三区成人| 色偷偷久久一区二区三区| 欧美美女直播网站| 亚洲第一主播视频| 日本电影欧美片| 亚洲精品精品亚洲| 91麻豆6部合集magnet| 中文天堂在线一区| 高清成人在线观看| 欧美激情中文不卡| 国产不卡高清在线观看视频| 精品国产污污免费网站入口| 青草国产精品久久久久久| 精品污污网站免费看| 亚洲成a人片在线不卡一二三区| 91亚洲精品久久久蜜桃网站| 亚洲天堂免费在线观看视频| 91在线高清观看| 亚洲美女偷拍久久| 欧洲av一区二区嗯嗯嗯啊| 亚洲一区二区三区爽爽爽爽爽| 欧美综合久久久| 亚洲高清免费观看高清完整版在线观看| 99国产欧美久久久精品| 亚洲黄一区二区三区| 欧美日韩中文字幕一区| 日本在线不卡视频| 精品国产99国产精品| 国产成人综合精品三级| 国产精品免费丝袜| 91福利在线导航| 日韩av在线发布| 久久久午夜精品| 国产**成人网毛片九色| 亚洲免费视频中文字幕| 在线观看91av| 国产一区二区电影| 尤物av一区二区| 在线不卡a资源高清| 国产在线一区观看| 亚洲欧洲日产国产综合网| 欧美午夜理伦三级在线观看| 日韩不卡一区二区| 中文字幕免费一区| 欧美日韩国产首页| 国产一二三精品| 亚洲色图欧洲色图婷婷| 欧美性一二三区| 国产美女一区二区| 亚洲成人福利片| 久久久精品黄色| 欧美怡红院视频| 国产尤物一区二区在线| 亚洲在线观看免费视频| 久久久综合激的五月天| 欧美性猛交xxxx乱大交退制版 | 日本一区二区三区电影| 欧美午夜精品久久久久久超碰 | 亚洲视频图片小说| 欧美成人猛片aaaaaaa| 91麻豆swag| 国产黄色精品网站| 毛片av一区二区| 亚洲一区二区三区三| 国产精品久久国产精麻豆99网站| 欧美精品日韩综合在线| av中文字幕不卡| 久99久精品视频免费观看| 亚洲精品国久久99热| 欧美电影精品一区二区| 欧美精品第1页| 91免费版pro下载短视频| 成人动漫一区二区三区| 精品亚洲免费视频| 奇米精品一区二区三区四区 | 国产精品黄色在线观看 | 国产福利91精品一区二区三区| 亚洲国产精品一区二区久久| 久久久久国产免费免费| 欧美一二三四区在线| 欧美少妇bbb| 欧美日韩国产影片| 欧美日韩另类国产亚洲欧美一级| av在线播放一区二区三区| 国产激情偷乱视频一区二区三区| 久久精品国产精品亚洲综合| 日韩av电影免费观看高清完整版 | 狠狠色综合播放一区二区| 五月婷婷色综合| 午夜欧美一区二区三区在线播放| 一区二区激情视频| 亚洲自拍偷拍综合| 亚洲一区免费在线观看| 午夜视频在线观看一区二区| 亚洲成人自拍一区| 日本不卡高清视频| 久久草av在线| 国产 欧美在线| 91一区在线观看| 欧美色偷偷大香| 91精品国产日韩91久久久久久| 91精品国产综合久久久蜜臀图片| 欧美电影在哪看比较好| 欧美videofree性高清杂交| 精品日产卡一卡二卡麻豆| 久久亚区不卡日本| 国产精品区一区二区三| 亚洲激情一二三区| 日产精品久久久久久久性色| 青青草一区二区三区| 精品在线免费视频| 国产一区二区三区久久久| 国产精品白丝jk黑袜喷水| 91丨porny丨中文| 欧美日韩视频在线一区二区| 日韩一区二区中文字幕| 日韩精品一区国产麻豆| 国产精品免费丝袜| 五月激情综合婷婷| 国产精品一区二区男女羞羞无遮挡 | 成人免费视频视频| 91国偷自产一区二区开放时间 | 久久99精品国产.久久久久久| 国产毛片精品一区| 色av综合在线| 26uuu欧美日本| 亚洲一区成人在线| 国产福利91精品一区| 在线观看日产精品| 久久精品在线观看| 亚洲成人综合在线| 成人精品国产福利| 777久久久精品| 日韩伦理免费电影| 狠狠v欧美v日韩v亚洲ⅴ| 欧美中文字幕一二三区视频| 久久综合色播五月| 午夜影院在线观看欧美| 丁香网亚洲国际|