Fix U-Boot compilation for MIPS boards using ELDK 4.0
authorWolfgang Denk <wd@pollux.(none)>
Thu, 1 Dec 2005 01:15:07 +0000 (02:15 +0100)
committerWolfgang Denk <wd@pollux.(none)>
Thu, 1 Dec 2005 01:15:07 +0000 (02:15 +0100)
CHANGELOG
common/cmd_ide.c
cpu/mips/config.mk
cpu/mips/start.S
lib_mips/board.c

index 3213a89255716a681062b235a0559a30d7ae9ae9..3f31d86e1978d8e8ebb8f558c143b28ba6a5a054 100644 (file)
--- 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.
index 6663dea2f4af9d734016f56ffa5152dab76a7e02..b67d35a5a4e89191f5c41aedbdccedf81706bf4c 100644 (file)
@@ -49,7 +49,7 @@
 #include <asm/io.h>
 #ifdef __MIPS__
 /* Macros depend on this variable */
-static unsigned long mips_io_port_base = 0;
+unsigned long mips_io_port_base = 0;
 #endif
 #endif
 
index fd10747aa33ebbc0b77e621c027f93df8aa3c43a..c357615c03314daf80e5afc794f7958bfdb8bbb9 100644 (file)
@@ -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)))
index ff105a418401c953cd817ef8b1e42eeec30c7d23..e91e2137d704f7eb8c0fe7ab6b1907673c1f2716 100644 (file)
@@ -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
index 839911be81e2a5fb9d1bbe89166bc51532bcce53..5dfdf90d6ce285e107ea03af7b7a0c1eb16c5c68 100644 (file)
@@ -29,6 +29,8 @@
 #include <net.h>
 #include <environment.h>
 
+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);