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

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

?? portasm.s

?? STM32 FreeRTOS v5.2移植源代碼
?? S
字號:
/*
	FreeRTOS.org V5.2.0 - Copyright (C) 2003-2009 Richard Barry.

	This file is part of the FreeRTOS.org distribution.

	FreeRTOS.org is free software; you can redistribute it and/or modify it 
	under the terms of the GNU General Public License (version 2) as published
	by the Free Software Foundation and modified by the FreeRTOS exception.

	FreeRTOS.org is distributed in the hope that it will be useful,	but WITHOUT
	ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
	FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
	more details.

	You should have received a copy of the GNU General Public License along 
	with FreeRTOS.org; if not, write to the Free Software Foundation, Inc., 59 
	Temple Place, Suite 330, Boston, MA  02111-1307  USA.

	A special exception to the GPL is included to allow you to distribute a 
	combined work that includes FreeRTOS.org without being obliged to provide
	the source code for any proprietary components.  See the licensing section
	of http://www.FreeRTOS.org for full details.


	***************************************************************************
	*                                                                         *
	* Get the FreeRTOS eBook!  See http://www.FreeRTOS.org/Documentation      *
	*                                                                         *
	* This is a concise, step by step, 'hands on' guide that describes both   *
	* general multitasking concepts and FreeRTOS specifics. It presents and   *
	* explains numerous examples that are written using the FreeRTOS API.     *
	* Full source code for all the examples is provided in an accompanying    *
	* .zip file.                                                              *
	*                                                                         *
	***************************************************************************

	1 tab == 4 spaces!

	Please ensure to read the configuration and relevant port sections of the
	online documentation.

	http://www.FreeRTOS.org - Documentation, latest information, license and
	contact details.

	http://www.SafeRTOS.com - A version that is certified for use in safety
	critical systems.

	http://www.OpenRTOS.com - Commercial support, development, porting,
	licensing and training services.
*/

#include "FreeRTOSConfig.h"

	.extern pxCurrentTCB
	.extern vTaskSwitchContext
	.extern vTaskIncrementTick
	.extern vPortISRHandler

	.global vPortStartFirstTask
	.global vPortYield
	.global vPortTickISR
	.global vPortISRWrapper
	.global vPortSaveFPURegisters
	.global vPortRestoreFPURegisters

.set	BChainField, 0
.set	NextLRField, BChainField + 4
.set	MSRField,    NextLRField + 4
.set	PCField,     MSRField    + 4
.set	LRField,     PCField     + 4
.set	CTRField,    LRField     + 4
.set	XERField,    CTRField    + 4
.set	CRField,     XERField    + 4
.set	USPRG0Field, CRField     + 4
.set	r0Field,     USPRG0Field + 4
.set	r2Field,     r0Field     + 4
.set	r3r31Field,  r2Field     + 4
.set	IFrameSize,  r3r31Field  + ( ( 31 - 3 ) + 1 ) * 4


.macro portSAVE_STACK_POINTER_AND_LR

	/* Get the address of the TCB. */
	xor		R0, R0, R0
	addis	R2, R0, pxCurrentTCB@ha
	lwz		R2,	pxCurrentTCB@l( R2 )

	/* Store the stack pointer into the TCB */
	stw		SP,	0( R2 )

	/* Save the link register */
	stwu	R1, -24( R1 )
	mflr	R0
	stw		R31, 20( R1 )
	stw		R0, 28( R1 )
	mr		R31, r1

.endm

.macro portRESTORE_STACK_POINTER_AND_LR

	/* Restore the link register */
	lwz		R11, 0( R1 )
	lwz		R0, 4( R11 )
	mtlr	R0
	lwz		R31, -4( R11 )
	mr		R1, R11

	/* Get the address of the TCB. */
	xor		R0, R0, R0
	addis   SP, R0, pxCurrentTCB@ha
	lwz		SP,	pxCurrentTCB@l( R1 )

	/* Get the task stack pointer from the TCB. */
	lwz		SP, 0( SP )

.endm


vPortStartFirstTask:

	/* Get the address of the TCB. */
	xor		R0, R0, R0
    addis   SP, R0, pxCurrentTCB@ha
    lwz		SP,	pxCurrentTCB@l( SP )

	/* Get the task stack pointer from the TCB. */
	lwz		SP, 0( SP )
	
	/* Restore MSR register to SRR1. */
	lwz		R0, MSRField(R1)
	mtsrr1	R0
	
	/* Restore current PC location to SRR0. */
	lwz		R0, PCField(R1)
	mtsrr0	R0

	/* Save  USPRG0 register */
	lwz		R0, USPRG0Field(R1)
	mtspr	0x100,R0
	
	/* Restore Condition register */
	lwz		R0, CRField(R1)
	mtcr	R0
	
	/* Restore Fixed Point Exception register */
	lwz		R0, XERField(R1)
	mtxer	R0
	
	/* Restore Counter register */
	lwz		R0, CTRField(R1)
	mtctr	R0
	
	/* Restore Link register */
	lwz		R0, LRField(R1)
	mtlr	R0
	
	/* Restore remaining GPR registers. */
	lmw	R3,r3r31Field(R1)
	
	/* Restore r0 and r2. */
	lwz		R0, r0Field(R1)
	lwz		R2, r2Field(R1)
	
	/* Remove frame from stack */
	addi	R1,R1,IFrameSize

	/* Return into the first task */
	rfi



vPortYield:

	portSAVE_STACK_POINTER_AND_LR
	bl vTaskSwitchContext
	portRESTORE_STACK_POINTER_AND_LR
	blr

vPortTickISR:

	portSAVE_STACK_POINTER_AND_LR
	bl vTaskIncrementTick
	
	#if configUSE_PREEMPTION == 1
		bl vTaskSwitchContext
	#endif

	/* Clear the interrupt */
	lis		R0, 2048
	mttsr	R0

	portRESTORE_STACK_POINTER_AND_LR
	blr

vPortISRWrapper:

	portSAVE_STACK_POINTER_AND_LR
	bl vPortISRHandler
	portRESTORE_STACK_POINTER_AND_LR
	blr

#if configUSE_FPU == 1

vPortSaveFPURegisters:

	/* Enable APU and mark FPU as present. */
	mfmsr	r0
	xor		r30, r30, r30
	oris	r30, r30, 512
	ori		r30, r30, 8192
	or		r0, r0, r30
	mtmsr	r0

	/* Buffer address is in r3.  Save each flop register into an offset from
	this buffer address. */
	stfs	f0, 0(r3)
	stfs	f1, 4(r3)
	stfs	f2, 8(r3)
	stfs	f3, 12(r3)
	stfs	f4, 16(r3)
	stfs	f5, 20(r3)
	stfs	f6, 24(r3)
	stfs	f7, 28(r3)
	stfs	f8, 32(r3)
	stfs	f9, 36(r3)
	stfs	f10, 40(r3)
	stfs	f11, 44(r3)
	stfs	f12, 48(r3)
	stfs	f13, 52(r3)
	stfs	f14, 56(r3)
	stfs	f15, 60(r3)
	stfs	f16, 64(r3)
	stfs	f17, 68(r3)
	stfs	f18, 72(r3)
	stfs	f19, 76(r3)
	stfs	f20, 80(r3)
	stfs	f21, 84(r3)
	stfs	f22, 88(r3)
	stfs	f23, 92(r3)
	stfs	f24, 96(r3)
	stfs	f25, 100(r3)
	stfs	f26, 104(r3)
	stfs	f27, 108(r3)
	stfs	f28, 112(r3)
	stfs	f29, 116(r3)
	stfs	f30, 120(r3)
	stfs	f31, 124(r3)
	
	/* Also save the FPSCR. */
	mffs	f31
	stfs	f31, 128(r3)

	blr

#endif /* configUSE_FPU. */


#if configUSE_FPU == 1

vPortRestoreFPURegisters:

	/* Enable APU and mark FPU as present. */
	mfmsr	r0
	xor		r30, r30, r30
	oris	r30, r30, 512
	ori		r30, r30, 8192
	or		r0, r0, r30
	mtmsr	r0


	/* Buffer address is in r3.  Restore each flop register from an offset
	into this buffer. 
	
	First the FPSCR. */
	lfs		f31, 128(r3)
	mtfsf	f31, 7

	lfs		f0, 0(r3)
	lfs		f1, 4(r3)
	lfs		f2, 8(r3)
	lfs		f3, 12(r3)
	lfs		f4, 16(r3)
	lfs		f5, 20(r3)
	lfs		f6, 24(r3)
	lfs		f7, 28(r3)
	lfs		f8, 32(r3)
	lfs		f9, 36(r3)
	lfs		f10, 40(r3)
	lfs		f11, 44(r3)
	lfs		f12, 48(r3)
	lfs		f13, 52(r3)
	lfs		f14, 56(r3)
	lfs		f15, 60(r3)
	lfs		f16, 64(r3)
	lfs		f17, 68(r3)
	lfs		f18, 72(r3)
	lfs		f19, 76(r3)
	lfs		f20, 80(r3)
	lfs		f21, 84(r3)
	lfs		f22, 88(r3)
	lfs		f23, 92(r3)
	lfs		f24, 96(r3)
	lfs		f25, 100(r3)
	lfs		f26, 104(r3)
	lfs		f27, 108(r3)
	lfs		f28, 112(r3)
	lfs		f29, 116(r3)
	lfs		f30, 120(r3)
	lfs		f31, 124(r3)

	blr

#endif /* configUSE_FPU. */


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产呦萝稀缺另类资源| 免费的国产精品| 精品成人免费观看| 欧美一级高清片| 3751色影院一区二区三区| 欧美性高清videossexo| 色国产综合视频| 在线观看日韩精品| 欧美视频你懂的| 欧美一区二区高清| 欧美一区二区高清| 26uuu色噜噜精品一区二区| 精品国产污网站| 国产亚洲欧美激情| 国产精品盗摄一区二区三区| 国产精品成人一区二区艾草| 亚洲视频免费在线观看| 亚洲精品成a人| 午夜久久久久久| 久久激五月天综合精品| 国产电影精品久久禁18| 成+人+亚洲+综合天堂| 99国产一区二区三精品乱码| 一本大道av一区二区在线播放| 91蜜桃免费观看视频| 在线亚洲+欧美+日本专区| 欧美日韩小视频| 精品国产乱码久久久久久久| 国产精品家庭影院| 亚洲成av人片一区二区梦乃| 精品一区二区三区视频在线观看| 国产麻豆91精品| 在线一区二区观看| 日韩精品一区在线| 国产精品久久久久影院| 天天色图综合网| 国产91丝袜在线观看| 欧美午夜片在线看| 久久综合成人精品亚洲另类欧美 | 精品国产3级a| 亚洲欧美日韩久久精品| 久久97超碰色| 在线一区二区三区| 国产亚洲成aⅴ人片在线观看| 亚洲欧美另类综合偷拍| 久草在线在线精品观看| 91视频免费播放| 久久一日本道色综合| 午夜精品在线看| 91在线丨porny丨国产| 日韩美女视频在线| 亚洲国产一区二区视频| 成a人片亚洲日本久久| 91精品国产综合久久福利 | 日本丶国产丶欧美色综合| 日韩欧美黄色影院| 亚洲国产成人av好男人在线观看| 国产盗摄视频一区二区三区| 在线成人午夜影院| 尤物在线观看一区| av欧美精品.com| 国产喂奶挤奶一区二区三区| 免费日本视频一区| 欧美日韩一区国产| 亚洲在线一区二区三区| 成人福利视频在线看| 久久综合九色综合久久久精品综合| 亚洲大尺度视频在线观看| 91蜜桃网址入口| 中文字幕亚洲电影| av在线综合网| 日本一区二区高清| 国产成人亚洲综合a∨猫咪| 日韩欧美一区二区在线视频| 日韩影院精彩在线| 91精品国产综合久久久久久漫画| 一区二区在线免费观看| 色一情一伦一子一伦一区| 亚洲视频1区2区| av成人免费在线| 伊人性伊人情综合网| 在线观看日韩高清av| 亚洲男帅同性gay1069| 99精品欧美一区二区三区综合在线| 欧美激情在线一区二区三区| 国产美女在线观看一区| 久久精品一级爱片| 99精品久久只有精品| 亚洲素人一区二区| 91国产免费观看| 五月综合激情日本mⅴ| 911精品国产一区二区在线| 日韩国产欧美一区二区三区| 3d成人动漫网站| 国产精品影视网| 亚洲欧洲性图库| 在线视频国内自拍亚洲视频| 五月天亚洲精品| 2024国产精品| 99视频在线观看一区三区| 亚洲人成精品久久久久久| 欧美影院一区二区| 精品一区二区三区久久| 中文字幕免费不卡| 欧美性色黄大片| 久久国产精品72免费观看| 国产精品伦理在线| 欧美精品一卡二卡| 国产福利视频一区二区三区| 一区二区三区中文在线观看| 欧美日韩国产美女| 国产精品18久久久久久久网站| 国产精品二三区| 91.com视频| 成人不卡免费av| 日本女优在线视频一区二区| 国产欧美一区二区精品性色| 欧美系列一区二区| 国产精品综合在线视频| 亚洲成人动漫精品| 国产欧美1区2区3区| 3atv在线一区二区三区| 不卡一卡二卡三乱码免费网站| 无吗不卡中文字幕| 中文字幕一区不卡| 亚洲精品一区二区三区影院| 在线观看一区日韩| 成人午夜av电影| 久久不见久久见中文字幕免费| 亚洲三级小视频| 国产欧美视频一区二区三区| 91精品久久久久久蜜臀| 91丨九色丨尤物| 成人福利视频在线看| 久久成人麻豆午夜电影| 亚洲午夜一区二区三区| 国产精品视频九色porn| 久久综合一区二区| 欧美精品久久一区二区三区| 色综合久久久久综合体桃花网| 国产在线不卡一卡二卡三卡四卡| 五月天亚洲精品| 亚洲国产你懂的| 亚洲精品v日韩精品| 亚洲日本欧美天堂| 国产精品入口麻豆原神| 国产亚洲精品久| 国产日韩精品一区| 精品欧美乱码久久久久久1区2区| 欧美色图在线观看| 欧美影视一区二区三区| 色丁香久综合在线久综合在线观看| 高潮精品一区videoshd| 国产精品资源网| 国产成人精品免费| 国产精品12区| 成人综合在线观看| 成人av网站免费| 91免费看片在线观看| 91免费在线看| 在线观看国产精品网站| 欧美在线短视频| 欧美日韩国产欧美日美国产精品| 欧美日韩大陆在线| 制服丝袜亚洲色图| 日韩一区二区免费在线电影| 制服丝袜亚洲播放| 26uuu国产一区二区三区| 久久久噜噜噜久噜久久综合| 2024国产精品视频| 自拍偷拍欧美激情| 一个色在线综合| 日韩av一区二区在线影视| 老司机精品视频线观看86| 久久99国产精品久久99 | 成人国产免费视频| 一本高清dvd不卡在线观看| 欧美色老头old∨ideo| 日韩女优制服丝袜电影| 2017欧美狠狠色| 亚洲精品写真福利| 日本一区中文字幕| 成人妖精视频yjsp地址| 在线中文字幕一区二区| 678五月天丁香亚洲综合网| 精品国产百合女同互慰| 日韩美女久久久| 美女在线视频一区| 不卡一区中文字幕| 欧美一区二区三区视频免费| 欧美精品一区二区高清在线观看| 亚洲天堂2016| 国内外成人在线| 欧美日韩国产首页| 日本一区二区三区久久久久久久久不 | 青青国产91久久久久久| 国产成人综合自拍| 欧美欧美欧美欧美| 国产精品入口麻豆原神| 免费成人av在线播放|