--- gcc/config/sh/sh.c	2012-03-28 14:18:58.000000000 +0530
+++ gcc/config/sh/sh.c	2012-03-28 16:12:22.000000000 +0530
@@ -6508,7 +6508,7 @@ push_regs (HARD_REG_SET *mask, int inter
 	  add_reg_note (x, REG_CFA_ADJUST_CFA, set);
 	  emit_insn (gen_blockage ());
 	}
-      else
+      else if (! (TARGET_SH2A && sh_cfun_resbank_handler_p ()))
 	for (i = FIRST_BANKED_REG; i <= LAST_BANKED_REG; i++)
 	  if (TEST_HARD_REG_BIT (*mask, i))
 	    push (i);
@@ -7495,7 +7495,7 @@ sh_expand_epilogue (bool sibcall_p)
 	      emit_insn (gen_movml_pop_banked (sp_reg));
 	      emit_insn (gen_blockage ());
 	    }
-	  else
+	  else if (! (TARGET_SH2A && sh_cfun_resbank_handler_p ()))
 	    for (i = LAST_BANKED_REG; i >= FIRST_BANKED_REG; i--)
 	      if (TEST_HARD_REG_BIT (live_regs_mask, i))
 		pop (i);
