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 + -
显示快捷键?