Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / arch / mips / include / asm / mach-ath79 / kernel-entry-init.h
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 */