X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gcc%2Fconfig%2Fm68k%2Fm68k.md;h=19abe624c293c0043313aa0bed5f80352afc5ec1;hb=a4242737202af64a394f5271c06b8be1979cbcfb;hp=78ddf58f71e7d377921b7c1baca314d91670c2a0;hpb=ab6bd6931e768e2348d83da9188d75f24247ff04;p=gcc.git diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index 78ddf58f71e..19abe624c29 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -6833,15 +6833,23 @@ [(return)] "" { - if (m68k_interrupt_function_p (current_function_decl)) - return "rte"; - else if (current_function_pops_args) + switch (m68k_get_function_kind (current_function_decl)) { - operands[0] = GEN_INT (current_function_pops_args); - return "rtd %0"; + case m68k_fk_interrupt_handler: + return "rte"; + + case m68k_fk_interrupt_thread: + return "sleep"; + + default: + if (current_function_pops_args) + { + operands[0] = GEN_INT (current_function_pops_args); + return "rtd %0"; + } + else + return "rts"; } - else - return "rts"; }) (define_insn "*m68k_store_multiple"