.. | .. |
---|
11 | 11 | #ifndef __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H |
---|
12 | 12 | #define __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H |
---|
13 | 13 | |
---|
| 14 | +#include <asm/cpu.h> |
---|
| 15 | + |
---|
14 | 16 | /* |
---|
15 | 17 | * Override macros used in arch/mips/kernel/head.S. |
---|
16 | 18 | */ |
---|
17 | 19 | .macro kernel_entry_setup |
---|
18 | | -#ifdef CONFIG_CPU_LOONGSON3 |
---|
19 | 20 | .set push |
---|
20 | 21 | .set mips64 |
---|
21 | 22 | /* Set LPA on LOONGSON3 config3 */ |
---|
.. | .. |
---|
26 | 27 | mfc0 t0, CP0_PAGEGRAIN |
---|
27 | 28 | or t0, (0x1 << 29) |
---|
28 | 29 | mtc0 t0, CP0_PAGEGRAIN |
---|
29 | | -#ifdef CONFIG_LOONGSON3_ENHANCEMENT |
---|
30 | 30 | /* 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: |
---|
31 | 43 | mfc0 t0, CP0_CONFIG6 |
---|
32 | 44 | or t0, 0x100 |
---|
33 | 45 | mtc0 t0, CP0_CONFIG6 |
---|
34 | | -#endif |
---|
| 46 | +2: |
---|
35 | 47 | _ehb |
---|
36 | 48 | .set pop |
---|
37 | | -#endif |
---|
38 | 49 | .endm |
---|
39 | 50 | |
---|
40 | 51 | /* |
---|
41 | 52 | * Do SMP slave processor setup. |
---|
42 | 53 | */ |
---|
43 | 54 | .macro smp_slave_setup |
---|
44 | | -#ifdef CONFIG_CPU_LOONGSON3 |
---|
45 | 55 | .set push |
---|
46 | 56 | .set mips64 |
---|
47 | 57 | /* Set LPA on LOONGSON3 config3 */ |
---|
.. | .. |
---|
52 | 62 | mfc0 t0, CP0_PAGEGRAIN |
---|
53 | 63 | or t0, (0x1 << 29) |
---|
54 | 64 | mtc0 t0, CP0_PAGEGRAIN |
---|
55 | | -#ifdef CONFIG_LOONGSON3_ENHANCEMENT |
---|
56 | 65 | /* 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: |
---|
57 | 78 | mfc0 t0, CP0_CONFIG6 |
---|
58 | 79 | or t0, 0x100 |
---|
59 | 80 | mtc0 t0, CP0_CONFIG6 |
---|
60 | | -#endif |
---|
| 81 | +2: |
---|
61 | 82 | _ehb |
---|
62 | 83 | .set pop |
---|
63 | | -#endif |
---|
64 | 84 | .endm |
---|
65 | 85 | |
---|
66 | 86 | #endif /* __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H */ |
---|