]> git.ipfire.org Git - thirdparty/gcc.git/commit
Support new interrupt handler options.
authorrts <rts@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Jul 2015 11:42:50 +0000 (11:42 +0000)
committerrts <rts@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Jul 2015 11:42:50 +0000 (11:42 +0000)
commit70b5547ac48b0fc5579beb58ae17cd2c5a689681
treee9b7d753550000d760f1fb0ec005461f7e7839c7
parentb6f884d4aaa88c7e8dbf80d65e1fb0467ebb6703
Support new interrupt handler options.

gcc/
* config/mips/mips.c (mips_int_mask): New enum.
(mips_shadow_set): Likewise.
(int_mask): New variable.
(use_shadow_register_set_p): Change type to enum mips_shadow_set.
(machine_function): Add int_mask and use_shadow_register_set.
(mips_attribute_table): Add attribute handlers for interrupt and
use_shadow_register_set.
(mips_interrupt_mask): New static function.
(mips_handle_interrupt_attr): Likewise.
(mips_handle_use_shadow_register_set_attr): Likewise.
(mips_use_shadow_register_set): Change return type to enum
mips_shadow_set.  Add argument handling for use_shadow_register_set
attribute.
(mips_interrupt_extra_called_saved_reg_p): Update the conditional to
compare with mips_shadow_set enum.
(mips_compute_frame_info): Add interrupt mask and
use_shadow_register_set to per-function information structure.
Add a stack slot for EPC unconditionally.
(mips_expand_prologue): Compare use_shadow_register_set value
with mips_shadow_set enum.  Save EPC always in K1, clobber only K1 for
masked interrupt register but in EIC mode use K0 and save Cause in K0.
EPC saved and restored unconditionally.  Use PMODE_INSN macro when
copying the stack pointer from the shadow register set.
* config/mips/mips.h (SR_IM0): New define.
* config/mips/mips.md (mips_rdpgpr): Rename to...
(mips_rdpgpr_<mode>): ...this.  Use the Pmode iterator.
* doc/extend.texi (Declaring Attributes of Functions): Document
optional arguments for interrupt and use_shadow_register_set
attributes.

gcc/testsuite/
* gcc.target/mips/interrupt_handler-4.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@225819 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/mips/mips.c
gcc/config/mips/mips.h
gcc/config/mips/mips.md
gcc/doc/extend.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/mips/interrupt_handler-4.c [new file with mode: 0644]