diff options
Diffstat (limited to 'gnu/gcc2/libgcc/__main.c')
| -rw-r--r-- | gnu/gcc2/libgcc/__main.c | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/gnu/gcc2/libgcc/__main.c b/gnu/gcc2/libgcc/__main.c new file mode 100644 index 000000000000..552bd7a608f3 --- /dev/null +++ b/gnu/gcc2/libgcc/__main.c @@ -0,0 +1,121 @@ +extern int target_flags; + +enum reg_class +{ + NO_REGS, + AREG, DREG, CREG, BREG, + Q_REGS, + SIREG, DIREG, + INDEX_REGS, + GENERAL_REGS, + FP_TOP_REG, FP_SECOND_REG, + FLOAT_REGS, + ALL_REGS, LIM_REG_CLASSES +}; +extern enum reg_class regclass_map[17 ]; + + +extern struct rtx_def *i386_compare_op0, *i386_compare_op1; +extern struct rtx_def *(*i386_compare_gen)(), *(*i386_compare_gen_eq)(); +extern char *hi_reg_name[]; +extern char *qi_reg_name[]; +extern char *qi_high_reg_name[]; + +enum machine_mode { + VOIDmode , + QImode , + HImode , + PSImode , + SImode , + PDImode , + DImode , + TImode , + OImode , + QFmode , + HFmode , + SFmode , + DFmode , + XFmode , + TFmode , + SCmode , + DCmode , + XCmode , + TCmode , + CQImode , + CHImode , + CSImode , + CDImode , + CTImode , + COImode , + BLKmode , + CCmode , + CCFPEQmode , +MAX_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 enum machine_mode mode_wider_mode[]; +extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int) ; +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; +typedef int ptrdiff_t; +typedef unsigned int size_t; +typedef short unsigned int wchar_t; +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 (SI))); + struct DIstruct {SItype low, high;}; +typedef union +{ + struct DIstruct s; + DItype ll; +} DIunion; +extern DItype __fixunssfdi (SFtype a); +extern DItype __fixunsdfdi (DFtype a); +extern void atexit (void (*) (void)); +typedef void (*func_ptr) (void); +extern func_ptr __CTOR_LIST__[]; +extern func_ptr __DTOR_LIST__[]; +extern void __do_global_dtors (); +void +__do_global_dtors () +{ + unsigned nptrs = (unsigned int ) __DTOR_LIST__[0]; + unsigned i; + + + if (nptrs == -1) + for (nptrs = 0; __DTOR_LIST__[nptrs + 1] != 0; nptrs++); + + for (i = nptrs; i >= 1; i--) + __DTOR_LIST__[i] (); +} +extern int _exit_dummy_decl; +int *_exit_dummy_ref = &_exit_dummy_decl; +void +__do_global_ctors () +{ + do { func_ptr *p; for (p = __CTOR_LIST__ + 1; *p; ) (*p++) (); } while (0) ; + atexit (( __do_global_dtors )) ; +} +void +__main () +{ + + static int initialized = 0; + if (! initialized) + { + initialized = 1; + __do_global_ctors (); + } +} |
