E500 update: repoint IVPR to RAM when code is relocated
authorWolfgang Denk <wd@pollux.denx.de>
Tue, 4 Oct 2005 22:00:54 +0000 (00:00 +0200)
committerWolfgang Denk <wd@pollux.denx.de>
Tue, 4 Oct 2005 22:00:54 +0000 (00:00 +0200)
Patch by Kylo Ginsberg, 13 Apr 2005

CHANGELOG
cpu/mpc85xx/start.S
lib_ppc/board.c

index 1aec75d..2b44601 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
 Changes for U-Boot 1.1.4:
 ======================================================================
 
+* E500 update: repoint IVPR to RAM when code is relocated
+  Patch by Kylo Ginsberg, 13 Apr 2005
+
 * Fix loop end test in lib_generic/string.c:strswab()
   Patch by Andrew Dyer, October 10, 2005
   Signed-off-by: Andrew Dyer <amdyer@gmail.com>
index 5f75bc1..2f2bd3a 100644 (file)
@@ -995,6 +995,11 @@ relocate_code:
 7:     sync                    /* Wait for all icbi to complete on bus */
        isync
 
+       /*
+        * Re-point the IVPR at RAM
+        */
+       mtspr   IVPR,r10
+       
 /*
  * We are done. Do not return, instead branch to second part of board
  * initialization, now running from RAM.
index d1e294f..b1c6ab0 100644 (file)
@@ -429,6 +429,10 @@ void board_init_f (ulong bootflag)
         */
        addr -= len;
        addr &= ~(4096 - 1);
+#ifdef CONFIG_E500
+       /* round down to next 64 kB limit so that IVPR stays aligned */
+       addr &= ~(65536 - 1);
+#endif
 
        debug ("Reserving %ldk for U-Boot at: %08lx\n", len >> 10, addr);