Fix U-Boot compilation for MIPS boards using ELDK 4.0

master
Wolfgang Denk 19 years ago
parent 4a86d779ff
commit c75eba3b41
  1. 2
      CHANGELOG
  2. 2
      common/cmd_ide.c
  3. 2
      cpu/mips/config.mk
  4. 31
      cpu/mips/start.S
  5. 18
      lib_mips/board.c

@ -2,6 +2,8 @@
Changes for U-Boot 1.1.4: 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: * Add support for TQM8541/8555 boards, TQM85xx support reworked:
- Support for TQM8541/8555 boards added. - Support for TQM8541/8555 boards added.
- Complete rework of TQM8540/8560 support. - Complete rework of TQM8540/8560 support.

@ -49,7 +49,7 @@
#include <asm/io.h> #include <asm/io.h>
#ifdef __MIPS__ #ifdef __MIPS__
/* Macros depend on this variable */ /* Macros depend on this variable */
static unsigned long mips_io_port_base = 0; unsigned long mips_io_port_base = 0;
#endif #endif
#endif #endif

@ -26,7 +26,7 @@ MIPSFLAGS=$(shell \
if [ "$v" -lt "14" ]; then \ if [ "$v" -lt "14" ]; then \
echo "-mcpu=4kc"; \ echo "-mcpu=4kc"; \
else \ else \
echo "-march=4kc -mtune=4kc -Wa,-mips_allow_branch_to_undefined"; \ echo "-march=4kc -mtune=4kc"; \
fi) fi)
ifneq (,$(findstring 4KCle,$(CROSS_COMPILE))) ifneq (,$(findstring 4KCle,$(CROSS_COMPILE)))

@ -234,21 +234,34 @@ reset:
li t0, CONF_CM_UNCACHED li t0, CONF_CM_UNCACHED
mtc0 t0, CP0_CONFIG 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 #ifdef CONFIG_INCA_IP
/* Disable INCA-IP Watchdog. /* Disable INCA-IP Watchdog.
*/ */
bal disable_incaip_wdt la t9, disable_incaip_wdt
jalr t9
nop nop
#endif #endif
/* Initialize any external memory. /* Initialize any external memory.
*/ */
bal lowlevel_init la t9, lowlevel_init
jalr t9
nop nop
/* Initialize caches... /* Initialize caches...
*/ */
bal mips_cache_reset la t9, mips_cache_reset
jalr t9
nop nop
/* ... and enable them. /* ... and enable them.
@ -260,21 +273,13 @@ reset:
/* Set up temporary stack. /* Set up temporary stack.
*/ */
li a0, CFG_INIT_SP_OFFSET li a0, CFG_INIT_SP_OFFSET
bal mips_cache_lock la t9, mips_cache_lock
jalr t9
nop nop
li t0, CFG_SDRAM_BASE + CFG_INIT_SP_OFFSET li t0, CFG_SDRAM_BASE + CFG_INIT_SP_OFFSET
la sp, 0(t0) 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 la t9, board_init_f
j t9 j t9
nop nop

@ -29,6 +29,8 @@
#include <net.h> #include <net.h>
#include <environment.h> #include <environment.h>
DECLARE_GLOBAL_DATA_PTR;
#if ( ((CFG_ENV_ADDR+CFG_ENV_SIZE) < CFG_MONITOR_BASE) || \ #if ( ((CFG_ENV_ADDR+CFG_ENV_SIZE) < CFG_MONITOR_BASE) || \
(CFG_ENV_ADDR >= (CFG_MONITOR_BASE + CFG_MONITOR_LEN)) ) || \ (CFG_ENV_ADDR >= (CFG_MONITOR_BASE + CFG_MONITOR_LEN)) ) || \
defined(CFG_ENV_IS_IN_NVRAM) defined(CFG_ENV_IS_IN_NVRAM)
@ -66,8 +68,6 @@ static ulong mem_malloc_brk;
*/ */
static void mem_malloc_init (void) static void mem_malloc_init (void)
{ {
DECLARE_GLOBAL_DATA_PTR;
ulong dest_addr = CFG_MONITOR_BASE + gd->reloc_off; ulong dest_addr = CFG_MONITOR_BASE + gd->reloc_off;
mem_malloc_end = dest_addr; mem_malloc_end = dest_addr;
@ -94,8 +94,6 @@ void *sbrk (ptrdiff_t increment)
static int init_func_ram (void) static int init_func_ram (void)
{ {
DECLARE_GLOBAL_DATA_PTR;
#ifdef CONFIG_BOARD_TYPES #ifdef CONFIG_BOARD_TYPES
int board_type = gd->board_type; int board_type = gd->board_type;
#else #else
@ -127,8 +125,6 @@ static void display_flash_config(ulong size)
static int init_baudrate (void) static int init_baudrate (void)
{ {
DECLARE_GLOBAL_DATA_PTR;
uchar tmp[64]; /* long enough for environment variables */ uchar tmp[64]; /* long enough for environment variables */
int i = getenv_r ("baudrate", tmp, sizeof (tmp)); int i = getenv_r ("baudrate", tmp, sizeof (tmp));
@ -180,12 +176,11 @@ init_fnc_t *init_sequence[] = {
void board_init_f(ulong bootflag) void board_init_f(ulong bootflag)
{ {
DECLARE_GLOBAL_DATA_PTR;
gd_t gd_data, *id; gd_t gd_data, *id;
bd_t *bd; bd_t *bd;
init_fnc_t **init_fnc_ptr; init_fnc_t **init_fnc_ptr;
ulong addr, addr_sp, len = (ulong)&uboot_end - CFG_MONITOR_BASE; ulong addr, addr_sp, len = (ulong)&uboot_end - CFG_MONITOR_BASE;
ulong *s;
#ifdef CONFIG_PURPLE #ifdef CONFIG_PURPLE
void copy_code (ulong); void copy_code (ulong);
#endif #endif
@ -262,8 +257,10 @@ void board_init_f(ulong bootflag)
*/ */
addr_sp -= 16; addr_sp -= 16;
addr_sp &= ~0xF; addr_sp &= ~0xF;
*((ulong *) addr_sp)-- = 0; s = (ulong *)addr_sp;
*((ulong *) addr_sp)-- = 0; *s-- = 0;
*s-- = 0;
addr_sp = (ulong)s;
debug ("Stack Pointer at: %08lx\n", addr_sp); 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) void board_init_r (gd_t *id, ulong dest_addr)
{ {
DECLARE_GLOBAL_DATA_PTR;
cmd_tbl_t *cmdtp; cmd_tbl_t *cmdtp;
ulong size; ulong size;
extern void malloc_bin_reloc (void); extern void malloc_bin_reloc (void);

Loading…
Cancel
Save