From c75eba3b4140187cd0d9bd8049f5df4c49b6889b Mon Sep 17 00:00:00 2001 From: Wolfgang Denk Date: Thu, 1 Dec 2005 02:15:07 +0100 Subject: [PATCH] Fix U-Boot compilation for MIPS boards using ELDK 4.0 --- CHANGELOG | 2 ++ common/cmd_ide.c | 2 +- cpu/mips/config.mk | 2 +- cpu/mips/start.S | 31 ++++++++++++++++++------------- lib_mips/board.c | 18 +++++++----------- 5 files changed, 29 insertions(+), 26 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3213a89..3f31d86 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,8 @@ Changes for U-Boot 1.1.4: ====================================================================== +* Fix U-Boot compilation for MIPS boards using ELDK 4.0 + * Add support for TQM8541/8555 boards, TQM85xx support reworked: - Support for TQM8541/8555 boards added. - Complete rework of TQM8540/8560 support. diff --git a/common/cmd_ide.c b/common/cmd_ide.c index 6663dea..b67d35a 100644 --- a/common/cmd_ide.c +++ b/common/cmd_ide.c @@ -49,7 +49,7 @@ #include #ifdef __MIPS__ /* Macros depend on this variable */ -static unsigned long mips_io_port_base = 0; +unsigned long mips_io_port_base = 0; #endif #endif 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 diff --git a/lib_mips/board.c b/lib_mips/board.c index 839911b..5dfdf90 100644 --- a/lib_mips/board.c +++ b/lib_mips/board.c @@ -29,6 +29,8 @@ #include #include +DECLARE_GLOBAL_DATA_PTR; + #if ( ((CFG_ENV_ADDR+CFG_ENV_SIZE) < CFG_MONITOR_BASE) || \ (CFG_ENV_ADDR >= (CFG_MONITOR_BASE + CFG_MONITOR_LEN)) ) || \ defined(CFG_ENV_IS_IN_NVRAM) @@ -66,8 +68,6 @@ static ulong mem_malloc_brk; */ static void mem_malloc_init (void) { - DECLARE_GLOBAL_DATA_PTR; - ulong dest_addr = CFG_MONITOR_BASE + gd->reloc_off; mem_malloc_end = dest_addr; @@ -94,8 +94,6 @@ void *sbrk (ptrdiff_t increment) static int init_func_ram (void) { - DECLARE_GLOBAL_DATA_PTR; - #ifdef CONFIG_BOARD_TYPES int board_type = gd->board_type; #else @@ -127,8 +125,6 @@ static void display_flash_config(ulong size) static int init_baudrate (void) { - DECLARE_GLOBAL_DATA_PTR; - uchar tmp[64]; /* long enough for environment variables */ int i = getenv_r ("baudrate", tmp, sizeof (tmp)); @@ -180,12 +176,11 @@ init_fnc_t *init_sequence[] = { void board_init_f(ulong bootflag) { - DECLARE_GLOBAL_DATA_PTR; - gd_t gd_data, *id; bd_t *bd; init_fnc_t **init_fnc_ptr; ulong addr, addr_sp, len = (ulong)&uboot_end - CFG_MONITOR_BASE; + ulong *s; #ifdef CONFIG_PURPLE void copy_code (ulong); #endif @@ -262,8 +257,10 @@ void board_init_f(ulong bootflag) */ addr_sp -= 16; addr_sp &= ~0xF; - *((ulong *) addr_sp)-- = 0; - *((ulong *) addr_sp)-- = 0; + s = (ulong *)addr_sp; + *s-- = 0; + *s-- = 0; + addr_sp = (ulong)s; debug ("Stack Pointer at: %08lx\n", addr_sp); /* @@ -298,7 +295,6 @@ void board_init_f(ulong bootflag) void board_init_r (gd_t *id, ulong dest_addr) { - DECLARE_GLOBAL_DATA_PTR; cmd_tbl_t *cmdtp; ulong size; extern void malloc_bin_reloc (void);