diff options
Diffstat (limited to 'cpu')
-rw-r--r-- | cpu/mips/config.mk | 2 | ||||
-rw-r--r-- | cpu/mips/start.S | 31 |
2 files changed, 19 insertions, 14 deletions
diff --git a/cpu/mips/config.mk b/cpu/mips/config.mk index fd10747..c357615 100644 --- a/cpu/mips/config.mk +++ b/cpu/mips/config.mk @@ -26,7 +26,7 @@ MIPSFLAGS=$(shell \ if [ "$v" -lt "14" ]; then \ echo "-mcpu=4kc"; \ else \ - echo "-march=4kc -mtune=4kc -Wa,-mips_allow_branch_to_undefined"; \ + echo "-march=4kc -mtune=4kc"; \ fi) ifneq (,$(findstring 4KCle,$(CROSS_COMPILE))) diff --git a/cpu/mips/start.S b/cpu/mips/start.S index ff105a4..e91e213 100644 --- a/cpu/mips/start.S +++ b/cpu/mips/start.S @@ -234,21 +234,34 @@ reset: li t0, CONF_CM_UNCACHED mtc0 t0, CP0_CONFIG + /* Initialize GOT pointer. + */ + bal 1f + nop + .word _GLOBAL_OFFSET_TABLE_ + 1: + move gp, ra + lw t1, 0(ra) + move gp, t1 + #ifdef CONFIG_INCA_IP /* Disable INCA-IP Watchdog. */ - bal disable_incaip_wdt + la t9, disable_incaip_wdt + jalr t9 nop #endif /* Initialize any external memory. */ - bal lowlevel_init + la t9, lowlevel_init + jalr t9 nop /* Initialize caches... */ - bal mips_cache_reset + la t9, mips_cache_reset + jalr t9 nop /* ... and enable them. @@ -260,21 +273,13 @@ reset: /* Set up temporary stack. */ li a0, CFG_INIT_SP_OFFSET - bal mips_cache_lock + la t9, mips_cache_lock + jalr t9 nop li t0, CFG_SDRAM_BASE + CFG_INIT_SP_OFFSET la sp, 0(t0) - /* Initialize GOT pointer. - */ - bal 1f - nop - .word _GLOBAL_OFFSET_TABLE_ - 1f + 4 -1: - move gp, ra - lw t1, 0(ra) - add gp, t1 la t9, board_init_f j t9 nop |