diff options
author | Joakim Tjernlund <Joakim.Tjernlund@transmode.se> | 2008-03-28 15:41:25 +0100 |
---|---|---|
committer | Kim Phillips <kim.phillips@freescale.com> | 2008-03-28 18:51:54 -0500 |
commit | 70431e8a7393b6b793f77957f95b999fc9a269b8 (patch) | |
tree | 9f893a19835ba214c41d511efbebf68743092370 | |
parent | 5b2793a3f3de34d439232b05acc8af67a028fd35 (diff) | |
download | u-boot-imx-70431e8a7393b6b793f77957f95b999fc9a269b8.zip u-boot-imx-70431e8a7393b6b793f77957f95b999fc9a269b8.tar.gz u-boot-imx-70431e8a7393b6b793f77957f95b999fc9a269b8.tar.bz2 |
Make MPC83xx one step closer to full relocation.
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>
-rw-r--r-- | cpu/mpc83xx/start.S | 11 | ||||
-rw-r--r-- | lib_ppc/board.c | 3 |
2 files changed, 9 insertions, 5 deletions
diff --git a/cpu/mpc83xx/start.S b/cpu/mpc83xx/start.S index 309eb30..fdf9d35 100644 --- a/cpu/mpc83xx/start.S +++ b/cpu/mpc83xx/start.S @@ -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 */ diff --git a/lib_ppc/board.c b/lib_ppc/board.c index 50cdf8c..7ebf74a 100644 --- a/lib_ppc/board.c +++ b/lib_ppc/board.c @@ -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) |