Line 1... |
Line 1... |
ssh o/* Subroutines for insn-output.c for GNU compiler. OpenRISC 1000 version.
|
/* Subroutines for insn-output.c for GNU compiler. OpenRISC 1000 version.
|
Copyright (C) 1987, 1992, 1997, 1999, 2000, 2001, 2002, 2003, 2004,
|
Copyright (C) 1987, 1992, 1997, 1999, 2000, 2001, 2002, 2003, 2004,
|
2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc
|
2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc
|
Copyright (C) 2010 Embecosm Limited
|
Copyright (C) 2010 Embecosm Limited
|
|
|
Contributed by Damjan Lampret <damjanl@bsemi.com> in 1999.
|
Contributed by Damjan Lampret <damjanl@bsemi.com> in 1999.
|
Line 133... |
Line 133... |
|
|
return false;
|
return false;
|
|
|
} /* or32_save_reg_p () */
|
} /* or32_save_reg_p () */
|
|
|
|
|
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
/*!Compute full frame size and layout.
|
/*!Compute full frame size and layout.
|
|
|
Store information in "frame_info".
|
Store information in "frame_info".
|
|
|
Line 1754... |
Line 1753... |
|
|
@return Non-zero (TRUE) if this is a legitimate address, zero (FALSE)
|
@return Non-zero (TRUE) if this is a legitimate address, zero (FALSE)
|
otherwise. */
|
otherwise. */
|
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
static bool
|
static bool
|
or32_legitimate_address_p (enum machine_mode mode,
|
or32_legitimate_address_p (enum machine_mode mode ATTRIBUTE_UNUSED,
|
rtx x,
|
rtx x,
|
bool strict)
|
bool strict)
|
{
|
{
|
/* You might think 16-bit constants are suitable. They can be built into
|
/* You might think 16-bit constants are suitable. They can be built into
|
addresses using r0 as the base. However this seems to lead to defective
|
addresses using r0 as the base. However this seems to lead to defective
|
Line 1792... |
Line 1791... |
}
|
}
|
|
|
/* Addresses consisting of just a register are OK. They can be built into
|
/* Addresses consisting of just a register are OK. They can be built into
|
addresses using an offset of zero (and an offset of four if double
|
addresses using an offset of zero (and an offset of four if double
|
word). */
|
word). */
|
if (GET_CODE(x) == REG && or32_regnum_ok_for_base_p( REGNO (x), strict))
|
if (GET_CODE(x) == REG
|
{
|
&& or32_regnum_ok_for_base_p(REGNO(x),strict)) {
|
return 1;
|
return 1;
|
}
|
}
|
|
|
return 0;
|
return 0;
|
|
}
|
} /* or32_legitimate_address_p () */
|
|
|
|
|
|
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
/*!Initialize a trampoline for nested functions.
|
/*!Initialize a trampoline for nested functions.
|
|
|
A nested function is defined by *two* pieces of information, the address of
|
A nested function is defined by *two* pieces of information, the address of
|