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

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

?? setup.c

?? 根據添加了fs2410平臺的arch目錄
?? C
字號:
/* * * Copyright (C) 1999 Silicon Graphics, Inc. * Copyright (C) Vijay Chander(vijay@engr.sgi.com) */#include <linux/config.h>#include <linux/init.h>#include <linux/delay.h>#include <linux/kernel.h>#include <linux/kdev_t.h>#include <linux/string.h>#include <linux/tty.h>#include <linux/console.h>#include <linux/timex.h>#include <linux/sched.h>#include <linux/ioport.h>#include <linux/mm.h>#include <linux/serial.h>#include <asm/sn/mmzone_sn1.h>#include <asm/io.h>#include <asm/dma.h>#include <asm/machvec.h>#include <asm/system.h>#include <asm/processor.h>#include <asm-ia64/sn/arch.h>#include <asm-ia64/sn/addrs.h>/* * This is the address of the RRegs in the HSpace of the global * master.  It is used by a hack in serial.c (serial_[in|out], * printk.c (early_printk), and kdb_io.c to put console output on that * node's Bedrock UART.  It is initialized here to 0, so that * early_printk won't try to access the UART before * master_node_bedrock_address is properly calculated. */u64 master_node_bedrock_address = 0UL;static void sn_fix_ivt_for_partitioned_system(void);/* * The format of "screen_info" is strange, and due to early i386-setup * code. This is just enough to make the console code think we're on a * VGA color display. */struct screen_info sn1_screen_info = {	orig_x:			 0,	orig_y:			 0,	orig_video_mode:	 3,	orig_video_cols:	80,	orig_video_ega_bx:	 3,	orig_video_lines:	25,	orig_video_isVGA:	 1,	orig_video_points:	16};/* * This is here so we can use the CMOS detection in ide-probe.c to * determine what drives are present.  In theory, we don't need this * as the auto-detection could be done via ide-probe.c:do_probe() but * in practice that would be much slower, which is painful when * running in the simulator.  Note that passing zeroes in DRIVE_INFO * is sufficient (the IDE driver will autodetect the drive geometry). */char drive_info[4*16];unsigned longsn1_map_nr (unsigned long addr){#ifdef CONFIG_DISCONTIGMEM	return MAP_NR_SN1(addr);#else	return MAP_NR_DENSE(addr);#endif}#if defined(BRINGUP) && defined(CONFIG_IA64_EARLY_PRINTK)void __initearly_sn1_setup(void){	master_node_bedrock_address = 		(u64)REMOTE_HSPEC_ADDR(get_nasid(), 0);	printk("early_sn1_setup: setting master_node_bedrock_address to 0x%lx\n", master_node_bedrock_address);}#endif /* BRINGUP && CONFIG_IA64_EARLY_PRINTK */void __initsn1_setup(char **cmdline_p){#if defined(CONFIG_SERIAL) && !defined(CONFIG_SERIAL_SGI_L1_PROTOCOL)	struct serial_struct req;#endif	MAX_DMA_ADDRESS = PAGE_OFFSET + 0x10000000000UL;	master_node_bedrock_address = 		(u64)REMOTE_HSPEC_ADDR(get_nasid(), 0);	printk("sn1_setup: setting master_node_bedrock_address to 0x%lx\n",		   master_node_bedrock_address);#if defined(CONFIG_SERIAL) && !defined(CONFIG_SERIAL_SGI_L1_PROTOCOL)	/*	 * We do early_serial_setup() to clean out the rs-table[] from the	 * statically compiled in version.	 */	memset(&req, 0, sizeof(struct serial_struct));	req.line = 0;	req.baud_base = 124800;	req.port = 0;	req.port_high = 0;	req.irq = 0;	req.flags = (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST);	req.io_type = SERIAL_IO_MEM;	req.hub6 = 0;	req.iomem_base = (u8 *)(master_node_bedrock_address + 0x80);	req.iomem_reg_shift = 3;	req.type = 0;	req.xmit_fifo_size = 0;	req.custom_divisor = 0;	req.closing_wait = 0;	early_serial_setup(&req);#endif /* CONFIG_SERIAL && !CONFIG_SERIAL_SGI_L1_PROTOCOL */	ROOT_DEV = to_kdev_t(0x0301);		/* default to first IDE drive */	sn_fix_ivt_for_partitioned_system();#ifdef CONFIG_SMP	init_smp_config();#endif	screen_info = sn1_screen_info;}/*  * sn_fix_ivt_for_partitioned_system * * This is an ugly hack that is needed for partitioned systems. * * On a partitioned system, most partitions do NOT have a physical address 0. * Unfortunately, the exception handling code in ivt.S has a couple of physical * addresses of kernel structures hardcoded into "movl" instructions. * These addresses are correct on partition 0 only. On all other partitions, * the addresses must be changed to reference the correct address. * * This routine scans the ivt code and replaces the hardcoded addresses with  * the correct address. * * Note that we could have made the ivt.S code dynamically determine the correct * address but this would add code to performance critical pathes. This option * was rejected. */#define TEMP_mlx	4		/* template type that contains movl instruction */#define TEMP_mlX	5		/* template type that contains movl instruction */typedef union {				/* Instruction encoding for movl instruction */	struct {		unsigned long	qp:6;		unsigned long	r1:7;		unsigned long	imm7b:7;		unsigned long	vc:1;		unsigned long	ic:1;		unsigned long	imm5c:5;		unsigned long	imm9d:9;		unsigned long	i:1;		unsigned long	op:4;		unsigned long	fill:23;	} b;	unsigned long	l;} movl_instruction_t;#define MOVL_OPCODE	6#define MOVL_ARG(a,b)	(((long)a.i<<63) | ((long)b<<22) | ((long)a.ic<<21) | \			((long)a.imm5c<<16) | ((long)a.imm9d<<7) | ((long)a.imm7b))typedef struct {				/* Instruction bundle */	unsigned long template:5;	unsigned long ins2:41;	unsigned long ins1l:18;	unsigned long ins1u:23;	unsigned long ins0:41;} instruction_bundle_t;static void __initsn_fix_ivt_for_partitioned_system(void){	extern int		ia64_ivt;	instruction_bundle_t	*p, *pend;	movl_instruction_t	ins0, ins1, ins2;	long			new_ins1, phys_offset;	unsigned long		val;	/*	 * Setup to scan the ivt code.	 */	p = (instruction_bundle_t*)&ia64_ivt;	pend = p + 0x8000/sizeof(instruction_bundle_t);	phys_offset = __pa(p) & ~0x1ffffffffUL;	/*	 * Hunt for movl instructions that contain the node 0 physical address 	 * of "SWAPPER_PGD_ADDR".  These addresses must be relocated to reference the 	 * actual node that the kernel is loaded on.	 */	for (; p < pend; p++) {		if (p->template != TEMP_mlx && p->template != TEMP_mlX)			continue;		ins0.l =  p->ins0;		if (ins0.b.op != MOVL_OPCODE)			continue;		ins1.l =  ((long)p->ins1u<<18) | p->ins1l;		ins2.l =  p->ins2;		val = MOVL_ARG(ins0.b, ins1.l);		/*		 * Test for correct address. SWAPPER_PGD_ADDR will		 * always be a node 0 virtual address. Note that we cant		 * use the __pa or __va macros here since they may contain		 * debug code that gets fooled here.		 */		if ((PAGE_OFFSET | val)  != SWAPPER_PGD_ADDR)			continue;		/*		 * We found an instruction that needs to be fixed. The following		 * inserts the NASID of the ivt into the movl instruction.		 */		new_ins1 = ins1.l | (phys_offset>>22);		p->ins1l = new_ins1 & 0x3ffff;		p->ins1u = (new_ins1>>18) & 0x7fffff;		ia64_fc(p);	}	/*	 * Do necessary serialization.	 */	ia64_sync_i();	ia64_srlz_i();}intIS_RUNNING_ON_SIMULATOR(void){#ifdef CONFIG_IA64_SGI_SN1_SIM	long sn;	asm("mov %0=cpuid[%1]" : "=r"(sn) : "r"(2));	return(sn == SNMAGIC);#else	return(0);#endif}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久网站| 欧美不卡一二三| 国产成人亚洲综合色影视| 久久精品国产一区二区三区免费看| 亚洲狠狠爱一区二区三区| 亚洲一区二区偷拍精品| 五月天婷婷综合| 免费在线欧美视频| 久久99国产乱子伦精品免费| 九九国产精品视频| 国产一区二区三区免费看| 国产suv精品一区二区三区| 国产一区二区在线看| 成人久久视频在线观看| 99国产精品国产精品毛片| 欧美影院一区二区三区| 欧美日韩一区二区三区免费看| 欧美午夜视频网站| 日韩一二在线观看| 久久精品水蜜桃av综合天堂| 国产精品全国免费观看高清 | 国产ts人妖一区二区| 成+人+亚洲+综合天堂| 欧美日韩中字一区| 久久一留热品黄| 一区二区视频在线| 奇米色777欧美一区二区| 国产一区二区三区免费播放| 91蝌蚪porny九色| 91.成人天堂一区| 国产欧美日韩三区| 亚洲一区二区精品视频| 国产一区二区调教| 97aⅴ精品视频一二三区| 日韩一二三区不卡| 亚洲三级电影网站| 精品一区二区三区久久| 一本色道久久综合亚洲aⅴ蜜桃| 欧美日韩免费高清一区色橹橹 | 欧美在线观看视频在线| 日韩欧美中文一区二区| 亚洲欧美国产三级| 国产一区二区在线电影| 7777精品伊人久久久大香线蕉| 久久精品视频网| 青青青爽久久午夜综合久久午夜| 99久久精品免费看国产| 精品日韩99亚洲| 亚洲chinese男男1069| 国产激情视频一区二区三区欧美 | 久久精品国产99久久6| 91碰在线视频| 国产精品乱码久久久久久| 麻豆91在线播放免费| 日本电影亚洲天堂一区| 日本一区二区高清| 久久精品99国产精品| 欧美日韩精品一区二区三区| 亚洲婷婷综合色高清在线| 国产福利91精品一区二区三区| 欧美久久久久免费| 尤物av一区二区| 91亚洲男人天堂| 国产精品美女久久久久久久久| 国产九九视频一区二区三区| 精品国免费一区二区三区| 亚洲国产综合91精品麻豆| 色琪琪一区二区三区亚洲区| 国产精品乱码久久久久久| 丰满亚洲少妇av| 久久久久久**毛片大全| 国产成人亚洲综合a∨婷婷图片| 日韩美女天天操| 激情深爱一区二区| 久久久精品黄色| 成人午夜av影视| 亚洲精品日日夜夜| 欧美亚洲动漫制服丝袜| 亚洲欧美成aⅴ人在线观看| 色综合一个色综合亚洲| 亚洲一区二区三区在线| 色欧美片视频在线观看 | 日韩中文字幕不卡| 欧美精品日韩综合在线| 免费观看日韩av| 欧美精品一区二区三区蜜桃| 国内久久婷婷综合| 国产精品国产三级国产专播品爱网| 丰满放荡岳乱妇91ww| 综合电影一区二区三区| 欧美中文字幕一二三区视频| 日韩和的一区二区| 欧美大片免费久久精品三p| 韩国毛片一区二区三区| 国产欧美一区二区三区网站| 91蝌蚪porny| 亚洲h动漫在线| 国产欧美久久久精品影院| 91福利视频网站| 欧美96一区二区免费视频| 久久久久久久久97黄色工厂| 99久久精品国产麻豆演员表| 视频一区国产视频| 国产天堂亚洲国产碰碰| 欧美中文字幕一区二区三区 | 久久先锋影音av| 99精品在线免费| 久久精品国产秦先生| 国产精品成人在线观看| 欧美高清视频不卡网| 丁香啪啪综合成人亚洲小说 | 欧美日韩电影在线| 国产91精品一区二区麻豆亚洲| 亚洲麻豆国产自偷在线| 精品国产乱码久久久久久牛牛| 91在线看国产| 捆绑变态av一区二区三区| 亚洲久草在线视频| 精品乱人伦一区二区三区| 91麻豆swag| 成人午夜电影网站| 日本sm残虐另类| 亚洲黄网站在线观看| 国产欧美一区二区三区在线看蜜臀| 91超碰这里只有精品国产| 99久久综合国产精品| 精品亚洲国产成人av制服丝袜| 亚洲免费大片在线观看| 久久久91精品国产一区二区精品| 欧美老肥妇做.爰bbww| 91高清在线观看| proumb性欧美在线观看| 国产精品1区2区| 免费观看日韩电影| 手机精品视频在线观看| 亚洲激情第一区| 中文字幕一区二区不卡| 亚洲国产精品av| 国产亚洲一区二区三区| 欧美成人三级在线| 91精品国产综合久久久蜜臀粉嫩| 91福利社在线观看| 91激情在线视频| 在线免费观看不卡av| 色综合一区二区三区| 一本色道久久综合亚洲91| 色综合天天综合网天天看片| av在线一区二区三区| 成人免费毛片片v| 9人人澡人人爽人人精品| av激情成人网| av不卡一区二区三区| 91蜜桃在线免费视频| 99久久久免费精品国产一区二区 | 欧美日韩aaa| 91精品国产aⅴ一区二区| 日韩欧美黄色影院| 精品国产凹凸成av人导航| 久久午夜羞羞影院免费观看| 国产视频一区不卡| 自拍偷在线精品自拍偷无码专区| 亚洲免费观看高清在线观看| 亚洲成人一二三| 麻豆成人免费电影| 国产成人av资源| 91在线国内视频| 精品视频资源站| 日韩精品中文字幕一区二区三区 | 91精品一区二区三区久久久久久 | 国产日韩欧美不卡在线| 国产精品麻豆一区二区| 亚洲一级不卡视频| 久久99久久99| 99视频在线观看一区三区| 欧美精品一卡二卡| 久久久久久久久蜜桃| 亚洲色图色小说| 日本在线不卡视频| 成人精品在线视频观看| 欧美综合久久久| 精品国产一区二区在线观看| 亚洲欧洲无码一区二区三区| 亚洲午夜在线电影| 国产.精品.日韩.另类.中文.在线.播放| a亚洲天堂av| 日韩一区二区免费在线电影| 国产精品色在线| 免费三级欧美电影| 91色.com| 久久色.com| 偷拍日韩校园综合在线| 高清成人在线观看| 在线播放国产精品二区一二区四区| 久久久久99精品国产片| 亚洲午夜精品网| 成人久久久精品乱码一区二区三区| 欧美日本一区二区三区四区| 亚洲欧洲av在线| 国产精品一色哟哟哟| 日韩三级视频中文字幕|