[U-Boot-Users] [PATCH] POWERPC 86xx: Move BAT setup code to C
Becky Bruce
becky.bruce at freescale.com
Mon Aug 4 21:02:26 CEST 2008
This is needed because we will be possibly be locating
devices at physical addresses above 32bits, and the asm
preprocessing does not appear to deal with ULL constants
properly. We now call write_bat in lib_ppc/bat_rw.c.
Signed-off-by: Becky Bruce <becky.bruce at freescale.com>
---
cpu/mpc86xx/cpu_init.c | 25 ++++++++++
cpu/mpc86xx/start.S | 119 ------------------------------------------------
2 files changed, 25 insertions(+), 119 deletions(-)
diff --git a/cpu/mpc86xx/cpu_init.c b/cpu/mpc86xx/cpu_init.c
index 78ba1ea..1fda3fe 100644
--- a/cpu/mpc86xx/cpu_init.c
+++ b/cpu/mpc86xx/cpu_init.c
@@ -26,8 +26,10 @@
* cpu_init.c - low level cpu init
*/
+#include <config.h>
#include <common.h>
#include <mpc86xx.h>
+#include <asm/mmu.h>
#include <asm/fsl_law.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -121,3 +123,26 @@ int cpu_init_r(void)
{
return 0;
}
+
+/* Set up BAT registers */
+void setup_bats(void)
+{
+ write_bat(DBAT0, CFG_DBAT0U, CFG_DBAT0L);
+ write_bat(IBAT0, CFG_IBAT0U, CFG_IBAT0L);
+ write_bat(DBAT1, CFG_DBAT1U, CFG_DBAT1L);
+ write_bat(IBAT1, CFG_IBAT1U, CFG_IBAT1L);
+ write_bat(DBAT2, CFG_DBAT2U, CFG_DBAT2L);
+ write_bat(IBAT2, CFG_IBAT2U, CFG_IBAT2L);
+ write_bat(DBAT3, CFG_DBAT3U, CFG_DBAT3L);
+ write_bat(IBAT3, CFG_IBAT3U, CFG_IBAT3L);
+ write_bat(DBAT4, CFG_DBAT4U, CFG_DBAT4L);
+ write_bat(IBAT4, CFG_IBAT4U, CFG_IBAT4L);
+ write_bat(DBAT5, CFG_DBAT5U, CFG_DBAT5L);
+ write_bat(IBAT5, CFG_IBAT5U, CFG_IBAT5L);
+ write_bat(DBAT6, CFG_DBAT6U, CFG_DBAT6L);
+ write_bat(IBAT6, CFG_IBAT6U, CFG_IBAT6L);
+ write_bat(DBAT7, CFG_DBAT7U, CFG_DBAT7L);
+ write_bat(IBAT7, CFG_IBAT7U, CFG_IBAT7L);
+
+ return;
+}
diff --git a/cpu/mpc86xx/start.S b/cpu/mpc86xx/start.S
index c39dc46..03f2128 100644
--- a/cpu/mpc86xx/start.S
+++ b/cpu/mpc86xx/start.S
@@ -358,125 +358,6 @@ invalidate_bats:
sync
blr
-
- /* setup_bats - set them up to some initial state */
- /* Skip any BATS setup in early_bats */
- .globl setup_bats
-setup_bats:
-
- addis r0, r0, 0x0000
-
- /* IBAT 0 */
- addis r4, r0, CFG_IBAT0L at h
- ori r4, r4, CFG_IBAT0L at l
- addis r3, r0, CFG_IBAT0U at h
- ori r3, r3, CFG_IBAT0U at l
- mtspr IBAT0L, r4
- mtspr IBAT0U, r3
- isync
-
- /* DBAT 0 */
- addis r4, r0, CFG_DBAT0L at h
- ori r4, r4, CFG_DBAT0L at l
- addis r3, r0, CFG_DBAT0U at h
- ori r3, r3, CFG_DBAT0U at l
- mtspr DBAT0L, r4
- mtspr DBAT0U, r3
- isync
-
- /* IBAT 1 */
- addis r4, r0, CFG_IBAT1L at h
- ori r4, r4, CFG_IBAT1L at l
- addis r3, r0, CFG_IBAT1U at h
- ori r3, r3, CFG_IBAT1U at l
- mtspr IBAT1L, r4
- mtspr IBAT1U, r3
- isync
-
- /* DBAT 1 */
- addis r4, r0, CFG_DBAT1L at h
- ori r4, r4, CFG_DBAT1L at l
- addis r3, r0, CFG_DBAT1U at h
- ori r3, r3, CFG_DBAT1U at l
- mtspr DBAT1L, r4
- mtspr DBAT1U, r3
- isync
-
- /* IBAT 2 */
- addis r4, r0, CFG_IBAT2L at h
- ori r4, r4, CFG_IBAT2L at l
- addis r3, r0, CFG_IBAT2U at h
- ori r3, r3, CFG_IBAT2U at l
- mtspr IBAT2L, r4
- mtspr IBAT2U, r3
- isync
-
- /* DBAT 2 */
- addis r4, r0, CFG_DBAT2L at h
- ori r4, r4, CFG_DBAT2L at l
- addis r3, r0, CFG_DBAT2U at h
- ori r3, r3, CFG_DBAT2U at l
- mtspr DBAT2L, r4
- mtspr DBAT2U, r3
- isync
-
- /* IBAT 3 */
- addis r4, r0, CFG_IBAT3L at h
- ori r4, r4, CFG_IBAT3L at l
- addis r3, r0, CFG_IBAT3U at h
- ori r3, r3, CFG_IBAT3U at l
- mtspr IBAT3L, r4
- mtspr IBAT3U, r3
- isync
-
- /* DBAT 3 */
- addis r4, r0, CFG_DBAT3L at h
- ori r4, r4, CFG_DBAT3L at l
- addis r3, r0, CFG_DBAT3U at h
- ori r3, r3, CFG_DBAT3U at l
- mtspr DBAT3L, r4
- mtspr DBAT3U, r3
- isync
-
- /* IBAT 4 */
- addis r4, r0, CFG_IBAT4L at h
- ori r4, r4, CFG_IBAT4L at l
- addis r3, r0, CFG_IBAT4U at h
- ori r3, r3, CFG_IBAT4U at l
- mtspr IBAT4L, r4
- mtspr IBAT4U, r3
- isync
-
- /* DBAT 4 */
- addis r4, r0, CFG_DBAT4L at h
- ori r4, r4, CFG_DBAT4L at l
- addis r3, r0, CFG_DBAT4U at h
- ori r3, r3, CFG_DBAT4U at l
- mtspr DBAT4L, r4
- mtspr DBAT4U, r3
- isync
-
- /* IBAT 7 */
- addis r4, r0, CFG_IBAT7L at h
- ori r4, r4, CFG_IBAT7L at l
- addis r3, r0, CFG_IBAT7U at h
- ori r3, r3, CFG_IBAT7U at l
- mtspr IBAT7L, r4
- mtspr IBAT7U, r3
- isync
-
- /* DBAT 7 */
- addis r4, r0, CFG_DBAT7L at h
- ori r4, r4, CFG_DBAT7L at l
- addis r3, r0, CFG_DBAT7U at h
- ori r3, r3, CFG_DBAT7U at l
- mtspr DBAT7L, r4
- mtspr DBAT7U, r3
- isync
-
- sync
- blr
-
/*
* early_bats:
*
--
1.5.5.1
More information about the U-Boot
mailing list