diff options
author | Saurabh Verma <saurabh.verma@codito.com> | 2005-09-06 22:29:45 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2005-09-06 15:29:45 -0700 |
commit | 3273516f2514845cb4b970b6e3951578082ef4f1 (patch) | |
tree | 0797b461233851c9ddc9cf370ada488f2bfaffa6 /gcc/config/arc | |
parent | 006fa7d4282bf2341c1c0e3162cc2cc70d3706e6 (diff) | |
download | gcc-3273516f2514845cb4b970b6e3951578082ef4f1.zip gcc-3273516f2514845cb4b970b6e3951578082ef4f1.tar.gz gcc-3273516f2514845cb4b970b6e3951578082ef4f1.tar.bz2 |
re PR target/8973 ([arc-7-elf] the interupt handler does not return properly, uses j.d insted of j.d.f)
2005-09-06 Saurabh Verma <saurabh.verma@codito.com>
PR target/8973
* config/arc/arc.c (arc_output_function_epilogue): Update flags while
returning from an interrupt handler.
From-SVN: r103972
Diffstat (limited to 'gcc/config/arc')
-rw-r--r-- | gcc/config/arc/arc.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index 6d8666e..78a95f4 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -1362,8 +1362,13 @@ arc_output_function_epilogue (FILE *file, HOST_WIDE_INT size) static const int regs[4] = { 0, RETURN_ADDR_REGNUM, ILINK1_REGNUM, ILINK2_REGNUM }; - fprintf (file, "\tj.d %s\n", reg_names[regs[fn_type]]); - } + + /* Update the flags, if returning from an interrupt handler. */ + if (ARC_INTERRUPT_P (fn_type)) + fprintf (file, "\tj.d.f %s\n", reg_names[regs[fn_type]]); + else + fprintf (file, "\tj.d %s\n", reg_names[regs[fn_type]]); + } /* If the only register saved is the return address, we need a nop, unless we have an instruction to put into it. Otherwise |