xref: /linux/arch/mips/include/asm/mach-ath79/kernel-entry-init.h (revision ca55b2fef3a9373fcfc30f82fd26bc7fccbda732)
1 /*
2  *  Atheros AR71XX/AR724X/AR913X specific kernel entry setup
3  *
4  *  Copyright (C) 2009 Gabor Juhos <juhosg@openwrt.org>
5  *
6  *  This program is free software; you can redistribute it and/or modify it
7  *  under the terms of the GNU General Public License version 2 as published
8  *  by the Free Software Foundation.
9  *
10  */
11 #ifndef __ASM_MACH_ATH79_KERNEL_ENTRY_H
12 #define __ASM_MACH_ATH79_KERNEL_ENTRY_H
13 
14 	/*
15 	 * Some bootloaders set the 'Kseg0 coherency algorithm' to
16 	 * 'Cacheable, noncoherent, write-through, no write allocate'
17 	 * and this cause performance issues. Let's go and change it to
18 	 * 'Cacheable, noncoherent, write-back, write allocate'
19 	 */
20 	.macro	kernel_entry_setup
21 	mfc0	t0, CP0_CONFIG
22 	li	t1, ~CONF_CM_CMASK
23 	and	t0, t1
24 	ori	t0, CONF_CM_CACHABLE_NONCOHERENT
25 	mtc0	t0, CP0_CONFIG
26 	nop
27 	.endm
28 
29 	.macro	smp_slave_setup
30 	.endm
31 
32 #endif /* __ASM_MACH_ATH79_KERNEL_ENTRY_H */
33