summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/mvme5500/start/start.S
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2005-11-03 01:57:27 +0000
committerTill Straumann <strauman@slac.stanford.edu>2005-11-03 01:57:27 +0000
commitec58ea04aff67dda230e3ebd308497ac505f0343 (patch)
treebd77d6f68a6045a6c2cffbd814963a3f0b5f1f5b /c/src/lib/libbsp/powerpc/mvme5500/start/start.S
parent2005-11-02 straumanatslacdotstanford.edu (diff)
downloadrtems-ec58ea04aff67dda230e3ebd308497ac505f0343.tar.bz2
2005-11-02 straumanatslacdotstanford.edu
* mvme5500/start/start.S, shared/start/start.S, shared/startup/bspstart.c: moved assembly code to C; setdbat now supports high bats on 7450 CPUs; added argument checking to setdbat; added getdbat; moved early initialization code (clear_bats) from BSP to libcpu (CPU_clear_bats_early)
Diffstat (limited to 'c/src/lib/libbsp/powerpc/mvme5500/start/start.S')
-rw-r--r--c/src/lib/libbsp/powerpc/mvme5500/start/start.S38
1 files changed, 2 insertions, 36 deletions
diff --git a/c/src/lib/libbsp/powerpc/mvme5500/start/start.S b/c/src/lib/libbsp/powerpc/mvme5500/start/start.S
index fbea9c140f..a54836e458 100644
--- a/c/src/lib/libbsp/powerpc/mvme5500/start/start.S
+++ b/c/src/lib/libbsp/powerpc/mvme5500/start/start.S
@@ -17,6 +17,7 @@
#include <rtems/score/cpu.h>
#include <rtems/powerpc/powerpc.h>
#include <libcpu/io.h>
+#include <libcpu/bat.h>
#define SYNC \
sync; \
@@ -64,7 +65,7 @@ __rtems_entry_point:
/*
* Make sure we have nothing in BATS and TLB
*/
- bl clear_bats
+ bl CPU_clear_bats_early
bl flush_tlbs
/*
* Use the first pair of BAT registers to map the 1st 256MB
@@ -173,41 +174,6 @@ _return_to_ppcbug:
mtctr r30
bctr
-/*
- * An undocumented "feature" of 604e requires that the v bit
- * be cleared before changing BAT values.
- *
- * Also, newer IBM firmware does not clear bat3 and 4 so
- * this makes sure it's done.
- * -- Cort
- */
-clear_bats:
- li r20,0
- mfspr r9,PVR
- rlwinm r9,r9,16,16,31 /* r9 = 1 for 601, 4 for 604 */
- cmpwi r9, 1
- SYNC
- beq 1f
- mtspr DBAT0U,r20
- mtspr DBAT0L,r20
- mtspr DBAT1U,r20
- mtspr DBAT1L,r20
- mtspr DBAT2U,r20
- mtspr DBAT2L,r20
- mtspr DBAT3U,r20
- mtspr DBAT3L,r20
-1:
- mtspr IBAT0U,r20
- mtspr IBAT0L,r20
- mtspr IBAT1U,r20
- mtspr IBAT1L,r20
- mtspr IBAT2U,r20
- mtspr IBAT2L,r20
- mtspr IBAT3U,r20
- mtspr IBAT3L,r20
- SYNC
- blr
-
flush_tlbs:
lis r20, 0x1000
1: addic. r20, r20, -0x1000