diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S
index 371571f4f280b01628460f28ff33ef1eaa09cb0a..b1939a486d2c586c82f77caf05e3e84eccd0611a 100644
--- a/arch/mips/kernel/entry.S
+++ b/arch/mips/kernel/entry.S
@@ -119,3 +119,18 @@ syscall_exit_work:
 	li	a1, 1
 	jal	do_syscall_trace
 	b	resume_userspace
+
+#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_MIPS_MT)
+
+/*
+ * MIPS32R2 Instruction Hazard Barrier - must be called
+ *
+ * For C code use the inline version named instruction_hazard().
+ */
+LEAF(mips_ihb)
+	.set	mips32r2
+	jr.hb	ra
+	nop
+	END(mips_ihb)
+
+#endif /* CONFIG_CPU_MIPSR2 or CONFIG_MIPS_MT */