summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWolfgang Denk <wd@pollux.(none)>2005-12-01 02:15:07 +0100
committerWolfgang Denk <wd@pollux.(none)>2005-12-01 02:15:07 +0100
commitc75eba3b4140187cd0d9bd8049f5df4c49b6889b (patch)
treea3ee0f61898fdac05b298b23e42b784d6fe0d5e1
parent4a86d779ff0b2bf9690e50786dece5a689ba3345 (diff)
downloadu-boot-imx-c75eba3b4140187cd0d9bd8049f5df4c49b6889b.zip
u-boot-imx-c75eba3b4140187cd0d9bd8049f5df4c49b6889b.tar.gz
u-boot-imx-c75eba3b4140187cd0d9bd8049f5df4c49b6889b.tar.bz2
Fix U-Boot compilation for MIPS boards using ELDK 4.0
-rw-r--r--CHANGELOG2
-rw-r--r--common/cmd_ide.c2
-rw-r--r--cpu/mips/config.mk2
-rw-r--r--cpu/mips/start.S31
-rw-r--r--lib_mips/board.c18
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 <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
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 <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);