Make MPC83xx one step closer to full relocation.
authorJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
Fri, 28 Mar 2008 14:41:25 +0000 (15:41 +0100)
committerKim Phillips <kim.phillips@freescale.com>
Fri, 28 Mar 2008 23:51:54 +0000 (18:51 -0500)
Remove a few absolute references to CFG_MONITOR_BASE for ppc/mpc83xx
and use GOT relative reference.

Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
cpu/mpc83xx/start.S
lib_ppc/board.c

index 309eb30..fdf9d35 100644 (file)
@@ -172,8 +172,11 @@ boot_warm: /* time t 5 */
        /* there and deflate the flash size back to minimal size      */
        /*------------------------------------------------------------*/
        bl map_flash_by_law1
-       lis r4, (CFG_MONITOR_BASE)@h
-       ori r4, r4, (CFG_MONITOR_BASE)@l
+
+       GET_GOT                 /* initialize GOT access        */
+       lwz r4, GOT(_start)
+       addi r4, r4, -EXC_OFF_SYS_RESET
+
        addi r5, r4, in_flash - _start + EXC_OFF_SYS_RESET
        mtlr r5
        blr
@@ -872,8 +875,8 @@ relocate_code:
        mr      r10, r5         /* Save copy of Destination Address */
 
        mr      r3,  r5                         /* Destination Address */
-       lis     r4, CFG_MONITOR_BASE@h          /* Source      Address */
-       ori     r4, r4, CFG_MONITOR_BASE@l
+       lwz     r4, GOT(_start)
+       addi    r4, r4, -EXC_OFF_SYS_RESET
        lwz     r5, GOT(__init_end)
        sub     r5, r5, r4
        li      r6, CFG_CACHELINE_SIZE          /* Cache Line Size */
index 50cdf8c..7ebf74a 100644 (file)
@@ -120,6 +120,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #define        TOTAL_MALLOC_LEN        CFG_MALLOC_LEN
 #endif
 
+extern ulong _start;
 extern ulong __init_end;
 extern ulong _end;
 ulong monitor_flash_len;
@@ -434,7 +435,7 @@ void board_init_f (ulong bootflag)
         *  - monitor code
         *  - board info struct
         */
-       len = (ulong)&_end - CFG_MONITOR_BASE;
+       len = (ulong)&_end - (ulong)&_start + EXC_OFF_SYS_RESET;
 
 #ifndef CONFIG_MAX_MEM_MAPPED
 #define CONFIG_MAX_MEM_MAPPED (256 << 20)