Jelajahi Sumber

Merge branch 'master' of git://git.denx.de/u-boot-coldfire

* 'master' of git://git.denx.de/u-boot-coldfire:
  ColdFire:Clean up the CONFIG_STANDALONE_LOAD_ADDR usage
  ColdFire:Add mb for 5253 dram initialization
  ColdFire:Define the DM9000 byteswap for M5253 board.
  ColdFire:Update the env settings for several boards.
  ColdFire:disable the NFS define for 52277 board.
  ColdFire:Update the timer_init since it was unified.
  ColdFire: Cleanup for partial linking and --gc-sections
  ColdFire: Update compile flags for each CPUs
  ColdFire:Fix the configuration broken for some boards.
Wolfgang Denk 13 tahun lalu
induk
melakukan
684cad5717

+ 1 - 0
Makefile

@@ -724,6 +724,7 @@ M54455EVB_stm33_config :	unconfig
 		cp $(obj)board/freescale/m54455evb/u-boot.stm $(obj)board/freescale/m54455evb/u-boot.lds ; \
 		cp $(obj)board/freescale/m54455evb/u-boot.stm $(obj)board/freescale/m54455evb/u-boot.lds ; \
 	fi; \
 	fi; \
 	echo "#define CONFIG_SYS_INPUT_CLKSRC $${FREQ}" >> $(obj)include/config.h ; \
 	echo "#define CONFIG_SYS_INPUT_CLKSRC $${FREQ}" >> $(obj)include/config.h ; \
+	$(XECHO) "... with $${FREQ}Hz input clock"
 	@$(MKCONFIG) -n $@ -a M54455EVB m68k mcf5445x m54455evb freescale
 	@$(MKCONFIG) -n $@ -a M54455EVB m68k mcf5445x m54455evb freescale
 
 
 M5475AFE_config \
 M5475AFE_config \

+ 3 - 2
arch/m68k/config.mk

@@ -23,8 +23,9 @@
 
 
 CROSS_COMPILE ?= m68k-elf-
 CROSS_COMPILE ?= m68k-elf-
 
 
-clibdir = $(shell dirname `$(CC) $(CFLAGS) -print-file-name=libc.a`)
-CONFIG_STANDALONE_LOAD_ADDR ?= 0x20000 -L $(clibdir)
+CONFIG_STANDALONE_LOAD_ADDR ?= 0x20000
 
 
 PLATFORM_CPPFLAGS += -DCONFIG_M68K -D__M68K__
 PLATFORM_CPPFLAGS += -DCONFIG_M68K -D__M68K__
 PLATFORM_LDFLAGS  += -n
 PLATFORM_LDFLAGS  += -n
+PLATFORM_RELFLAGS              += -ffunction-sections -fdata-sections
+LDFLAGS_FINAL                  += --gc-sections

+ 0 - 4
arch/m68k/cpu/mcf5227x/config.mk

@@ -24,8 +24,4 @@
 #
 #
 
 
 PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
 PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
-ifneq ($(findstring 4.1,$(shell $(CC) --version)),4.1)
 PLATFORM_CPPFLAGS += -mcpu=52277 -fPIC
 PLATFORM_CPPFLAGS += -mcpu=52277 -fPIC
-else
-PLATFORM_CPPFLAGS += -m5307 -fPIC
-endif

+ 0 - 4
arch/m68k/cpu/mcf523x/config.mk

@@ -24,8 +24,4 @@
 #
 #
 
 
 PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
 PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
-ifneq ($(findstring 4.1,$(shell $(CC) --version)),4.1)
 PLATFORM_CPPFLAGS += -mcpu=5235 -fPIC
 PLATFORM_CPPFLAGS += -mcpu=5235 -fPIC
-else
-PLATFORM_CPPFLAGS += -m5307 -fPIC
-endif

+ 0 - 7
arch/m68k/cpu/mcf52x2/config.mk

@@ -34,9 +34,6 @@ is5272:=$(shell grep CONFIG_M5272 $(TOPDIR)/include/$(cfg))
 is5275:=$(shell grep CONFIG_M5275 $(TOPDIR)/include/$(cfg))
 is5275:=$(shell grep CONFIG_M5275 $(TOPDIR)/include/$(cfg))
 is5282:=$(shell grep CONFIG_M5282 $(TOPDIR)/include/$(cfg))
 is5282:=$(shell grep CONFIG_M5282 $(TOPDIR)/include/$(cfg))
 
 
-
-ifneq ($(findstring 4.1,$(shell $(CC) --version)),4.1)
-
 ifneq (,$(findstring CONFIG_M5208,$(is5208)))
 ifneq (,$(findstring CONFIG_M5208,$(is5208)))
 PLATFORM_CPPFLAGS += -mcpu=5208
 PLATFORM_CPPFLAGS += -mcpu=5208
 endif
 endif
@@ -58,7 +55,3 @@ endif
 ifneq (,$(findstring CONFIG_M5282,$(is5282)))
 ifneq (,$(findstring CONFIG_M5282,$(is5282)))
 PLATFORM_CPPFLAGS += -mcpu=5282
 PLATFORM_CPPFLAGS += -mcpu=5282
 endif
 endif
-
-else
-PLATFORM_CPPFLAGS += -m5307
-endif

+ 0 - 6
arch/m68k/cpu/mcf532x/config.mk

@@ -29,15 +29,9 @@ cfg=$(shell grep configs $(OBJTREE)/include/config.h | sed 's/.*<\(configs.*\)>/
 is5301x:=$(shell grep CONFIG_MCF5301x $(TOPDIR)/include/$(cfg))
 is5301x:=$(shell grep CONFIG_MCF5301x $(TOPDIR)/include/$(cfg))
 is532x:=$(shell grep CONFIG_MCF532x $(TOPDIR)/include/$(cfg))
 is532x:=$(shell grep CONFIG_MCF532x $(TOPDIR)/include/$(cfg))
 
 
-ifneq ($(findstring 4.1,$(shell $(CC) --version)),4.1)
-
 ifneq (,$(findstring CONFIG_MCF5301x,$(is5301x)))
 ifneq (,$(findstring CONFIG_MCF5301x,$(is5301x)))
 PLATFORM_CPPFLAGS += -mcpu=53015 -fPIC
 PLATFORM_CPPFLAGS += -mcpu=53015 -fPIC
 endif
 endif
 ifneq (,$(findstring CONFIG_MCF532x,$(is532x)))
 ifneq (,$(findstring CONFIG_MCF532x,$(is532x)))
 PLATFORM_CPPFLAGS += -mcpu=5329 -fPIC
 PLATFORM_CPPFLAGS += -mcpu=5329 -fPIC
 endif
 endif
-
-else
-PLATFORM_CPPFLAGS += -m5307 -fPIC
-endif

+ 0 - 4
arch/m68k/cpu/mcf5445x/config.mk

@@ -24,11 +24,7 @@
 #
 #
 
 
 PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
 PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
-ifneq ($(findstring 4.1,$(shell $(CC) --version)),4.1)
 PLATFORM_CPPFLAGS += -mcpu=54455 -fPIC
 PLATFORM_CPPFLAGS += -mcpu=54455 -fPIC
-else
-PLATFORM_CPPFLAGS += -m5407 -fPIC
-endif
 
 
 ifneq (,$(findstring -linux-,$(shell $(CC) --version)))
 ifneq (,$(findstring -linux-,$(shell $(CC) --version)))
 ifneq (,$(findstring GOT,$(shell $(LD) --help)))
 ifneq (,$(findstring GOT,$(shell $(LD) --help)))

+ 0 - 4
arch/m68k/cpu/mcf547x_8x/config.mk

@@ -24,11 +24,7 @@
 #
 #
 
 
 PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
 PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
-ifneq ($(findstring 4.1,$(shell $(CC) --version)),4.1)
 PLATFORM_CPPFLAGS += -mcpu=5485 -fPIC
 PLATFORM_CPPFLAGS += -mcpu=5485 -fPIC
-else
-PLATFORM_CPPFLAGS += -m5407 -fPIC
-endif
 
 
 ifneq (,$(findstring -linux-,$(shell $(CC) --version)))
 ifneq (,$(findstring -linux-,$(shell $(CC) --version)))
 ifneq (,$(findstring GOT,$(shell $(LD) --help)))
 ifneq (,$(findstring GOT,$(shell $(LD) --help)))

+ 2 - 1
arch/m68k/cpu/mcf547x_8x/slicetimer.c

@@ -72,7 +72,7 @@ void dtimer_interrupt(void *not_used)
 	}
 	}
 }
 }
 
 
-void timer_init(void)
+int timer_init(void)
 {
 {
 	volatile slt_t *timerp = (slt_t *) (CONFIG_SYS_TMR_BASE);
 	volatile slt_t *timerp = (slt_t *) (CONFIG_SYS_TMR_BASE);
 
 
@@ -93,6 +93,7 @@ void timer_init(void)
 	/* set a period of 1us, set timer mode to restart and
 	/* set a period of 1us, set timer mode to restart and
 	   enable timer and interrupt */
 	   enable timer and interrupt */
 	timerp->cr = SLT_CR_RUN | SLT_CR_IEN | SLT_CR_TEN;
 	timerp->cr = SLT_CR_RUN | SLT_CR_IEN | SLT_CR_TEN;
+	return 0;
 }
 }
 
 
 ulong get_timer(ulong base)
 ulong get_timer(ulong base)

+ 2 - 0
arch/m68k/include/asm/io.h

@@ -81,6 +81,8 @@
 #define outl(val, port)		out_le32((u32 *)((port)+_IO_BASE), (val))
 #define outl(val, port)		out_le32((u32 *)((port)+_IO_BASE), (val))
 #endif
 #endif
 
 
+#define mb() __asm__ __volatile__ ("" : : : "memory")
+
 extern inline void _insb(volatile u8 * port, void *buf, int ns)
 extern inline void _insb(volatile u8 * port, void *buf, int ns)
 {
 {
 	u8 *data = (u8 *) buf;
 	u8 *data = (u8 *) buf;

+ 0 - 2
arch/m68k/lib/board.c

@@ -78,8 +78,6 @@ static char *failed = "*** failed ***\n";
 extern ulong __init_end;
 extern ulong __init_end;
 extern ulong __bss_end__;
 extern ulong __bss_end__;
 
 
-extern	void timer_init(void);
-
 #if defined(CONFIG_WATCHDOG)
 #if defined(CONFIG_WATCHDOG)
 # define INIT_FUNC_WATCHDOG_INIT	watchdog_init,
 # define INIT_FUNC_WATCHDOG_INIT	watchdog_init,
 # define WATCHDOG_DISABLE		watchdog_disable
 # define WATCHDOG_DISABLE		watchdog_disable

+ 5 - 1
arch/m68k/lib/time.c

@@ -91,7 +91,7 @@ void dtimer_interrupt(void *not_used)
 	}
 	}
 }
 }
 
 
-void timer_init(void)
+int timer_init(void)
 {
 {
 	volatile dtmr_t *timerp = (dtmr_t *) (CONFIG_SYS_TMR_BASE);
 	volatile dtmr_t *timerp = (dtmr_t *) (CONFIG_SYS_TMR_BASE);
 
 
@@ -114,6 +114,8 @@ void timer_init(void)
 	/* set a period of 1us, set timer mode to restart and enable timer and interrupt */
 	/* set a period of 1us, set timer mode to restart and enable timer and interrupt */
 	timerp->tmr = CONFIG_SYS_TIMER_PRESCALER | DTIM_DTMR_CLK_DIV1 |
 	timerp->tmr = CONFIG_SYS_TIMER_PRESCALER | DTIM_DTMR_CLK_DIV1 |
 	    DTIM_DTMR_FRR | DTIM_DTMR_ORRI | DTIM_DTMR_RST_EN;
 	    DTIM_DTMR_FRR | DTIM_DTMR_ORRI | DTIM_DTMR_RST_EN;
+
+	return 0;
 }
 }
 
 
 ulong get_timer(ulong base)
 ulong get_timer(ulong base)
@@ -162,6 +164,8 @@ void timer_init(void)
 	timerp->pcsr = PIT_PCSR_OVW;
 	timerp->pcsr = PIT_PCSR_OVW;
 	timerp->pmr = lastinc = 0;
 	timerp->pmr = lastinc = 0;
 	timerp->pcsr |= PIT_PCSR_PRE(CONFIG_SYS_PIT_PRESCALE) | PIT_PCSR_EN;
 	timerp->pcsr |= PIT_PCSR_PRE(CONFIG_SYS_PIT_PRESCALE) | PIT_PCSR_EN;
+
+	return 0;
 }
 }
 
 
 ulong get_timer(ulong base)
 ulong get_timer(ulong base)

+ 12 - 54
board/freescale/m5208evbe/u-boot.lds

@@ -22,61 +22,25 @@
  */
  */
 
 
 OUTPUT_ARCH(m68k)
 OUTPUT_ARCH(m68k)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
+
 SECTIONS
 SECTIONS
 {
 {
   /* Read-only sections, merged into text segment: */
   /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp        : { *(.interp)		}
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .rel.text      : { *(.rel.text)	}
-  .rela.text     : { *(.rela.text)	}
-  .rel.data      : { *(.rel.data)	}
-  .rela.data     : { *(.rela.data)	}
-  .rel.rodata    : { *(.rel.rodata)	}
-  .rela.rodata   : { *(.rela.rodata)	}
-  .rel.got       : { *(.rel.got)	}
-  .rela.got      : { *(.rela.got)	}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.bss       : { *(.rel.bss)	}
-  .rela.bss      : { *(.rela.bss)	}
-  .rel.plt       : { *(.rel.plt)	}
-  .rela.plt      : { *(.rela.plt)	}
-  .init          : { *(.init)		}
-  .plt           : { *(.plt)		}
   .text      :
   .text      :
   {
   {
-    /* WARNING - the following is hand-optimized to fit within	*/
-    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
-
-    arch/m68k/cpu/mcf52x2/start.o		(.text)
-    arch/m68k/cpu/mcf52x2/libmcf52x2.o	(.text)
-    arch/m68k/lib/libm68k.o		(.text)
-    common/dlmalloc.o		(.text)
+    arch/m68k/cpu/mcf52x2/start.o		(.text*)
 
 
     . = DEFINED(env_offset) ? env_offset : .;
     . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o	(.text)
+    common/env_embedded.o	(.text*)
 
 
-    *(.text)
-    *(.fixup)
-    *(.got1)
+    *(.text*)
   }
   }
   _etext = .;
   _etext = .;
   PROVIDE (etext = .);
   PROVIDE (etext = .);
   .rodata    :
   .rodata    :
   {
   {
-    *(.rodata)
-    *(.rodata1)
+    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
   }
   }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
 
 
   /* Read-write section, merged into data segment: */
   /* Read-write section, merged into data segment: */
   . = (. + 0x00FF) & 0xFFFFFF00;
   . = (. + 0x00FF) & 0xFFFFFF00;
@@ -86,24 +50,20 @@ SECTIONS
   .reloc   :
   .reloc   :
   {
   {
     __got_start = .;
     __got_start = .;
-    *(.got)
+    KEEP(*(.got))
     __got_end = .;
     __got_end = .;
     _GOT2_TABLE_ = .;
     _GOT2_TABLE_ = .;
-    *(.got2)
+    KEEP(*(.got2))
     _FIXUP_TABLE_ = .;
     _FIXUP_TABLE_ = .;
-    *(.fixup)
+    KEEP(*(.fixup))
   }
   }
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
 
 
   .data    :
   .data    :
   {
   {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
+    *(.data*)
+    *(.sdata*)
   }
   }
   _edata  =  .;
   _edata  =  .;
   PROVIDE (edata = .);
   PROVIDE (edata = .);
@@ -113,7 +73,6 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
   __u_boot_cmd_end = .;
 
 
-
   . = .;
   . = .;
   __start___ex_table = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __ex_table : { *(__ex_table) }
@@ -130,9 +89,8 @@ SECTIONS
   .bss (NOLOAD)       :
   .bss (NOLOAD)       :
   {
   {
    _sbss = .;
    _sbss = .;
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
+   *(.sbss*)
+   *(.bss*)
    *(COMMON)
    *(COMMON)
    . = ALIGN(4);
    . = ALIGN(4);
    _ebss = .;
    _ebss = .;

+ 15 - 57
board/freescale/m52277evb/u-boot.spa

@@ -22,63 +22,27 @@
  */
  */
 
 
 OUTPUT_ARCH(m68k)
 OUTPUT_ARCH(m68k)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
+
 SECTIONS
 SECTIONS
 {
 {
   /* Read-only sections, merged into text segment: */
   /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .rel.text      : { *(.rel.text)		}
-  .rela.text     : { *(.rela.text)	}
-  .rel.data      : { *(.rel.data)		}
-  .rela.data     : { *(.rela.data)	}
-  .rel.rodata    : { *(.rel.rodata)	}
-  .rela.rodata   : { *(.rela.rodata)	}
-  .rel.got       : { *(.rel.got)		}
-  .rela.got      : { *(.rela.got)		}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.bss       : { *(.rel.bss)		}
-  .rela.bss      : { *(.rela.bss)		}
-  .rel.plt       : { *(.rel.plt)		}
-  .rela.plt      : { *(.rela.plt)		}
-  .init          : { *(.init)	}
-  .plt : { *(.plt) }
   .text      :
   .text      :
   {
   {
-    /* WARNING - the following is hand-optimized to fit within	*/
-    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
-
-    arch/m68k/cpu/mcf5227x/start.o	(.text)
-    arch/m68k/cpu/mcf5227x/libmcf5227x.o	(.text)
-    arch/m68k/lib/libm68k.o		(.text)
-    lib/libgeneric.o	(.text)
-    common/cmd_mem.o		(.text)
-    common/main.o		(.text)
+    arch/m68k/cpu/mcf5227x/start.o	(.text*)
+    arch/m68k/cpu/mcf5227x/libmcf5227x.o	(.text*)
+    arch/m68k/lib/libm68k.o		(.text*)
 
 
     . = DEFINED(env_offset) ? env_offset : .;
     . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o	(.text)
+    common/env_embedded.o	(.text*)
 
 
-    *(.text)
-    *(.fixup)
-    *(.got1)
+    *(.text*)
   }
   }
   _etext = .;
   _etext = .;
   PROVIDE (etext = .);
   PROVIDE (etext = .);
   .rodata    :
   .rodata    :
   {
   {
-    *(.rodata)
-    *(.rodata1)
+    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
   }
   }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
 
 
   /* Read-write section, merged into data segment: */
   /* Read-write section, merged into data segment: */
   . = (. + 0x00FF) & 0xFFFFFF00;
   . = (. + 0x00FF) & 0xFFFFFF00;
@@ -88,24 +52,20 @@ SECTIONS
   .reloc   :
   .reloc   :
   {
   {
     __got_start = .;
     __got_start = .;
-    *(.got)
+    KEEP(*(.got))
     __got_end = .;
     __got_end = .;
     _GOT2_TABLE_ = .;
     _GOT2_TABLE_ = .;
-    *(.got2)
+    KEEP(*(.got2))
     _FIXUP_TABLE_ = .;
     _FIXUP_TABLE_ = .;
-    *(.fixup)
+    KEEP(*(.fixup))
   }
   }
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
 
 
   .data    :
   .data    :
   {
   {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
+    *(.data*)
+    *(.sdata*)
   }
   }
   _edata  =  .;
   _edata  =  .;
   PROVIDE (edata = .);
   PROVIDE (edata = .);
@@ -115,7 +75,6 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
   __u_boot_cmd_end = .;
 
 
-
   . = .;
   . = .;
   __start___ex_table = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __ex_table : { *(__ex_table) }
@@ -129,12 +88,11 @@ SECTIONS
   __init_end = .;
   __init_end = .;
 
 
   __bss_start = .;
   __bss_start = .;
-  .bss       :
+  .bss (NOLOAD)      :
   {
   {
    _sbss = .;
    _sbss = .;
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
+   *(.sbss*)
+   *(.bss*)
    *(COMMON)
    *(COMMON)
    . = ALIGN(4);
    . = ALIGN(4);
    _ebss = .;
    _ebss = .;

+ 4 - 0
board/freescale/m5253demo/m5253demo.c

@@ -27,6 +27,7 @@
 #include <common.h>
 #include <common.h>
 #include <asm/immap.h>
 #include <asm/immap.h>
 #include <netdev.h>
 #include <netdev.h>
+#include <asm/io.h>
 
 
 int checkboard(void)
 int checkboard(void)
 {
 {
@@ -63,10 +64,12 @@ phys_size_t initdram(int board_type)
 		__asm__("nop");
 		__asm__("nop");
 
 
 		mbar_writeLong(MCFSIM_DACR0, 0x0000322c);
 		mbar_writeLong(MCFSIM_DACR0, 0x0000322c);
+		mb();
 		__asm__("nop");
 		__asm__("nop");
 
 
 		/* Write to this block to initiate precharge */
 		/* Write to this block to initiate precharge */
 		*(u32 *) (CONFIG_SYS_SDRAM_BASE) = 0xa5a5a5a5;
 		*(u32 *) (CONFIG_SYS_SDRAM_BASE) = 0xa5a5a5a5;
+		mb();
 		__asm__("nop");
 		__asm__("nop");
 
 
 		/* Set RE bit in DACR */
 		/* Set RE bit in DACR */
@@ -83,6 +86,7 @@ phys_size_t initdram(int board_type)
 		__asm__("nop");
 		__asm__("nop");
 
 
 		*(u32 *) (CONFIG_SYS_SDRAM_BASE + 0x800) = 0xa5a5a5a5;
 		*(u32 *) (CONFIG_SYS_SDRAM_BASE + 0x800) = 0xa5a5a5a5;
+		mb();
 	}
 	}
 
 
 	return dramsize;
 	return dramsize;

+ 11 - 54
board/freescale/m5253demo/u-boot.lds

@@ -22,52 +22,18 @@
  */
  */
 
 
 OUTPUT_ARCH(m68k)
 OUTPUT_ARCH(m68k)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
+
 SECTIONS
 SECTIONS
 {
 {
   /* Read-only sections, merged into text segment: */
   /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .rel.text      : { *(.rel.text)	}
-  .rela.text     : { *(.rela.text) 	}
-  .rel.data      : { *(.rel.data)	}
-  .rela.data     : { *(.rela.data) 	}
-  .rel.rodata    : { *(.rel.rodata) 	}
-  .rela.rodata   : { *(.rela.rodata) 	}
-  .rel.got       : { *(.rel.got)	}
-  .rela.got      : { *(.rela.got)	}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.bss       : { *(.rel.bss)	}
-  .rela.bss      : { *(.rela.bss)	}
-  .rel.plt       : { *(.rel.plt)	}
-  .rela.plt      : { *(.rela.plt)	}
-  .init          : { *(.init)		}
-  .plt : { *(.plt) }
   .text      :
   .text      :
   {
   {
-    /* WARNING - the following is hand-optimized to fit within	*/
-    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
-
-    arch/m68k/cpu/mcf52x2/start.o		(.text)
-    arch/m68k/lib/traps.o		(.text)
-    arch/m68k/cpu/mcf52x2/interrupts.o	(.text)
-    common/dlmalloc.o		(.text)
-    lib/zlib.o		(.text)
+    arch/m68k/cpu/mcf52x2/start.o		(.text*)
 
 
     . = DEFINED(env_offset) ? env_offset : .;
     . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o	(.text)
+    common/env_embedded.o	(.text*)
 
 
-
-    *(.text)
-    *(.fixup)
-    *(.got1)
+    *(.text*)
   }
   }
   _etext = .;
   _etext = .;
   PROVIDE (etext = .);
   PROVIDE (etext = .);
@@ -75,9 +41,6 @@ SECTIONS
   {
   {
     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
   }
   }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
 
 
   /* Read-write section, merged into data segment: */
   /* Read-write section, merged into data segment: */
   . = (. + 0x00FF) & 0xFFFFFF00;
   . = (. + 0x00FF) & 0xFFFFFF00;
@@ -87,24 +50,20 @@ SECTIONS
   .reloc   :
   .reloc   :
   {
   {
     __got_start = .;
     __got_start = .;
-    *(.got)
+    KEEP(*(.got))
     __got_end = .;
     __got_end = .;
     _GOT2_TABLE_ = .;
     _GOT2_TABLE_ = .;
-    *(.got2)
+    KEEP(*(.got2))
     _FIXUP_TABLE_ = .;
     _FIXUP_TABLE_ = .;
-    *(.fixup)
+    KEEP(*(.fixup))
   }
   }
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
 
 
   .data    :
   .data    :
   {
   {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
+    *(.data*)
+    *(.sdata*)
   }
   }
   _edata  =  .;
   _edata  =  .;
   PROVIDE (edata = .);
   PROVIDE (edata = .);
@@ -114,7 +73,6 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
   __u_boot_cmd_end = .;
 
 
-
   . = .;
   . = .;
   __start___ex_table = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __ex_table : { *(__ex_table) }
@@ -131,9 +89,8 @@ SECTIONS
   .bss       :
   .bss       :
   {
   {
    _sbss = .;
    _sbss = .;
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
+   *(.sbss*)
+   *(.bss*)
    *(COMMON)
    *(COMMON)
    . = ALIGN(4);
    . = ALIGN(4);
    _ebss = .;
    _ebss = .;

+ 13 - 53
board/freescale/m53017evb/u-boot.lds

@@ -22,51 +22,20 @@
  */
  */
 
 
 OUTPUT_ARCH(m68k)
 OUTPUT_ARCH(m68k)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
+
 SECTIONS
 SECTIONS
 {
 {
   /* Read-only sections, merged into text segment: */
   /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .rel.text      : { *(.rel.text)		}
-  .rela.text     : { *(.rela.text)	}
-  .rel.data      : { *(.rel.data)		}
-  .rela.data     : { *(.rela.data)	}
-  .rel.rodata    : { *(.rel.rodata)	}
-  .rela.rodata   : { *(.rela.rodata)	}
-  .rel.got       : { *(.rel.got)		}
-  .rela.got      : { *(.rela.got)		}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.bss       : { *(.rel.bss)		}
-  .rela.bss      : { *(.rela.bss)		}
-  .rel.plt       : { *(.rel.plt)		}
-  .rela.plt      : { *(.rela.plt)		}
-  .init          : { *(.init)	}
-  .plt : { *(.plt) }
   .text      :
   .text      :
   {
   {
-    /* WARNING - the following is hand-optimized to fit within	*/
-    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
-
-    arch/m68k/cpu/mcf532x/start.o		(.text)
-    arch/m68k/cpu/mcf532x/libmcf532x.o	(.text)
-    arch/m68k/lib/libm68k.o		(.text)
-    common/dlmalloc.o		(.text)
-    lib/zlib.o		(.text)
+    arch/m68k/cpu/mcf532x/start.o		(.text*)
+    arch/m68k/cpu/mcf532x/libmcf532x.o	(.text*)
+    arch/m68k/lib/libm68k.o		(.text*)
 
 
     . = DEFINED(env_offset) ? env_offset : .;
     . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o	(.text)
+    common/env_embedded.o	(.text*)
 
 
-    *(.text)
-    *(.fixup)
-    *(.got1)
+    *(.text*)
   }
   }
   _etext = .;
   _etext = .;
   PROVIDE (etext = .);
   PROVIDE (etext = .);
@@ -74,9 +43,6 @@ SECTIONS
   {
   {
     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
   }
   }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
 
 
   /* Read-write section, merged into data segment: */
   /* Read-write section, merged into data segment: */
   . = (. + 0x00FF) & 0xFFFFFF00;
   . = (. + 0x00FF) & 0xFFFFFF00;
@@ -86,24 +52,20 @@ SECTIONS
   .reloc   :
   .reloc   :
   {
   {
     __got_start = .;
     __got_start = .;
-    *(.got)
+    KEEP(*(.got))
     __got_end = .;
     __got_end = .;
     _GOT2_TABLE_ = .;
     _GOT2_TABLE_ = .;
-    *(.got2)
+    KEEP(*(.got2))
     _FIXUP_TABLE_ = .;
     _FIXUP_TABLE_ = .;
-    *(.fixup)
+    KEEP(*(.fixup))
   }
   }
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
 
 
   .data    :
   .data    :
   {
   {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
+    *(.data*)
+    *(.sdata*)
   }
   }
   _edata  =  .;
   _edata  =  .;
   PROVIDE (edata = .);
   PROVIDE (edata = .);
@@ -113,7 +75,6 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
   __u_boot_cmd_end = .;
 
 
-
   . = .;
   . = .;
   __start___ex_table = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __ex_table : { *(__ex_table) }
@@ -130,9 +91,8 @@ SECTIONS
   .bss (NOLOAD)       :
   .bss (NOLOAD)       :
   {
   {
    _sbss = .;
    _sbss = .;
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
+   *(.sbss*)
+   *(.bss*)
    *(COMMON)
    *(COMMON)
    . = ALIGN(4);
    . = ALIGN(4);
    _ebss = .;
    _ebss = .;

+ 11 - 53
board/freescale/m5329evb/u-boot.lds

@@ -22,51 +22,18 @@
  */
  */
 
 
 OUTPUT_ARCH(m68k)
 OUTPUT_ARCH(m68k)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
+
 SECTIONS
 SECTIONS
 {
 {
   /* Read-only sections, merged into text segment: */
   /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .rel.text      : { *(.rel.text)		}
-  .rela.text     : { *(.rela.text)	}
-  .rel.data      : { *(.rel.data)		}
-  .rela.data     : { *(.rela.data)	}
-  .rel.rodata    : { *(.rel.rodata)	}
-  .rela.rodata   : { *(.rela.rodata)	}
-  .rel.got       : { *(.rel.got)		}
-  .rela.got      : { *(.rela.got)		}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.bss       : { *(.rel.bss)		}
-  .rela.bss      : { *(.rela.bss)		}
-  .rel.plt       : { *(.rel.plt)		}
-  .rela.plt      : { *(.rela.plt)		}
-  .init          : { *(.init)	}
-  .plt : { *(.plt) }
   .text      :
   .text      :
   {
   {
-    /* WARNING - the following is hand-optimized to fit within	*/
-    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
-
-    arch/m68k/cpu/mcf532x/start.o		(.text)
-    arch/m68k/lib/traps.o		(.text)
-    arch/m68k/lib/interrupts.o	(.text)
-    common/dlmalloc.o		(.text)
-    lib/zlib.o		(.text)
+    arch/m68k/cpu/mcf532x/start.o		(.text*)
 
 
     . = DEFINED(env_offset) ? env_offset : .;
     . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o	(.text)
+    common/env_embedded.o	(.text*)
 
 
-    *(.text)
-    *(.fixup)
-    *(.got1)
+    *(.text*)
   }
   }
   _etext = .;
   _etext = .;
   PROVIDE (etext = .);
   PROVIDE (etext = .);
@@ -74,9 +41,6 @@ SECTIONS
   {
   {
     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
   }
   }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
 
 
   /* Read-write section, merged into data segment: */
   /* Read-write section, merged into data segment: */
   . = (. + 0x00FF) & 0xFFFFFF00;
   . = (. + 0x00FF) & 0xFFFFFF00;
@@ -86,24 +50,20 @@ SECTIONS
   .reloc   :
   .reloc   :
   {
   {
     __got_start = .;
     __got_start = .;
-    *(.got)
+    KEEP(*(.got))
     __got_end = .;
     __got_end = .;
     _GOT2_TABLE_ = .;
     _GOT2_TABLE_ = .;
-    *(.got2)
+    KEEP(*(.got2))
     _FIXUP_TABLE_ = .;
     _FIXUP_TABLE_ = .;
-    *(.fixup)
+    KEEP(*(.fixup))
   }
   }
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
 
 
   .data    :
   .data    :
   {
   {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
+    *(.data*)
+    *(.sdata*)
   }
   }
   _edata  =  .;
   _edata  =  .;
   PROVIDE (edata = .);
   PROVIDE (edata = .);
@@ -113,7 +73,6 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
   __u_boot_cmd_end = .;
 
 
-
   . = .;
   . = .;
   __start___ex_table = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __ex_table : { *(__ex_table) }
@@ -130,9 +89,8 @@ SECTIONS
   .bss (NOLOAD)       :
   .bss (NOLOAD)       :
   {
   {
    _sbss = .;
    _sbss = .;
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
+   *(.sbss*)
+   *(.bss*)
    *(COMMON)
    *(COMMON)
    . = ALIGN(4);
    . = ALIGN(4);
    _ebss = .;
    _ebss = .;

+ 11 - 53
board/freescale/m5373evb/u-boot.lds

@@ -22,51 +22,18 @@
  */
  */
 
 
 OUTPUT_ARCH(m68k)
 OUTPUT_ARCH(m68k)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
+
 SECTIONS
 SECTIONS
 {
 {
   /* Read-only sections, merged into text segment: */
   /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .rel.text      : { *(.rel.text)		}
-  .rela.text     : { *(.rela.text)	}
-  .rel.data      : { *(.rel.data)		}
-  .rela.data     : { *(.rela.data)	}
-  .rel.rodata    : { *(.rel.rodata)	}
-  .rela.rodata   : { *(.rela.rodata)	}
-  .rel.got       : { *(.rel.got)		}
-  .rela.got      : { *(.rela.got)		}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.bss       : { *(.rel.bss)		}
-  .rela.bss      : { *(.rela.bss)		}
-  .rel.plt       : { *(.rel.plt)		}
-  .rela.plt      : { *(.rela.plt)		}
-  .init          : { *(.init)	}
-  .plt : { *(.plt) }
   .text      :
   .text      :
   {
   {
-    /* WARNING - the following is hand-optimized to fit within	*/
-    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
-
-    arch/m68k/cpu/mcf532x/start.o		(.text)
-    arch/m68k/lib/traps.o		(.text)
-    arch/m68k/lib/interrupts.o	(.text)
-    common/dlmalloc.o		(.text)
-    lib/zlib.o		(.text)
+    arch/m68k/cpu/mcf532x/start.o		(.text*)
 
 
     . = DEFINED(env_offset) ? env_offset : .;
     . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o	(.text)
+    common/env_embedded.o	(.text*)
 
 
-    *(.text)
-    *(.fixup)
-    *(.got1)
+    *(.text*)
   }
   }
   _etext = .;
   _etext = .;
   PROVIDE (etext = .);
   PROVIDE (etext = .);
@@ -74,9 +41,6 @@ SECTIONS
   {
   {
     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
   }
   }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
 
 
   /* Read-write section, merged into data segment: */
   /* Read-write section, merged into data segment: */
   . = (. + 0x00FF) & 0xFFFFFF00;
   . = (. + 0x00FF) & 0xFFFFFF00;
@@ -86,24 +50,20 @@ SECTIONS
   .reloc   :
   .reloc   :
   {
   {
     __got_start = .;
     __got_start = .;
-    *(.got)
+    KEEP(*(.got))
     __got_end = .;
     __got_end = .;
     _GOT2_TABLE_ = .;
     _GOT2_TABLE_ = .;
-    *(.got2)
+    KEEP(*(.got2))
     _FIXUP_TABLE_ = .;
     _FIXUP_TABLE_ = .;
-    *(.fixup)
+    KEEP(*(.fixup))
   }
   }
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
 
 
   .data    :
   .data    :
   {
   {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
+    *(.data*)
+    *(.sdata*)
   }
   }
   _edata  =  .;
   _edata  =  .;
   PROVIDE (edata = .);
   PROVIDE (edata = .);
@@ -113,7 +73,6 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
   __u_boot_cmd_end = .;
 
 
-
   . = .;
   . = .;
   __start___ex_table = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __ex_table : { *(__ex_table) }
@@ -130,9 +89,8 @@ SECTIONS
   .bss       :
   .bss       :
   {
   {
    _sbss = .;
    _sbss = .;
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
+   *(.sbss*)
+   *(.bss*)
    *(COMMON)
    *(COMMON)
    . = ALIGN(4);
    . = ALIGN(4);
    _ebss = .;
    _ebss = .;

+ 12 - 61
board/freescale/m54451evb/u-boot.spa

@@ -22,65 +22,22 @@
  */
  */
 
 
 OUTPUT_ARCH(m68k)
 OUTPUT_ARCH(m68k)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
+
 SECTIONS
 SECTIONS
 {
 {
   /* Read-only sections, merged into text segment: */
   /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .rel.text      : { *(.rel.text)		}
-  .rela.text     : { *(.rela.text)	}
-  .rel.data      : { *(.rel.data)		}
-  .rela.data     : { *(.rela.data)	}
-  .rel.rodata    : { *(.rel.rodata)	}
-  .rela.rodata   : { *(.rela.rodata)	}
-  .rel.got       : { *(.rel.got)		}
-  .rela.got      : { *(.rela.got)		}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.bss       : { *(.rel.bss)		}
-  .rela.bss      : { *(.rela.bss)		}
-  .rel.plt       : { *(.rel.plt)		}
-  .rela.plt      : { *(.rela.plt)		}
-  .init          : { *(.init)	}
-  .plt : { *(.plt) }
   .text      :
   .text      :
   {
   {
-    /* WARNING - the following is hand-optimized to fit within	*/
-    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
-
-    arch/m68k/cpu/mcf5445x/start.o		(.text)
-    arch/m68k/cpu/mcf5445x/libmcf5445x.o	(.text)
-    arch/m68k/lib/libm68k.o		(.text)
-    common/cmd_flash.o		(.text)
-    common/dlmalloc.o		(.text)
-    common/main.o		(.text)
-    common/image.o		(.text)
-    lib/libgeneric.o	(.text)
+    arch/m68k/cpu/mcf5445x/start.o		(.text*)
 
 
-    . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o	(.text)
-
-    *(.text)
-    *(.fixup)
-    *(.got1)
+    *(.text*)
   }
   }
   _etext = .;
   _etext = .;
   PROVIDE (etext = .);
   PROVIDE (etext = .);
   .rodata    :
   .rodata    :
   {
   {
-    *(.rodata)
-    *(.rodata1)
+     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
   }
   }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
 
 
   /* Read-write section, merged into data segment: */
   /* Read-write section, merged into data segment: */
   . = (. + 0x00FF) & 0xFFFFFF00;
   . = (. + 0x00FF) & 0xFFFFFF00;
@@ -90,24 +47,20 @@ SECTIONS
   .reloc   :
   .reloc   :
   {
   {
     __got_start = .;
     __got_start = .;
-    *(.got)
+    KEEP(*(.got))
     __got_end = .;
     __got_end = .;
     _GOT2_TABLE_ = .;
     _GOT2_TABLE_ = .;
-    *(.got2)
+    KEEP(*(.got2))
     _FIXUP_TABLE_ = .;
     _FIXUP_TABLE_ = .;
-    *(.fixup)
+    KEEP(*(.fixup))
   }
   }
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
 
 
   .data    :
   .data    :
   {
   {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
+    *(.data*)
+    *(.sdata*)
   }
   }
   _edata  =  .;
   _edata  =  .;
   PROVIDE (edata = .);
   PROVIDE (edata = .);
@@ -117,7 +70,6 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
   __u_boot_cmd_end = .;
 
 
-
   . = .;
   . = .;
   __start___ex_table = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __ex_table : { *(__ex_table) }
@@ -131,12 +83,11 @@ SECTIONS
   __init_end = .;
   __init_end = .;
 
 
   __bss_start = .;
   __bss_start = .;
-  .bss       :
+  .bss (NOLOAD)      :
   {
   {
    _sbss = .;
    _sbss = .;
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
+   *(.bss*)
+   *(.sbss*)
    *(COMMON)
    *(COMMON)
    . = ALIGN(4);
    . = ALIGN(4);
    _ebss = .;
    _ebss = .;

+ 12 - 64
board/freescale/m54451evb/u-boot.stm

@@ -22,68 +22,22 @@
  */
  */
 
 
 OUTPUT_ARCH(m68k)
 OUTPUT_ARCH(m68k)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
+
 SECTIONS
 SECTIONS
 {
 {
   /* Read-only sections, merged into text segment: */
   /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .rel.text      : { *(.rel.text)		}
-  .rela.text     : { *(.rela.text) 	}
-  .rel.data      : { *(.rel.data)		}
-  .rela.data     : { *(.rela.data) 	}
-  .rel.rodata    : { *(.rel.rodata) 	}
-  .rela.rodata   : { *(.rela.rodata) 	}
-  .rel.got       : { *(.rel.got)		}
-  .rela.got      : { *(.rela.got)		}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.bss       : { *(.rel.bss)		}
-  .rela.bss      : { *(.rela.bss)		}
-  .rel.plt       : { *(.rel.plt)		}
-  .rela.plt      : { *(.rela.plt)		}
-  .init          : { *(.init)	}
-  .plt : { *(.plt) }
   .text      :
   .text      :
   {
   {
-    /* WARNING - the following is hand-optimized to fit within	*/
-    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
-
-    arch/m68k/cpu/mcf5445x/start.o		(.text)
-/*    arch/m68k/cpu/mcf5445x/cpu_init.o		(.text)
-    arch/m68k/cpu/mcf5445x/cpu.o			(.text)
-    arch/m68k/cpu/mcf5445x/dspi.o			(.text)
-    arch/m68k/cpu/mcf5445x/interrupt.o		(.text)
-    arch/m68k/cpu/mcf5445x/speed.o		(.text)
-    arch/m68k/lib/board.o			(.text)
-    common/serial.o			(.text)
-    common/console.o			(.text)
-    lib/display_options.o	(.text)
-    board/freescale/m54455evb/m54455evb.o	(.text)
+    arch/m68k/cpu/mcf5445x/start.o		(.text*)
 
 
-    . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o	(.text)
-*/
-    *(.text)
-    *(.fixup)
-    *(.got1)
+    *(.text*)
   }
   }
   _etext = .;
   _etext = .;
   PROVIDE (etext = .);
   PROVIDE (etext = .);
   .rodata    :
   .rodata    :
   {
   {
-    *(.rodata)
-    *(.rodata1)
+     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
   }
   }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
 
 
   /* Read-write section, merged into data segment: */
   /* Read-write section, merged into data segment: */
   . = (. + 0x00FF) & 0xFFFFFF00;
   . = (. + 0x00FF) & 0xFFFFFF00;
@@ -93,24 +47,20 @@ SECTIONS
   .reloc   :
   .reloc   :
   {
   {
     __got_start = .;
     __got_start = .;
-    *(.got)
+    KEEP(*(.got))
     __got_end = .;
     __got_end = .;
     _GOT2_TABLE_ = .;
     _GOT2_TABLE_ = .;
-    *(.got2)
+    KEEP(*(.got2))
     _FIXUP_TABLE_ = .;
     _FIXUP_TABLE_ = .;
-    *(.fixup)
+    KEEP(*(.fixup))
   }
   }
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
 
 
   .data    :
   .data    :
   {
   {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
+    *(.data*)
+    *(.sdata*)
   }
   }
   _edata  =  .;
   _edata  =  .;
   PROVIDE (edata = .);
   PROVIDE (edata = .);
@@ -120,7 +70,6 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
   __u_boot_cmd_end = .;
 
 
-
   . = .;
   . = .;
   __start___ex_table = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __ex_table : { *(__ex_table) }
@@ -134,12 +83,11 @@ SECTIONS
   __init_end = .;
   __init_end = .;
 
 
   __bss_start = .;
   __bss_start = .;
-  .bss       :
+  .bss   (NOLOAD)    :
   {
   {
    _sbss = .;
    _sbss = .;
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
+   *(.bss*)
+   *(.sbss*)
    *(COMMON)
    *(COMMON)
    . = ALIGN(4);
    . = ALIGN(4);
    _ebss = .;
    _ebss = .;

+ 12 - 58
board/freescale/m54455evb/u-boot.atm

@@ -22,62 +22,22 @@
  */
  */
 
 
 OUTPUT_ARCH(m68k)
 OUTPUT_ARCH(m68k)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
+
 SECTIONS
 SECTIONS
 {
 {
   /* Read-only sections, merged into text segment: */
   /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .rel.text      : { *(.rel.text)		}
-  .rela.text     : { *(.rela.text)	}
-  .rel.data      : { *(.rel.data)		}
-  .rela.data     : { *(.rela.data)	}
-  .rel.rodata    : { *(.rel.rodata)	}
-  .rela.rodata   : { *(.rela.rodata)	}
-  .rel.got       : { *(.rel.got)		}
-  .rela.got      : { *(.rela.got)		}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.bss       : { *(.rel.bss)		}
-  .rela.bss      : { *(.rela.bss)		}
-  .rel.plt       : { *(.rel.plt)		}
-  .rela.plt      : { *(.rela.plt)		}
-  .init          : { *(.init)	}
-  .plt : { *(.plt) }
   .text      :
   .text      :
   {
   {
-    /* WARNING - the following is hand-optimized to fit within	*/
-    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
-
-    arch/m68k/cpu/mcf5445x/start.o		(.text)
-    arch/m68k/lib/traps.o		(.text)
-    arch/m68k/lib/interrupts.o	(.text)
-    common/dlmalloc.o		(.text)
-    lib/zlib.o		(.text)
+    arch/m68k/cpu/mcf5445x/start.o		(.text*)
 
 
-    . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o	(.text)
-
-    *(.text)
-    *(.fixup)
-    *(.got1)
+    *(.text*)
   }
   }
   _etext = .;
   _etext = .;
   PROVIDE (etext = .);
   PROVIDE (etext = .);
   .rodata    :
   .rodata    :
   {
   {
-    *(.rodata)
-    *(.rodata1)
+    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
   }
   }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
 
 
   /* Read-write section, merged into data segment: */
   /* Read-write section, merged into data segment: */
   . = (. + 0x00FF) & 0xFFFFFF00;
   . = (. + 0x00FF) & 0xFFFFFF00;
@@ -87,24 +47,20 @@ SECTIONS
   .reloc   :
   .reloc   :
   {
   {
     __got_start = .;
     __got_start = .;
-    *(.got)
+    KEEP(*(.got))
     __got_end = .;
     __got_end = .;
     _GOT2_TABLE_ = .;
     _GOT2_TABLE_ = .;
-    *(.got2)
+    KEEP(*(.got2))
     _FIXUP_TABLE_ = .;
     _FIXUP_TABLE_ = .;
-    *(.fixup)
+    KEEP(*(.fixup))
   }
   }
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
 
 
   .data    :
   .data    :
   {
   {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
+    *(.data*)
+    *(.sdata*)
   }
   }
   _edata  =  .;
   _edata  =  .;
   PROVIDE (edata = .);
   PROVIDE (edata = .);
@@ -114,7 +70,6 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
   __u_boot_cmd_end = .;
 
 
-
   . = .;
   . = .;
   __start___ex_table = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __ex_table : { *(__ex_table) }
@@ -128,12 +83,11 @@ SECTIONS
   __init_end = .;
   __init_end = .;
 
 
   __bss_start = .;
   __bss_start = .;
-  .bss       :
+  .bss  (NOLOAD)     :
   {
   {
    _sbss = .;
    _sbss = .;
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
+   *(.bss*)
+   *(.sbss*)
    *(COMMON)
    *(COMMON)
    . = ALIGN(4);
    . = ALIGN(4);
    _ebss = .;
    _ebss = .;

+ 12 - 55
board/freescale/m54455evb/u-boot.int

@@ -22,59 +22,22 @@
  */
  */
 
 
 OUTPUT_ARCH(m68k)
 OUTPUT_ARCH(m68k)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
+
 SECTIONS
 SECTIONS
 {
 {
   /* Read-only sections, merged into text segment: */
   /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .rel.text      : { *(.rel.text)		}
-  .rela.text     : { *(.rela.text)	}
-  .rel.data      : { *(.rel.data)		}
-  .rela.data     : { *(.rela.data)	}
-  .rel.rodata    : { *(.rel.rodata)	}
-  .rela.rodata   : { *(.rela.rodata)	}
-  .rel.got       : { *(.rel.got)		}
-  .rela.got      : { *(.rela.got)		}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.bss       : { *(.rel.bss)		}
-  .rela.bss      : { *(.rela.bss)		}
-  .rel.plt       : { *(.rel.plt)		}
-  .rela.plt      : { *(.rela.plt)		}
-  .init          : { *(.init)	}
-  .plt : { *(.plt) }
   .text      :
   .text      :
   {
   {
-    /* WARNING - the following is hand-optimized to fit within	*/
-    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
-
-    arch/m68k/cpu/mcf5445x/start.o		(.text)
-    arch/m68k/lib/traps.o		(.text)
-    arch/m68k/lib/interrupts.o	(.text)
-    common/dlmalloc.o		(.text)
-    lib/zlib.o		(.text)
+    arch/m68k/cpu/mcf5445x/start.o		(.text*)
 
 
-    *(.text)
-    *(.fixup)
-    *(.got1)
+    *(.text*)
   }
   }
   _etext = .;
   _etext = .;
   PROVIDE (etext = .);
   PROVIDE (etext = .);
   .rodata    :
   .rodata    :
   {
   {
-    *(.rodata)
-    *(.rodata1)
+    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
   }
   }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
 
 
   /* Read-write section, merged into data segment: */
   /* Read-write section, merged into data segment: */
   . = (. + 0x00FF) & 0xFFFFFF00;
   . = (. + 0x00FF) & 0xFFFFFF00;
@@ -84,24 +47,20 @@ SECTIONS
   .reloc   :
   .reloc   :
   {
   {
     __got_start = .;
     __got_start = .;
-    *(.got)
+    KEEP(*(.got))
     __got_end = .;
     __got_end = .;
     _GOT2_TABLE_ = .;
     _GOT2_TABLE_ = .;
-    *(.got2)
+    KEEP(*(.got2))
     _FIXUP_TABLE_ = .;
     _FIXUP_TABLE_ = .;
-    *(.fixup)
+    KEEP(*(.fixup))
   }
   }
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
 
 
   .data    :
   .data    :
   {
   {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
+    *(.data*)
+    *(.sdata*)
   }
   }
   _edata  =  .;
   _edata  =  .;
   PROVIDE (edata = .);
   PROVIDE (edata = .);
@@ -111,7 +70,6 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
   __u_boot_cmd_end = .;
 
 
-
   . = .;
   . = .;
   __start___ex_table = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __ex_table : { *(__ex_table) }
@@ -125,12 +83,11 @@ SECTIONS
   __init_end = .;
   __init_end = .;
 
 
   __bss_start = .;
   __bss_start = .;
-  .bss       :
+  .bss  (NOLOAD)     :
   {
   {
    _sbss = .;
    _sbss = .;
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
+   *(.bss*)
+   *(.sbss*)
    *(COMMON)
    *(COMMON)
    . = ALIGN(4);
    . = ALIGN(4);
    _ebss = .;
    _ebss = .;

+ 11 - 55
board/freescale/m547xevb/u-boot.lds

@@ -22,50 +22,15 @@
  */
  */
 
 
 OUTPUT_ARCH(m68k)
 OUTPUT_ARCH(m68k)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
+
 SECTIONS
 SECTIONS
 {
 {
   /* Read-only sections, merged into text segment: */
   /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .rel.text      : { *(.rel.text)		}
-  .rela.text     : { *(.rela.text)	}
-  .rel.data      : { *(.rel.data)		}
-  .rela.data     : { *(.rela.data)	}
-  .rel.rodata    : { *(.rel.rodata)	}
-  .rela.rodata   : { *(.rela.rodata)	}
-  .rel.got       : { *(.rel.got)		}
-  .rela.got      : { *(.rela.got)		}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.bss       : { *(.rel.bss)		}
-  .rela.bss      : { *(.rela.bss)		}
-  .rel.plt       : { *(.rel.plt)		}
-  .rela.plt      : { *(.rela.plt)		}
-  .init          : { *(.init)	}
-  .plt : { *(.plt) }
   .text      :
   .text      :
   {
   {
-    /* WARNING - the following is hand-optimized to fit within	*/
-    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
-
-    arch/m68k/cpu/mcf547x_8x/start.o		(.text)
-    arch/m68k/lib/traps.o		(.text)
-    arch/m68k/lib/interrupts.o	(.text)
-    common/dlmalloc.o		(.text)
+    arch/m68k/cpu/mcf547x_8x/start.o		(.text*)
 
 
-    . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o	(.text)
-
-    *(.text)
-    *(.fixup)
-    *(.got1)
+    *(.text*)
   }
   }
   _etext = .;
   _etext = .;
   PROVIDE (etext = .);
   PROVIDE (etext = .);
@@ -73,9 +38,6 @@ SECTIONS
   {
   {
     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
   }
   }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
 
 
   /* Read-write section, merged into data segment: */
   /* Read-write section, merged into data segment: */
   . = (. + 0x00FF) & 0xFFFFFF00;
   . = (. + 0x00FF) & 0xFFFFFF00;
@@ -85,24 +47,20 @@ SECTIONS
   .reloc   :
   .reloc   :
   {
   {
     __got_start = .;
     __got_start = .;
-    *(.got)
+    KEEP(*(.got))
     __got_end = .;
     __got_end = .;
     _GOT2_TABLE_ = .;
     _GOT2_TABLE_ = .;
-    *(.got2)
+    KEEP(*(.got2))
     _FIXUP_TABLE_ = .;
     _FIXUP_TABLE_ = .;
-    *(.fixup)
+    KEEP(*(.fixup))
   }
   }
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
 
 
   .data    :
   .data    :
   {
   {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
+    *(.data*)
+    *(.sdata*)
   }
   }
   _edata  =  .;
   _edata  =  .;
   PROVIDE (edata = .);
   PROVIDE (edata = .);
@@ -112,7 +70,6 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
   __u_boot_cmd_end = .;
 
 
-
   . = .;
   . = .;
   __start___ex_table = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __ex_table : { *(__ex_table) }
@@ -126,12 +83,11 @@ SECTIONS
   __init_end = .;
   __init_end = .;
 
 
   __bss_start = .;
   __bss_start = .;
-  .bss       :
+  .bss (NOLOAD)      :
   {
   {
    _sbss = .;
    _sbss = .;
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
+   *(.bss*)
+   *(.sbss*)
    *(COMMON)
    *(COMMON)
    . = ALIGN(4);
    . = ALIGN(4);
    _ebss = .;
    _ebss = .;

+ 12 - 56
board/freescale/m548xevb/u-boot.lds

@@ -22,50 +22,15 @@
  */
  */
 
 
 OUTPUT_ARCH(m68k)
 OUTPUT_ARCH(m68k)
-/* Do we need any of these for elf?
-   __DYNAMIC = 0;    */
+
 SECTIONS
 SECTIONS
 {
 {
   /* Read-only sections, merged into text segment: */
   /* Read-only sections, merged into text segment: */
-  . = + SIZEOF_HEADERS;
-  .interp : { *(.interp) }
-  .hash          : { *(.hash)		}
-  .dynsym        : { *(.dynsym)		}
-  .dynstr        : { *(.dynstr)		}
-  .rel.text      : { *(.rel.text)		}
-  .rela.text     : { *(.rela.text)	}
-  .rel.data      : { *(.rel.data)		}
-  .rela.data     : { *(.rela.data)	}
-  .rel.rodata    : { *(.rel.rodata)	}
-  .rela.rodata   : { *(.rela.rodata)	}
-  .rel.got       : { *(.rel.got)		}
-  .rela.got      : { *(.rela.got)		}
-  .rel.ctors     : { *(.rel.ctors)	}
-  .rela.ctors    : { *(.rela.ctors)	}
-  .rel.dtors     : { *(.rel.dtors)	}
-  .rela.dtors    : { *(.rela.dtors)	}
-  .rel.bss       : { *(.rel.bss)		}
-  .rela.bss      : { *(.rela.bss)		}
-  .rel.plt       : { *(.rel.plt)		}
-  .rela.plt      : { *(.rela.plt)		}
-  .init          : { *(.init)	}
-  .plt : { *(.plt) }
-  .text      :
+   .text      :
   {
   {
-    /* WARNING - the following is hand-optimized to fit within	*/
-    /* the sector layout of our flash chips!	XXX FIXME XXX	*/
-
-    arch/m68k/cpu/mcf547x_8x/start.o		(.text)
-    arch/m68k/lib/traps.o		(.text)
-    arch/m68k/lib/interrupts.o	(.text)
-    common/dlmalloc.o		(.text)
+    arch/m68k/cpu/mcf547x_8x/start.o		(.text*)
 
 
-    . = DEFINED(env_offset) ? env_offset : .;
-    common/env_embedded.o	(.text)
-
-    *(.text)
-    *(.fixup)
-    *(.got1)
+    *(.text*)
   }
   }
   _etext = .;
   _etext = .;
   PROVIDE (etext = .);
   PROVIDE (etext = .);
@@ -73,9 +38,6 @@ SECTIONS
   {
   {
     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
   }
   }
-  .fini      : { *(.fini)    } =0
-  .ctors     : { *(.ctors)   }
-  .dtors     : { *(.dtors)   }
 
 
   /* Read-write section, merged into data segment: */
   /* Read-write section, merged into data segment: */
   . = (. + 0x00FF) & 0xFFFFFF00;
   . = (. + 0x00FF) & 0xFFFFFF00;
@@ -85,24 +47,20 @@ SECTIONS
   .reloc   :
   .reloc   :
   {
   {
     __got_start = .;
     __got_start = .;
-    *(.got)
+    KEEP(*(.got))
     __got_end = .;
     __got_end = .;
     _GOT2_TABLE_ = .;
     _GOT2_TABLE_ = .;
-    *(.got2)
+    KEEP(*(.got2))
     _FIXUP_TABLE_ = .;
     _FIXUP_TABLE_ = .;
-    *(.fixup)
+    KEEP(*(.fixup))
   }
   }
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
   __fixup_entries = (. - _FIXUP_TABLE_)>>2;
 
 
   .data    :
   .data    :
   {
   {
-    *(.data)
-    *(.data1)
-    *(.sdata)
-    *(.sdata2)
-    *(.dynamic)
-    CONSTRUCTORS
+    *(.data*)
+    *(.sdata*)
   }
   }
   _edata  =  .;
   _edata  =  .;
   PROVIDE (edata = .);
   PROVIDE (edata = .);
@@ -112,7 +70,6 @@ SECTIONS
   .u_boot_cmd : { *(.u_boot_cmd) }
   .u_boot_cmd : { *(.u_boot_cmd) }
   __u_boot_cmd_end = .;
   __u_boot_cmd_end = .;
 
 
-
   . = .;
   . = .;
   __start___ex_table = .;
   __start___ex_table = .;
   __ex_table : { *(__ex_table) }
   __ex_table : { *(__ex_table) }
@@ -126,12 +83,11 @@ SECTIONS
   __init_end = .;
   __init_end = .;
 
 
   __bss_start = .;
   __bss_start = .;
-  .bss       :
+  .bss (NOLOAD)      :
   {
   {
    _sbss = .;
    _sbss = .;
-   *(.sbss) *(.scommon)
-   *(.dynbss)
-   *(.bss)
+   *(.bss*)
+   *(.sbss*)
    *(COMMON)
    *(COMMON)
    . = ALIGN(4);
    . = ALIGN(4);
    _ebss = .;
    _ebss = .;

+ 1 - 1
boards.cfg

@@ -280,7 +280,7 @@ M5271EVB                     m68k        mcf52x2     m5271evb            freesca
 M5272C3                      m68k        mcf52x2     m5272c3             freescale
 M5272C3                      m68k        mcf52x2     m5272c3             freescale
 M5275EVB                     m68k        mcf52x2     m5275evb            freescale
 M5275EVB                     m68k        mcf52x2     m5275evb            freescale
 M5282EVB                     m68k        mcf52x2     m5282evb            freescale
 M5282EVB                     m68k        mcf52x2     m5282evb            freescale
-M53017EVB                    m68k        mcf52x2     m53017evb           freescale
+M53017EVB                    m68k        mcf532x     m53017evb           freescale
 EP2500                       m68k        mcf52x2     ep2500              Mercury
 EP2500                       m68k        mcf52x2     ep2500              Mercury
 microblaze-generic           microblaze  microblaze  microblaze-generic  xilinx
 microblaze-generic           microblaze  microblaze  microblaze-generic  xilinx
 dbau1000                     mips        mips32      dbau1x00            -              au1x00      dbau1x00:DBAU1000
 dbau1000                     mips        mips32      dbau1x00            -              au1x00      dbau1x00:DBAU1000

+ 1 - 0
include/configs/M52277EVB.h

@@ -69,6 +69,7 @@
 #define CONFIG_CMD_MEMORY
 #define CONFIG_CMD_MEMORY
 #define CONFIG_CMD_MISC
 #define CONFIG_CMD_MISC
 #undef CONFIG_CMD_NET
 #undef CONFIG_CMD_NET
+#undef CONFIG_CMD_NFS
 #define CONFIG_CMD_REGINFO
 #define CONFIG_CMD_REGINFO
 #undef CONFIG_CMD_USB
 #undef CONFIG_CMD_USB
 #undef CONFIG_CMD_BMP
 #undef CONFIG_CMD_BMP

+ 1 - 0
include/configs/M5253DEMO.h

@@ -95,6 +95,7 @@
 #	define DM9000_IO		CONFIG_DM9000_BASE
 #	define DM9000_IO		CONFIG_DM9000_BASE
 #	define DM9000_DATA		(CONFIG_DM9000_BASE + 4)
 #	define DM9000_DATA		(CONFIG_DM9000_BASE + 4)
 #	undef CONFIG_DM9000_DEBUG
 #	undef CONFIG_DM9000_DEBUG
+#	define CONFIG_DM9000_BYTE_SWAPPED
 
 
 #	define CONFIG_OVERWRITE_ETHADDR_ONCE
 #	define CONFIG_OVERWRITE_ETHADDR_ONCE
 
 

+ 2 - 2
include/configs/M5329EVB.h

@@ -124,8 +124,8 @@
 	"u-boot=u-boot.bin\0"	\
 	"u-boot=u-boot.bin\0"	\
 	"load=tftp ${loadaddr) ${u-boot}\0"	\
 	"load=tftp ${loadaddr) ${u-boot}\0"	\
 	"upd=run load; run prog\0"	\
 	"upd=run load; run prog\0"	\
-	"prog=prot off 0 2ffff;"	\
-	"era 0 2ffff;"	\
+	"prog=prot off 0 3ffff;"	\
+	"era 0 3ffff;"	\
 	"cp.b ${loadaddr} 0 ${filesize};"	\
 	"cp.b ${loadaddr} 0 ${filesize};"	\
 	"save\0"	\
 	"save\0"	\
 	""
 	""

+ 2 - 2
include/configs/M5373EVB.h

@@ -124,8 +124,8 @@
 	"u-boot=u-boot.bin\0"	\
 	"u-boot=u-boot.bin\0"	\
 	"load=tftp ${loadaddr) ${u-boot}\0"	\
 	"load=tftp ${loadaddr) ${u-boot}\0"	\
 	"upd=run load; run prog\0"	\
 	"upd=run load; run prog\0"	\
-	"prog=prot off 0 2ffff;"	\
-	"era 0 2ffff;"	\
+	"prog=prot off 0 3ffff;"	\
+	"era 0 3ffff;"	\
 	"cp.b ${loadaddr} 0 ${filesize};"	\
 	"cp.b ${loadaddr} 0 ${filesize};"	\
 	"save\0"	\
 	"save\0"	\
 	""
 	""

+ 8 - 5
include/configs/M54451EVB.h

@@ -127,7 +127,7 @@
 	"load=tftp ${loadaddr} ${sbfhdr};"	\
 	"load=tftp ${loadaddr} ${sbfhdr};"	\
 	"tftp " MK_STR(CONFIG_SYS_LOAD_ADDR2) " ${uboot} \0"	\
 	"tftp " MK_STR(CONFIG_SYS_LOAD_ADDR2) " ${uboot} \0"	\
 	"upd=run load; run prog\0"		\
 	"upd=run load; run prog\0"		\
-	"prog=sf probe 0:1 10000 1;"		\
+	"prog=sf probe 0:1 1000000 3;"		\
 	"sf erase 0 30000;"			\
 	"sf erase 0 30000;"			\
 	"sf write ${loadaddr} 0 30000;"		\
 	"sf write ${loadaddr} 0 30000;"		\
 	"save\0"				\
 	"save\0"				\
@@ -244,14 +244,16 @@
 #define CONFIG_SYS_MEMTEST_END		((CONFIG_SYS_SDRAM_SIZE - 3) << 20)
 #define CONFIG_SYS_MEMTEST_END		((CONFIG_SYS_SDRAM_SIZE - 3) << 20)
 
 
 #ifdef CONFIG_CF_SBF
 #ifdef CONFIG_CF_SBF
+#	define CONFIG_SERIAL_BOOT
 #	define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_TEXT_BASE + 0x400)
 #	define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_TEXT_BASE + 0x400)
 #else
 #else
 #	define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_FLASH_BASE + 0x400)
 #	define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_FLASH_BASE + 0x400)
 #endif
 #endif
 #define CONFIG_SYS_BOOTPARAMS_LEN	64*1024
 #define CONFIG_SYS_BOOTPARAMS_LEN	64*1024
 #define CONFIG_SYS_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor */
 #define CONFIG_SYS_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor */
-#define CONFIG_SYS_MALLOC_LEN		(128 << 10)	/* Reserve 128 kB for malloc() */
 
 
+/* Reserve 256 kB for malloc() */
+#define CONFIG_SYS_MALLOC_LEN		(256 << 10)
 /*
 /*
  * For booting Linux, the board info and command line data
  * For booting Linux, the board info and command line data
  * have to be in the first 8 MB of memory, since this is
  * have to be in the first 8 MB of memory, since this is
@@ -261,7 +263,8 @@
 #define CONFIG_SYS_BOOTMAPSZ		(CONFIG_SYS_SDRAM_BASE + (CONFIG_SYS_SDRAM_SIZE << 20))
 #define CONFIG_SYS_BOOTMAPSZ		(CONFIG_SYS_SDRAM_BASE + (CONFIG_SYS_SDRAM_SIZE << 20))
 
 
 /* Configuration for environment
 /* Configuration for environment
- * Environment is embedded in u-boot in the second sector of the flash
+ * Environment is not embedded in u-boot. First time runing may have env
+ * crc error warning if there is no correct environment on the flash.
  */
  */
 #if defined(CONFIG_SYS_STMICRO_BOOT)
 #if defined(CONFIG_SYS_STMICRO_BOOT)
 #	define CONFIG_ENV_IS_IN_SPI_FLASH	1
 #	define CONFIG_ENV_IS_IN_SPI_FLASH	1
@@ -271,9 +274,9 @@
 #	define CONFIG_ENV_SECT_SIZE	0x10000
 #	define CONFIG_ENV_SECT_SIZE	0x10000
 #else
 #else
 #	define CONFIG_ENV_IS_IN_FLASH	1
 #	define CONFIG_ENV_IS_IN_FLASH	1
-#	define CONFIG_ENV_ADDR		(CONFIG_SYS_FLASH_BASE + 0x8000)
+#	define CONFIG_ENV_ADDR		(CONFIG_SYS_FLASH_BASE + 0x40000)
 #	define CONFIG_ENV_SIZE		0x2000
 #	define CONFIG_ENV_SIZE		0x2000
-#	define CONFIG_ENV_SECT_SIZE	0x8000
+#	define CONFIG_ENV_SECT_SIZE	0x20000
 #endif
 #endif
 #undef CONFIG_ENV_OVERWRITE
 #undef CONFIG_ENV_OVERWRITE
 
 

+ 10 - 5
include/configs/M54455EVB.h

@@ -134,7 +134,7 @@
 	"load=tftp ${loadaddr} ${sbfhdr};"	\
 	"load=tftp ${loadaddr} ${sbfhdr};"	\
 	"tftp " MK_STR(CONFIG_SYS_LOAD_ADDR2) " ${uboot} \0"	\
 	"tftp " MK_STR(CONFIG_SYS_LOAD_ADDR2) " ${uboot} \0"	\
 	"upd=run load; run prog\0"		\
 	"upd=run load; run prog\0"		\
-	"prog=sf probe 0:1 10000 1;"		\
+	"prog=sf probe 0:1 1000000 3;"		\
 	"sf erase 0 30000;"			\
 	"sf erase 0 30000;"			\
 	"sf write ${loadaddr} 0 0x30000;"	\
 	"sf write ${loadaddr} 0 0x30000;"	\
 	"save\0"				\
 	"save\0"				\
@@ -304,13 +304,16 @@
 #define CONFIG_SYS_MEMTEST_END		((CONFIG_SYS_SDRAM_SIZE - 3) << 20)
 #define CONFIG_SYS_MEMTEST_END		((CONFIG_SYS_SDRAM_SIZE - 3) << 20)
 
 
 #ifdef CONFIG_CF_SBF
 #ifdef CONFIG_CF_SBF
+#	define CONFIG_SERIAL_BOOT
 #	define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_TEXT_BASE + 0x400)
 #	define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_TEXT_BASE + 0x400)
 #else
 #else
 #	define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_FLASH_BASE + 0x400)
 #	define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_FLASH_BASE + 0x400)
 #endif
 #endif
 #define CONFIG_SYS_BOOTPARAMS_LEN	64*1024
 #define CONFIG_SYS_BOOTPARAMS_LEN	64*1024
 #define CONFIG_SYS_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor */
 #define CONFIG_SYS_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor */
-#define CONFIG_SYS_MALLOC_LEN		(128 << 10)	/* Reserve 128 kB for malloc() */
+
+/* Reserve 256 kB for malloc() */
+#define CONFIG_SYS_MALLOC_LEN		(256 << 10)
 
 
 /*
 /*
  * For booting Linux, the board info and command line data
  * For booting Linux, the board info and command line data
@@ -322,7 +325,8 @@
 
 
 /*
 /*
  * Configuration for environment
  * Configuration for environment
- * Environment is embedded in u-boot in the second sector of the flash
+ * Environment is not embedded in u-boot. First time runing may have env
+ * crc error warning if there is no correct environment on the flash.
  */
  */
 #ifdef CONFIG_CF_SBF
 #ifdef CONFIG_CF_SBF
 #	define CONFIG_ENV_IS_IN_SPI_FLASH
 #	define CONFIG_ENV_IS_IN_SPI_FLASH
@@ -346,8 +350,9 @@
 #	define CONFIG_SYS_FLASH_BASE		CONFIG_SYS_CS0_BASE
 #	define CONFIG_SYS_FLASH_BASE		CONFIG_SYS_CS0_BASE
 #	define CONFIG_SYS_FLASH0_BASE		CONFIG_SYS_CS0_BASE
 #	define CONFIG_SYS_FLASH0_BASE		CONFIG_SYS_CS0_BASE
 #	define CONFIG_SYS_FLASH1_BASE		CONFIG_SYS_CS1_BASE
 #	define CONFIG_SYS_FLASH1_BASE		CONFIG_SYS_CS1_BASE
-#	define CONFIG_ENV_ADDR		(CONFIG_SYS_FLASH_BASE + 0x4000)
-#	define CONFIG_ENV_SECT_SIZE	0x2000
+#	define CONFIG_ENV_ADDR		(CONFIG_SYS_FLASH_BASE + 0x40000)
+#	define CONFIG_ENV_SIZE		0x2000
+#	define CONFIG_ENV_SECT_SIZE	0x10000
 #endif
 #endif
 #ifdef CONFIG_SYS_INTEL_BOOT
 #ifdef CONFIG_SYS_INTEL_BOOT
 #	define CONFIG_SYS_FLASH_BASE		CONFIG_SYS_CS0_BASE
 #	define CONFIG_SYS_FLASH_BASE		CONFIG_SYS_CS0_BASE

+ 8 - 5
include/configs/M5475EVB.h

@@ -171,7 +171,7 @@
 	"load=tftp ${loadaddr) ${u-boot}\0"	\
 	"load=tftp ${loadaddr) ${u-boot}\0"	\
 	"upd=run load; run prog\0"		\
 	"upd=run load; run prog\0"		\
 	"prog=prot off bank 1;"			\
 	"prog=prot off bank 1;"			\
-	"era ff800000 ff82ffff;"		\
+	"era ff800000 ff83ffff;"		\
 	"cp.b ${loadaddr} ff800000 ${filesize};"\
 	"cp.b ${loadaddr} ff800000 ${filesize};"\
 	"save\0"				\
 	"save\0"				\
 	""
 	""
@@ -243,8 +243,9 @@
 #define CONFIG_SYS_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor */
 #define CONFIG_SYS_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor */
 
 
 #define CONFIG_SYS_BOOTPARAMS_LEN	64*1024
 #define CONFIG_SYS_BOOTPARAMS_LEN	64*1024
-#define CONFIG_SYS_MALLOC_LEN		(128 << 10)	/* Reserve 128 kB for malloc() */
 
 
+/* Reserve 256 kB for malloc() */
+#define CONFIG_SYS_MALLOC_LEN		(256 << 10)
 /*
 /*
  * For booting Linux, the board info and command line data
  * For booting Linux, the board info and command line data
  * have to be in the first 8 MB of memory, since this is
  * have to be in the first 8 MB of memory, since this is
@@ -274,10 +275,12 @@
 #endif
 #endif
 
 
 /* Configuration for environment
 /* Configuration for environment
- * Environment is embedded in u-boot in the second sector of the flash
+ * Environment is not embedded in u-boot but at offset 0x40000 on the flash.
+ * First time runing may have env crc error warning if there is
+ * no correct environment on the flash.
  */
  */
-#define CONFIG_ENV_OFFSET		0x2000
-#define CONFIG_ENV_SECT_SIZE	0x2000
+#define CONFIG_ENV_OFFSET		0x40000
+#define CONFIG_ENV_SECT_SIZE	0x10000
 #define CONFIG_ENV_IS_IN_FLASH	1
 #define CONFIG_ENV_IS_IN_FLASH	1
 
 
 /*-----------------------------------------------------------------------
 /*-----------------------------------------------------------------------

+ 7 - 5
include/configs/M5485EVB.h

@@ -157,7 +157,7 @@
 	"load=tftp ${loadaddr) ${u-boot}\0"	\
 	"load=tftp ${loadaddr) ${u-boot}\0"	\
 	"upd=run load; run prog\0"		\
 	"upd=run load; run prog\0"		\
 	"prog=prot off bank 1;"			\
 	"prog=prot off bank 1;"			\
-	"era ff800000 ff82ffff;"		\
+	"era ff800000 ff83ffff;"		\
 	"cp.b ${loadaddr} ff800000 ${filesize};"\
 	"cp.b ${loadaddr} ff800000 ${filesize};"\
 	"save\0"				\
 	"save\0"				\
 	""
 	""
@@ -229,8 +229,9 @@
 #define CONFIG_SYS_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor */
 #define CONFIG_SYS_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor */
 
 
 #define CONFIG_SYS_BOOTPARAMS_LEN	64*1024
 #define CONFIG_SYS_BOOTPARAMS_LEN	64*1024
-#define CONFIG_SYS_MALLOC_LEN		(128 << 10)	/* Reserve 128 kB for malloc() */
 
 
+/* Reserve 256 kB for malloc() */
+#define CONFIG_SYS_MALLOC_LEN		(256 << 10)
 /*
 /*
  * For booting Linux, the board info and command line data
  * For booting Linux, the board info and command line data
  * have to be in the first 8 MB of memory, since this is
  * have to be in the first 8 MB of memory, since this is
@@ -260,10 +261,11 @@
 #endif
 #endif
 
 
 /* Configuration for environment
 /* Configuration for environment
- * Environment is embedded in u-boot in the second sector of the flash
+ * Environment is not embedded in u-boot. First time runing may have env
+ * crc error warning if there is no correct environment on the flash.
  */
  */
-#define CONFIG_ENV_OFFSET		0x2000
-#define CONFIG_ENV_SECT_SIZE	0x2000
+#define CONFIG_ENV_OFFSET		0x40000
+#define CONFIG_ENV_SECT_SIZE	0x10000
 #define CONFIG_ENV_IS_IN_FLASH	1
 #define CONFIG_ENV_IS_IN_FLASH	1
 
 
 /*-----------------------------------------------------------------------
 /*-----------------------------------------------------------------------