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

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

?? bcopy.s

?? microWindows的模擬器,VC下
?? S
?? 第 1 頁 / 共 3 頁
字號:
Hi,The following code is the file support.s from the FreeBSD 2.6distribution for i386.  I included the entire file so you canpick and choose as you like and you can pick up the license.There's a generic bcopy that does overlapping, uses rep movsin the largest chunk possible, etc.  That might do the trick.There's a few macros around but hopefully you can decipherthem.Later,FM--Frank W. MillerCornfed Systems Incwww.cornfed.com--/*- * Copyright (c) 1993 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#include "npx.h"#include "opt_cpu.h"#include <machine/asmacros.h>#include <machine/cputypes.h>#include <machine/pmap.h>#include <machine/specialreg.h>#include "assym.s"#define KDSEL		0x10			/* kernel data selector */#define IDXSHIFT	10	.data	.globl	_bcopy_vector_bcopy_vector:	.long	_generic_bcopy	.globl	_bzero_bzero:	.long	_generic_bzero	.globl	_copyin_vector_copyin_vector:	.long	_generic_copyin	.globl	_copyout_vector_copyout_vector:	.long	_generic_copyout	.globl	_ovbcopy_vector_ovbcopy_vector:	.long	_generic_bcopy#if defined(I586_CPU) && NNPX > 0kernel_fpu_lock:	.byte	0xfe	.space	3#endif	.text/* * bcopy family * void bzero(void *buf, u_int len) */ENTRY(generic_bzero)	pushl	%edi	movl	8(%esp),%edi	movl	12(%esp),%ecx	xorl	%eax,%eax	shrl	$2,%ecx	cld	rep	stosl	movl	12(%esp),%ecx	andl	$3,%ecx	rep	stosb	popl	%edi	ret#if defined(I486_CPU)ENTRY(i486_bzero)	movl	4(%esp),%edx	movl	8(%esp),%ecx	xorl	%eax,%eax/* * do 64 byte chunks first * * XXX this is probably over-unrolled at least for DX2's */2:	cmpl	$64,%ecx	jb	3f	movl	%eax,(%edx)	movl	%eax,4(%edx)	movl	%eax,8(%edx)	movl	%eax,12(%edx)	movl	%eax,16(%edx)	movl	%eax,20(%edx)	movl	%eax,24(%edx)	movl	%eax,28(%edx)	movl	%eax,32(%edx)	movl	%eax,36(%edx)	movl	%eax,40(%edx)	movl	%eax,44(%edx)	movl	%eax,48(%edx)	movl	%eax,52(%edx)	movl	%eax,56(%edx)	movl	%eax,60(%edx)	addl	$64,%edx	subl	$64,%ecx	jnz	2b	ret/* * do 16 byte chunks */	SUPERALIGN_TEXT3:	cmpl	$16,%ecx	jb	4f	movl	%eax,(%edx)	movl	%eax,4(%edx)	movl	%eax,8(%edx)	movl	%eax,12(%edx)	addl	$16,%edx	subl	$16,%ecx	jnz	3b	ret/* * do 4 byte chunks */	SUPERALIGN_TEXT4:	cmpl	$4,%ecx	jb	5f	movl	%eax,(%edx)	addl	$4,%edx	subl	$4,%ecx	jnz	4b	ret/* * do 1 byte chunks * a jump table seems to be faster than a loop or more range reductions * * XXX need a const section for non-text */	.datajtab:	.long	do0	.long	do1	.long	do2	.long	do3	.text	SUPERALIGN_TEXT5:	jmp	jtab(,%ecx,4)	SUPERALIGN_TEXTdo3:	movw	%ax,(%edx)	movb	%al,2(%edx)	ret	SUPERALIGN_TEXTdo2:	movw	%ax,(%edx)	ret	SUPERALIGN_TEXTdo1:	movb	%al,(%edx)	ret	SUPERALIGN_TEXTdo0:	ret#endif#if defined(I586_CPU) && NNPX > 0ENTRY(i586_bzero)	movl	4(%esp),%edx	movl	8(%esp),%ecx	/*	 * The FPU register method is twice as fast as the integer register	 * method unless the target is in the L1 cache and we pre-allocate a	 * cache line for it (then the integer register method is 4-5 times	 * faster).  However, we never pre-allocate cache lines, since that	 * would make the integer method 25% or more slower for the common	 * case when the target isn't in either the L1 cache or the L2 cache.	 * Thus we normally use the FPU register method unless the overhead	 * would be too large.	 */	cmpl	$256,%ecx	/* empirical; clts, fninit, smsw cost a lot */	jb	intreg_i586_bzero	/*	 * The FPU registers may belong to an application or to fastmove()	 * or to another invocation of bcopy() or ourself in a higher level	 * interrupt or trap handler.  Preserving the registers is	 * complicated since we avoid it if possible at all levels.  We	 * want to localize the complications even when that increases them.	 * Here the extra work involves preserving CR0_TS in TS.	 * `npxproc != NULL' is supposed to be the condition that all the	 * FPU resources belong to an application, but npxproc and CR0_TS	 * aren't set atomically enough for this condition to work in	 * interrupt handlers.	 *	 * Case 1: FPU registers belong to the application: we must preserve	 * the registers if we use them, so we only use the FPU register	 * method if the target size is large enough to amortize the extra	 * overhead for preserving them.  CR0_TS must be preserved although	 * it is very likely to end up as set.	 *	 * Case 2: FPU registers belong to fastmove(): fastmove() currently	 * makes the registers look like they belong to an application so	 * that cpu_switch() and savectx() don't have to know about it, so	 * this case reduces to case 1.	 *	 * Case 3: FPU registers belong to the kernel: don't use the FPU	 * register method.  This case is unlikely, and supporting it would	 * be more complicated and might take too much stack.	 *	 * Case 4: FPU registers don't belong to anyone: the FPU registers	 * don't need to be preserved, so we always use the FPU register	 * method.  CR0_TS must be preserved although it is very likely to	 * always end up as clear.	 */	cmpl	$0,_npxproc	je	i586_bz1	cmpl	$256+184,%ecx		/* empirical; not quite 2*108 more */	jb	intreg_i586_bzero	sarb	$1,kernel_fpu_lock	jc	intreg_i586_bzero	smsw	%ax	clts	subl	$108,%esp	fnsave	0(%esp)	jmp	i586_bz2i586_bz1:	sarb	$1,kernel_fpu_lock	jc	intreg_i586_bzero	smsw	%ax	clts	fninit				/* XXX should avoid needing this */i586_bz2:	fldz	/*	 * Align to an 8 byte boundary (misalignment in the main loop would	 * cost a factor of >= 2).  Avoid jumps (at little cost if it is	 * already aligned) by always zeroing 8 bytes and using the part up	 * to the _next_ alignment position.	 */	fstl	0(%edx)	addl	%edx,%ecx		/* part of %ecx -= new_%edx - %edx */	addl	$8,%edx	andl	$~7,%edx	subl	%edx,%ecx	/*	 * Similarly align `len' to a multiple of 8.	 */	fstl	-8(%edx,%ecx)	decl	%ecx	andl	$~7,%ecx	/*	 * This wouldn't be any faster if it were unrolled, since the loop	 * control instructions are much faster than the fstl and/or done	 * in parallel with it so their overhead is insignificant.	 */fpureg_i586_bzero_loop:	fstl	0(%edx)	addl	$8,%edx	subl	$8,%ecx	cmpl	$8,%ecx	jae	fpureg_i586_bzero_loop	cmpl	$0,_npxproc	je	i586_bz3	frstor	0(%esp)	addl	$108,%esp	lmsw	%ax	movb	$0xfe,kernel_fpu_lock	reti586_bz3:	fstpl	%st(0)	lmsw	%ax	movb	$0xfe,kernel_fpu_lock	retintreg_i586_bzero:	/*	 * `rep stos' seems to be the best method in practice for small	 * counts.  Fancy methods usually take too long to start up due	 * to cache and BTB misses.	 */	pushl	%edi	movl	%edx,%edi	xorl	%eax,%eax	shrl	$2,%ecx	cld	rep	stosl	movl	12(%esp),%ecx	andl	$3,%ecx	jne	1f	popl	%edi	ret1:	rep	stosb	popl	%edi	ret#endif /* I586_CPU && NNPX > 0 *//* fillw(pat, base, cnt) */ENTRY(fillw)	pushl	%edi	movl	8(%esp),%eax	movl	12(%esp),%edi	movl	16(%esp),%ecx	cld	rep	stosw	popl	%edi	retENTRY(bcopyb)bcopyb:	pushl	%esi	pushl	%edi	movl	12(%esp),%esi	movl	16(%esp),%edi	movl	20(%esp),%ecx	movl	%edi,%eax	subl	%esi,%eax	cmpl	%ecx,%eax			/* overlapping && src < dst? */	jb	1f	cld					/* nope, copy forwards */	rep	movsb	popl	%edi	popl	%esi	ret	ALIGN_TEXT1:	addl	%ecx,%edi			/* copy backwards. */	addl	%ecx,%esi	decl	%edi	decl	%esi	std	rep	movsb	popl	%edi	popl	%esi	cld	retENTRY(bcopy)	MEXITCOUNT	jmp	*_bcopy_vectorENTRY(ovbcopy)	MEXITCOUNT	jmp	*_ovbcopy_vector/* * generic_bcopy(src, dst, cnt) *  ws@tools.de     (Wolfgang Solfrank, TooLs GmbH) +49-228-985800 */ENTRY(generic_bcopy)	pushl	%esi	pushl	%edi	movl	12(%esp),%esi	movl	16(%esp),%edi	movl	20(%esp),%ecx	movl	%edi,%eax	subl	%esi,%eax	cmpl	%ecx,%eax			/* overlapping && src < dst? */	jb	1f	shrl	$2,%ecx				/* copy by 32-bit words */	cld					/* nope, copy forwards */	rep	movsl	movl	20(%esp),%ecx	andl	$3,%ecx				/* any bytes left? */	rep	movsb	popl	%edi	popl	%esi	ret	ALIGN_TEXT1:	addl	%ecx,%edi			/* copy backwards */	addl	%ecx,%esi	decl	%edi	decl	%esi	andl	$3,%ecx				/* any fractional bytes? */	std	rep	movsb	movl	20(%esp),%ecx			/* copy remainder by 32-bit words */	shrl	$2,%ecx	subl	$3,%esi	subl	$3,%edi	rep	movsl	popl	%edi	popl	%esi	cld	ret#if defined(I586_CPU) && NNPX > 0ENTRY(i586_bcopy)	pushl	%esi	pushl	%edi	movl	12(%esp),%esi	movl	16(%esp),%edi	movl	20(%esp),%ecx	movl	%edi,%eax	subl	%esi,%eax	cmpl	%ecx,%eax			/* overlapping && src < dst? */	jb	1f	cmpl	$1024,%ecx	jb	small_i586_bcopy	sarb	$1,kernel_fpu_lock	jc	small_i586_bcopy	cmpl	$0,_npxproc	je	i586_bc1	smsw	%dx	clts	subl	$108,%esp	fnsave	0(%esp)	jmp	4fi586_bc1:	smsw	%dx	clts	fninit				/* XXX should avoid needing this */	ALIGN_TEXT4:	pushl	%ecx#define	DCACHE_SIZE	8192	cmpl	$(DCACHE_SIZE-512)/2,%ecx	jbe	2f	movl	$(DCACHE_SIZE-512)/2,%ecx2:	subl	%ecx,0(%esp)	cmpl	$256,%ecx	jb	5f			/* XXX should prefetch if %ecx >= 32 */	pushl	%esi	pushl	%ecx	ALIGN_TEXT3:	movl	0(%esi),%eax	movl	32(%esi),%eax	movl	64(%esi),%eax	movl	96(%esi),%eax	movl	128(%esi),%eax	movl	160(%esi),%eax	movl	192(%esi),%eax	movl	224(%esi),%eax	addl	$256,%esi	subl	$256,%ecx	cmpl	$256,%ecx	jae	3b	popl	%ecx	popl	%esi5:	ALIGN_TEXTlarge_i586_bcopy_loop:	fildq	0(%esi)	fildq	8(%esi)	fildq	16(%esi)	fildq	24(%esi)	fildq	32(%esi)	fildq	40(%esi)	fildq	48(%esi)	fildq	56(%esi)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产a毛片| 欧美人xxxx| 国产精品久久久久9999吃药| 国产精品主播直播| 成人欧美一区二区三区白人 | 亚洲综合一区二区| 欧美日韩中文字幕一区二区| 五月激情综合色| 久久久三级国产网站| 不卡电影免费在线播放一区| 一区二区三区欧美久久| 欧美一区二区女人| 国产精品系列在线观看| 一区二区三区中文字幕在线观看| 欧美日韩国产综合视频在线观看| 美女精品一区二区| 中文幕一区二区三区久久蜜桃| 97国产精品videossex| 午夜视频久久久久久| 久久久久久久久蜜桃| 色婷婷综合五月| 毛片av一区二区| 18成人在线视频| 日韩欧美一区二区在线视频| 懂色av一区二区夜夜嗨| 亚洲高清视频的网址| 久久久久青草大香线综合精品| 在线影院国内精品| 极品少妇一区二区三区精品视频 | 国产在线视频一区二区三区| 国产精品理伦片| 91精品麻豆日日躁夜夜躁| 国产成人一级电影| 亚洲第一在线综合网站| 久久久久久亚洲综合| 在线观看区一区二| 精品一区二区三区免费观看 | 欧美日韩免费视频| 国产电影一区在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品久久久久毛片软件| 91精品国产综合久久久蜜臀粉嫩| 99热在这里有精品免费| 国产做a爰片久久毛片| 亚洲国产视频直播| 中文字幕一区二区三区不卡| 精品美女在线播放| 欧美日本在线看| 91成人国产精品| 国产白丝精品91爽爽久久| 爽好久久久欧美精品| 亚洲乱码精品一二三四区日韩在线| 日韩亚洲国产中文字幕欧美| 欧美体内she精视频| 色综合久久99| k8久久久一区二区三区| 国产精品白丝jk白祙喷水网站| 日本视频一区二区| 亚洲国产综合色| 亚洲精品免费一二三区| 国产精品久久久久婷婷| 久久久久9999亚洲精品| 日韩三级在线观看| 欧美日产国产精品| 欧美日韩国产综合一区二区三区 | 欧美少妇性性性| 99视频一区二区| aa级大片欧美| 99九九99九九九视频精品| 粉嫩13p一区二区三区| 国产成人综合网| 国产成a人亚洲精品| 国产综合色精品一区二区三区| 久久精品久久综合| 久久精品国产色蜜蜜麻豆| 日本免费新一区视频| 蜜桃视频第一区免费观看| 美女脱光内衣内裤视频久久影院| 首页亚洲欧美制服丝腿| 美腿丝袜亚洲色图| 蜜臀av性久久久久av蜜臀妖精 | 亚洲一区精品在线| 一区二区三区美女| 五月天视频一区| 久久国产日韩欧美精品| 国产一区二区三区在线观看免费视频| 狠狠色丁香久久婷婷综合丁香| 国产在线精品一区二区夜色 | 精品国产乱码久久久久久夜甘婷婷| 欧美一区二区啪啪| 精品少妇一区二区三区免费观看| 亚洲精品一区二区在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 久久一夜天堂av一区二区三区| 日本一区二区三区久久久久久久久不| 中文字幕一区二区三区精华液 | 日本在线播放一区二区三区| 美女一区二区三区在线观看| 国产成人精品免费| 成人av高清在线| 欧美三级视频在线| 日韩精品一区二区三区在线播放| 国产欧美日韩视频一区二区| 亚洲欧美aⅴ...| 日韩黄色免费电影| 国产成人av电影免费在线观看| 色av成人天堂桃色av| 日韩三区在线观看| 国产精品高清亚洲| 天堂va蜜桃一区二区三区漫画版| 国产一区二区在线观看免费| 91丨porny丨最新| 欧美一级专区免费大片| 国产精品国产馆在线真实露脸 | 久久久亚洲精品一区二区三区 | 欧美精品久久99| 久久久久久久久久久久久久久99| 亚洲欧美日韩国产综合在线| 免费在线观看一区二区三区| 99久久伊人网影院| 欧美精三区欧美精三区| 亚洲国产激情av| 肉色丝袜一区二区| 99精品欧美一区| 精品国产一区a| 一区二区三区中文字幕精品精品| 狠狠色狠狠色合久久伊人| 日本韩国欧美一区| 久久精品人人做人人综合 | 亚洲第一精品在线| 成人黄色片在线观看| 91麻豆精品91久久久久同性| 中文字幕永久在线不卡| 激情国产一区二区 | 91欧美激情一区二区三区成人| 欧美一区二区三区在线视频 | 视频在线观看91| www.亚洲人| 久久噜噜亚洲综合| 视频一区在线播放| 在线精品视频一区二区三四| 国产色一区二区| 久热成人在线视频| 欧美日韩1234| 亚洲一区二区欧美| 91麻豆视频网站| 国产精品久久影院| 国产a精品视频| 久久综合色一综合色88| 肉丝袜脚交视频一区二区| 91福利视频网站| 综合久久一区二区三区| 高清成人在线观看| 亚洲精品一区二区三区在线观看 | 亚洲国产欧美日韩另类综合| 不卡电影一区二区三区| 日本一区二区三区四区| 国产精品亚洲一区二区三区妖精| 日韩亚洲欧美一区| 日韩成人一级大片| 欧美日韩黄色一区二区| 亚洲综合区在线| 欧美午夜精品一区| 亚洲在线一区二区三区| 在线一区二区三区做爰视频网站| 综合欧美一区二区三区| 99在线精品免费| 最新欧美精品一区二区三区| 99v久久综合狠狠综合久久| 国产精品天美传媒| av一区二区三区黑人| 国产精品福利一区二区| jizz一区二区| 一区二区三区美女视频| 欧美午夜理伦三级在线观看| 亚洲成av人片一区二区三区| 欧美日韩亚洲综合在线| 丝袜亚洲精品中文字幕一区| 91精品国产综合久久福利| 日本亚洲电影天堂| 欧美精品一区二区三区很污很色的| 国产一区在线看| 国产精品免费久久久久| 91蜜桃免费观看视频| 亚洲五码中文字幕| 在线综合视频播放| 国产一区二区精品久久91| 中文字幕国产精品一区二区| 91视频你懂的| 午夜精品一区在线观看| 日韩欧美中文字幕精品| 国产999精品久久久久久| 中文字幕一区二区5566日韩| 欧美三级一区二区| 极品美女销魂一区二区三区| 国产精品理论在线观看| 欧美在线影院一区二区| 极品少妇一区二区| 综合久久国产九一剧情麻豆| 91精品中文字幕一区二区三区|