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

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

?? mmu400alib.s

?? vxworks的源代碼
?? S
?? 第 1 頁 / 共 2 頁
字號:
/* mmu400ALib.s - functions common to all IBM 4xx MMUs *//* Copyright 1984-2002 Wind River Systems, Inc. */	.data	.globl	copyright_wind_river	.long	copyright_wind_river/*modification history--------------------01b,20may02,pch  SPR 75927: adjust stack pointer in TLB miss handlers01a,17apr02,jtp  derived from mmuPpcALib.s*//* * This file contains assembly-language functions common to all 4xx-derived * MMUs. This includes 405, 405F, and 440. Additional implementation * will be found in family-specific files (e.g. mmu405ALib.s). Along * with mmuPpcALib.s and mmuPpcLib.c, a complete MMU implementation is * present. * * Note: The PPC440 updates the MMUCR[STID] field on reading TLB * word 0, and uses it on writing TLB word 0. The 405, on the other * hand, uses the PID register to tag the address space id on writing * the hi TLB word (word 0). So long as we read then write the TLB word * 0 in the miss handlers, similar code will automatically work for * both PPC405 and PPC440. */#if (CPU==PPC440)# include <arch/ppc/mmu440Lib.h>#endif /* CPU *//* defines *//* * The miss handler for PPC405/405F and 440 are very similar, so they * have been parameterized with preprocessor variables so as to be * conditionally assembled for each CPU type. * * configuration parameters for the common 400 TLB Miss handler code */#if	((CPU == PPC405) || (CPU == PPC405F))# define TLB_V_BIT	25	/* valid bit is at bit 25 of word 0 */# define TLB_N_WORDS	2	/* two TLB words, hi (0) and lo (1) */# define L2_ENTRY_SIZE	3	/* power of 2 => 8 bytes */# undef TLB_MIN_SUPPORT		/* use TLB indexes from 0 to max */# undef CACHE_STATE_VAR#elif	((CPU == PPC440))# define TLB_V_BIT	22	/* valid bit is at bit 22 of word 0 */# define TLB_W_BIT	20	/* writethru bit is at bit 19 of word 2 */# define TLB_I_BIT	21	/* cache inhibit bit is at bit 20 of word 2 */# define TLB_N_WORDS	3	/* three TLB words, 0, 1, and 2 */# define L2_ENTRY_SIZE	4	/* power of 2 => 16 bytes */# define TLB_MIN_SUPPORT	/* use TLB indexes from mmuPpcTlbMin to max */# define CACHE_STATE_VAR cache440Enabled	/* if TRUE cache is enabled */#else	/* CPU */# error "CPU value not supported"#endif	/* CPU *//* * stack frame used for saving and restoring registers during the miss calls */#define R18_OFFSET	(TLB_FRAME_SIZE - 0x04)#ifdef DONT_USE_SPRG4_7			/* use stack to save registers */# define CR_OFFSET	(TLB_FRAME_SIZE - 0x08)# define R19_OFFSET	(TLB_FRAME_SIZE - 0x0C)# define R20_OFFSET	(TLB_FRAME_SIZE - 0x10)# define R21_OFFSET	(TLB_FRAME_SIZE - 0x14)# if     (TLB_N_WORDS == 3)#  define R22_OFFSET	(TLB_FRAME_SIZE - 0x18)#  define TLB_FRAME_SIZE	0x18# else	/* TLB_N_WORDS == 3 */#  define TLB_FRAME_SIZE	0x14# endif	/* TLB_N_WORDS == 3 */#else# if     (TLB_N_WORDS == 3)#  define R22_OFFSET	(TLB_FRAME_SIZE - 0x08)#  define TLB_FRAME_SIZE	0x08# else	/* TLB_N_WORDS == 3 */#  define TLB_FRAME_SIZE	0x04# endif	/* TLB_N_WORDS == 3 */#endif /* DONT_USE_SPRG4_7 *//* externals */	DATA_IMPORT(mmuPpcTlbNext)#ifdef TLB_MIN_SUPPORT	DATA_IMPORT(mmuPpcTlbMin)#endif /* TLB_MIN_SUPPORT */#ifdef CACHE_STATE_VAR	DATA_IMPORT(CACHE_STATE_VAR)#endif /* TLB_MIN_SUPPORT */	DATA_IMPORT(mmuAddrMapArray)#ifdef DEBUG_MISS_HANDLER	DATA_IMPORT(mmuPpcITlbMisses)	DATA_IMPORT(mmuPpcDTlbMisses)	DATA_IMPORT(mmuPpcITlbErrors)	DATA_IMPORT(mmuPpcDTlbErrors)	DATA_IMPORT(mmuPpcITlbMissArray)	DATA_IMPORT(mmuPpcDTlbMissArray)#endif /* DEBUG_MISS_HANDLER *//* globals */	FUNC_EXPORT(mmuPpcPidSet)		/* set the PID register */	FUNC_EXPORT(mmuPpcPidGet)		/* get the PID register */	FUNC_EXPORT(mmuPpcTlbSearch)		/* search TLB for EA */	FUNC_EXPORT(mmuPpcEsrGet)		/* get ESR */	FUNC_EXPORT(mmuPpcMsrGet)		/* get MSR */	FUNC_EXPORT(mmuPpcInstTlbMissHandler)	/* instr tlb miss handler */	FUNC_EXPORT(mmuPpcDataTlbMissHandler)	/* data tlb miss handler */	_WRS_TEXT_SEG_START/********************************************************************************* mmuPpcPidSet - set the PID register**/FUNC_BEGIN(mmuPpcPidSet)	mtspr	PID, r3	blrFUNC_END(mmuPpcPidSet)/********************************************************************************* mmuPpcPidGet - get the PID register**/FUNC_BEGIN(mmuPpcPidGet)	mfspr	r3, PID	blrFUNC_END(mmuPpcPidGet)/********************************************************************************* mmuPpcTlbSearch - TLB search indexed**	The TLB is search for a valid entry which translates EA and PID.*	Note this just does the search; different processors expect*	other registers -- PID or MMUCR, for example -- to be set up*	as a precondition to calling this function.** INPUTS: effectiveAddr (EA) in r3** USAGE: int mmuPpcTlbSearch (void * effAddr);** RETURNS: index of  valid TLB entry if found. The lower 6 bits of the index*	   value specify the index of the TLB entry found.*	   returns -1 if no valid TID entry matching EA and PID is found.**/FUNC_BEGIN(mmuPpcTlbSearch)	tlbsx.	r3, 0, r3 	bne	tlbe_notfound	blr		/* index is in r3 */tlbe_notfound:	li	r3, -1	blrFUNC_END(mmuPpcTlbSearch)/********************************************************************************* mmuPpcEsrGet - Get Exception Syndrome register** returns: value of ESR** usage: u_int mmuPpcEsrGet ();**/FUNC_BEGIN(mmuPpcEsrGet)	mfspr	r3, ESR	blrFUNC_END(mmuPpcEsrGet)/********************************************************************************* mmuPpcMsrGet - Get Machine Status Register** returns: value of MSR** usage: u_int mmuPpcMsrGet ();**/FUNC_BEGIN(mmuPpcMsrGet)	mfmsr	r3	blrFUNC_END(mmuPpcMsrGet)/********************************************************************************* mmuPpcInstTlbMissHandler - Instruction TLB Miss handler for PPC4XX** If the define DONT_USE_SPRG4_7 is not defined, then the miss handler uses* SPRG 4 - 7 to save registers it uses.** Note: mmu4??LibInit() installs this handler by plugging in a 'ba* mmuPpcInstTlbMissHandler' instruction at the miss vector address. As a* result, none of the standard excEnt()/excExit() processing has been* done.  This routine cannot be branched to if >32MB from the vector* page.  Also note that the stack is used for saving at least registers* R18 and (for PPC440) R22.** for SPR 75927: adjust the stack pointer at entry & exit instead of using* negative offsets.*/FUNC_BEGIN(mmuPpcInstTlbMissHandler)	addi	sp, sp, -TLB_FRAME_SIZE	stw	r18, R18_OFFSET(r1)	/* save R18 */	mfcr	r18	#ifdef DONT_USE_SPRG4_7         /* use stack to save registers */	stw	r18, CR_OFFSET(r1)  /* save CR (because we modify it later) */	stw	r19, R19_OFFSET(r1)	/* save R19 */	stw	r20, R20_OFFSET(r1)	/* save R20 */	stw	r21, R21_OFFSET(r1)	/* save R21 */#else                           /* use SPRG4-7 to save registers */# ifdef SPRG7_W        mtspr   SPRG4_W, r18      /* SPRG4 = CR */        mtspr   SPRG5_W, r19      /* SPRG5 = R19 */        mtspr   SPRG6_W, r20      /* SPRG6 = R20 */        mtspr   SPRG7_W, r21      /* SPRG7 = R21 */# else        mtspr   SPRG4, r18      /* SPRG4 = CR */        mtspr   SPRG5, r19      /* SPRG5 = R19 */        mtspr   SPRG6, r20      /* SPRG6 = R20 */        mtspr   SPRG7, r21      /* SPRG7 = R21 */# endif#endif#if     (TLB_N_WORDS == 3)	stw	r22, R22_OFFSET(r1)	/* save R22 */#endif	/* TLB_N_WORDS == 3 */	mfsrr0	r18  	 	/* load R18 with instr. miss eff. address */	mfspr	r19, PID 	/* read current PID register */		lis	r20, HI(mmuAddrMapArray)	/* read addr of mmu map table */	ori	r20, r20, LO(mmuAddrMapArray) 	li	r21, 2		/* size of each addr map entry in power of 2 */	slw	r19, r19, r21	add	r20, r20, r19	/* index into mmu map table */	lwz	r20, 0(r20)	/* read pointer to MMU_TRANS_TBL struct */	lwz	r20, 0(r20)	/* read pointer to Level 1 table */	mr	r19, r18	/* get instr miss addr */	rlwinm	r19, r19, 10, 22, 31	/* get index into level 1 table */	slw	r19, r19, r21	/* multiply index by size of L1 entry */	add	r20, r20, r19	/* index into L1 table */	lwz	r20, 0(r20)	/* load Level 1 page entry */	rlwinm. r19, r20, 0, 31, 31	/* test Valid bit */	beq	mmuPpcInstTlbError	/* if entry not valid then exit */	rlwinm	r20, r20, 0, 0, 29	/* mask of lower 2 bits */					/* r20 now has the base of l2 table */	mr	r19, r18	/* get instr miss addr */	rlwinm	r19, r19, 20, 22, 31 /* get index into level 2 table */	li	r21, L2_ENTRY_SIZE	/* each L2 entry is 2^size words long */	slw	r19, r19, r21	/* multiply index by size of L2 entry */	add	r18, r20, r19	/* index into L2 table */#if	(TLB_N_WORDS == 3)	lwz 	r22, 8(r18)	/* word 2 of tlb entry */# if	defined(CACHE_STATE_VAR)	lis 	r20, HI(CACHE_STATE_VAR)	ori	r20, r20, LO(CACHE_STATE_VAR)	lwz	r20, 0(r20)	/* read value of cache state variable */	cmpwi	r20, 0		/* compare with zero (FALSE) */	bne	0f		/* caching allowed, skip ahead */	/* caching not allowed, turn off writethru, turn on inhibit */	rlwinm  r22, r22, 0, TLB_W_BIT+1, TLB_W_BIT-1	lis	r20, HI(MMU_STATE_CACHEABLE_NOT)	ori	r20, r20, LO(MMU_STATE_CACHEABLE_NOT)	or	r22, r22, r200:#endif /* defined(CACHE_STATE_VAR) */#endif	/* TLB_N_WORDS == 3 */	lwz	r20, 0(r18)	/* word 0 of tlb entry */	lwz 	r21, 4(r18)	/* word 1 of tlb entry */	rlwinm. r19, r20, 0, TLB_V_BIT, TLB_V_BIT	/* test Valid bit */	beq	mmuPpcInstTlbError	/* if entry not valid then exit */#ifdef DEBUG_MISS_HANDLER	lis 	r19, HI(mmuPpcITlbMisses)	ori	r19, r19, LO(mmuPpcITlbMisses)	lwz	r18, 0(r19)	/* read value of tlb miss counter */	addi	r18, r18, 1	/* increment tlb replacement counter */	stw	r18, 0(r19)	/* write back to memory */	subi	r18, r18, 1	/* array is zero-based */	rlwinm	r18, r18, 0, 24, 31 /* miss count modulo 256 */	li	r19, 2		/* multiply by sizeof pointer */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜激情片| 精品久久久久久久一区二区蜜臀| 欧美日韩中文字幕精品| 欧美va在线播放| 亚洲一区二三区| 不卡一区中文字幕| 日韩欧美第一区| 亚洲午夜久久久久久久久电影网| 岛国av在线一区| 精品国免费一区二区三区| 亚洲小说欧美激情另类| 91在线观看下载| 欧美高清在线一区二区| 理论片日本一区| 3d动漫精品啪啪一区二区竹菊| 国产精品久久影院| 国产成人av资源| 精品国产乱子伦一区| 日日欢夜夜爽一区| 欧美精品亚洲二区| 午夜精品久久久久久不卡8050| 91色在线porny| 国产精品福利一区| av爱爱亚洲一区| 中文字幕中文字幕在线一区| 岛国精品在线观看| 亚洲国产精品国自产拍av| 国产乱一区二区| 国产日产欧产精品推荐色| 国产一区二区精品久久91| 久久久一区二区三区捆绑**| 国内外成人在线| 久久嫩草精品久久久久| 国产精品亚洲第一区在线暖暖韩国| 精品sm捆绑视频| 国产一区二区电影| 国产精品私人自拍| av亚洲精华国产精华精华| 亚洲欧美日韩国产一区二区三区| 91美女视频网站| 亚洲国产欧美在线| 日韩欧美中文字幕一区| 久久99国产精品久久| 久久久久久久久久久久久女国产乱| 国产精品一区免费视频| 国产精品高潮久久久久无| 色女孩综合影院| 日本美女一区二区三区| 久久色.com| 色综合久久综合网97色综合| 亚洲日本在线a| 欧美日韩国产三级| 久久精品国产77777蜜臀| 久久久噜噜噜久噜久久综合| 99国产精品国产精品久久| 亚洲成人av资源| 久久精品在线观看| 91视频免费看| jvid福利写真一区二区三区| 国产精品传媒入口麻豆| 欧美日韩在线播| 黄色精品一二区| 亚洲丝袜精品丝袜在线| 日韩欧美成人一区| www.一区二区| 免费在线观看一区二区三区| 日本一区二区高清| 欧美精品v日韩精品v韩国精品v| 国产综合色视频| 亚洲综合一区二区精品导航| 26uuu亚洲综合色欧美| 91麻豆成人久久精品二区三区| 五月婷婷久久丁香| 国产日本亚洲高清| 欧美日韩中文国产| 成人激情小说乱人伦| 日本一不卡视频| 日韩美女久久久| 久久色在线视频| 正在播放亚洲一区| 91亚洲永久精品| 国产精品亚洲午夜一区二区三区 | 色婷婷亚洲综合| 久久99九九99精品| 亚洲妇熟xx妇色黄| 国产精品电影一区二区| 日韩欧美激情一区| 欧美这里有精品| www.欧美日韩| 国产成人在线电影| 麻豆免费精品视频| 性感美女久久精品| 亚洲人妖av一区二区| 国产亚洲欧美一级| 日韩欧美在线观看一区二区三区| 欧美自拍丝袜亚洲| 成人av动漫网站| 国产精华液一区二区三区| 日韩黄色免费网站| 午夜影视日本亚洲欧洲精品| 亚洲欧美另类综合偷拍| 国产精品麻豆99久久久久久| 精品黑人一区二区三区久久| 欧美一级精品在线| 91 com成人网| 4hu四虎永久在线影院成人| 欧美在线小视频| 欧美主播一区二区三区美女| 色播五月激情综合网| 99re热这里只有精品视频| gogo大胆日本视频一区| 国产ts人妖一区二区| 成人一道本在线| 不卡一区中文字幕| jvid福利写真一区二区三区| 成年人国产精品| 波多野结衣精品在线| 成人av网站在线观看| 成人久久视频在线观看| eeuss国产一区二区三区| 成人激情校园春色| 91视频91自| 欧美日韩午夜在线视频| 欧美一级淫片007| 精品国产sm最大网站| 国产亚洲欧美一级| 国产精品福利在线播放| 亚洲美女少妇撒尿| 亚洲国产三级在线| 天堂久久一区二区三区| 麻豆精品久久精品色综合| 久久精品免费观看| 国产成人精品一区二| 成人动漫一区二区三区| 欧美怡红院视频| 欧美一区二区三区色| 国产农村妇女毛片精品久久麻豆| 中文字幕一区不卡| 亚洲二区视频在线| 精品系列免费在线观看| 成人网在线免费视频| 欧美色窝79yyyycom| 久久综合av免费| 亚洲柠檬福利资源导航| 日韩精品亚洲专区| 国产精品小仙女| 欧洲精品一区二区| 日韩精品一区二区三区三区免费| 国产日韩精品一区二区三区| 一区二区三区在线观看网站| 美国十次了思思久久精品导航| 国产精品一区二区三区网站| 欧美亚洲国产怡红院影院| 日韩欧美国产1| 亚洲私人黄色宅男| 精品一区二区免费在线观看| 不卡电影一区二区三区| 日韩视频免费直播| 一区二区三区资源| 国产美女精品一区二区三区| 欧美在线free| 欧美激情一区三区| 香蕉av福利精品导航| 成人黄色av电影| 欧美va亚洲va| 婷婷综合另类小说色区| 成人精品一区二区三区四区 | 日韩精品每日更新| av在线播放一区二区三区| 欧美mv日韩mv国产| 性做久久久久久| av电影在线不卡| 久久久久久久久久久久电影| 日韩中文字幕不卡| 色婷婷av一区二区三区软件| 久久久www成人免费无遮挡大片 | 欧美日韩亚洲综合一区二区三区| 国产欧美日韩一区二区三区在线观看| 日韩av电影一区| 欧美亚洲一区三区| 亚洲伦在线观看| 成人午夜精品在线| 久久嫩草精品久久久精品一| 全国精品久久少妇| 制服丝袜亚洲色图| 亚洲黄色小说网站| 一本一本大道香蕉久在线精品| 欧美国产一区视频在线观看| 国产在线不卡一卡二卡三卡四卡| 这里只有精品免费| 日产精品久久久久久久性色| 在线欧美小视频| 亚洲精品写真福利| 99视频一区二区| 国产精品卡一卡二卡三| 9l国产精品久久久久麻豆| 中文字幕精品综合| 99视频有精品| 亚洲欧美激情一区二区| 色综合欧美在线视频区|