[ARC]Fast interrupts support.
authorClaudiu Zissulescu <claziss@synopsys.com>
Tue, 9 May 2017 14:19:35 +0000 (16:19 +0200)
committerClaudiu Zissulescu <claziss@gcc.gnu.org>
Tue, 9 May 2017 14:19:35 +0000 (16:19 +0200)
commitc7314bc17b9dde51f1eac83dc399d411f5fdd4a0
tree936ddafec5b9117a5b74e1054e23cab049a0bc25
parent4145318390da5670b2e571593ccfe7779863b93c
[ARC]Fast interrupts support.

When a processor enters a fast interrupts handler, and duplicate
register banks are configured, the processor saves the user context by
saving the registers in the main register bank to these additional
registers in the duplicate register bank.  In this fast interrupt
context, when you specify the rgf_banked_regs option,the compiler does
not save the registers duplicated in the additional register bank are
not saved.

gcc/
2017-05-09  Claudiu Zissulescu  <claziss@synopsys.com>
    Andrew Burgess  <andrew.burgess@embecosm.com>

* config/arc/arc.c (ARC_AUTOBLINK_IRQ_P): Consider fast interrupts
case also.
(ARC_AUTOFP_IRQ_P): Likewise.
(ARC_AUTO_IRQ_P): Likewise.
(rgf_banked_register_count): New variable.
(parse_mrgf_banked_regs_option): New function.
(arc_override_options): Handle rgf_banked_regs option.
(arc_handle_interrupt_attribute): Add firq option.
(arc_compute_function_type): Return fast irq type when required.
(arc_must_save_register): Handle fast interrupts.
(arc_expand_prologue): Do not emit dwarf info for fast interrupts.
(arc_return_address_regs): Update.
* config/arc/arc.h (arc_return_address_regs): Update.
(arc_function_type): Add fast interrupt type.
(ARC_INTERRUPT_P): Update.
(RC_FAST_INTERRUPT_P): Define.
* config/arc/arc.md (simple_return): Update for fast interrupts.
(p_return_i): Likewise.
* config/arc/arc.opt (mrgf-banked-regs): New option.
* doc/invoke.texi (mrgf-banked-regs): Document.

testsuite/
2017-05-09  Claudiu Zissulescu  <claziss@synopsys.com>
    Andrew Burgess  <andrew.burgess@embecosm.com>

* gcc.target/arc/firq-1.c: New file.
* gcc.target/arc/firq-2.c: Likewise.
* gcc.target/arc/firq-3.c: Likewise.
* gcc.target/arc/firq-4.c: Likewise.
* gcc.target/arc/firq-5.c: Likewise.
* gcc.target/arc/firq-6.c: Likewise.

Co-Authored-By: Andrew Burgess <andrew.burgess@embecosm.com>
From-SVN: r247796
13 files changed:
ChangeLog
gcc/config/arc/arc.c
gcc/config/arc/arc.h
gcc/config/arc/arc.md
gcc/config/arc/arc.opt
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arc/firq-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arc/firq-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arc/firq-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arc/firq-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arc/firq-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arc/firq-6.c [new file with mode: 0644]