Linux Audio

Check our new training course

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 */