2009-04-02 Chao-ying Fu <fu@mips.com> James Grosbach <james.grosbach@microchip.com> * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc, num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset, cop0_sp_offset. (machine_function): Add interrupt_handler_p, use_shadow_register_set_p, keep_interrupts_masked_p, use_debug_exception_return_p. (mips_attribute_table): Add interrupt, use_shadow_register_set, keep_interrupts_masked, use_debug_exception_return. (mips_interrupt_type_p, mips_use_shadow_register_set_p, mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p): New functions. (mips_function_ok_for_sibcall): Return false for interrupt handlers. (mips_print_operand): Process COP0 registers to print $0 .. $31 correctly for GAS to process. (mips_interrupt_extra_call_saved_reg_p): New function. (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check extra registers. (mips_cfun_might_clobber_call_saved_reg_p): Likewise. (mips_compute_frame_info): Add supports for interrupt context that includes doubleword accumulators and COP0 registers. (mips_for_each_saved_acc): New function. (mips_for_each_saved_gpr_and_fpr): Change the function name from mips_for_each_saved_reg. (mips_save_reg): Save accumulators. (mips_kernel_reg_p): A new for_each_rtx callback. (mips_expand_prologue): Support interrupt handlers. (mips_restore_reg): Restore accumulators. (mips_expand_epilogue): Support interrupt handlers. (mips_can_use_return_insn): Return false for interrupt handlers. (mips_epilogue_uses): New function. * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI, UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC. (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr, cop0_move): New instructions. * config/mips/mips-protos.h (mips_epilogue_uses): Declare. * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New defines. (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM): New defines. (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines. (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For interrupt handlers, we use K0 as the temporary register. (EPILOGUE_USES): Change to a function call. * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt handlers, we use K0 as the temporary register. * doc/extend.texi (Function Attributes): Document interrupt, use_shadow_register_set, keep_interrupts_masked, use_debug_exception_return for MIPS attributes. Co-Authored-By: James Grosbach <james.grosbach@microchip.com> From-SVN: r145481
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
10000.md | Loading commit data... | |
20kc.md | Loading commit data... | |
24k.md | Loading commit data... | |
3000.md | Loading commit data... | |
4000.md | Loading commit data... | |
4100.md | Loading commit data... | |
4130.md | Loading commit data... | |
4300.md | Loading commit data... | |
4600.md | Loading commit data... | |
4k.md | Loading commit data... | |
5000.md | Loading commit data... | |
5400.md | Loading commit data... | |
5500.md | Loading commit data... | |
5k.md | Loading commit data... | |
6000.md | Loading commit data... | |
7000.md | Loading commit data... | |
74k.md | Loading commit data... | |
9000.md | Loading commit data... | |
constraints.md | Loading commit data... | |
crti.asm | Loading commit data... | |
crtn.asm | Loading commit data... | |
dbxmdebug.h | Loading commit data... | |
driver-native.c | Loading commit data... | |
elf.h | Loading commit data... | |
elfoabi.h | Loading commit data... | |
elforion.h | Loading commit data... | |
generic.md | Loading commit data... | |
iris.h | Loading commit data... | |
iris5.h | Loading commit data... | |
iris6.h | Loading commit data... | |
irix-crti.asm | Loading commit data... | |
irix-crtn.asm | Loading commit data... | |
libgcc-mips16.ver | Loading commit data... | |
linux-unwind.h | Loading commit data... | |
linux.h | Loading commit data... | |
linux64.h | Loading commit data... | |
loongson.h | Loading commit data... | |
loongson.md | Loading commit data... | |
loongson2ef.md | Loading commit data... | |
mips-dsp.md | Loading commit data... | |
mips-dspr2.md | Loading commit data... | |
mips-fixed.md | Loading commit data... | |
mips-ftypes.def | Loading commit data... | |
mips-modes.def | Loading commit data... | |
mips-protos.h | Loading commit data... | |
mips-ps-3d.md | Loading commit data... | |
mips.c | Loading commit data... | |
mips.h | Loading commit data... | |
mips.md | Loading commit data... | |
mips.opt | Loading commit data... | |
mips16.S | Loading commit data... | |
netbsd.h | Loading commit data... | |
octeon.md | Loading commit data... | |
openbsd.h | Loading commit data... | |
predicates.md | Loading commit data... | |
r3900.h | Loading commit data... | |
rtems.h | Loading commit data... | |
sb1.md | Loading commit data... | |
sdb.h | Loading commit data... | |
sde.h | Loading commit data... | |
sdemtk.h | Loading commit data... | |
sdemtk.opt | Loading commit data... | |
sr71k.md | Loading commit data... | |
st.h | Loading commit data... | |
sync.md | Loading commit data... | |
t-elf | Loading commit data... | |
t-gofast | Loading commit data... | |
t-iris | Loading commit data... | |
t-iris6 | Loading commit data... | |
t-isa3264 | Loading commit data... | |
t-libgcc-mips16 | Loading commit data... | |
t-linux64 | Loading commit data... | |
t-mips | Loading commit data... | |
t-r3900 | Loading commit data... | |
t-rtems | Loading commit data... | |
t-sb1 | Loading commit data... | |
t-sde | Loading commit data... | |
t-sdemtk | Loading commit data... | |
t-slibgcc-irix | Loading commit data... | |
t-sr71k | Loading commit data... | |
t-st | Loading commit data... | |
t-vr | Loading commit data... | |
t-vxworks | Loading commit data... | |
vr.h | Loading commit data... | |
vr4120-div.S | Loading commit data... | |
vxworks.h | Loading commit data... | |
x-native | Loading commit data... | |
xlr.md | Loading commit data... |