|
@@ -11,6 +11,8 @@
|
|
#ifndef __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H
|
|
#ifndef __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H
|
|
#define __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H
|
|
#define __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H
|
|
|
|
|
|
|
|
+#include <asm/cpu.h>
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Override macros used in arch/mips/kernel/head.S.
|
|
* Override macros used in arch/mips/kernel/head.S.
|
|
*/
|
|
*/
|
|
@@ -26,12 +28,15 @@
|
|
mfc0 t0, CP0_PAGEGRAIN
|
|
mfc0 t0, CP0_PAGEGRAIN
|
|
or t0, (0x1 << 29)
|
|
or t0, (0x1 << 29)
|
|
mtc0 t0, CP0_PAGEGRAIN
|
|
mtc0 t0, CP0_PAGEGRAIN
|
|
-#ifdef CONFIG_LOONGSON3_ENHANCEMENT
|
|
|
|
/* Enable STFill Buffer */
|
|
/* Enable STFill Buffer */
|
|
|
|
+ mfc0 t0, CP0_PRID
|
|
|
|
+ andi t0, (PRID_IMP_MASK | PRID_REV_MASK)
|
|
|
|
+ slti t0, (PRID_IMP_LOONGSON_64 | PRID_REV_LOONGSON3A_R2)
|
|
|
|
+ bnez t0, 1f
|
|
mfc0 t0, CP0_CONFIG6
|
|
mfc0 t0, CP0_CONFIG6
|
|
or t0, 0x100
|
|
or t0, 0x100
|
|
mtc0 t0, CP0_CONFIG6
|
|
mtc0 t0, CP0_CONFIG6
|
|
-#endif
|
|
|
|
|
|
+1:
|
|
_ehb
|
|
_ehb
|
|
.set pop
|
|
.set pop
|
|
#endif
|
|
#endif
|
|
@@ -52,12 +57,15 @@
|
|
mfc0 t0, CP0_PAGEGRAIN
|
|
mfc0 t0, CP0_PAGEGRAIN
|
|
or t0, (0x1 << 29)
|
|
or t0, (0x1 << 29)
|
|
mtc0 t0, CP0_PAGEGRAIN
|
|
mtc0 t0, CP0_PAGEGRAIN
|
|
-#ifdef CONFIG_LOONGSON3_ENHANCEMENT
|
|
|
|
/* Enable STFill Buffer */
|
|
/* Enable STFill Buffer */
|
|
|
|
+ mfc0 t0, CP0_PRID
|
|
|
|
+ andi t0, (PRID_IMP_MASK | PRID_REV_MASK)
|
|
|
|
+ slti t0, (PRID_IMP_LOONGSON_64 | PRID_REV_LOONGSON3A_R2)
|
|
|
|
+ bnez t0, 1f
|
|
mfc0 t0, CP0_CONFIG6
|
|
mfc0 t0, CP0_CONFIG6
|
|
or t0, 0x100
|
|
or t0, 0x100
|
|
mtc0 t0, CP0_CONFIG6
|
|
mtc0 t0, CP0_CONFIG6
|
|
-#endif
|
|
|
|
|
|
+1:
|
|
_ehb
|
|
_ehb
|
|
.set pop
|
|
.set pop
|
|
#endif
|
|
#endif
|