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

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

?? sfp-machine.h

?? 講述linux的初始化過程
?? H
字號:
/* Machine-dependent software floating-point definitions.  PPC version.   Copyright (C) 1997 Free Software Foundation, Inc.   This file is part of the GNU C Library.   The GNU C Library is free software; you can redistribute it and/or   modify it under the terms of the GNU Library General Public License as   published by the Free Software Foundation; either version 2 of the   License, or (at your option) any later version.   The GNU C Library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Library General Public License for more details.   You should have received a copy of the GNU Library General Public   License along with the GNU C Library; see the file COPYING.LIB.  If   not, write to the Free Software Foundation, Inc.,   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.     Actually, this is a PPC (32bit) version, written based on the   i386, sparc, and sparc64 versions, by me,    Peter Maydell (pmaydell@chiark.greenend.org.uk).   Comments are by and large also mine, although they may be inaccurate.   In picking out asm fragments I've gone with the lowest common   denominator, which also happens to be the hardware I have :->   That is, a SPARC without hardware multiply and divide. *//* basic word size definitions */#define _FP_W_TYPE_SIZE		32#define _FP_W_TYPE		unsigned long#define _FP_WS_TYPE		signed long#define _FP_I_TYPE		long#define __ll_B			((UWtype) 1 << (W_TYPE_SIZE / 2))#define __ll_lowpart(t)		((UWtype) (t) & (__ll_B - 1))#define __ll_highpart(t)	((UWtype) (t) >> (W_TYPE_SIZE / 2))/* You can optionally code some things like addition in asm. For * example, i386 defines __FP_FRAC_ADD_2 as asm. If you don't * then you get a fragment of C code [if you change an #ifdef 0 * in op-2.h] or a call to add_ssaaaa (see below). * Good places to look for asm fragments to use are gcc and glibc. * gcc's longlong.h is useful. *//* We need to know how to multiply and divide. If the host word size * is >= 2*fracbits you can use FP_MUL_MEAT_n_imm(t,R,X,Y) which * codes the multiply with whatever gcc does to 'a * b'. * _FP_MUL_MEAT_n_wide(t,R,X,Y,f) is used when you have an asm  * function that can multiply two 1W values and get a 2W result.  * Otherwise you're stuck with _FP_MUL_MEAT_n_hard(t,R,X,Y) which * does bitshifting to avoid overflow. * For division there is FP_DIV_MEAT_n_imm(t,R,X,Y,f) for word size * >= 2*fracbits, where f is either _FP_DIV_HELP_imm or  * _FP_DIV_HELP_ldiv (see op-1.h). * _FP_DIV_MEAT_udiv() is if you have asm to do 2W/1W => (1W, 1W). * [GCC and glibc have longlong.h which has the asm macro udiv_qrnnd * to do this.] * In general, 'n' is the number of words required to hold the type, * and 't' is either S, D or Q for single/double/quad. *           -- PMM *//* Example: SPARC64: * #define _FP_MUL_MEAT_S(R,X,Y)	_FP_MUL_MEAT_1_imm(S,R,X,Y) * #define _FP_MUL_MEAT_D(R,X,Y)	_FP_MUL_MEAT_1_wide(D,R,X,Y,umul_ppmm) * #define _FP_MUL_MEAT_Q(R,X,Y)	_FP_MUL_MEAT_2_wide(Q,R,X,Y,umul_ppmm) * * #define _FP_DIV_MEAT_S(R,X,Y)	_FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm) * #define _FP_DIV_MEAT_D(R,X,Y)	_FP_DIV_MEAT_1_udiv(D,R,X,Y) * #define _FP_DIV_MEAT_Q(R,X,Y)	_FP_DIV_MEAT_2_udiv_64(Q,R,X,Y) * * Example: i386: * #define _FP_MUL_MEAT_S(R,X,Y)   _FP_MUL_MEAT_1_wide(S,R,X,Y,_i386_mul_32_64) * #define _FP_MUL_MEAT_D(R,X,Y)   _FP_MUL_MEAT_2_wide(D,R,X,Y,_i386_mul_32_64) * * #define _FP_DIV_MEAT_S(R,X,Y)   _FP_DIV_MEAT_1_udiv(S,R,X,Y,_i386_div_64_32) * #define _FP_DIV_MEAT_D(R,X,Y)   _FP_DIV_MEAT_2_udiv_64(D,R,X,Y) */#define _FP_MUL_MEAT_S(R,X,Y)   _FP_MUL_MEAT_1_wide(S,R,X,Y,umul_ppmm)#define _FP_MUL_MEAT_D(R,X,Y)   _FP_MUL_MEAT_2_wide(D,R,X,Y,umul_ppmm)#define _FP_DIV_MEAT_S(R,X,Y)   _FP_DIV_MEAT_1_udiv(S,R,X,Y)#define _FP_DIV_MEAT_D(R,X,Y)   _FP_DIV_MEAT_2_udiv_64(D,R,X,Y)/* These macros define what NaN looks like. They're supposed to expand to  * a comma-separated set of 32bit unsigned ints that encode NaN. */#define _FP_NANFRAC_S		_FP_QNANBIT_S#define _FP_NANFRAC_D		_FP_QNANBIT_D, 0#define _FP_NANFRAC_Q           _FP_QNANBIT_Q, 0, 0, 0#define _FP_KEEPNANFRACP 1/* This macro appears to be called when both X and Y are NaNs, and  * has to choose one and copy it to R. i386 goes for the larger of the * two, sparc64 just picks Y. I don't understand this at all so I'll * go with sparc64 because it's shorter :->   -- PMM  */#define _FP_CHOOSENAN(fs, wc, R, X, Y)			\  do {							\    R##_s = Y##_s;					\    _FP_FRAC_COPY_##wc(R,Y);				\    R##_c = FP_CLS_NAN;					\  } while (0)  extern void fp_unpack_d(long *, unsigned long *, unsigned long *,			long *, long *, void *);extern int  fp_pack_d(void *, long, unsigned long, unsigned long, long, long);extern int  fp_pack_ds(void *, long, unsigned long, unsigned long, long, long);#define __FP_UNPACK_RAW_1(fs, X, val)			\  do {							\    union _FP_UNION_##fs *_flo =			\    	(union _FP_UNION_##fs *)val;			\							\    X##_f = _flo->bits.frac;				\    X##_e = _flo->bits.exp;				\    X##_s = _flo->bits.sign;				\  } while (0)#define __FP_UNPACK_RAW_2(fs, X, val)			\  do {							\    union _FP_UNION_##fs *_flo =			\    	(union _FP_UNION_##fs *)val;			\							\    X##_f0 = _flo->bits.frac0;				\    X##_f1 = _flo->bits.frac1;				\    X##_e  = _flo->bits.exp;				\    X##_s  = _flo->bits.sign;				\  } while (0)#define __FP_UNPACK_S(X,val)		\  do {					\    __FP_UNPACK_RAW_1(S,X,val);		\    _FP_UNPACK_CANONICAL(S,1,X);	\  } while (0)#define __FP_UNPACK_D(X,val)		\	fp_unpack_d(&X##_s, &X##_f1, &X##_f0, &X##_e, &X##_c, val)#define __FP_PACK_RAW_1(fs, val, X)			\  do {							\    union _FP_UNION_##fs *_flo =			\    	(union _FP_UNION_##fs *)val;			\							\    _flo->bits.frac = X##_f;				\    _flo->bits.exp  = X##_e;				\    _flo->bits.sign = X##_s;				\  } while (0)  #define __FP_PACK_RAW_2(fs, val, X)			\  do {							\    union _FP_UNION_##fs *_flo =			\    	(union _FP_UNION_##fs *)val;			\							\    _flo->bits.frac0 = X##_f0;				\    _flo->bits.frac1 = X##_f1;				\    _flo->bits.exp   = X##_e;				\    _flo->bits.sign  = X##_s;				\  } while (0)#include <linux/kernel.h>#include <linux/sched.h>#define __FPU_FPSCR	(current->thread.fpscr)/* We only actually write to the destination register * if exceptions signalled (if any) will not trap. */#define __FPU_ENABLED_EXC \({						\	(__FPU_FPSCR >> 3) & 0x1f;	\})#define __FPU_TRAP_P(bits) \	((__FPU_ENABLED_EXC & (bits)) != 0)#define __FP_PACK_S(val,X)			\({  int __exc = _FP_PACK_CANONICAL(S,1,X);	\    if(!__exc || !__FPU_TRAP_P(__exc))		\        __FP_PACK_RAW_1(S,val,X);		\    __exc;					\})#define __FP_PACK_D(val,X)			\	fp_pack_d(val, X##_s, X##_f1, X##_f0, X##_e, X##_c)#define __FP_PACK_DS(val,X)			\	fp_pack_ds(val, X##_s, X##_f1, X##_f0, X##_e, X##_c)/* Obtain the current rounding mode. */#define FP_ROUNDMODE			\({					\	__FPU_FPSCR & 0x3;		\})/* the asm fragments go here: all these are taken from glibc-2.0.5's * stdlib/longlong.h */#include <linux/types.h>#include <asm/byteorder.h>/* add_ssaaaa is used in op-2.h and should be equivalent to * #define add_ssaaaa(sh,sl,ah,al,bh,bl) (sh = ah+bh+ (( sl = al+bl) < al)) * add_ssaaaa(high_sum, low_sum, high_addend_1, low_addend_1, * high_addend_2, low_addend_2) adds two UWtype integers, composed by * HIGH_ADDEND_1 and LOW_ADDEND_1, and HIGH_ADDEND_2 and LOW_ADDEND_2 * respectively.  The result is placed in HIGH_SUM and LOW_SUM.  Overflow * (i.e. carry out) is not stored anywhere, and is lost. */#define add_ssaaaa(sh, sl, ah, al, bh, bl)				\  do {									\    if (__builtin_constant_p (bh) && (bh) == 0)				\      __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2"		\	     : "=r" ((USItype)(sh)),					\	       "=&r" ((USItype)(sl))					\	     : "%r" ((USItype)(ah)),					\	       "%r" ((USItype)(al)),					\	       "rI" ((USItype)(bl)));					\    else if (__builtin_constant_p (bh) && (bh) ==~(USItype) 0)		\      __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2"		\	     : "=r" ((USItype)(sh)),					\	       "=&r" ((USItype)(sl))					\	     : "%r" ((USItype)(ah)),					\	       "%r" ((USItype)(al)),					\	       "rI" ((USItype)(bl)));					\    else								\      __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3"		\	     : "=r" ((USItype)(sh)),					\	       "=&r" ((USItype)(sl))					\	     : "%r" ((USItype)(ah)),					\	       "r" ((USItype)(bh)),					\	       "%r" ((USItype)(al)),					\	       "rI" ((USItype)(bl)));					\  } while (0)/* sub_ddmmss is used in op-2.h and udivmodti4.c and should be equivalent to * #define sub_ddmmss(sh, sl, ah, al, bh, bl) (sh = ah-bh - ((sl = al-bl) > al)) * sub_ddmmss(high_difference, low_difference, high_minuend, low_minuend, * high_subtrahend, low_subtrahend) subtracts two two-word UWtype integers, * composed by HIGH_MINUEND_1 and LOW_MINUEND_1, and HIGH_SUBTRAHEND_2 and * LOW_SUBTRAHEND_2 respectively.  The result is placed in HIGH_DIFFERENCE * and LOW_DIFFERENCE.  Overflow (i.e. carry out) is not stored anywhere, * and is lost. */#define sub_ddmmss(sh, sl, ah, al, bh, bl)				\  do {									\    if (__builtin_constant_p (ah) && (ah) == 0)				\      __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2"	\	       : "=r" ((USItype)(sh)),					\		 "=&r" ((USItype)(sl))					\	       : "r" ((USItype)(bh)),					\		 "rI" ((USItype)(al)),					\		 "r" ((USItype)(bl)));					\    else if (__builtin_constant_p (ah) && (ah) ==~(USItype) 0)		\      __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2"	\	       : "=r" ((USItype)(sh)),					\		 "=&r" ((USItype)(sl))					\	       : "r" ((USItype)(bh)),					\		 "rI" ((USItype)(al)),					\		 "r" ((USItype)(bl)));					\    else if (__builtin_constant_p (bh) && (bh) == 0)			\      __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2"		\	       : "=r" ((USItype)(sh)),					\		 "=&r" ((USItype)(sl))					\	       : "r" ((USItype)(ah)),					\		 "rI" ((USItype)(al)),					\		 "r" ((USItype)(bl)));					\    else if (__builtin_constant_p (bh) && (bh) ==~(USItype) 0)		\      __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2"		\	       : "=r" ((USItype)(sh)),					\		 "=&r" ((USItype)(sl))					\	       : "r" ((USItype)(ah)),					\		 "rI" ((USItype)(al)),					\		 "r" ((USItype)(bl)));					\    else								\      __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2"	\	       : "=r" ((USItype)(sh)),					\		 "=&r" ((USItype)(sl))					\	       : "r" ((USItype)(ah)),					\		 "r" ((USItype)(bh)),					\		 "rI" ((USItype)(al)),					\		 "r" ((USItype)(bl)));					\  } while (0)/* asm fragments for mul and div */	 /* umul_ppmm(high_prod, low_prod, multipler, multiplicand) multiplies two * UWtype integers MULTIPLER and MULTIPLICAND, and generates a two UWtype * word product in HIGH_PROD and LOW_PROD. */#define umul_ppmm(ph, pl, m0, m1)					\  do {									\    USItype __m0 = (m0), __m1 = (m1);					\    __asm__ ("mulhwu %0,%1,%2"						\	     : "=r" ((USItype)(ph))					\	     : "%r" (__m0),						\               "r" (__m1));						\    (pl) = __m0 * __m1;							\  } while (0)/* udiv_qrnnd(quotient, remainder, high_numerator, low_numerator, * denominator) divides a UDWtype, composed by the UWtype integers * HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and places the quotient * in QUOTIENT and the remainder in REMAINDER.  HIGH_NUMERATOR must be less * than DENOMINATOR for correct operation.  If, in addition, the most * significant bit of DENOMINATOR must be 1, then the pre-processor symbol * UDIV_NEEDS_NORMALIZATION is defined to 1. */#define udiv_qrnnd(q, r, n1, n0, d)					\  do {									\    UWtype __d1, __d0, __q1, __q0, __r1, __r0, __m;			\    __d1 = __ll_highpart (d);						\    __d0 = __ll_lowpart (d);						\									\    __r1 = (n1) % __d1;							\    __q1 = (n1) / __d1;							\    __m = (UWtype) __q1 * __d0;						\    __r1 = __r1 * __ll_B | __ll_highpart (n0);				\    if (__r1 < __m)							\      {									\	__q1--, __r1 += (d);						\	if (__r1 >= (d)) /* we didn't get carry when adding to __r1 */	\	  if (__r1 < __m)						\	    __q1--, __r1 += (d);					\      }									\    __r1 -= __m;							\									\    __r0 = __r1 % __d1;							\    __q0 = __r1 / __d1;							\    __m = (UWtype) __q0 * __d0;						\    __r0 = __r0 * __ll_B | __ll_lowpart (n0);				\    if (__r0 < __m)							\      {									\	__q0--, __r0 += (d);						\	if (__r0 >= (d))						\	  if (__r0 < __m)						\	    __q0--, __r0 += (d);					\      }									\    __r0 -= __m;							\									\    (q) = (UWtype) __q1 * __ll_B | __q0;				\    (r) = __r0;								\  } while (0)#define UDIV_NEEDS_NORMALIZATION 1#define abort()								\	return 0#ifdef __BIG_ENDIAN#define __BYTE_ORDER __BIG_ENDIAN#else#define __BYTE_ORDER __LITTLE_ENDIAN#endif/* Exception flags. */#define EFLAG_INVALID		(1 << (31 - 2))#define EFLAG_OVERFLOW		(1 << (31 - 3))#define EFLAG_UNDERFLOW		(1 << (31 - 4))#define EFLAG_DIVZERO		(1 << (31 - 5))#define EFLAG_INEXACT		(1 << (31 - 6))#define EFLAG_VXSNAN		(1 << (31 - 7))#define EFLAG_VXISI		(1 << (31 - 8))#define EFLAG_VXIDI		(1 << (31 - 9))#define EFLAG_VXZDZ		(1 << (31 - 10))#define EFLAG_VXIMZ		(1 << (31 - 11))#define EFLAG_VXVC		(1 << (31 - 12))#define EFLAG_VXSOFT		(1 << (31 - 21))#define EFLAG_VXSQRT		(1 << (31 - 22))#define EFLAG_VXCVI		(1 << (31 - 23))

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品videosex极品| 国产精品久久久久久福利一牛影视 | 欧美一级艳片视频免费观看| 国产一区二区三区电影在线观看| 一区二区不卡在线播放| 精品精品国产高清a毛片牛牛| 91视视频在线观看入口直接观看www | 另类小说图片综合网| 最近中文字幕一区二区三区| 欧美电影免费观看高清完整版在| 91丨porny丨中文| 国产一区二区三区精品视频| 亚洲成人激情综合网| 中文字幕在线视频一区| 欧美岛国在线观看| 欧美日韩激情在线| av一区二区久久| 国产麻豆一精品一av一免费| 免费日韩伦理电影| 偷拍一区二区三区| 亚洲精品日韩综合观看成人91| 国产日韩三级在线| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 91精品免费在线观看| 91久久国产综合久久| 成人免费视频网站在线观看| 黄页网站大全一区二区| 麻豆精品久久精品色综合| 日韩精品亚洲一区| 日韩高清一区在线| 日本欧美大码aⅴ在线播放| 午夜精品久久一牛影视| 亚洲a一区二区| 亚洲一区二区三区美女| 亚洲国产精品自拍| 亚洲国产你懂的| 婷婷综合另类小说色区| 性做久久久久久久久| 亚洲国产一区二区视频| 亚洲国产成人porn| 亚洲va在线va天堂| 日本不卡免费在线视频| 免费看精品久久片| 狠狠色狠狠色综合系列| 国产大陆精品国产| 国产91富婆露脸刺激对白 | 日韩欧美电影在线| 精品动漫一区二区三区在线观看| 久久日韩精品一区二区五区| 久久久精品免费网站| 中文字幕高清不卡| 亚洲色大成网站www久久九九| 亚洲精品日韩综合观看成人91| 成人午夜在线免费| av男人天堂一区| 在线观看免费一区| 在线91免费看| 久久先锋资源网| 成人欧美一区二区三区白人| 亚洲日本韩国一区| 日欧美一区二区| 久久99精品久久久久久| 粉嫩av一区二区三区粉嫩| 色一情一乱一乱一91av| 欧美日韩另类一区| 久久综合中文字幕| 一区二区三区中文字幕| 日韩极品在线观看| 国产精品性做久久久久久| 色综合久久久久久久久| 欧美精品精品一区| 国产欧美一区二区三区在线老狼| 日韩理论片一区二区| 全部av―极品视觉盛宴亚洲| 国产精品一区二区久久不卡| 色天天综合色天天久久| 欧美电影免费观看高清完整版| 中文字幕一区二区三区精华液| 亚洲国产另类精品专区| 国产成人福利片| 欧美日韩国产综合一区二区三区| 精品伦理精品一区| 亚洲一区二三区| 国产精品 日产精品 欧美精品| 91老司机福利 在线| 欧美不卡一区二区三区| 一个色妞综合视频在线观看| 久久精品999| 色婷婷综合在线| 久久综合久久综合亚洲| 一区二区三区精品久久久| 国产伦精一区二区三区| 欧美影视一区在线| 亚洲国产精品t66y| 日本不卡1234视频| 在线看一区二区| 中文字幕乱码一区二区免费| 日韩中文字幕麻豆| 97久久超碰国产精品| 亚洲精品一区二区三区影院 | 日韩精品亚洲一区| 色天使久久综合网天天| 久久久久久久性| 男女激情视频一区| 欧美三级三级三级爽爽爽| 国产精品美女久久久久aⅴ| 美女视频黄免费的久久| 在线观看欧美日本| 亚洲欧美一区二区在线观看| 国产麻豆视频精品| 日韩一区二区免费高清| 亚洲午夜激情网站| 91麻豆国产香蕉久久精品| 国产亚洲一二三区| 国产揄拍国内精品对白| 日韩三级视频中文字幕| 亚洲va天堂va国产va久| 欧美丝袜丝交足nylons图片| 亚洲特黄一级片| 丁香婷婷综合色啪| 国产欧美精品一区二区三区四区 | 国产精品66部| 日韩欧美电影一二三| 日韩制服丝袜av| 欧美美女一区二区三区| 一区二区三区.www| 色av综合在线| 亚洲免费在线看| 色香色香欲天天天影视综合网| 中文字幕日韩av资源站| 粉嫩久久99精品久久久久久夜| 久久精品一区二区三区不卡| 国产在线精品一区二区夜色| 26uuu色噜噜精品一区| 精品一区二区三区免费毛片爱| 欧美一区二区在线视频| 蜜臀av一区二区在线观看 | 欧美精品一区二区三区在线| 久久精品久久精品| 2021中文字幕一区亚洲| 精品一区二区三区在线观看国产| 日韩网站在线看片你懂的| 久久99热这里只有精品| 精品国产免费人成在线观看| 国产在线精品免费| 国产精品女同互慰在线看| 99精品在线观看视频| 中文字幕欧美一| 在线精品国精品国产尤物884a| 亚洲高清视频中文字幕| 8v天堂国产在线一区二区| 久久国产福利国产秒拍| 久久久精品国产免大香伊| 成人av在线资源网站| 亚洲美女偷拍久久| 欧美日韩国产乱码电影| 蜜臀av一区二区在线免费观看 | 国产精品三级av| 色综合一个色综合亚洲| 亚洲一级在线观看| 欧美成人video| av不卡在线观看| 视频一区二区不卡| 26uuu国产在线精品一区二区| 成人深夜视频在线观看| 亚洲成年人影院| 欧美精品一区视频| 色一区在线观看| 麻豆高清免费国产一区| 国产精品日韩成人| 欧美日韩国产影片| 国产在线精品一区二区| 亚洲色图制服诱惑| 日韩一级二级三级精品视频| 国产成人av福利| 亚洲高清视频的网址| 国产亚洲综合色| 欧美体内she精高潮| 国产成人a级片| 日韩影视精彩在线| 综合久久国产九一剧情麻豆| 欧美日韩一区 二区 三区 久久精品| 久久精品国产精品亚洲综合| 亚洲四区在线观看| 精品精品国产高清一毛片一天堂| 91色porny蝌蚪| 激情国产一区二区| 香蕉久久一区二区不卡无毒影院| 久久免费电影网| 欧美日本乱大交xxxxx| 国产成人精品免费| 日本系列欧美系列| 亚洲精选视频免费看| 久久先锋资源网| 制服丝袜av成人在线看| 91污在线观看| 国产成人综合网| 麻豆精品视频在线观看免费| 亚洲国产日韩a在线播放| 国产精品国产三级国产普通话蜜臀|