summaryrefslogtreecommitdiffstats
path: root/arch/mips/mach-ath79
diff options
context:
space:
mode:
authorAntony Pavlov <antonynpavlov@gmail.com>2016-02-25 12:14:50 +0300
committerSascha Hauer <s.hauer@pengutronix.de>2016-02-26 07:50:42 +0100
commit8dc07d47928783b6517bbb62f16baf3d42006c9e (patch)
treedfabb8a5c89d382d7158460b6d06ed14c4520585 /arch/mips/mach-ath79
parentf36700bc6c650bc8535fdb8c155d9b730af5d147 (diff)
downloadbarebox-8dc07d47928783b6517bbb62f16baf3d42006c9e.tar.gz
barebox-8dc07d47928783b6517bbb62f16baf3d42006c9e.tar.xz
MIPS: ath79: pbl: import AR9331 CP0 init routine from U-Boot_mod
U-Boot_mod is a popular bootloader for Atheros AR93xx chips, please see https://github.com/pepe2k/u-boot_mod for details. It's reasonable to import some lowlevel AR9331 initialization code from U-Boot_mod. This patch imports AR9331 MIPS24K coprocessor0 initialization code from u-boot_mod/u-boot/cpu/mips/start_bootstrap.S. Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Reviewed-by: Yegor Yefremov <yegorslists@googlemail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/mips/mach-ath79')
-rw-r--r--arch/mips/mach-ath79/include/mach/pbl_macros.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/arch/mips/mach-ath79/include/mach/pbl_macros.h b/arch/mips/mach-ath79/include/mach/pbl_macros.h
index c00dd28f5a..810f49d860 100644
--- a/arch/mips/mach-ath79/include/mach/pbl_macros.h
+++ b/arch/mips/mach-ath79/include/mach/pbl_macros.h
@@ -179,4 +179,48 @@
| AR933X_GPIO_FUNC_RSRV15, GPIO_FUNC
.endm
+.macro hornet_mips24k_cp0_setup
+ .set push
+ .set noreorder
+
+ /*
+ * Clearing CP0 registers - This is generally required for the MIPS-24k
+ * core used by Atheros.
+ */
+ mtc0 zero, CP0_INDEX
+ mtc0 zero, CP0_ENTRYLO0
+ mtc0 zero, CP0_ENTRYLO1
+ mtc0 zero, CP0_CONTEXT
+ mtc0 zero, CP0_PAGEMASK
+ mtc0 zero, CP0_WIRED
+ mtc0 zero, CP0_INFO
+ mtc0 zero, CP0_COUNT
+ mtc0 zero, CP0_ENTRYHI
+ mtc0 zero, CP0_COMPARE
+
+ li t0, ST0_CU0 | ST0_ERL
+ mtc0 t0, CP0_STATUS
+
+ mtc0 zero, CP0_CAUSE
+ mtc0 zero, CP0_EPC
+
+ li t0, CONF_CM_UNCACHED
+ mtc0 t0, CP0_CONFIG
+
+ mtc0 zero, CP0_LLADDR
+ mtc0 zero, CP0_WATCHLO
+ mtc0 zero, CP0_WATCHHI
+ mtc0 zero, CP0_XCONTEXT
+ mtc0 zero, CP0_FRAMEMASK
+ mtc0 zero, CP0_DIAGNOSTIC
+ mtc0 zero, CP0_DEBUG
+ mtc0 zero, CP0_DEPC
+ mtc0 zero, CP0_PERFORMANCE
+ mtc0 zero, CP0_ECC
+ mtc0 zero, CP0_CACHEERR
+ mtc0 zero, CP0_TAGLO
+
+ .set pop
+.endm
+
#endif /* __ASM_MACH_ATH79_PBL_MACROS_H */