diff --git a/gcc/config/nds32/constants.md b/gcc/config/nds32/constants.md
index 2c317a9..706af2f 100644
--- a/gcc/config/nds32/constants.md
+++ b/gcc/config/nds32/constants.md
@@ -41,6 +41,7 @@
   UNSPEC_VOLATILE_MTUSR
   UNSPEC_VOLATILE_SETGIE_EN
   UNSPEC_VOLATILE_SETGIE_DIS
+  UNSPEC_VOLATILE_POP25_RETURN
 ])
 
 ;; ------------------------------------------------------------------------
diff --git a/gcc/config/nds32/nds32.c b/gcc/config/nds32/nds32.c
index 7279926..e24d0dc 100644
--- a/gcc/config/nds32/nds32.c
+++ b/gcc/config/nds32/nds32.c
@@ -3461,6 +3461,9 @@ nds32_expand_epilogue_v3pop (void)
       nds32_emit_stack_v3pop (Rb, Re,
 			      GEN_INT (14), GEN_INT (0));
     }
+
+  /* Generate return instruction.  */
+  emit_jump_insn (gen_pop25return ());
 }
 
 /* ------------------------------------------------------------------------ */
diff --git a/gcc/config/nds32/nds32.md b/gcc/config/nds32/nds32.md
index fd2ba7e..a09650f 100644
--- a/gcc/config/nds32/nds32.md
+++ b/gcc/config/nds32/nds32.md
@@ -2253,3 +2253,15 @@ create_template:
    (set_attr "length" "4")])
 
 ;; ----------------------------------------------------------------------------
+
+;; Pseudo NOPs
+
+(define_insn "pop25return"
+  [(return)
+   (unspec_volatile:SI [(reg:SI LP_REGNUM)] UNSPEC_VOLATILE_POP25_RETURN)]
+  ""
+  "! return for pop 25"
+  [(set_attr "length" "0")]
+)
+
+;; ----------------------------------------------------------------------------
-- 
1.9.0

