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

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

?? bcopy.s

?? 一個嵌入式操作系統(microwindows)的源代碼
?? 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一区二区三区免费野_久草精品视频
欧美激情一区二区三区在线| 日韩电影一二三区| 一区二区三区中文字幕精品精品| 午夜精品福利视频网站| 国产91丝袜在线观看| 欧美日韩国产美女| 国产亚洲1区2区3区| 五月天亚洲婷婷| 99久久婷婷国产综合精品电影 | 91年精品国产| 欧美xxx久久| 亚洲成a人v欧美综合天堂下载| 国产一区二区三区观看| 欧美日韩亚洲高清一区二区| 中文文精品字幕一区二区| 日本网站在线观看一区二区三区| 色综合久久综合网| 精品91自产拍在线观看一区| 亚洲国产视频一区| 91蜜桃在线免费视频| 久久蜜桃香蕉精品一区二区三区| 天堂av在线一区| 色婷婷av一区二区三区软件| 国产日韩欧美一区二区三区乱码| 男女男精品视频| 欧美军同video69gay| 亚洲品质自拍视频| 99久久免费精品高清特色大片| 久久这里只有精品首页| 毛片基地黄久久久久久天堂| 欧美日韩国产电影| 亚洲精品第1页| 99re热视频这里只精品| 中文子幕无线码一区tr| 国产a久久麻豆| 国产日韩欧美精品在线| 国产精品77777| 久久久精品中文字幕麻豆发布| 久草在线在线精品观看| 欧美videos中文字幕| 麻豆专区一区二区三区四区五区| 这里只有精品视频在线观看| 日韩激情一区二区| 91精选在线观看| 免费日本视频一区| 日韩你懂的电影在线观看| 蜜桃传媒麻豆第一区在线观看| 精品视频在线免费观看| 天天影视色香欲综合网老头| 欧美乱妇15p| 喷白浆一区二区| 精品国产乱码久久久久久浪潮| 狠狠久久亚洲欧美| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美日韩不卡一区二区| 亚洲国产欧美在线| 欧美一区三区二区| 韩国av一区二区三区| 国产欧美一区二区三区在线看蜜臀 | 色狠狠av一区二区三区| 一区二区三区产品免费精品久久75| jizz一区二区| 亚洲一区二区三区四区在线观看| 欧美另类z0zxhd电影| 久久激情综合网| 欧美国产成人在线| 色激情天天射综合网| 三级欧美韩日大片在线看| 精品国产一区二区三区av性色 | 亚洲欧洲制服丝袜| 69堂精品视频| 国产精品一二三四区| 亚洲人妖av一区二区| 7777精品久久久大香线蕉| 国产电影一区二区三区| 亚洲激情在线播放| 精品国产乱码久久久久久图片| 91在线码无精品| 蜜桃av噜噜一区二区三区小说| 久久久国产午夜精品| 在线欧美小视频| 九九国产精品视频| 亚洲精品免费看| 精品99999| 欧美在线小视频| 丰满亚洲少妇av| 日产欧产美韩系列久久99| 国产欧美一区二区精品秋霞影院| 欧美撒尿777hd撒尿| 国产福利一区二区三区视频在线| 亚洲亚洲人成综合网络| 国产校园另类小说区| 欧美三级电影在线看| 国产电影精品久久禁18| 丝袜美腿一区二区三区| 1024成人网| 久久无码av三级| 欧美一区二区三区视频在线观看| 91日韩精品一区| 国产福利91精品一区二区三区| 天天操天天干天天综合网| 综合中文字幕亚洲| 国产免费成人在线视频| 欧美xxxxxxxxx| 欧美巨大另类极品videosbest| av电影一区二区| 国产福利视频一区二区三区| 久久国产精品色| 五月天亚洲婷婷| 亚洲综合成人在线| 亚洲欧洲一区二区在线播放| 国产午夜亚洲精品羞羞网站| 精品久久国产字幕高潮| 欧美一区二区三区婷婷月色| 欧美日韩在线综合| 欧美写真视频网站| 在线视频一区二区三| 色天使色偷偷av一区二区| 99久久伊人久久99| 97aⅴ精品视频一二三区| proumb性欧美在线观看| 91美女片黄在线观看| 色综合久久久久| 91浏览器在线视频| 欧美中文字幕不卡| 欧美三级电影一区| 7799精品视频| 精品乱人伦小说| 久久亚洲免费视频| 中文字幕在线视频一区| 亚洲欧美综合网| 亚洲小说欧美激情另类| 日韩精品免费视频人成| 久久精品99国产精品日本| 国产老女人精品毛片久久| 国产精品88av| 91亚洲资源网| 69堂精品视频| 久久蜜桃av一区二区天堂| 亚洲国产成人午夜在线一区| 国产精品日产欧美久久久久| 国产精品久久国产精麻豆99网站| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 一本大道综合伊人精品热热| 色国产综合视频| 欧美高清视频不卡网| 2023国产一二三区日本精品2022| 国产人成亚洲第一网站在线播放| 国产精品久久久久久久第一福利| 亚洲自拍偷拍九九九| 另类小说图片综合网| 国产成人在线视频免费播放| 91麻豆国产福利精品| 欧美另类高清zo欧美| 国产亚洲福利社区一区| 一区二区免费在线| 久久99精品久久只有精品| 成人少妇影院yyyy| 欧美精品一卡二卡| 国产性天天综合网| 午夜婷婷国产麻豆精品| 国产一区二区91| 欧美色网站导航| 久久精品亚洲国产奇米99| 一区二区三区精密机械公司| 久久er99精品| 欧洲生活片亚洲生活在线观看| 欧美va日韩va| 亚洲一区二区欧美激情| 国产高清久久久| 欧美一级高清大全免费观看| 国产精品成人免费| 黄色资源网久久资源365| 欧洲另类一二三四区| 国产亚洲婷婷免费| 蜜桃视频第一区免费观看| 色天使色偷偷av一区二区| 欧美激情资源网| 免费精品99久久国产综合精品| 97se亚洲国产综合自在线观| 欧美大度的电影原声| 一区二区三区四区不卡视频| 风间由美中文字幕在线看视频国产欧美| 欧美精品18+| 亚洲综合久久av| 日本道色综合久久| 国产精品免费视频观看| 国产精品自拍网站| 日韩一区二区不卡| 午夜国产不卡在线观看视频| 91美女福利视频| ㊣最新国产の精品bt伙计久久| 狠狠色综合播放一区二区| 日韩一区二区三区四区五区六区| 亚洲午夜一区二区三区| 色美美综合视频| 亚洲精品水蜜桃| 波多野结衣亚洲一区| 亚洲.国产.中文慕字在线| 日本精品裸体写真集在线观看|