xref: /linux/arch/mips/include/asm/mach-loongson64/kernel-entry-init.h (revision b85d45947951d23cb22d90caecf4c1eb81342c96)
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 /*
15  * Override macros used in arch/mips/kernel/head.S.
16  */
17 	.macro	kernel_entry_setup
18 #ifdef CONFIG_CPU_LOONGSON3
19 	.set	push
20 	.set	mips64
21 	/* Set LPA on LOONGSON3 config3 */
22 	mfc0	t0, $16, 3
23 	or	t0, (0x1 << 7)
24 	mtc0	t0, $16, 3
25 	/* Set ELPA on LOONGSON3 pagegrain */
26 	li	t0, (0x1 << 29)
27 	mtc0	t0, $5, 1
28 	_ehb
29 	.set	pop
30 #endif
31 	.endm
32 
33 /*
34  * Do SMP slave processor setup.
35  */
36 	.macro	smp_slave_setup
37 #ifdef CONFIG_CPU_LOONGSON3
38 	.set	push
39 	.set	mips64
40 	/* Set LPA on LOONGSON3 config3 */
41 	mfc0	t0, $16, 3
42 	or	t0, (0x1 << 7)
43 	mtc0	t0, $16, 3
44 	/* Set ELPA on LOONGSON3 pagegrain */
45 	li	t0, (0x1 << 29)
46 	mtc0	t0, $5, 1
47 	_ehb
48 	.set	pop
49 #endif
50 	.endm
51 
52 #endif /* __ASM_MACH_LOONGSON64_KERNEL_ENTRY_H */
53