libgcc2.c

来自「fsmlabs的real time linux的内核」· C语言 代码 · 共 8,950 行 · 第 1/4 页

C
8,950
字号
# 1 "/usr/mips-linux/include/confname.h" 1 3  enum  {    _PC_LINK_MAX,    _PC_MAX_CANON,    _PC_MAX_INPUT,    _PC_NAME_MAX,    _PC_PATH_MAX,    _PC_PIPE_BUF,    _PC_CHOWN_RESTRICTED,    _PC_NO_TRUNC,    _PC_VDISABLE,    _PC_SYNC_IO,    _PC_ASYNC_IO,    _PC_PRIO_IO,    _PC_SOCK_MAXBUF  }; enum  {    _SC_ARG_MAX,    _SC_CHILD_MAX,    _SC_CLK_TCK,    _SC_NGROUPS_MAX,    _SC_OPEN_MAX,    _SC_STREAM_MAX,    _SC_TZNAME_MAX,    _SC_JOB_CONTROL,    _SC_SAVED_IDS,    _SC_REALTIME_SIGNALS,    _SC_PRIORITY_SCHEDULING,    _SC_TIMERS,    _SC_ASYNCHRONOUS_IO,    _SC_PRIORITIZED_IO,    _SC_SYNCHRONIZED_IO,    _SC_FSYNC,    _SC_MAPPED_FILES,    _SC_MEMLOCK,    _SC_MEMLOCK_RANGE,    _SC_MEMORY_PROTECTION,    _SC_MESSAGE_PASSING,    _SC_SEMAPHORES,    _SC_SHARED_MEMORY_OBJECTS,    _SC_AIO_LISTIO_MAX,    _SC_AIO_MAX,    _SC_AIO_PRIO_DELTA_MAX,    _SC_DELAYTIMER_MAX,    _SC_MQ_OPEN_MAX,    _SC_MQ_PRIO_MAX,    _SC_VERSION,    _SC_PAGESIZE,    _SC_RTSIG_MAX,    _SC_SEM_NSEMS_MAX,    _SC_SEM_VALUE_MAX,    _SC_SIGQUEUE_MAX,    _SC_TIMER_MAX,         _SC_BC_BASE_MAX,    _SC_BC_DIM_MAX,    _SC_BC_SCALE_MAX,    _SC_BC_STRING_MAX,    _SC_COLL_WEIGHTS_MAX,    _SC_EQUIV_CLASS_MAX,    _SC_EXPR_NEST_MAX,    _SC_LINE_MAX,    _SC_RE_DUP_MAX,    _SC_CHARCLASS_NAME_MAX,    _SC_2_VERSION,    _SC_2_C_BIND,    _SC_2_C_DEV,    _SC_2_FORT_DEV,    _SC_2_FORT_RUN,    _SC_2_SW_DEV,    _SC_2_LOCALEDEF,    _SC_PII,    _SC_PII_XTI,    _SC_PII_SOCKET,    _SC_PII_INTERNET,    _SC_PII_OSI,    _SC_POLL,    _SC_SELECT,    _SC_UIO_MAXIOV,    _SC_PII_INTERNET_STREAM,    _SC_PII_INTERNET_DGRAM,    _SC_PII_OSI_COTS,    _SC_PII_OSI_CLTS,    _SC_PII_OSI_M,    _SC_T_IOV_MAX,         _SC_THREADS,    _SC_THREAD_SAFE_FUNCTIONS,    _SC_GETGR_R_SIZE_MAX,    _SC_GETPW_R_SIZE_MAX,    _SC_LOGIN_NAME_MAX,    _SC_TTY_NAME_MAX,    _SC_THREAD_DESTRUCTOR_ITERATIONS,    _SC_THREAD_KEYS_MAX,    _SC_THREAD_STACK_MIN,    _SC_THREAD_THREADS_MAX,    _SC_THREAD_ATTR_STACKADDR,    _SC_THREAD_ATTR_STACKSIZE,    _SC_THREAD_PRIORITY_SCHEDULING,    _SC_THREAD_PRIO_INHERIT,    _SC_THREAD_PRIO_PROTECT,    _SC_THREAD_PROCESS_SHARED,    _SC_NPROCESSORS_CONF,    _SC_NPROCESSORS_ONLN,    _SC_PHYS_PAGES,    _SC_AVPHYS_PAGES,    _SC_ATEXIT_MAX,    _SC_PASS_MAX,    _SC_XOPEN_VERSION,    _SC_XOPEN_XCU_VERSION,    _SC_XOPEN_UNIX,    _SC_XOPEN_CRYPT,    _SC_XOPEN_ENH_I18N,    _SC_XOPEN_SHM,    _SC_2_CHAR_TERM,    _SC_2_C_VERSION,    _SC_2_UPE,    _SC_XOPEN_XPG2,    _SC_XOPEN_XPG3,    _SC_XOPEN_XPG4,    _SC_CHAR_BIT,    _SC_CHAR_MAX,    _SC_CHAR_MIN,    _SC_INT_MAX,    _SC_INT_MIN,    _SC_LONG_BIT,    _SC_WORD_BIT,    _SC_MB_LEN_MAX,    _SC_NZERO,    _SC_SSIZE_MAX,    _SC_SCHAR_MAX,    _SC_SCHAR_MIN,    _SC_SHRT_MAX,    _SC_SHRT_MIN,    _SC_UCHAR_MAX,    _SC_UINT_MAX,    _SC_ULONG_MAX,    _SC_USHRT_MAX,    _SC_NL_ARGMAX,    _SC_NL_LANGMAX,    _SC_NL_MSGMAX,    _SC_NL_NMAX,    _SC_NL_SETMAX,    _SC_NL_TEXTMAX  }; enum  {    _CS_PATH			   };# 392 "/usr/mips-linux/include/unistd.h" 2 3 extern long int __pathconf  (__const char *__path, int __name)  ;extern long int pathconf  (__const char *__path, int __name)  ; extern long int __fpathconf  (int __fd, int __name)  ;extern long int fpathconf  (int __fd, int __name)  ; extern long int __sysconf  (int __name)  ;extern long int sysconf  (int __name)  ; extern size_t confstr  (int __name, char *__buf, size_t __len)  ; extern __pid_t __getpid  (void)  ;extern __pid_t getpid  (void)  ; extern __pid_t __getppid  (void)  ;extern __pid_t getppid  (void)  ; extern __pid_t getpgrp  (void)  ; extern int setpgid  (__pid_t __pid, __pid_t __pgid)  ; extern __pid_t __getpgid  (__pid_t __pid)  ;  extern int setpgrp  (void)  ; extern __pid_t __setsid  (void)  ;extern __pid_t setsid  (void)  ; extern __uid_t __getuid  (void)  ;extern __uid_t getuid  (void)  ; extern __uid_t __geteuid  (void)  ;extern __uid_t geteuid  (void)  ; extern __gid_t __getgid  (void)  ;extern __gid_t getgid  (void)  ; extern __gid_t __getegid  (void)  ;extern __gid_t getegid  (void)  ; extern int __getgroups  (int __size, __gid_t __list[])  ;extern int getgroups  (int __size, __gid_t __list[])  ; extern int __setuid  (__uid_t __uid)  ;extern int setuid  (__uid_t __uid)  ; extern int __setreuid  (__uid_t __ruid, __uid_t __euid)  ;extern int setreuid  (__uid_t __ruid, __uid_t __euid)  ; extern int seteuid  (__uid_t __uid)  ; extern int __setgid  (__gid_t __gid)  ;extern int setgid  (__gid_t __gid)  ; extern int __setregid  (__gid_t __rgid, __gid_t __egid)  ;extern int setregid  (__gid_t __rgid, __gid_t __egid)  ; extern int setegid  (__gid_t __gid)  ; extern __pid_t __fork  (void)  ;extern __pid_t fork  (void)  ; extern __pid_t __vfork  (void)  ;extern __pid_t vfork  (void)  ; extern char *ttyname  (int __fd)  ; extern int __ttyname_r  (int __fd, char *__buf, size_t __buflen)  ;extern int ttyname_r  (int __fd, char *__buf, size_t __buflen)  ; extern int __isatty  (int __fd)  ;extern int isatty  (int __fd)  ; extern int ttyslot  (void)  ; extern int __link  (__const char *__from, __const char *__to)  ;extern int link  (__const char *__from, __const char *__to)  ; extern int __symlink  (__const char *__from, __const char *__to)  ;extern int symlink  (__const char *__from, __const char *__to)  ; extern int __readlink  (__const char *__path, char *__buf, size_t __len)  ;extern int readlink  (__const char *__path, char *__buf, size_t __len)  ; extern int __unlink  (__const char *__name)  ;extern int unlink  (__const char *__name)  ; extern int __rmdir  (__const char *__path)  ;extern int rmdir  (__const char *__path)  ; extern __pid_t tcgetpgrp  (int __fd)  ; extern int tcsetpgrp  (int __fd, __pid_t __pgrp_id)  ; extern char *getlogin  (void)  ; extern int setlogin  (__const char *__name)  ; extern int getopt  (int __argc, char *__const * __argv,			__const char *__opts)  ;extern int opterr;extern int optind;extern int optopt;extern char *optarg; extern int __gethostname  (char *__name, size_t __len)  ;extern int gethostname  (char *__name, size_t __len)  ; extern int sethostname  (__const char *__name, size_t __len)  ; extern int sethostid  (long int __id)  ; extern int getdomainname  (char *__name, size_t __len)  ;extern int setdomainname  (__const char *__name, size_t __len)  ; extern int fsync  (int __fd)  ; extern int vhangup  (void)  ; extern int revoke  (__const char *__file)  ; extern int profil  (unsigned short int *__sample_buffer, size_t __size,			size_t __offset, unsigned int __scale)  ; extern int acct  (__const char *__name)  ; extern int chroot  (__const char *__path)  ; extern char *getusershell  (void)  ;extern void endusershell  (void)  ;  extern void setusershell  (void)  ;   extern char *getpass  (__const char *__prompt)  ; extern int daemon  (int __nochdir, int __noclose)  ; extern long int gethostid  (void)  ; extern int sync  (void)  ; extern int __getpagesize  (void)  ;extern int getpagesize  (void)  ; extern int truncate  (__const char *__file, __off_t __length)  ; extern int ftruncate  (int __fd, __off_t __length)  ; extern int __getdtablesize  (void)  ;extern int getdtablesize  (void)  ; extern int __brk  (void *  __addr)  ;extern int brk  (void *  __addr)  ;# 1 "include/stddef.h" 1 # 19 "include/stddef.h"   # 61 "include/stddef.h"     typedef int  ptrdiff_t;   # 190 "include/stddef.h"  # 271 "include/stddef.h"# 283 "include/stddef.h"  # 317 "include/stddef.h" # 768 "/usr/mips-linux/include/unistd.h" 2 3 extern void *  __sbrk  (ptrdiff_t __delta)  ;extern void *  sbrk  (ptrdiff_t __delta)  ; extern long int syscall  (long int __sysno, ...)  ;  extern int lockf  (int __fd, int __cmd, __off_t __len)  ;# 833 "/usr/mips-linux/include/unistd.h" 3 extern int fdatasync  (int __fildes)  ; # 861 "/usr/mips-linux/include/unistd.h" 3 # 42 "/sys/gcc-2.95.2/gcc/libgcc2.c" 2# 1 "/sys/gcc-2.95.2/gcc/machmode.h" 1    enum machine_mode {# 1 "/sys/gcc-2.95.2/gcc/machmode.def" 1     VOIDmode ,  PQImode ,  QImode , 		  PHImode ,  HImode ,   PSImode ,  SImode ,  PDImode ,  DImode ,  TImode ,  OImode ,  QFmode ,  HFmode ,  TQFmode ,     SFmode ,  DFmode ,  XFmode ,      TFmode ,   QCmode ,  HCmode ,  SCmode ,  DCmode ,  XCmode ,  TCmode ,  CQImode ,  CHImode ,  CSImode ,  CDImode ,  CTImode ,  COImode ,   BLKmode ,   CCmode ,   # 44 "/sys/gcc-2.95.2/gcc/machmode.h" 2MAX_MACHINE_MODE }; extern char *mode_name[];enum mode_class { MODE_RANDOM, MODE_INT, MODE_FLOAT, MODE_PARTIAL_INT, MODE_CC,		  MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT, MAX_MODE_CLASS}; extern enum mode_class mode_class[];    extern int mode_size[]; extern int mode_unit_size[];   extern unsigned int  mode_mask_array[]; extern unsigned char mode_wider_mode[]; extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int); extern enum machine_mode smallest_mode_for_size  (unsigned int,                                                        enum mode_class); extern enum machine_mode int_mode_for_mode (enum machine_mode); extern enum machine_mode get_best_mode (int, int, int, enum machine_mode, int);  extern enum machine_mode class_narrowest_mode[]; extern enum machine_mode byte_mode;extern enum machine_mode word_mode;extern enum machine_mode ptr_mode;# 45 "/sys/gcc-2.95.2/gcc/libgcc2.c" 2# 1 "/sys/gcc-2.95.2/gcc/defaults.h" 1  # 40 "/sys/gcc-2.95.2/gcc/defaults.h"  # 96 "/sys/gcc-2.95.2/gcc/defaults.h"    # 119 "/sys/gcc-2.95.2/gcc/defaults.h"    # 46 "/sys/gcc-2.95.2/gcc/libgcc2.c" 2# 1 "include/stddef.h" 1      # 61 "include/stddef.h"     # 126 "include/stddef.h"   # 188 "include/stddef.h"  # 269 "include/stddef.h"typedef unsigned int  wint_t;  # 317 "include/stddef.h"  # 48 "/sys/gcc-2.95.2/gcc/libgcc2.c" 2    typedef unsigned int UQItype	__attribute__ ((mode (QI)));typedef 	 int SItype	__attribute__ ((mode (SI)));typedef unsigned int USItype	__attribute__ ((mode (SI)));typedef		 int DItype	__attribute__ ((mode (DI)));typedef unsigned int UDItype	__attribute__ ((mode (DI)));typedef 	float SFtype	__attribute__ ((mode (SF)));typedef		float DFtype	__attribute__ ((mode (DF)));typedef int word_type __attribute__ ((mode (__word__)));    struct DIstruct {SItype high, low;}; typedef union{  struct DIstruct s;  DItype ll;} DIunion;# 1 "/sys/gcc-2.95.2/gcc/longlong.h" 1    # 132 "/sys/gcc-2.95.2/gcc/longlong.h"# 163 "/sys/gcc-2.95.2/gcc/longlong.h"# 206 "/sys/gcc-2.95.2/gcc/longlong.h"# 234 "/sys/gcc-2.95.2/gcc/longlong.h"# 273 "/sys/gcc-2.95.2/gcc/longlong.h"# 335 "/sys/gcc-2.95.2/gcc/longlong.h"# 378 "/sys/gcc-2.95.2/gcc/longlong.h"# 419 "/sys/gcc-2.95.2/gcc/longlong.h"# 438 "/sys/gcc-2.95.2/gcc/longlong.h"# 465 "/sys/gcc-2.95.2/gcc/longlong.h"# 567 "/sys/gcc-2.95.2/gcc/longlong.h"# 626 "/sys/gcc-2.95.2/gcc/longlong.h"# 666 "/sys/gcc-2.95.2/gcc/longlong.h"# 785 "/sys/gcc-2.95.2/gcc/longlong.h"# 817 "/sys/gcc-2.95.2/gcc/longlong.h"# 886 "/sys/gcc-2.95.2/gcc/longlong.h"# 1071 "/sys/gcc-2.95.2/gcc/longlong.h"# 1118 "/sys/gcc-2.95.2/gcc/longlong.h" # 1168 "/sys/gcc-2.95.2/gcc/longlong.h" # 1214 "/sys/gcc-2.95.2/gcc/longlong.h"  extern const UQItype __clz_tab[];# 1254 "/sys/gcc-2.95.2/gcc/longlong.h"# 145 "/sys/gcc-2.95.2/gcc/libgcc2.c" 2extern DItype __fixunssfdi (SFtype a);extern DItype __fixunsdfdi (DFtype a);static __inline__ DItype__negdi2 (DItype u){  DIunion w;  DIunion uu;  uu.ll = u;  w.s.low = -uu.s.low;  w.s.high = -uu.s.high - ((USItype) w.s.low > 0);  return w.ll;} # 207 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 237 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 268 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 288 "/sys/gcc-2.95.2/gcc/libgcc2.c"DItype__muldi3 (DItype u, DItype v){  DIunion w;  DIunion uu, vv;  uu.ll = u,  vv.ll = v;  w.ll = ({DIunion __w;	__asm__ ("multu %2,%3"	: "=l" ((USItype) (  __w.s.low )),	"=h" ((USItype) ( __w.s.high ))	: "d" ((USItype) (   uu.s.low  )),	"d" ((USItype) (    vv.s.low  ))) ;	__w.ll; }) ;  w.s.high += ((USItype) uu.s.low * (USItype) vv.s.high	       + (USItype) uu.s.high * (USItype) vv.s.low);  return w.ll;}# 417 "/sys/gcc-2.95.2/gcc/libgcc2.c"static const UQItype __clz_tab[] ={  0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,};static __inline__ UDItype__udivmoddi4 (UDItype n, UDItype d, UDItype *rp){  DIunion ww;  DIunion nn, dd;  DIunion rr;  USItype d0, d1, n0, n1, n2;  USItype q0, q1;  USItype b, bm;  nn.ll = n;  dd.ll = d;  d0 = dd.s.low;  d1 = dd.s.high;  n0 = nn.s.low;  n1 = nn.s.high;# 492 "/sys/gcc-2.95.2/gcc/libgcc2.c"  if (d1 == 0)    {      if (d0 > n1)	{	   	  do {	USItype __xr = (  d0 );	USItype __a;	if ((sizeof (SItype) * 8 )  <= 32)	{	__a = __xr < ((USItype)1<<2* ((sizeof (SItype) * 8 )  / 4) )	? (__xr < ((USItype)1<< ((sizeof (SItype) * 8 )  / 4) ) ? 0 : ((sizeof (SItype) * 8 )  / 4) )	: (__xr < ((USItype)1<<3* ((sizeof (SItype) * 8 )  / 4) ) ?  2* ((sizeof (SItype) * 8 )  / 4)  : 3* ((sizeof (SItype) * 8 )  / 4) );	}	else	{	for (__a = (sizeof (SItype) * 8 )  - 8; __a > 0; __a -= 8)	if (((__xr >> __a) & 0xff) != 0)	break;	}	( bm ) = (sizeof (SItype) * 8 )  - (__clz_tab[__xr >> __a] + __a);	} while (0) ;	  if (bm != 0)	    {	       	      d0 = d0 << bm;	      n1 = (n1 << bm) | (n0 >> ((sizeof (SItype) * 8 )  - bm));	      n0 = n0 << bm;	    }	  do {	USItype __d1, __d0, __q1, __q0;	USItype __r1, __r0, __m;	__d1 = ((USItype) (   d0  ) / (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	__d0 = ((USItype) (   d0  ) % (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	__r1 = (  n1 ) % __d1;	__q1 = (  n1 ) / __d1;	__m = (USItype) __q1 * __d0;	__r1 = __r1 * (1L << ((sizeof (SItype) * 8 )  / 2))  | ((USItype) (   n0  ) / (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	if (__r1 < __m)	{	__q1--, __r1 += (  d0 );	if (__r1 >= (  d0 )) if (__r1 < __m)	__q1--, __r1 += (  d0 );	}	__r1 -= __m;	__r0 = __r1 % __d1;	__q0 = __r1 / __d1;	__m = (USItype) __q0 * __d0;	__r0 = __r0 * (1L << ((sizeof (SItype) * 8 )  / 2))  | ((USItype) (   n0  ) % (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	if (__r0 < __m)	{	__q0--, __r0 += (  d0 );	if (__r0 >= (  d0 ))	if (__r0 < __m)	__q0--, __r0 += (  d0 );	}	__r0 -= __m;	( q0 ) = (USItype) __q1 * (1L << ((sizeof (SItype) * 8 )  / 2))  | __q0;	(  n0 ) = __r0;	} while (0) ;	  q1 = 0;	   	}      else	{	   	  if (d0 == 0)	    d0 = 1 / d0;	 	  do {	USItype __xr = (  d0 );	USItype __a;	if ((sizeof (SItype) * 8 )  <= 32)	{	__a = __xr < ((USItype)1<<2* ((sizeof (SItype) * 8 )  / 4) )	? (__xr < ((USItype)1<< ((sizeof (SItype) * 8 )  / 4) ) ? 0 : ((sizeof (SItype) * 8 )  / 4) )	: (__xr < ((USItype)1<<3* ((sizeof (SItype) * 8 )  / 4) ) ?  2* ((sizeof (SItype) * 8 )  / 4)  : 3* ((sizeof (SItype) * 8 )  / 4) );	}	else	{	for (__a = (sizeof (SItype) * 8 )  - 8; __a > 0; __a -= 8)	if (((__xr >> __a) & 0xff) != 0)	break;	}	( bm ) = (sizeof (SItype) * 8 )  - (__clz_tab[__xr >> __a] + __a);	} while (0) ;	  if (bm == 0)	    {	       	      n1 -= d0;	      q1 = 1;	    }	  else	    {	       	      b = (sizeof (SItype) * 8 )  - bm;	      d0 = d0 << bm;	      n2 = n1 >> b;	      n1 = (n1 << bm) | (n0 >> b);	      n0 = n0 << bm;	      do {	USItype __d1, __d0, __q1, __q0;	USItype __r1, __r0, __m;	__d1 = ((USItype) (   d0  ) / (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	__d0 = ((USItype) (   d0  ) % (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	__r1 = (  n2 ) % __d1;	__q1 = (  n2 ) / __d1;	__m = (USItype) __q1 * __d0;	__r1 = __r1 * (1L << ((sizeof (SItype) * 8 )  / 2))  | ((USItype) (   n1  ) / (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	if (__r1 < __m)	{	__q1--, __r1 += (  d0 );	if (__r1 >= (  d0 )) if (__r1 < __m)	__q1--, __r1 += (  d0 );	}	__r1 -= __m;	__r0 = __r1 % __d1;	__q0 = __r1 / __d1;	__m = (USItype) __q0 * __d0;	__r0 = __r0 * (1L << ((sizeof (SItype) * 8 )  / 2))  | ((USItype) (   n1  ) % (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	if (__r0 < __m)	{	__q0--, __r0 += (  d0 );	if (__r0 >= (  d0 ))	if (__r0 < __m)	__q0--, __r0 += (  d0 );	}	__r0 -= __m;	( q1 ) = (USItype) __q1 * (1L << ((sizeof (SItype) * 8 )  / 2))  | __q0;	(  n1 ) = __r0;	} while (0) ;	    }	   	  do {	USItype __d1, __d0, __q1, __q0;	USItype __r1, __r0, __m;	__d1 = ((USItype) (   d0  ) / (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	__d0 = ((USItype) (   d0  ) % (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	__r1 = (  n1 ) % __d1;	__q1 = (  n1 ) / __d1;	__m = (USItype) __q1 * __d0;	__r1 = __r1 * (1L << ((sizeof (SItype) * 8 )  / 2))  | ((USItype) (   n0  ) / (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	if (__r1 < __m)	{	__q1--, __r1 += (  d0 );	if (__r1 >= (  d0 )) if (__r1 < __m)	__q1--, __r1 += (  d0 );	}	__r1 -= __m;	__r0 = __r1 % __d1;	__q0 = __r1 / __d1;	__m = (USItype) __q0 * __d0;	__r0 = __r0 * (1L << ((sizeof (SItype) * 8 )  / 2))  | ((USItype) (   n0  ) % (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	if (__r0 < __m)	{	__q0--, __r0 += (  d0 );	if (__r0 >= (  d0 ))	if (__r0 < __m)	__q0--, __r0 += (  d0 );	}	__r0 -= __m;	( q0 ) = (USItype) __q1 * (1L << ((sizeof (SItype) * 8 )  / 2))  | __q0;	(  n0 ) = __r0;	} while (0) ;	   	}      if (rp != 0)	{	  rr.s.low = n0 >> bm;	  rr.s.high = 0;	  *rp = rr.ll;	}    }  else    {      if (d1 > n1)	{	   	  q0 = 0;	  q1 = 0;	   	  if (rp != 0)	    {	      rr.s.low = n0;	      rr.s.high = n1;	      *rp = rr.ll;	    }	}      else	{	   	  do {	USItype __xr = (  d1 );	USItype __a;	if ((sizeof (SItype) * 8 )  <= 32)	{	__a = __xr < ((USItype)1<<2* ((sizeof (SItype) * 8 )  / 4) )	? (__xr < ((USItype)1<< ((sizeof (SItype) * 8 )  / 4) ) ? 0 : ((sizeof (SItype) * 8 )  / 4) )	: (__xr < ((USItype)1<<3* ((sizeof (SItype) * 8 )  / 4) ) ?  2* ((sizeof (SItype) * 8 )  / 4)  : 3* ((sizeof (SItype) * 8 )  / 4) );	}	else	{	for (__a = (sizeof (SItype) * 8 )  - 8; __a > 0; __a -= 8)	if (((__xr >> __a) & 0xff) != 0)	break;	}	( bm ) = (sizeof (SItype) * 8 )  - (__clz_tab[__xr >> __a] + __a);	} while (0) ;	  if (bm == 0)	    {	       	       	      if (n1 > d1 || n0 >= d0)		{		  q0 = 1;		  do {	USItype __x;	__x = (  n0 ) - (  d0 );	( n1 ) = (  n1 ) - (  d1 ) - (__x > (  n0 ));	(  n0 ) = __x;	} while (0) ;		}	      else		q0 = 0;	      q1 = 0;	      if (rp != 0)		{		  rr.s.low = n0;		  rr.s.high = n1;		  *rp = rr.ll;		}	    }	  else	    {	      USItype m1, m0;	       	      b = (sizeof (SItype) * 8 )  - bm;	      d1 = (d1 << bm) | (d0 >> b);	      d0 = d0 << bm;	      n2 = n1 >> b;	      n1 = (n1 << bm) | (n0 >> b);	      n0 = n0 << bm;	      do {	USItype __d1, __d0, __q1, __q0;	USItype __r1, __r0, __m;	__d1 = ((USItype) (   d1  ) / (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	__d0 = ((USItype) (   d1  ) % (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	__r1 = (  n2 ) % __d1;	__q1 = (  n2 ) / __d1;	__m = (USItype) __q1 * __d0;	__r1 = __r1 * (1L << ((sizeof (SItype) * 8 )  / 2))  | ((USItype) (   n1  ) / (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	if (__r1 < __m)	{	__q1--, __r1 += (  d1 );	if (__r1 >= (  d1 )) if (__r1 < __m)	__q1--, __r1 += (  d1 );	}	__r1 -= __m;	__r0 = __r1 % __d1;	__q0 = __r1 / __d1;	__m = (USItype) __q0 * __d0;	__r0 = __r0 * (1L << ((sizeof (SItype) * 8 )  / 2))  | ((USItype) (   n1  ) % (1L << ((sizeof (SItype) * 8 )  / 2)) ) ;	if (__r0 < __m)	{	__q0--, __r0 += (  d1 );	if (__r0 >= (  d1 ))	if (__r0 < __m)	__q0--, __r0 += (  d1 );	}	__r0 -= __m;	( q0 ) = (USItype) __q1 * (1L << ((sizeof (SItype) * 8 )  / 2))  | __q0;	(  n1 ) = __r0;	} while (0) ;	      __asm__ ("multu %2,%3"	: "=l" ((USItype) (  m0 )),	"=h" ((USItype) ( m1 ))	: "d" ((USItype) (  q0 )),	"d" ((USItype) (  d0 ))) ;	      if (m1 > n1 || (m1 == n1 && m0 > n0))		{		  q0--;		  do {	USItype __x;	__x = (  m0 ) - (  d0 );	( m1 ) = (  m1 ) - (  d1 ) - (__x > (  m0 ));	(  m0 ) = __x;	} while (0) ;		}	      q1 = 0;	       	      if (rp != 0)		{		  do {	USItype __x;	__x = (  n0 ) - (  m0 );	( n1 ) = (  n1 ) - (  m1 ) - (__x > (  n0 ));	(  n0 ) = __x;	} while (0) ;		  rr.s.low = (n1 << b) | (n0 >> bm);		  rr.s.high = n1 >> bm;		  *rp = rr.ll;		}	    }	}    }  ww.s.low = q0;  ww.s.high = q1;  return ww.ll;}UDItype __udivmoddi4 ();DItype__divdi3 (DItype u, DItype v){  word_type c = 0;  DIunion uu, vv;  DItype w;  uu.ll = u;  vv.ll = v;  if (uu.s.high < 0)    c = ~c,    uu.ll = __negdi2 (uu.ll);  if (vv.s.high < 0)    c = ~c,    vv.ll = __negdi2 (vv.ll);  w = __udivmoddi4 (uu.ll, vv.ll, (UDItype *) 0);  if (c)    w = __negdi2 (w);  return w;}UDItype __udivmoddi4 ();DItype__moddi3 (DItype u, DItype v){  word_type c = 0;  DIunion uu, vv;  DItype w;  uu.ll = u;  vv.ll = v;  if (uu.s.high < 0)    c = ~c,    uu.ll = __negdi2 (uu.ll);  if (vv.s.high < 0)    vv.ll = __negdi2 (vv.ll);  (void) __udivmoddi4 (uu.ll, vv.ll, &w);  if (c)    w = __negdi2 (w);  return w;}# 724 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 753 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 773 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 805 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 815 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 847 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 857 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 889 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 899 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 935 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 945 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 964 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 983 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 1002 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 1070 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 1092 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 1114 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 1136 "/sys/gcc-2.95.2/gcc/libgcc2.c" # 1174 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 1402 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 1423 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 2446 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 2459 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 2573 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 2815 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 2898 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 2927 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 3030 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 3989 "/sys/gcc-2.95.2/gcc/libgcc2.c"# 4014 "/sys/gcc-2.95.2/gcc/libgcc2.c"

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?