hc
2024-05-10 cde9070d9970eef1f7ec2360586c802a16230ad8
kernel/arch/mips/include/asm/mach-loongson64/kernel-entry-init.h
....@@ -11,11 +11,12 @@
1111 #ifndef __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H
1212 #define __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H
1313
14
+#include <asm/cpu.h>
15
+
1416 /*
1517 * Override macros used in arch/mips/kernel/head.S.
1618 */
1719 .macro kernel_entry_setup
18
-#ifdef CONFIG_CPU_LOONGSON3
1920 .set push
2021 .set mips64
2122 /* Set LPA on LOONGSON3 config3 */
....@@ -26,22 +27,31 @@
2627 mfc0 t0, CP0_PAGEGRAIN
2728 or t0, (0x1 << 29)
2829 mtc0 t0, CP0_PAGEGRAIN
29
-#ifdef CONFIG_LOONGSON3_ENHANCEMENT
3030 /* Enable STFill Buffer */
31
+ mfc0 t0, CP0_PRID
32
+ /* Loongson-3A R4+ */
33
+ andi t1, t0, PRID_IMP_MASK
34
+ li t2, PRID_IMP_LOONGSON_64G
35
+ beq t1, t2, 1f
36
+ nop
37
+ /* Loongson-3A R2/R3 */
38
+ andi t0, (PRID_IMP_MASK | PRID_REV_MASK)
39
+ slti t0, t0, (PRID_IMP_LOONGSON_64C | PRID_REV_LOONGSON3A_R2_0)
40
+ bnez t0, 2f
41
+ nop
42
+1:
3143 mfc0 t0, CP0_CONFIG6
3244 or t0, 0x100
3345 mtc0 t0, CP0_CONFIG6
34
-#endif
46
+2:
3547 _ehb
3648 .set pop
37
-#endif
3849 .endm
3950
4051 /*
4152 * Do SMP slave processor setup.
4253 */
4354 .macro smp_slave_setup
44
-#ifdef CONFIG_CPU_LOONGSON3
4555 .set push
4656 .set mips64
4757 /* Set LPA on LOONGSON3 config3 */
....@@ -52,15 +62,25 @@
5262 mfc0 t0, CP0_PAGEGRAIN
5363 or t0, (0x1 << 29)
5464 mtc0 t0, CP0_PAGEGRAIN
55
-#ifdef CONFIG_LOONGSON3_ENHANCEMENT
5665 /* Enable STFill Buffer */
66
+ mfc0 t0, CP0_PRID
67
+ /* Loongson-3A R4+ */
68
+ andi t1, t0, PRID_IMP_MASK
69
+ li t2, PRID_IMP_LOONGSON_64G
70
+ beq t1, t2, 1f
71
+ nop
72
+ /* Loongson-3A R2/R3 */
73
+ andi t0, (PRID_IMP_MASK | PRID_REV_MASK)
74
+ slti t0, t0, (PRID_IMP_LOONGSON_64C | PRID_REV_LOONGSON3A_R2_0)
75
+ bnez t0, 2f
76
+ nop
77
+1:
5778 mfc0 t0, CP0_CONFIG6
5879 or t0, 0x100
5980 mtc0 t0, CP0_CONFIG6
60
-#endif
81
+2:
6182 _ehb
6283 .set pop
63
-#endif
6484 .endm
6585
6686 #endif /* __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H */