|
@@ -121,6 +121,25 @@
|
|
.endm
|
|
.endm
|
|
#else
|
|
#else
|
|
.macro get_saved_sp /* Uniprocessor variation */
|
|
.macro get_saved_sp /* Uniprocessor variation */
|
|
|
|
+#ifdef CONFIG_CPU_LOONGSON2F
|
|
|
|
+ /*
|
|
|
|
+ * Clear BTB (branch target buffer), forbid RAS (return address
|
|
|
|
+ * stack) to workaround the Out-of-order Issue in Loongson2F
|
|
|
|
+ * via its diagnostic register.
|
|
|
|
+ */
|
|
|
|
+ move k0, ra
|
|
|
|
+ jal 1f
|
|
|
|
+ nop
|
|
|
|
+1: jal 1f
|
|
|
|
+ nop
|
|
|
|
+1: jal 1f
|
|
|
|
+ nop
|
|
|
|
+1: jal 1f
|
|
|
|
+ nop
|
|
|
|
+1: move ra, k0
|
|
|
|
+ li k0, 3
|
|
|
|
+ mtc0 k0, $22
|
|
|
|
+#endif /* CONFIG_CPU_LOONGSON2F */
|
|
#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
|
|
#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
|
|
lui k1, %hi(kernelsp)
|
|
lui k1, %hi(kernelsp)
|
|
#else
|
|
#else
|