xref: /linux/arch/mips/include/asm/mach-ath79/kernel-entry-init.h (revision 3f98538c7673e5306a126fd3cb7e0a84abc170ee)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  *  Atheros AR71XX/AR724X/AR913X specific kernel entry setup
4  *
5  *  Copyright (C) 2009 Gabor Juhos <juhosg@openwrt.org>
6  */
7 #ifndef __ASM_MACH_ATH79_KERNEL_ENTRY_H
8 #define __ASM_MACH_ATH79_KERNEL_ENTRY_H
9 
10 	/*
11 	 * Some bootloaders set the 'Kseg0 coherency algorithm' to
12 	 * 'Cacheable, noncoherent, write-through, no write allocate'
13 	 * and this cause performance issues. Let's go and change it to
14 	 * 'Cacheable, noncoherent, write-back, write allocate'
15 	 */
16 	.macro	kernel_entry_setup
17 	mfc0	t0, CP0_CONFIG
18 	li	t1, ~CONF_CM_CMASK
19 	and	t0, t1
20 	ori	t0, CONF_CM_CACHABLE_NONCOHERENT
21 	mtc0	t0, CP0_CONFIG
22 	nop
23 	.endm
24 
25 	.macro	smp_slave_setup
26 	.endm
27 
28 #endif /* __ASM_MACH_ATH79_KERNEL_ENTRY_H */
29