]> git.ipfire.org Git - thirdparty/gcc.git/commit
[ARC]Fast interrupts support.
authorclaziss <claziss@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 May 2017 14:19:35 +0000 (14:19 +0000)
committerclaziss <claziss@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 May 2017 14:19:35 +0000 (14:19 +0000)
commit6932c0bd5a209e2550c08a7b21aaedd001e8cfca
tree936ddafec5b9117a5b74e1054e23cab049a0bc25
parent6abb17b8ac316562e222cc73067b291df9f8d5a7
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@247796 138bc75d-0d04-0410-961f-82ee72b054a4
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]