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

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

?? fpromasm.s

?? 根據添加了fs2410平臺的arch目錄
?? S
字號:
/*  * * This file is subject to the terms and conditions of the GNU General Public * License.  See the file "COPYING" in the main directory of this archive * for more details. * *   (Code copied from or=ther files) * Copyright (C) 1998-2000 Hewlett-Packard Co * Copyright (C) 1998-2000 David Mosberger-Tang <davidm@hpl.hp.com> * * Copyright (C) 2000 Silicon Graphics, Inc. * Copyright (C) 2000 by Jack Steiner (steiner@sgi.com) */#define __ASSEMBLY__ 1#include "asm/processor.h"/* * This file contains additional set up code that is needed to get going on * Medusa.  This code should disappear once real hw is available. * * On entry to this routine, the following register values are assumed: * *	gr[8]	- BSP cpu *	pr[9]	- kernel entry address * * NOTE: *   This FPROM may be loaded/executed at an address different from the *   address that it was linked at. The FPROM is linked to run on node 0 *   at address 0x100000. If the code in loaded into another node, it *   must be loaded at offset 0x100000 of the node. In addition, the *   FPROM does the following things: *		- determine the base address of the node it is loaded on *		- add the node base to _gp. *		- add the node base to all addresses derived from "movl"  *		  instructions. (I couldnt get GPREL addressing to work) *		  (maybe newer versions of the tools will support this) *		- scan the .got section and add the node base to all *		  pointers in this section. *		- add the node base to all physical addresses in the *		  SAL/PAL/EFI table built by the C code. (This is done *		  in the C code - not here) *		- add the node base to the TLB entries for vmlinux */#define KERNEL_BASE	0xe000000000000000#define PAGESIZE_256M	28/*  * ar.k0 gets set to IOPB_PA value, on 460gx chipset it should  * be 0x00000ffffc000000, but on snia we use the (inverse swizzled) * IOSPEC_BASE value */#define IOPB_PA		0x00000a0000000000 /* inv swizzle IOSPEC_BASE */#define RR_RID		8// ====================================================================================	        .text        .align 16	.global _start	.proc _start_start:// Setup psr and rse for system init	mov		psr.l = r0;;	srlz.d;;	invala	mov		ar.rsc = r0;;	loadrs	;;// Set CALIAS size to zero. We dont use it.	movl		r24=0x80000a0001000028;;	// BR_PI_CALIAS_SIZE	st8 		[r24]=r0// Isolate node number we are running on.	mov		r6 = ip;;	shr		r5 = r6,33;;			// r5 = node number	shl		r6 = r5,33			// r6 = base memory address of node// Set & relocate gp.	movl		r1= __gp;;			// Add base memory address	add 		r1 = r1,r6			// Relocate to boot node// Lets figure out who we are & put it in the LID register.// The BR_PI_SELF_CPU_NUM register gives us a value of 0-3.// This identifies the cpu on the node. // Merge the cpu number with the NASID to generate the LID.	movl		r24=0x80000a0001000020;;	// BR_PI_SELF_CPU_NUM	ld8 		r25=[r24]			// Fetch PI_SELF	movl		r27=0x80000a0001600000;;	// Fetch REVID to get local NASID	ld8 		r27=[r27];;	extr.u		r27=r27,32,8	shl 		r26=r25,16;;			// Align local cpu# to lid.eid	shl 		r27=r27,24;;			// Align NASID to lid.id	or  		r26=r26,r27;;			// build the LID	mov 		cr.lid=r26			// Now put in in the LID register		movl		r2=FPSR_DEFAULT;;	mov 		ar.fpsr=r2	movl		sp = bootstacke-16;;	add 		sp = sp,r6			// Relocate to boot node			// Save the NASID that we are loaded on.	movl		r2=base_nasid;;			// Save base_nasid for C code	add 		r2 = r2,r6;;			// Relocate to boot node  	st8 		[r2]=r5				// Uncond st8 - same on all cpus// Save the kernel entry address. It is passed in r9 on one of// the cpus.	movl		r2=bsp_entry_pc	cmp.ne		p6,p0=r9,r0;;	add 		r2 = r2,r6;;			// Relocate to boot node(p6)  	st8 		[r2]=r9				// Uncond st8 - same on all cpus// The following can ONLY be done by 1 cpu. Lets set a lock - the// cpu that gets it does the initilization. The rest just spin waiting// til initilization is complete.	movl		r22 = initlock;;	add		r22 = r22,r6			// Relocate to boot node	mov		r23 = 1;;	xchg8		r23 = [r22],r23;;	cmp.eq 		p6,p0 = 0,r23(p6)	br.cond.spnt.few init1:	ld4		r23 = [r22];;	cmp.eq		p6,p0 = 1,r23(p6)	br.cond.sptk	1b	br		initx// Add base address of node memory to each pointer in the .got section.init:	movl		r16 = _GLOBAL_OFFSET_TABLE_;;	add		r16 = r16,r6;;			// Relocate to boot node1: 	ld8		r17 = [r16];;	cmp.eq		p6,p7=0,r17(p6)	br.cond.sptk.few.clr 2f;;	add		r17 = r17,r6;;			// Relocate to boot node	st8		[r16] = r17,8	br		1b2:	mov		r23 = 2;;			// All done, release the spinning cpus	st4		[r22] = r23initx:////	I/O-port space base address://	movl		r2 = IOPB_PA;;	mov		ar.k0 = r2// Now call main & pass it the current LID value.	alloc 		r0=ar.pfs,0,0,2,0	mov    		r32=r26	mov   		r33=r8;;	br.call.sptk.few rp=fmain	// Initialize Region Registers//	mov		r10 = r0	mov		r2 = (13<<2) 	mov		r3 = r0;;1:	cmp4.gtu	p6,p7 = 7, r3	dep		r10 = r3, r10, 61, 3	dep		r2 = r3, r2, RR_RID, 4;;(p7)	dep		r2 = 0, r2, 0, 1;;(p6)	dep		r2 = -1, r2, 0, 1;;	mov		rr[r10] = r2	add		r3 = 1, r3;;	srlz.d;;	cmp4.gtu	p6,p0 = 8, r3(p6)	br.cond.sptk.few.clr 1b//// Return value indicates if we are the BSP or AP.// 	   1 = BSP, 0 = AP	mov             cr.tpr=r0;;	cmp.eq		p6,p0=r8,r0(p6)	br.cond.spnt	slave//// Initialize the protection key registers with only pkr[0] = valid.//// Should be initialized in accordance with the OS.//	mov		r2 = 1	mov		r3 = r0;;	mov		pkr[r3] = r2;;	srlz.d;;	mov		r2 = r01:	add		r3 = r3, r0, 1;;		// increment PKR	cmp.gtu		p6, p0 = 16, r3;;(p6)	mov		pkr[r3] = r2(p6)	br.cond.sptk.few.clr 1b	mov		ar.rnat = r0			// clear RNAT register//// Setup system address translation for kernel//// Note: The setup of Kernel Virtual address space can be done by the// C code of the boot loader.////#define LINUX_PAGE_OFFSET       0xe000000000000000#define ITIR(key, ps)           ((key<<8) | (ps<<2))#define ITRGR(ed,ar,ma)         ((ed<<52) | (ar<<9) | (ma<<2) | 0x61)#define AR_RX                   1                       // RX permission#define AR_RW                   4                       // RW permission#define MA_WB                   0                       // WRITEBACK memory attribute#define TLB_PAGESIZE		28			// Use 256MB pages for now.	mov		r16=r5////     text section//        movl            r2 = LINUX_PAGE_OFFSET;;        // Set up IFA with VPN of linux        mov             cr.ifa = r2        movl            r3 = ITIR(0,TLB_PAGESIZE);;     // Set ITIR to default pagesize        mov             cr.itir = r3        shl             r4 = r16,33;;                   // physical addr of start of node        movl            r5 = ITRGR(1,AR_RX,MA_WB);;     // TLB attributes        or              r10=r4,r5;;        itr.i           itr[r0] = r10;;                   // Dropin ITR entry	srlz.i;;////     data section//        movl            r2 = LINUX_PAGE_OFFSET;;        // Set up IFA with VPN of linux        mov             cr.ifa = r2        movl            r3 = ITIR(0,TLB_PAGESIZE);;     // Set ITIR to default pagesize        mov             cr.itir = r3        shl             r4 = r16,33;;                   // physical addr of start of node        movl            r5 = ITRGR(1,AR_RW,MA_WB);;     // TLB attributes        or              r10=r4,r5;;        itr.d           dtr[r0] = r10;;                 // Dropin DTR entry	srlz.d;;//// Turn on address translation, interrupt collection, psr.ed, protection key.// Interrupts (PSR.i) are still off here.//	movl		r3 = (	IA64_PSR_BN | \				IA64_PSR_AC | \				IA64_PSR_IT | \				IA64_PSR_DB | \				IA64_PSR_DA | \				IA64_PSR_RT | \				IA64_PSR_DT | \				IA64_PSR_IC   \			     )	;;	mov		cr.ipsr = r3//// Go to kernel C startup routines//	Need to do a "rfi" in order set "it" and "ed" bits in the PSR.//	This is the only way to set them.	movl		r2=bsp_entry_pc;;	add 		r2 = r2,r6;;			// Relocate to boot node	ld8		r2=[r2];;	mov		cr.iip = r2	srlz.d;;	rfi;;	.endp		_start// Slave processors come here to spin til they get an interrupt. Then they launch themselves to// the place ap_entry points. No initialization is necessary - the kernel makes no// assumptions about state on this entry.//	Note: should verify that the interrupt we got was really the ap_wakeup//	      interrupt but this should not be an issue on medusaslave:	nop.i		0x8beef				// Medusa - put cpu to sleep til interrupt occurs	mov		r8=cr.irr0;;			// Check for interrupt pending.	cmp.eq		p6,p0=r8,r0(p6)	br.cond.sptk	slave;;	mov		r8=cr.ivr;;			// Got one. Must read ivr to accept it	srlz.d;;	mov		cr.eoi=r0;;			// must write eoi to clear	movl		r8=ap_entry;;			// now jump to kernel entry	add 		r8 = r8,r6;;			// Relocate to boot node	ld8		r9=[r8],8;;	ld8		r1=[r8]	mov		b0=r9;;	br		b0// Here is the kernel stack used for the fake PROM	.bss	.align		16384bootstack:	.skip		16384bootstacke:initlock:	data4

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品久久7777| 中国色在线观看另类| 韩国精品久久久| 中文一区一区三区高中清不卡| 91黄视频在线| 狠狠狠色丁香婷婷综合激情 | 亚洲v精品v日韩v欧美v专区| 欧美大白屁股肥臀xxxxxx| 国产+成+人+亚洲欧洲自线| 一区二区三区四区五区视频在线观看| 欧美日韩和欧美的一区二区| 国产一区二区在线观看免费| 一区二区三区日韩精品| 亚洲精品在线电影| 欧美性猛片xxxx免费看久爱| 国产真实乱偷精品视频免| 国产精品成人在线观看| 欧美亚洲动漫精品| 丁香五精品蜜臀久久久久99网站| 婷婷夜色潮精品综合在线| 国产精品久久久久婷婷二区次| 欧美精品久久一区二区三区| 不卡电影免费在线播放一区| 老鸭窝一区二区久久精品| 亚洲男人电影天堂| 国产欧美综合在线| 欧美一区二区大片| 欧亚一区二区三区| 99视频有精品| 国产一区日韩二区欧美三区| 日韩电影免费在线观看网站| 亚洲狠狠丁香婷婷综合久久久| 日韩一级免费一区| 成人app软件下载大全免费| 美国毛片一区二区| 日日噜噜夜夜狠狠视频欧美人| 亚洲欧美电影院| 中文字幕亚洲在| 日本一区二区高清| 国产欧美一区二区精品久导航| 日韩欧美一二区| 4438成人网| 91精品欧美久久久久久动漫| 欧美日韩中文字幕精品| 在线日韩国产精品| 在线观看视频欧美| 色菇凉天天综合网| 一本色道亚洲精品aⅴ| 成人av免费在线| 成人av在线资源| 国产原创一区二区| 婷婷久久综合九色综合绿巨人| 中文字幕一区二区视频| 国产精品久久午夜| 亚洲欧洲国产日本综合| 亚洲色图制服诱惑| 一区二区高清视频在线观看| 亚洲激情图片qvod| 亚洲国产一二三| 亚洲成人av免费| 亚洲国产wwwccc36天堂| 亚洲一区二区视频在线| 亚洲成人自拍一区| 亚洲免费成人av| 亚洲欧美日韩中文播放 | 精品国产污污免费网站入口| 欧美一区二区视频网站| 欧美主播一区二区三区美女| 欧美日韩精品是欧美日韩精品| 欧美色精品在线视频| 欧美日韩视频不卡| 日韩一级免费一区| 日韩一区二区视频| 欧美一区二区三区在| 欧美日韩国产欧美日美国产精品| 在线成人高清不卡| 精品国产91乱码一区二区三区| 国产亚洲精品bt天堂精选| 国产精品福利一区二区三区| 亚洲一区中文日韩| 日韩主播视频在线| 国产精品原创巨作av| av欧美精品.com| 欧美色手机在线观看| 欧美成人伊人久久综合网| 中文字幕高清不卡| 最近中文字幕一区二区三区| 亚洲国产精品久久久久婷婷884| 五月天网站亚洲| 免费欧美高清视频| 成人av网站在线观看免费| 在线视频你懂得一区| 日韩精品一区二区三区四区| 国产精品拍天天在线| 亚洲第一电影网| 国产米奇在线777精品观看| a级高清视频欧美日韩| 欧美日产国产精品| 久久精品欧美日韩精品| 亚洲五月六月丁香激情| 精品一区二区三区在线观看| 成人sese在线| 欧美人伦禁忌dvd放荡欲情| 亚洲精品一区二区三区在线观看| 免费xxxx性欧美18vr| www.av亚洲| 日韩欧美自拍偷拍| 国产日韩欧美精品电影三级在线| 国产精品女同互慰在线看| 亚洲成a人v欧美综合天堂下载| 国产精品久久久一区麻豆最新章节| 国产情人综合久久777777| 亚洲一区二区三区四区在线| 国产盗摄精品一区二区三区在线 | gogo大胆日本视频一区| 欧美精品乱码久久久久久按摩| 国产区在线观看成人精品| 亚洲综合免费观看高清在线观看| 日本一不卡视频| 91国产福利在线| 国产精品网曝门| 麻豆视频观看网址久久| 欧美在线一区二区三区| 国产欧美精品一区| 国内欧美视频一区二区| 欧美精选一区二区| 亚洲综合免费观看高清完整版在线 | 国产精品美女久久久久aⅴ | 色94色欧美sute亚洲13| 国产亚洲人成网站| 亚洲一二三四在线| 97精品国产露脸对白| 日韩一区二区电影在线| 亚洲国产综合色| 色先锋资源久久综合| 国产精品色婷婷久久58| 韩国精品久久久| 日韩视频永久免费| 日韩中文字幕区一区有砖一区| 在线视频你懂得一区| 亚洲欧美日本在线| www.av精品| 中文字幕一区二区在线播放| 风间由美一区二区av101| 精品国产一区二区三区四区四| 亚洲欧美在线观看| 99国产精品99久久久久久| 国产欧美日产一区| 久久国产尿小便嘘嘘尿| 日韩女优av电影| 精品一区二区久久久| 日韩欧美在线综合网| 日韩中文字幕亚洲一区二区va在线| 欧美日韩免费不卡视频一区二区三区| 亚洲精品ww久久久久久p站| 国产九九视频一区二区三区| 国产偷v国产偷v亚洲高清| 国产福利91精品| 国产精品区一区二区三区| 不卡高清视频专区| 一区二区三区国产| 色综合欧美在线视频区| 亚洲精品高清在线观看| 欧美亚洲综合久久| 国产视频在线观看一区二区三区| 久久99久久99精品免视看婷婷| 欧美大胆一级视频| 国产精品1024| 国产精品国产三级国产普通话三级 | 午夜精品视频在线观看| 久久精品综合网| 国产精品一区二区黑丝| ●精品国产综合乱码久久久久| 色诱视频网站一区| 中文字幕欧美国产| 亚洲精品国产精品乱码不99 | 欧美二区在线观看| 免费在线看一区| 久久亚洲精精品中文字幕早川悠里 | 国产精品国产自产拍高清av王其| 色一情一乱一乱一91av| 蜜臀91精品一区二区三区| 国产亚洲精品免费| 欧美性欧美巨大黑白大战| 精品夜夜嗨av一区二区三区| 国产日韩精品一区二区三区在线| av在线不卡电影| 亚洲bt欧美bt精品| 久久色成人在线| 色综合天天狠狠| 美女精品一区二区| 亚洲欧美电影一区二区| 久久综合久久综合久久| 欧美在线视频你懂得| 国产98色在线|日韩| 日韩高清一区在线| 亚洲人成网站在线| 久久这里只有精品6| 欧美精品在线视频| 成人午夜激情在线|