Loading...
Note: File does not exist in v3.1.
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2005 Embedded Alley Solutions, Inc
7 * Copyright (C) 2005 Ralf Baechle (ralf@linux-mips.org)
8 * Copyright (C) 2009 Jiajie Chen (chenjiajie@cse.buaa.edu.cn)
9 * Copyright (C) 2012 Huacai Chen (chenhc@lemote.com)
10 */
11#ifndef __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H
12#define __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H
13
14#include <asm/cpu.h>
15
16/*
17 * Override macros used in arch/mips/kernel/head.S.
18 */
19 .macro kernel_entry_setup
20#ifdef CONFIG_CPU_LOONGSON3
21 .set push
22 .set mips64
23 /* Set LPA on LOONGSON3 config3 */
24 mfc0 t0, CP0_CONFIG3
25 or t0, (0x1 << 7)
26 mtc0 t0, CP0_CONFIG3
27 /* Set ELPA on LOONGSON3 pagegrain */
28 mfc0 t0, CP0_PAGEGRAIN
29 or t0, (0x1 << 29)
30 mtc0 t0, CP0_PAGEGRAIN
31 /* Enable STFill Buffer */
32 mfc0 t0, CP0_PRID
33 andi t0, (PRID_IMP_MASK | PRID_REV_MASK)
34 slti t0, (PRID_IMP_LOONGSON_64 | PRID_REV_LOONGSON3A_R2_0)
35 bnez t0, 1f
36 mfc0 t0, CP0_CONFIG6
37 or t0, 0x100
38 mtc0 t0, CP0_CONFIG6
391:
40 _ehb
41 .set pop
42#endif
43 .endm
44
45/*
46 * Do SMP slave processor setup.
47 */
48 .macro smp_slave_setup
49#ifdef CONFIG_CPU_LOONGSON3
50 .set push
51 .set mips64
52 /* Set LPA on LOONGSON3 config3 */
53 mfc0 t0, CP0_CONFIG3
54 or t0, (0x1 << 7)
55 mtc0 t0, CP0_CONFIG3
56 /* Set ELPA on LOONGSON3 pagegrain */
57 mfc0 t0, CP0_PAGEGRAIN
58 or t0, (0x1 << 29)
59 mtc0 t0, CP0_PAGEGRAIN
60 /* Enable STFill Buffer */
61 mfc0 t0, CP0_PRID
62 andi t0, (PRID_IMP_MASK | PRID_REV_MASK)
63 slti t0, (PRID_IMP_LOONGSON_64 | PRID_REV_LOONGSON3A_R2_0)
64 bnez t0, 1f
65 mfc0 t0, CP0_CONFIG6
66 or t0, 0x100
67 mtc0 t0, CP0_CONFIG6
681:
69 _ehb
70 .set pop
71#endif
72 .endm
73
74#endif /* __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H */