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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? reg_ld_str.c

?? freebsd v4.4內(nèi)核源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* *  reg_ld_str.c * * All of the functions which transfer data between user memory and FPU_REGs. * * * Copyright (C) 1992,1993,1994 *                       W. Metzenthen, 22 Parker St, Ormond, Vic 3163, *                       Australia.  E-mail   billm@vaxc.cc.monash.edu.au * All rights reserved. * * This copyright notice covers the redistribution and use of the * FPU emulator developed by W. Metzenthen. It covers only its use * in the 386BSD, FreeBSD and NetBSD operating systems. Any other * use is not permitted under this copyright. * * 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 include information specifying *    that source code for the emulator is freely available and include *    either: *      a) an offer to provide the source code for a nominal distribution *         fee, or *      b) list at least two alternative methods whereby the source *         can be obtained, e.g. a publically accessible bulletin board *         and an anonymous ftp site from which the software can be *         downloaded. * 3. All advertising materials specifically mentioning features or use of *    this emulator must acknowledge that it was developed by W. Metzenthen. * 4. The name of W. Metzenthen may not be used to endorse or promote *    products derived from this software without specific prior written *    permission. * * THIS SOFTWARE IS PROVIDED ``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 * W. METZENTHEN 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. * * * The purpose of this copyright, based upon the Berkeley copyright, is to * ensure that the covered software remains freely available to everyone. * * The software (with necessary differences) is also available, but under * the terms of the GNU copyleft, for the Linux operating system and for * the djgpp ms-dos extender. * * W. Metzenthen   June 1994. * * * $FreeBSD: src/sys/gnu/i386/fpemul/reg_ld_str.c,v 1.7.2.1 1999/09/05 08:09:52 peter Exp $ * *//*---------------------------------------------------------------------------+ | Note:                                                                     | |    The file contains code which accesses user memory.                     | |    Emulator static data may change when user memory is accessed, due to   | |    other processes using the emulator while swapping is in progress.      | +---------------------------------------------------------------------------*/#include <sys/param.h>#include <sys/proc.h>#include <sys/systm.h>#include <machine/cpu.h>#include <machine/md_var.h>#include <machine/pcb.h>#include <gnu/i386/fpemul/fpu_emu.h>#include <gnu/i386/fpemul/fpu_system.h>#include <gnu/i386/fpemul/exception.h>#include <gnu/i386/fpemul/reg_constant.h>#include <gnu/i386/fpemul/control_w.h>#include <gnu/i386/fpemul/status_w.h>#define EXTENDED_Emax 0x3fff	/* largest valid exponent */#define EXTENDED_Ebias 0x3fff#define EXTENDED_Emin (-0x3ffe)	/* smallest valid exponent */#define DOUBLE_Emax 1023	/* largest valid exponent */#define DOUBLE_Ebias 1023#define DOUBLE_Emin (-1022)	/* smallest valid exponent */#define SINGLE_Emax 127		/* largest valid exponent */#define SINGLE_Ebias 127#define SINGLE_Emin (-126)	/* smallest valid exponent */#define LOST_UP    (EX_Precision | SW_C1)#define LOST_DOWN  EX_PrecisionFPU_REG FPU_loaded_data;/* Get a long double from user memory */voidreg_load_extended(void){	long double *s = (long double *) FPU_data_address;	unsigned long sigl, sigh, exp;	REENTRANT_CHECK(OFF);	/* Use temporary variables here because FPU_loaded data is static and	 * hence re-entrancy problems can arise */	sigl = fuword((unsigned long *) s);	sigh = fuword(1 + (unsigned long *) s);	exp = fusword(4 + (unsigned short *) s);	REENTRANT_CHECK(ON);	FPU_loaded_data.sigl = sigl;	FPU_loaded_data.sigh = sigh;	FPU_loaded_data.exp = exp;	if (FPU_loaded_data.exp & 0x8000)		FPU_loaded_data.sign = SIGN_NEG;	else		FPU_loaded_data.sign = SIGN_POS;	if ((FPU_loaded_data.exp &= 0x7fff) == 0) {		if (!(FPU_loaded_data.sigl | FPU_loaded_data.sigh)) {			FPU_loaded_data.tag = TW_Zero;			return;		}		/* The number is a de-normal or pseudodenormal. */		/* The 80486 doesn't regard pseudodenormals as denormals here. */		if (!(FPU_loaded_data.sigh & 0x80000000))			EXCEPTION(EX_Denormal);		FPU_loaded_data.exp++;		/* The default behaviour will now take care of it. */	} else		if (FPU_loaded_data.exp == 0x7fff) {			FPU_loaded_data.exp = EXTENDED_Emax;			if ((FPU_loaded_data.sigh == 0x80000000)			    && (FPU_loaded_data.sigl == 0)) {				FPU_loaded_data.tag = TW_Infinity;				return;			} else				if (!(FPU_loaded_data.sigh & 0x80000000)) {					/* Unsupported NaN data type */					EXCEPTION(EX_Invalid);					FPU_loaded_data.tag = TW_NaN;					return;				}			FPU_loaded_data.tag = TW_NaN;			return;		}	FPU_loaded_data.exp = (FPU_loaded_data.exp & 0x7fff) - EXTENDED_Ebias	    + EXP_BIAS;	FPU_loaded_data.tag = TW_Valid;	if (!(sigh & 0x80000000)) {		/* Unsupported data type */		EXCEPTION(EX_Invalid);		normalize_nuo(&FPU_loaded_data);	}}/* Get a double from user memory */voidreg_load_double(void){	double *dfloat = (double *) FPU_data_address;	int     exp;	unsigned m64, l64;	REENTRANT_CHECK(OFF);	m64 = fuword(1 + (unsigned long *) dfloat);	l64 = fuword((unsigned long *) dfloat);	REENTRANT_CHECK(ON);	if (m64 & 0x80000000)		FPU_loaded_data.sign = SIGN_NEG;	else		FPU_loaded_data.sign = SIGN_POS;	exp = ((m64 & 0x7ff00000) >> 20) - DOUBLE_Ebias;	m64 &= 0xfffff;	if (exp > DOUBLE_Emax) {		/* Infinity or NaN */		if ((m64 == 0) && (l64 == 0)) {			/* +- infinity */			FPU_loaded_data.exp = EXTENDED_Emax;			FPU_loaded_data.tag = TW_Infinity;			return;		} else {			/* Must be a signaling or quiet NaN */			FPU_loaded_data.exp = EXTENDED_Emax;			FPU_loaded_data.tag = TW_NaN;			FPU_loaded_data.sigh = (m64 << 11) | 0x80000000;			FPU_loaded_data.sigh |= l64 >> 21;			FPU_loaded_data.sigl = l64 << 11;			return;		}	} else		if (exp < DOUBLE_Emin) {			/* Zero or de-normal */			if ((m64 == 0) && (l64 == 0)) {				/* Zero */				int     c = FPU_loaded_data.sign;				reg_move(&CONST_Z, &FPU_loaded_data);				FPU_loaded_data.sign = c;				return;			} else {				/* De-normal */				EXCEPTION(EX_Denormal);				FPU_loaded_data.exp = DOUBLE_Emin + EXP_BIAS;				FPU_loaded_data.tag = TW_Valid;				FPU_loaded_data.sigh = m64 << 11;				FPU_loaded_data.sigh |= l64 >> 21;				FPU_loaded_data.sigl = l64 << 11;				normalize_nuo(&FPU_loaded_data);				return;			}		} else {			FPU_loaded_data.exp = exp + EXP_BIAS;			FPU_loaded_data.tag = TW_Valid;			FPU_loaded_data.sigh = (m64 << 11) | 0x80000000;			FPU_loaded_data.sigh |= l64 >> 21;			FPU_loaded_data.sigl = l64 << 11;			return;		}}/* Get a float from user memory */voidreg_load_single(void){	float  *single = (float *) FPU_data_address;	unsigned m32;	int     exp;	REENTRANT_CHECK(OFF);	m32 = fuword((unsigned long *) single);	REENTRANT_CHECK(ON);	if (m32 & 0x80000000)		FPU_loaded_data.sign = SIGN_NEG;	else		FPU_loaded_data.sign = SIGN_POS;	if (!(m32 & 0x7fffffff)) {		/* Zero */		int     c = FPU_loaded_data.sign;		reg_move(&CONST_Z, &FPU_loaded_data);		FPU_loaded_data.sign = c;		return;	}	exp = ((m32 & 0x7f800000) >> 23) - SINGLE_Ebias;	m32 = (m32 & 0x7fffff) << 8;	if (exp < SINGLE_Emin) {		/* De-normals */		EXCEPTION(EX_Denormal);		FPU_loaded_data.exp = SINGLE_Emin + EXP_BIAS;		FPU_loaded_data.tag = TW_Valid;		FPU_loaded_data.sigh = m32;		FPU_loaded_data.sigl = 0;		normalize_nuo(&FPU_loaded_data);		return;	} else		if (exp > SINGLE_Emax) {			/* Infinity or NaN */			if (m32 == 0) {				/* +- infinity */				FPU_loaded_data.exp = EXTENDED_Emax;				FPU_loaded_data.tag = TW_Infinity;				return;			} else {				/* Must be a signaling or quiet NaN */				FPU_loaded_data.exp = EXTENDED_Emax;				FPU_loaded_data.tag = TW_NaN;				FPU_loaded_data.sigh = m32 | 0x80000000;				FPU_loaded_data.sigl = 0;				return;			}		} else {			FPU_loaded_data.exp = exp + EXP_BIAS;			FPU_loaded_data.sigh = m32 | 0x80000000;			FPU_loaded_data.sigl = 0;			FPU_loaded_data.tag = TW_Valid;		}}/* Get a long long from user memory */voidreg_load_int64(void){	long long *_s = (long long *) FPU_data_address;	int     e;	long long s;	REENTRANT_CHECK(OFF);	((unsigned long *) &s)[0] = fuword((unsigned long *) _s);	((unsigned long *) &s)[1] = fuword(1 + (unsigned long *) _s);	REENTRANT_CHECK(ON);	if (s == 0) {		reg_move(&CONST_Z, &FPU_loaded_data);		return;	}	if (s > 0)		FPU_loaded_data.sign = SIGN_POS;	else {		s = -s;		FPU_loaded_data.sign = SIGN_NEG;	}	e = EXP_BIAS + 63;	*((long long *) &FPU_loaded_data.sigl) = s;	FPU_loaded_data.exp = e;	FPU_loaded_data.tag = TW_Valid;	normalize_nuo(&FPU_loaded_data);}/* Get a long from user memory */voidreg_load_int32(void){	long   *_s = (long *) FPU_data_address;	long    s;	int     e;	REENTRANT_CHECK(OFF);	s = (long) fuword((unsigned long *) _s);	REENTRANT_CHECK(ON);	if (s == 0) {		reg_move(&CONST_Z, &FPU_loaded_data);		return;	}	if (s > 0)		FPU_loaded_data.sign = SIGN_POS;	else {		s = -s;		FPU_loaded_data.sign = SIGN_NEG;	}	e = EXP_BIAS + 31;	FPU_loaded_data.sigh = s;	FPU_loaded_data.sigl = 0;	FPU_loaded_data.exp = e;	FPU_loaded_data.tag = TW_Valid;	normalize_nuo(&FPU_loaded_data);}/* Get a short from user memory */voidreg_load_int16(void){	short  *_s = (short *) FPU_data_address;	int     s, e;	REENTRANT_CHECK(OFF);	/* Cast as short to get the sign extended. */	s = (short) fusword((unsigned short *) _s);	REENTRANT_CHECK(ON);	if (s == 0) {		reg_move(&CONST_Z, &FPU_loaded_data);		return;	}	if (s > 0)		FPU_loaded_data.sign = SIGN_POS;	else {		s = -s;		FPU_loaded_data.sign = SIGN_NEG;	}	e = EXP_BIAS + 15;	FPU_loaded_data.sigh = s << 16;	FPU_loaded_data.sigl = 0;	FPU_loaded_data.exp = e;	FPU_loaded_data.tag = TW_Valid;	normalize_nuo(&FPU_loaded_data);}/* Get a packed bcd array from user memory */voidreg_load_bcd(void){	char   *s = (char *) FPU_data_address;	int     pos;	unsigned char bcd;	long long l = 0;	for (pos = 8; pos >= 0; pos--) {		l *= 10;		REENTRANT_CHECK(OFF);		bcd = (unsigned char) fubyte((unsigned char *) s + pos);		REENTRANT_CHECK(ON);		l += bcd >> 4;		l *= 10;		l += bcd & 0x0f;	}	/* Finish all access to user memory before putting stuff into the	 * static FPU_loaded_data */	REENTRANT_CHECK(OFF);	FPU_loaded_data.sign =	    ((unsigned char) fubyte((unsigned char *) s + 9)) & 0x80 ?	    SIGN_NEG : SIGN_POS;	REENTRANT_CHECK(ON);	if (l == 0) {		char    sign = FPU_loaded_data.sign;		reg_move(&CONST_Z, &FPU_loaded_data);		FPU_loaded_data.sign = sign;	} else {		*((long long *) &FPU_loaded_data.sigl) = l;		FPU_loaded_data.exp = EXP_BIAS + 63;		FPU_loaded_data.tag = TW_Valid;		normalize_nuo(&FPU_loaded_data);	}}/*===========================================================================*//* Put a long double into user memory */intreg_store_extended(void){	long double *d = (long double *) FPU_data_address;	long    e = FPU_st0_ptr->exp - EXP_BIAS + EXTENDED_Ebias;	unsigned short sign = FPU_st0_ptr->sign * 0x8000;	unsigned long ls, ms;	if (FPU_st0_tag == TW_Valid) {		if (e >= 0x7fff) {			EXCEPTION(EX_Overflow);	/* Overflow */			/* This is a special case: see sec 16.2.5.1 of the			 * 80486 book */			if (control_word & EX_Overflow) {				/* Overflow to infinity */				ls = 0;				ms = 0x80000000;				e = 0x7fff;			} else				return 0;		} else			if (e <= 0) {				if (e > -63) {					/* Correctly format the de-normal */					int     precision_loss;					FPU_REG tmp;					EXCEPTION(EX_Denormal);					reg_move(FPU_st0_ptr, &tmp);					tmp.exp += -EXTENDED_Emin + 63;	/* largest exp to be 62 */					if ((precision_loss = round_to_int(&tmp))) {						EXCEPTION(EX_Underflow | precision_loss);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩电影一区| 精品国产伦一区二区三区观看体验 | 极品少妇xxxx精品少妇| 成人免费看片app下载| 91精品国产色综合久久不卡电影 | 欧美日韩国产不卡| 欧美激情在线免费观看| 手机精品视频在线观看| 99精品视频在线免费观看| 精品欧美乱码久久久久久1区2区| 亚洲欧美激情小说另类| 国产宾馆实践打屁股91| 日韩精品在线看片z| 性感美女极品91精品| 99国产精品久久久久久久久久久| 日韩一级视频免费观看在线| 亚洲激情自拍视频| av资源站一区| 国产亚洲欧美中文| 国产伦精一区二区三区| 欧美成人精品福利| 美女在线一区二区| 日韩一区二区三区免费看| 亚洲成国产人片在线观看| 91精品91久久久中77777| 国产精品久久久久久久久免费相片 | 亚洲成人免费影院| 91久久精品网| 亚洲一区二区三区三| 色成年激情久久综合| 亚洲婷婷综合久久一本伊一区| 国产精品资源站在线| 欧美精品一区二区三区四区| 久草热8精品视频在线观看| 欧美一卡在线观看| 青青草91视频| 精品国产一区二区精华| 狠狠久久亚洲欧美| 国产午夜精品理论片a级大结局| 国产一区二区成人久久免费影院| 欧美电影免费观看高清完整版 | 美女www一区二区| 制服丝袜亚洲播放| 久久av老司机精品网站导航| 日韩欧美在线网站| 国产自产视频一区二区三区| 久久亚洲精华国产精华液| 国产精品1区二区.| 综合婷婷亚洲小说| 91福利视频网站| 日韩1区2区3区| 久久综合成人精品亚洲另类欧美| 国产精品123区| 亚洲欧美经典视频| 5566中文字幕一区二区电影| 裸体健美xxxx欧美裸体表演| 久久久久久**毛片大全| gogogo免费视频观看亚洲一| 亚洲综合在线电影| 日韩免费观看高清完整版 | 国产99久久精品| 亚洲欧洲av色图| 欧美群妇大交群的观看方式| 久草热8精品视频在线观看| 欧美国产日韩亚洲一区| 欧美影院精品一区| 国产在线播精品第三| 亚洲欧美国产高清| 欧美成人官网二区| 色综合天天综合在线视频| 日韩精品亚洲一区二区三区免费| 久久夜色精品一区| 欧美亚洲图片小说| 国产激情偷乱视频一区二区三区| 一区二区三区电影在线播| 精品国产91乱码一区二区三区 | 欧美日韩另类一区| 国产精品18久久久久久久久| 亚洲综合在线五月| 国产欧美一区二区精品忘忧草| 欧美亚洲另类激情小说| 国产另类ts人妖一区二区| 亚洲一区二区视频| 欧美激情一区二区三区全黄| 欧美高清视频不卡网| 99这里都是精品| 奇米色一区二区三区四区| 亚洲欧美日韩在线| 久久久精品欧美丰满| 91麻豆精品国产综合久久久久久| eeuss国产一区二区三区| 国模娜娜一区二区三区| 亚洲成人av在线电影| 中文字幕亚洲在| 久久精品日韩一区二区三区| 欧美肥胖老妇做爰| 欧美性猛片aaaaaaa做受| 91精品国产欧美一区二区| 91亚洲资源网| 成人av在线网站| 国产精品一区不卡| 精品一区二区在线免费观看| 日韩中文字幕麻豆| 亚洲成av人片www| 一区二区高清免费观看影视大全| 国产精品国产精品国产专区不蜜| 久久久久久久久一| 久久亚洲免费视频| 久久久久久亚洲综合影院红桃 | 免费一级欧美片在线观看| 亚洲久草在线视频| 一区二区久久久久| 亚洲精品成人悠悠色影视| 亚洲欧洲一区二区在线播放| 国产欧美综合在线| 亚洲国产精品t66y| 国产精品三级av在线播放| 国产日韩亚洲欧美综合| 26uuu国产日韩综合| 久久综合色之久久综合| 久久综合999| 欧美国产一区视频在线观看| 久久久久久久综合狠狠综合| 国产午夜精品一区二区三区视频| 欧美精品一区二区三区高清aⅴ| 欧美成人性福生活免费看| 久久久综合网站| 中文一区在线播放| 亚洲精品国产精品乱码不99| 一区二区三区成人| 日韩高清不卡一区二区三区| 美腿丝袜在线亚洲一区| 国产高清不卡一区| 色综合网站在线| 欧美日韩国产首页| 精品人在线二区三区| 欧美国产激情二区三区| 一区二区在线看| 日韩制服丝袜av| 国产成人h网站| 91麻豆文化传媒在线观看| 欧美久久久久免费| 国产欧美一区二区精品性色 | 日本va欧美va精品| 国模一区二区三区白浆| 99re这里只有精品首页| 欧美剧在线免费观看网站| 久久久久久久久久久久电影| 1区2区3区国产精品| 日本欧美大码aⅴ在线播放| 国产夫妻精品视频| 欧美午夜免费电影| 国产视频911| 亚洲va韩国va欧美va精品| 国产曰批免费观看久久久| 色综合久久66| 久久久久国色av免费看影院| 亚洲一区二区三区美女| 夜夜精品视频一区二区| 国产69精品久久久久毛片| 国产成人免费视| 国产欧美一区二区精品性色| 国产精品欧美久久久久一区二区| 亚洲高清视频中文字幕| 国产精品一二三四区| 欧美在线视频你懂得| 国产色91在线| 日韩电影一二三区| 91看片淫黄大片一级在线观看| 日韩三区在线观看| 亚洲一区二区三区四区五区中文 | 视频一区欧美精品| 91原创在线视频| 欧美www视频| 韩国成人在线视频| 不卡在线视频中文字幕| 日本高清不卡视频| 日韩亚洲欧美在线| 中文字幕av不卡| 一区二区三区四区激情| 日韩电影在线免费看| 国产成人h网站| 欧美午夜精品电影| 2020日本不卡一区二区视频| 日韩一区二区在线看片| 精品sm在线观看| 亚洲欧美偷拍另类a∨色屁股| 亚洲国产精品久久艾草纯爱| 久久精品国产网站| 白白色亚洲国产精品| 欧美日韩一区二区三区四区| 日韩久久久久久| 亚洲人成精品久久久久久| 日韩一区欧美二区| 国产成人精品亚洲午夜麻豆| 91玉足脚交白嫩脚丫在线播放| 日韩美女天天操| 亚洲伊人伊色伊影伊综合网| 国产乱码精品1区2区3区| 欧美一a一片一级一片|