--- a/configure +++ b/configure @@ -7120,7 +7120,7 @@ echo "$as_me:$LINENO: checking return.h echo $ECHO_N "checking return.h macros work... $ECHO_C" >&6 if test "$cross_compiling" = yes; then cat >>confdefs.h <<\_ACEOF -#define RETURN_MACROS_WORK 0 +#define RETURN_MACROS_WORK 1 _ACEOF echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 --- a/return.h +++ b/return.h @@ -106,25 +106,19 @@ /*************************************/ /* - * For DEC Mips machines running Ultrix + * For Mips machines running Linux */ #if __mips /* - * I have no idea how to get inline assembly with the default cc. - * Anyone know how? - */ - -#if 0 - -/* * NOTE: we assume here that file is global. * - * $31 is the frame pointer. $2 looks to be the return address but maybe - * not consistently. + * $31 is the return address. */ -#define GET_RET_ADDR(file) asm("sw $2, file") - +#if (_MIPS_SZLONG == 32) +#define GET_RET_ADDR(file) asm("sw $31, %0" : "=m" (file)) +#else +#define GET_RET_ADDR(file) asm("sd $31, %0" : "=m" (file)) #endif #endif /* __mips */