00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #undef TARGET_DEFAULT
00024 #define TARGET_DEFAULT (MASK_FP | MASK_FPREGS | MASK_GAS)
00025
00026 #undef CPP_PREDEFINES
00027 #define CPP_PREDEFINES \
00028 "-D__gnu_linux__ -Dlinux -Dunix -Asystem=linux -D_LONGLONG -D__alpha__ " \
00029 SUB_CPP_PREDEFINES
00030
00031
00032 #undef CPLUSPLUS_CPP_SPEC
00033 #define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
00034
00035 #undef LIB_SPEC
00036 #define LIB_SPEC \
00037 "%{shared: -lc} \
00038 %{!shared: %{pthread:-lpthread} \
00039 %{profile:-lc_p} %{!profile: -lc}}"
00040
00041
00042 #undef TARGET_PROFILING_NEEDS_GP
00043 #define TARGET_PROFILING_NEEDS_GP 1
00044
00045
00046 #undef TARGET_CAN_FAULT_IN_PROLOGUE
00047 #define TARGET_CAN_FAULT_IN_PROLOGUE 1
00048
00049
00050 #undef TARGET_FIXUP_EV5_PREFETCH
00051 #define TARGET_FIXUP_EV5_PREFETCH 1
00052
00053 #undef WCHAR_TYPE
00054 #define WCHAR_TYPE "int"
00055
00056
00057 #define HANDLE_PRAGMA_PACK_PUSH_POP
00058
00059
00060
00061
00062 #ifdef IN_LIBGCC2
00063 #include <signal.h>
00064 #include <sys/ucontext.h>
00065 #endif
00066
00067 #define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \
00068 do { \
00069 unsigned int *pc_ = (CONTEXT)->ra; \
00070 struct sigcontext *sc_; \
00071 long new_cfa_, i_; \
00072 \
00073 if (pc_[0] != 0x47fe0410 \
00074 || pc_[2] != 0x00000083 ) \
00075 break; \
00076 if (pc_[1] == 0x201f0067) \
00077 sc_ = (CONTEXT)->cfa; \
00078 else if (pc_[1] == 0x201f015f) \
00079 { \
00080 struct rt_sigframe { \
00081 struct siginfo info; \
00082 struct ucontext uc; \
00083 } *rt_ = (CONTEXT)->cfa; \
00084 sc_ = &rt_->uc.uc_mcontext; \
00085 } \
00086 else \
00087 break; \
00088 new_cfa_ = sc_->sc_regs[30]; \
00089 (FS)->cfa_how = CFA_REG_OFFSET; \
00090 (FS)->cfa_reg = 30; \
00091 (FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa; \
00092 for (i_ = 0; i_ < 30; ++i_) \
00093 { \
00094 (FS)->regs.reg[i_].how = REG_SAVED_OFFSET; \
00095 (FS)->regs.reg[i_].loc.offset \
00096 = (long)&sc_->sc_regs[i_] - new_cfa_; \
00097 } \
00098 for (i_ = 0; i_ < 31; ++i_) \
00099 { \
00100 (FS)->regs.reg[i_+32].how = REG_SAVED_OFFSET; \
00101 (FS)->regs.reg[i_+32].loc.offset \
00102 = (long)&sc_->sc_fpregs[i_] - new_cfa_; \
00103 } \
00104 (FS)->regs.reg[31].how = REG_SAVED_OFFSET; \
00105 (FS)->regs.reg[31].loc.offset = (long)&sc_->sc_pc - new_cfa_; \
00106 (FS)->retaddr_column = 31; \
00107 goto SUCCESS; \
00108 } while (0)