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

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

?? viscopy.s

?? 優(yōu)龍2410linux2.6.8內(nèi)核源代碼
?? S
?? 第 1 頁 / 共 3 頁
字號:
/* $Id: VIScopy.S,v 1.27 2002/02/09 19:49:30 davem Exp $ * VIScopy.S: High speed copy operations utilizing the UltraSparc *            Visual Instruction Set. * * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) * Copyright (C) 1996, 1997, 1998, 1999 Jakub Jelinek (jj@ultra.linux.cz) */#include "VIS.h"	/* VIS code can be used for numerous copy/set operation variants.	 * It can be made to work in the kernel, one single instance,	 * for all of memcpy, copy_to_user, and copy_from_user by setting	 * the ASI src/dest globals correctly.  Furthermore it can	 * be used for kernel-->kernel page copies as well, a hook label	 * is put in here just for this purpose.	 *	 * For userland, compiling this without __KERNEL__ defined makes	 * it work just fine as a generic libc bcopy and memcpy.	 * If for userland it is compiled with a 32bit gcc (but you need	 * -Wa,-Av9a for as), the code will just rely on lower 32bits of	 * IEU registers, if you compile it with 64bit gcc (ie. define	 * __sparc_v9__), the code will use full 64bit.	 */	 #ifdef __KERNEL__#include <asm/visasm.h>#include <asm/thread_info.h>#define FPU_CLEAN_RETL					\	ldub		[%g6 + TI_CURRENT_DS], %o1;	\	VISExit						\	clr		%o0;				\	retl;						\	 wr		%o1, %g0, %asi;#define FPU_RETL					\	ldub		[%g6 + TI_CURRENT_DS], %o1;	\	VISExit						\	clr		%o0;				\	retl;						\	 wr		%o1, %g0, %asi;#define NORMAL_RETL					\	ldub		[%g6 + TI_CURRENT_DS], %o1;	\	clr		%o0;				\	retl;						\	 wr		%o1, %g0, %asi;#define EX(x,y,a,b) 				\98: 	x,y;					\	.section .fixup;			\	.align	4;				\99:	ba	VIScopyfixup_ret;		\	 a, b, %o1;				\	.section __ex_table;			\	.align	4;				\	.word	98b, 99b;			\	.text;					\	.align	4;#define EX2(x,y,c,d,e,a,b) 			\98: 	x,y;					\	.section .fixup;			\	.align	4;				\99:	c, d, e;				\	ba	VIScopyfixup_ret;		\	 a, b, %o1;				\	.section __ex_table;			\	.align	4;				\	.word	98b, 99b;			\	.text;					\	.align	4;#define EXO2(x,y) 				\98: 	x,y;					\	.section __ex_table;			\	.align	4;				\	.word	98b, VIScopyfixup_reto2;	\	.text;					\	.align	4;#define EXVISN(x,y,n) 				\98: 	x,y;					\	.section __ex_table;			\	.align	4;				\	.word	98b, VIScopyfixup_vis##n;	\	.text;					\	.align	4;#define EXT(start,end,handler) 			\	.section __ex_table;			\	.align	4;				\	.word	start, 0, end, handler;		\	.text;					\	.align	4;#else#ifdef REGS_64BIT#define FPU_CLEAN_RETL				\	retl;					\	 mov	%g6, %o0;#define FPU_RETL				\	retl;					\	 mov	%g6, %o0;#else#define FPU_CLEAN_RETL				\	wr	%g0, FPRS_FEF, %fprs;		\	retl;					\	 mov	%g6, %o0;#define FPU_RETL				\	wr	%g0, FPRS_FEF, %fprs;		\	retl;					\	 mov	%g6, %o0;#endif#define NORMAL_RETL	\	retl;		\	 mov	%g6, %o0;#define EX(x,y,a,b)		x,y#define EX2(x,y,c,d,e,a,b)	x,y#define EXO2(x,y)		x,y#define EXVISN(x,y,n)		x,y#define EXT(a,b,c)#endif#define EXVIS(x,y) EXVISN(x,y,0)#define EXVIS1(x,y) EXVISN(x,y,1)#define EXVIS2(x,y) EXVISN(x,y,2)#define EXVIS3(x,y) EXVISN(x,y,3)#define EXVIS4(x,y) EXVISN(x,y,4)#define FREG_FROB(f1, f2, f3, f4, f5, f6, f7, f8, f9)		\	faligndata		%f1, %f2, %f48;			\	faligndata		%f2, %f3, %f50;			\	faligndata		%f3, %f4, %f52;			\	faligndata		%f4, %f5, %f54;			\	faligndata		%f5, %f6, %f56;			\	faligndata		%f6, %f7, %f58;			\	faligndata		%f7, %f8, %f60;			\	faligndata		%f8, %f9, %f62;#define MAIN_LOOP_CHUNK(src, dest, fdest, fsrc, len, jmptgt)	\	EXVIS(LDBLK		[%src] ASIBLK, %fdest);		\	ASI_SETDST_BLK						\	EXVIS(STBLK		%fsrc, [%dest] ASIBLK);		\	add			%src, 0x40, %src;		\	subcc			%len, 0x40, %len;		\	be,pn			%xcc, jmptgt;			\	 add			%dest, 0x40, %dest;		\	ASI_SETSRC_BLK#define LOOP_CHUNK1(src, dest, len, branch_dest)		\	MAIN_LOOP_CHUNK(src, dest, f0,  f48, len, branch_dest)#define LOOP_CHUNK2(src, dest, len, branch_dest)		\	MAIN_LOOP_CHUNK(src, dest, f16, f48, len, branch_dest)#define LOOP_CHUNK3(src, dest, len, branch_dest)		\	MAIN_LOOP_CHUNK(src, dest, f32, f48, len, branch_dest)#define STORE_SYNC(dest, fsrc)					\	EXVIS(STBLK		%fsrc, [%dest] ASIBLK);		\	add			%dest, 0x40, %dest;#ifdef __KERNEL__#define STORE_JUMP(dest, fsrc, target)				\	srl			asi_dest, 3, %g5;		\	EXVIS2(STBLK		%fsrc, [%dest] ASIBLK);		\	xor		       asi_dest, ASI_BLK_XOR1, asi_dest;\	add			%dest, 0x40, %dest;		\	xor			asi_dest, %g5, asi_dest;	\	ba,pt			%xcc, target;#else#define STORE_JUMP(dest, fsrc, target)				\	EXVIS2(STBLK		%fsrc, [%dest] ASIBLK);		\	add			%dest, 0x40, %dest;		\	ba,pt			%xcc, target;#endif#ifndef __KERNEL__#define VISLOOP_PAD nop; nop; nop; nop; \		    nop; nop; nop; nop; \		    nop; nop; nop; nop; \		    nop; nop; nop;#else#define VISLOOP_PAD#endif#define FINISH_VISCHUNK(dest, f0, f1, left)			\	ASI_SETDST_NOBLK					\	subcc			%left, 8, %left;		\	bl,pn			%xcc, vis_out;			\	 faligndata		%f0, %f1, %f48;			\	EXVIS3(STDF		%f48, [%dest] ASINORMAL);	\	add			%dest, 8, %dest;#define UNEVEN_VISCHUNK_LAST(dest, f0, f1, left)		\	subcc			%left, 8, %left;		\	bl,pn			%xcc, vis_out;			\	 fsrc1			%f0, %f1;#define UNEVEN_VISCHUNK(dest, f0, f1, left)			\	UNEVEN_VISCHUNK_LAST(dest, f0, f1, left)		\	ba,a,pt			%xcc, vis_out_slk;	/* Macros for non-VIS memcpy code. */#ifdef REGS_64BIT#define MOVE_BIGCHUNK(src, dst, offset, t0, t1, t2, t3)			\	ASI_SETSRC_NOBLK						\	LDX			[%src + offset + 0x00] ASINORMAL, %t0; 	\	LDX			[%src + offset + 0x08] ASINORMAL, %t1; 	\	LDX			[%src + offset + 0x10] ASINORMAL, %t2; 	\	LDX			[%src + offset + 0x18] ASINORMAL, %t3; 	\	ASI_SETDST_NOBLK						\	STW			%t0, [%dst + offset + 0x04] ASINORMAL; 	\	srlx			%t0, 32, %t0;				\	STW			%t0, [%dst + offset + 0x00] ASINORMAL; 	\	STW			%t1, [%dst + offset + 0x0c] ASINORMAL; 	\	srlx			%t1, 32, %t1;				\	STW			%t1, [%dst + offset + 0x08] ASINORMAL; 	\	STW			%t2, [%dst + offset + 0x14] ASINORMAL; 	\	srlx			%t2, 32, %t2;				\	STW			%t2, [%dst + offset + 0x10] ASINORMAL; 	\	STW			%t3, [%dst + offset + 0x1c] ASINORMAL;	\	srlx			%t3, 32, %t3;				\	STW			%t3, [%dst + offset + 0x18] ASINORMAL;#define MOVE_BIGALIGNCHUNK(src, dst, offset, t0, t1, t2, t3)		\	ASI_SETSRC_NOBLK						\	LDX			[%src + offset + 0x00] ASINORMAL, %t0; 	\	LDX			[%src + offset + 0x08] ASINORMAL, %t1; 	\	LDX			[%src + offset + 0x10] ASINORMAL, %t2; 	\	LDX			[%src + offset + 0x18] ASINORMAL, %t3; 	\	ASI_SETDST_NOBLK						\	STX			%t0, [%dst + offset + 0x00] ASINORMAL; 	\	STX			%t1, [%dst + offset + 0x08] ASINORMAL; 	\	STX			%t2, [%dst + offset + 0x10] ASINORMAL; 	\	STX			%t3, [%dst + offset + 0x18] ASINORMAL; 	\	ASI_SETSRC_NOBLK						\	LDX			[%src + offset + 0x20] ASINORMAL, %t0; 	\	LDX			[%src + offset + 0x28] ASINORMAL, %t1; 	\	LDX			[%src + offset + 0x30] ASINORMAL, %t2; 	\	LDX			[%src + offset + 0x38] ASINORMAL, %t3; 	\	ASI_SETDST_NOBLK						\	STX			%t0, [%dst + offset + 0x20] ASINORMAL; 	\	STX			%t1, [%dst + offset + 0x28] ASINORMAL; 	\	STX			%t2, [%dst + offset + 0x30] ASINORMAL; 	\	STX			%t3, [%dst + offset + 0x38] ASINORMAL;#define MOVE_LASTCHUNK(src, dst, offset, t0, t1, t2, t3)		\	ASI_SETSRC_NOBLK						\	LDX			[%src - offset - 0x10] ASINORMAL, %t0;	\	LDX			[%src - offset - 0x08] ASINORMAL, %t1; 	\	ASI_SETDST_NOBLK						\	STW			%t0, [%dst - offset - 0x0c] ASINORMAL; 	\	srlx			%t0, 32, %t2;				\	STW			%t2, [%dst - offset - 0x10] ASINORMAL; 	\	STW			%t1, [%dst - offset - 0x04] ASINORMAL; 	\	srlx			%t1, 32, %t3;				\	STW			%t3, [%dst - offset - 0x08] ASINORMAL;#define MOVE_LASTALIGNCHUNK(src, dst, offset, t0, t1)			\	ASI_SETSRC_NOBLK						\	LDX			[%src - offset - 0x10] ASINORMAL, %t0; 	\	LDX			[%src - offset - 0x08] ASINORMAL, %t1; 	\	ASI_SETDST_NOBLK						\	STX			%t0, [%dst - offset - 0x10] ASINORMAL; 	\	STX			%t1, [%dst - offset - 0x08] ASINORMAL;#else /* !REGS_64BIT */#define MOVE_BIGCHUNK(src, dst, offset, t0, t1, t2, t3)			\	lduw			[%src + offset + 0x00], %t0; 		\	lduw			[%src + offset + 0x04], %t1; 		\	lduw			[%src + offset + 0x08], %t2; 		\	lduw			[%src + offset + 0x0c], %t3; 		\	stw			%t0, [%dst + offset + 0x00]; 		\	stw			%t1, [%dst + offset + 0x04]; 		\	stw			%t2, [%dst + offset + 0x08]; 		\	stw			%t3, [%dst + offset + 0x0c]; 		\	lduw			[%src + offset + 0x10], %t0; 		\	lduw			[%src + offset + 0x14], %t1; 		\	lduw			[%src + offset + 0x18], %t2; 		\	lduw			[%src + offset + 0x1c], %t3; 		\	stw			%t0, [%dst + offset + 0x10]; 		\	stw			%t1, [%dst + offset + 0x14]; 		\	stw			%t2, [%dst + offset + 0x18]; 		\	stw			%t3, [%dst + offset + 0x1c];#define MOVE_LASTCHUNK(src, dst, offset, t0, t1, t2, t3)		\	lduw			[%src - offset - 0x10], %t0; 		\	lduw			[%src - offset - 0x0c], %t1; 		\	lduw			[%src - offset - 0x08], %t2; 		\	lduw			[%src - offset - 0x04], %t3; 		\	stw			%t0, [%dst - offset - 0x10]; 		\	stw			%t1, [%dst - offset - 0x0c]; 		\	stw			%t2, [%dst - offset - 0x08]; 		\	stw			%t3, [%dst - offset - 0x04];#endif /* !REGS_64BIT */#ifdef __KERNEL__		.section	__ex_table,#alloc		.section	.fixup,#alloc,#execinstr#endif		.text		.align			32		.globl			memcpy		.type			memcpy,@function		.globl			bcopy		.type			bcopy,@function#ifdef __KERNEL__memcpy_private:memcpy:		mov		ASI_P, asi_src			! IEU0	Group		brnz,pt		%o2, __memcpy_entry		! CTI		 mov		ASI_P, asi_dest			! IEU1		retl		 clr		%o0		.align			32		.globl			__copy_from_user		.type			__copy_from_user,@function__copy_from_user:rd		%asi, asi_src			! IEU0	Group		brnz,pt		%o2, __memcpy_entry		! CTI		 mov		ASI_P, asi_dest			! IEU1		.globl			__copy_to_user		.type			__copy_to_user,@function__copy_to_user:	mov		ASI_P, asi_src			! IEU0	Group		brnz,pt		%o2, __memcpy_entry		! CTI		 rd		%asi, asi_dest			! IEU1		retl						! CTI	Group		 clr		%o0				! IEU0	Group		.globl			__copy_in_user		.type			__copy_in_user,@function__copy_in_user:	rd		%asi, asi_src			! IEU0	Group		brnz,pt		%o2, __memcpy_entry		! CTI		 mov		asi_src, asi_dest		! IEU1		retl						! CTI	Group		 clr		%o0				! IEU0	Group#endifbcopy:		or		%o0, 0, %g3			! IEU0	Group		addcc		%o1, 0, %o0			! IEU1		brgez,pt	%o2, memcpy_private		! CTI		 or		%g3, 0, %o1			! IEU0	Group		retl						! CTI	Group brk forced		 clr		%o0				! IEU0#ifdef __KERNEL__#define BRANCH_ALWAYS	0x10680000#define NOP		0x01000000#define ULTRA3_DO_PATCH(OLD, NEW)	\	sethi	%hi(NEW), %g1; \	or	%g1, %lo(NEW), %g1; \	sethi	%hi(OLD), %g2; \	or	%g2, %lo(OLD), %g2; \	sub	%g1, %g2, %g1; \	sethi	%hi(BRANCH_ALWAYS), %g3; \	srl	%g1, 2, %g1; \	or	%g3, %lo(BRANCH_ALWAYS), %g3; \	or	%g3, %g1, %g3; \	stw	%g3, [%g2]; \	sethi	%hi(NOP), %g3; \	or	%g3, %lo(NOP), %g3; \	stw	%g3, [%g2 + 0x4]; \	flush	%g2;	.globl	cheetah_patch_copyopscheetah_patch_copyops:	ULTRA3_DO_PATCH(memcpy, U3memcpy)	ULTRA3_DO_PATCH(__copy_from_user, U3copy_from_user)	ULTRA3_DO_PATCH(__copy_to_user, U3copy_to_user)	ULTRA3_DO_PATCH(__copy_in_user, U3copy_in_user)	retl	 nop#undef BRANCH_ALWAYS#undef NOP#undef ULTRA3_DO_PATCH#endif /* __KERNEL__ */	.align			32#ifdef __KERNEL__	andcc			%o0, 7, %g2			! IEU1	Group#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷成人综合网| 日本高清不卡一区| 久久久蜜桃精品| 国产精品66部| 五月开心婷婷久久| 91精品国产综合久久蜜臀| 男男视频亚洲欧美| 久久久久久久久久看片| 99久久精品免费| 亚洲国产人成综合网站| 91精品国产欧美日韩| 一区二区三区在线视频免费| 精品日本一线二线三线不卡| 日本成人在线网站| 欧美精品一区二区三区蜜臀| 福利一区在线观看| 亚洲一区二区av电影| 欧美一二三区在线观看| 成人av网站在线观看免费| 亚洲精品福利视频网站| 欧美一二三区在线| 99久久伊人精品| 免费成人在线观看| 亚洲视频免费观看| 欧美一区二区三区四区在线观看| 国产成人超碰人人澡人人澡| 一区二区免费在线播放| 7777精品伊人久久久大香线蕉的 | 91久久国产综合久久| 天堂av在线一区| 91精品国产欧美一区二区成人 | 成人黄色av电影| 亚洲欧美偷拍另类a∨色屁股| 欧美偷拍一区二区| 国产精品夜夜嗨| 亚洲va欧美va人人爽| 国产精品欧美一级免费| 欧美一区二区三区精品| 97精品视频在线观看自产线路二| 日本aⅴ免费视频一区二区三区| 亚洲欧洲日韩av| 欧美精品一区二| 欧美日韩精品一区二区天天拍小说 | 欧美疯狂做受xxxx富婆| 丰满白嫩尤物一区二区| 毛片基地黄久久久久久天堂| 亚洲精品一二三区| 亚洲国产欧美在线人成| 久久亚洲精精品中文字幕早川悠里 | 一区二区免费在线播放| 精品国产免费人成在线观看| 欧美三级一区二区| 99久久国产免费看| 国产精品一二三在| 日韩avvvv在线播放| 亚洲人成7777| 中文字幕在线一区免费| 亚洲国产电影在线观看| 欧美r级在线观看| 欧美一区二区三区思思人| 欧美综合色免费| 91免费版pro下载短视频| 懂色av一区二区三区免费看| 精品一区二区三区香蕉蜜桃| 毛片av中文字幕一区二区| 午夜a成v人精品| 亚洲一区二区三区四区不卡| 一区二区久久久久久| 亚洲日本在线视频观看| 日韩伦理av电影| 欧美亚洲综合久久| 久久久精品国产99久久精品芒果| 成人黄色在线网站| 国产一区二区h| 国产剧情在线观看一区二区| 国产精品一区二区在线播放| 国产在线播放一区三区四| 国产呦萝稀缺另类资源| 精东粉嫩av免费一区二区三区| 久久狠狠亚洲综合| 国产一区二区看久久| 国产精品一区在线观看乱码| 国产中文一区二区三区| 国产精品一区二区三区乱码| 懂色av一区二区三区免费观看| 成人国产精品免费观看动漫| 91老师片黄在线观看| 欧美怡红院视频| 欧美精品一二三| 日韩免费在线观看| 国产欧美一区视频| 亚洲色欲色欲www| 亚洲电影一级黄| 久久成人综合网| 成人性视频免费网站| 精品少妇一区二区三区视频免付费 | 久久人人爽人人爽| 亚洲国产精品久久久久秋霞影院| 亚洲综合色自拍一区| 青娱乐精品在线视频| 国产激情一区二区三区四区| 91丨九色丨蝌蚪丨老版| 精品视频一区二区三区免费| 日韩一区二区三区在线| 国产精品水嫩水嫩| 亚洲二区视频在线| 韩国精品一区二区| 91免费在线视频观看| 91精品国产一区二区三区蜜臀| 2023国产精品视频| 樱花影视一区二区| 久久国产人妖系列| 91香蕉视频mp4| 精品日韩av一区二区| 亚洲欧美激情插| 免费成人在线观看视频| 91亚洲国产成人精品一区二三| 欧美一区二区在线视频| 欧美国产精品v| 丝瓜av网站精品一区二区| 成人不卡免费av| 日韩一级片在线播放| 自拍偷拍亚洲欧美日韩| 久久成人羞羞网站| 欧美日韩综合色| 亚洲国产精品传媒在线观看| 免费精品视频最新在线| 91黄色激情网站| 久久久精品国产免费观看同学| 天天射综合影视| av资源站一区| 久久久综合精品| 青青国产91久久久久久 | 成人小视频在线| 日韩视频123| 亚洲午夜久久久久久久久久久| 高清在线不卡av| xnxx国产精品| 日韩电影在线一区二区三区| 色综合中文字幕国产| 日韩免费福利电影在线观看| 亚洲超丰满肉感bbw| 91精品福利视频| 国产精品丝袜久久久久久app| 国精品**一区二区三区在线蜜桃| 91精品国产综合久久久蜜臀图片| 亚洲精品国产精品乱码不99| 成年人午夜久久久| 中文字幕免费不卡| 国产不卡在线播放| 2020日本不卡一区二区视频| 蜜臂av日日欢夜夜爽一区| 欧美午夜精品久久久久久超碰 | 亚洲少妇30p| 色婷婷av一区二区三区软件| 色香蕉成人二区免费| 亚洲一区精品在线| 中文字幕一区二区三中文字幕| 中文字幕人成不卡一区| 久久国产乱子精品免费女| 色婷婷av一区二区三区软件 | 91在线观看下载| 国产精品久久久久9999吃药| 成人黄页在线观看| 亚洲一区二区三区视频在线播放| 久久婷婷国产综合精品青草| 国产精品久久久久久户外露出 | 蜜臀91精品一区二区三区| 日本电影亚洲天堂一区| 亚洲色图欧美在线| 欧美亚洲一区三区| 亚洲最大的成人av| 欧美少妇bbb| 秋霞电影网一区二区| 亚洲精品一线二线三线无人区| 国内久久精品视频| 日本一区二区视频在线| 91高清视频在线| 天堂av在线一区| 2021久久国产精品不只是精品| 国产成人精品免费| 亚洲免费在线观看视频| 欧美日韩一区二区三区四区| 免费在线成人网| 国产农村妇女毛片精品久久麻豆 | 亚洲在线观看免费视频| 欧美区一区二区三区| 久久99国产精品久久99| 久久久亚洲高清| av网站一区二区三区| 亚洲国产wwwccc36天堂| 精品久久久久一区二区国产| 国产成人免费视频网站高清观看视频 | 精品福利一区二区三区| 成人综合激情网| 亚洲在线观看免费视频| 精品国内二区三区| 99精品国产热久久91蜜凸| 亚洲制服丝袜av| 久久午夜色播影院免费高清|