[U-Boot] [PATCH] Blackfin: unify u-boot linker scripts

Mike Frysinger vapier at gentoo.org
Sun Jun 14 13:07:08 CEST 2009


All the Blackfin linker scripts were duplicated across the board dirs with
no difference save from the semi-often used ENV_IS_EMBEDDED option.  So
unify all of them in the lib_blackfin/ dir and for the few boards that
need to embedded the environment directly, add a LDS_BOARD_TEXT define for
them to customize via their board config file.  This is much simpler than
forcing them to duplicate the rest of the linker script.

Signed-off-by: Mike Frysinger <vapier at gentoo.org>
---
note: i've filtered the deleted u-boot.lds.S files from the diff because
that takes the output from ~40k to ~120k, and it's just useless noise here.
you can see in the diffstat all the linker scripts that were punted.

 Makefile                          |    6 +-
 blackfin_config.mk                |    4 +
 board/bf518f-ezbrd/.gitignore     |    1 -
 board/bf518f-ezbrd/Makefile       |    5 +-
 board/bf518f-ezbrd/config.mk      |    2 -
 board/bf518f-ezbrd/u-boot.lds.S   |  124 ------------------------------
 board/bf526-ezbrd/.gitignore      |    1 -
 board/bf526-ezbrd/Makefile        |    5 +-
 board/bf526-ezbrd/config.mk       |    2 -
 board/bf526-ezbrd/u-boot.lds.S    |  124 ------------------------------
 board/bf527-ezkit/.gitignore      |    1 -
 board/bf527-ezkit/Makefile        |    5 +-
 board/bf527-ezkit/config.mk       |    2 -
 board/bf527-ezkit/u-boot.lds.S    |  124 ------------------------------
 board/bf533-ezkit/.gitignore      |    1 -
 board/bf533-ezkit/Makefile        |    5 +-
 board/bf533-ezkit/config.mk       |    2 -
 board/bf533-ezkit/u-boot.lds.S    |  145 -----------------------------------
 board/bf533-stamp/.gitignore      |    1 -
 board/bf533-stamp/Makefile        |    5 +-
 board/bf533-stamp/config.mk       |    2 -
 board/bf533-stamp/u-boot.lds.S    |  143 ----------------------------------
 board/bf537-minotaur/.gitignore   |    1 -
 board/bf537-minotaur/Makefile     |    5 +-
 board/bf537-minotaur/config.mk    |    2 -
 board/bf537-minotaur/u-boot.lds.S |  143 ----------------------------------
 board/bf537-pnav/.gitignore       |    1 -
 board/bf537-pnav/Makefile         |    5 +-
 board/bf537-pnav/config.mk        |    2 -
 board/bf537-pnav/u-boot.lds.S     |  143 ----------------------------------
 board/bf537-srv1/.gitignore       |    1 -
 board/bf537-srv1/Makefile         |    5 +-
 board/bf537-srv1/config.mk        |    2 -
 board/bf537-srv1/u-boot.lds.S     |  143 ----------------------------------
 board/bf537-stamp/.gitignore      |    1 -
 board/bf537-stamp/Makefile        |    5 +-
 board/bf537-stamp/config.mk       |    2 -
 board/bf537-stamp/u-boot.lds.S    |  143 ----------------------------------
 board/bf538f-ezkit/.gitignore     |    1 -
 board/bf538f-ezkit/Makefile       |    5 +-
 board/bf538f-ezkit/config.mk      |    2 -
 board/bf538f-ezkit/u-boot.lds.S   |  143 ----------------------------------
 board/bf548-ezkit/.gitignore      |    1 -
 board/bf548-ezkit/Makefile        |    5 +-
 board/bf548-ezkit/config.mk       |    2 -
 board/bf548-ezkit/u-boot.lds.S    |  124 ------------------------------
 board/bf561-ezkit/.gitignore      |    1 -
 board/bf561-ezkit/Makefile        |    5 +-
 board/bf561-ezkit/config.mk       |    2 -
 board/bf561-ezkit/u-boot.lds.S    |  152 -------------------------------------
 board/blackstamp/.gitignore       |    1 -
 board/blackstamp/Makefile         |    5 +-
 board/blackstamp/config.mk        |    2 -
 board/blackstamp/u-boot.lds.S     |  143 ----------------------------------
 board/cm-bf527/.gitignore         |    1 -
 board/cm-bf527/Makefile           |    5 +-
 board/cm-bf527/config.mk          |    2 -
 board/cm-bf527/u-boot.lds.S       |  124 ------------------------------
 board/cm-bf533/.gitignore         |    1 -
 board/cm-bf533/Makefile           |    5 +-
 board/cm-bf533/config.mk          |    2 -
 board/cm-bf533/u-boot.lds.S       |  143 ----------------------------------
 board/cm-bf537e/.gitignore        |    1 -
 board/cm-bf537e/Makefile          |    5 +-
 board/cm-bf537e/config.mk         |    2 -
 board/cm-bf537e/u-boot.lds.S      |  143 ----------------------------------
 board/cm-bf548/.gitignore         |    1 -
 board/cm-bf548/Makefile           |    5 +-
 board/cm-bf548/config.mk          |    2 -
 board/cm-bf548/u-boot.lds.S       |  124 ------------------------------
 board/cm-bf561/.gitignore         |    1 -
 board/cm-bf561/Makefile           |    5 +-
 board/cm-bf561/config.mk          |    2 -
 board/cm-bf561/u-boot.lds.S       |  150 ------------------------------------
 board/ibf-dsp561/.gitignore       |    1 -
 board/ibf-dsp561/Makefile         |    5 +-
 board/ibf-dsp561/config.mk        |    2 -
 board/ibf-dsp561/u-boot.lds.S     |  152 -------------------------------------
 board/tcm-bf537/.gitignore        |    1 -
 board/tcm-bf537/Makefile          |    5 +-
 board/tcm-bf537/config.mk         |    2 -
 board/tcm-bf537/u-boot.lds.S      |  143 ----------------------------------
 include/configs/bf533-stamp.h     |   15 ++++
 include/configs/bf537-pnav.h      |   15 ++++
 include/configs/bf537-stamp.h     |   15 ++++
 include/configs/bf538f-ezkit.h    |   15 ++++
 include/configs/bf561-ezkit.h     |   17 ++++
 include/configs/cm-bf537e.h       |   15 ++++
 include/configs/ibf-dsp561.h      |   17 ++++
 include/configs/tcm-bf537.h       |   15 ++++
 lib_blackfin/.gitignore           |    1 +
 lib_blackfin/Makefile             |    5 +-
 lib_blackfin/u-boot.lds.S         |  132 ++++++++++++++++++++++++++++++++
 93 files changed, 286 insertions(+), 2919 deletions(-)
 delete mode 100644 board/bf518f-ezbrd/.gitignore
 delete mode 100644 board/bf518f-ezbrd/u-boot.lds.S
 delete mode 100644 board/bf526-ezbrd/.gitignore
 delete mode 100644 board/bf526-ezbrd/u-boot.lds.S
 delete mode 100644 board/bf527-ezkit/.gitignore
 delete mode 100644 board/bf527-ezkit/u-boot.lds.S
 delete mode 100644 board/bf533-ezkit/.gitignore
 delete mode 100644 board/bf533-ezkit/u-boot.lds.S
 delete mode 100644 board/bf533-stamp/.gitignore
 delete mode 100644 board/bf533-stamp/u-boot.lds.S
 delete mode 100644 board/bf537-minotaur/.gitignore
 delete mode 100644 board/bf537-minotaur/u-boot.lds.S
 delete mode 100644 board/bf537-pnav/.gitignore
 delete mode 100644 board/bf537-pnav/u-boot.lds.S
 delete mode 100644 board/bf537-srv1/.gitignore
 delete mode 100644 board/bf537-srv1/u-boot.lds.S
 delete mode 100644 board/bf537-stamp/.gitignore
 delete mode 100644 board/bf537-stamp/u-boot.lds.S
 delete mode 100644 board/bf538f-ezkit/.gitignore
 delete mode 100644 board/bf538f-ezkit/u-boot.lds.S
 delete mode 100644 board/bf548-ezkit/.gitignore
 delete mode 100644 board/bf548-ezkit/u-boot.lds.S
 delete mode 100644 board/bf561-ezkit/.gitignore
 delete mode 100644 board/bf561-ezkit/u-boot.lds.S
 delete mode 100644 board/blackstamp/.gitignore
 delete mode 100644 board/blackstamp/u-boot.lds.S
 delete mode 100644 board/cm-bf527/.gitignore
 delete mode 100644 board/cm-bf527/u-boot.lds.S
 delete mode 100644 board/cm-bf533/.gitignore
 delete mode 100644 board/cm-bf533/u-boot.lds.S
 delete mode 100644 board/cm-bf537e/.gitignore
 delete mode 100644 board/cm-bf537e/u-boot.lds.S
 delete mode 100644 board/cm-bf548/.gitignore
 delete mode 100644 board/cm-bf548/u-boot.lds.S
 delete mode 100644 board/cm-bf561/.gitignore
 delete mode 100644 board/cm-bf561/u-boot.lds.S
 delete mode 100644 board/ibf-dsp561/.gitignore
 delete mode 100644 board/ibf-dsp561/u-boot.lds.S
 delete mode 100644 board/tcm-bf537/.gitignore
 delete mode 100644 board/tcm-bf537/u-boot.lds.S
 create mode 100644 lib_blackfin/.gitignore
 create mode 100644 lib_blackfin/u-boot.lds.S

diff --git a/Makefile b/Makefile
index 8fe6bd4..aa9cb8c 100644
--- a/Makefile
+++ b/Makefile
@@ -3562,11 +3562,7 @@ clean:
 	       $(obj)board/netstar/{eeprom,crcek,crcit,*.srec,*.bin}	  \
 	       $(obj)board/trab/trab_fkt   $(obj)board/voiceblue/eeprom   \
 	       $(obj)board/armltd/{integratorap,integratorcp}/u-boot.lds  \
-	       $(obj)board/bf5{18f,26,27,33,38f,48,61}-ez{brd,kit}/u-boot.lds \
-	       $(obj)board/bf5{33,37}-stamp/u-boot.lds			  \
-	       $(obj)board/{bf537-{minotaur,pnav,srv1},blackstamp}/u-boot.lds \
-	       $(obj)board/{,t}cm-bf5{27,33,37e,48,61}/u-boot.lds	  \
-	       $(obj)board/ibf-dsp561/u-boot.lds			  \
+	       $(obj)lib_blackfin/u-boot.lds				  \
 	       $(obj)cpu/blackfin/bootrom-asm-offsets.[chs]
 	@rm -f $(obj)include/bmp_logo.h
 	@rm -f $(obj)nand_spl/{u-boot-spl,u-boot-spl.map,System.map}
diff --git a/blackfin_config.mk b/blackfin_config.mk
index 00e3bfc..989e976 100644
--- a/blackfin_config.mk
+++ b/blackfin_config.mk
@@ -56,3 +56,7 @@ LDR_FLAGS += --quiet
 endif
 
 LDR_FLAGS += $(LDR_FLAGS-y)
+
+ifeq ($(wildcard $(TOPDIR)/board/$(BOARD)/u-boot.lds*),)
+LDSCRIPT = $(obj)lib_$(ARCH)/u-boot.lds
+endif
diff --git a/board/bf518f-ezbrd/Makefile b/board/bf518f-ezbrd/Makefile
index 1b21728..f2bd2c2 100644
--- a/board/bf518f-ezbrd/Makefile
+++ b/board/bf518f-ezbrd/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/bf518f-ezbrd/config.mk b/board/bf518f-ezbrd/config.mk
index f4a5a80..eaa09ff 100644
--- a/board/bf518f-ezbrd/config.mk
+++ b/board/bf518f-ezbrd/config.mk
@@ -26,7 +26,5 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/bf526-ezbrd/Makefile b/board/bf526-ezbrd/Makefile
index 88846ba..a9ff760 100644
--- a/board/bf526-ezbrd/Makefile
+++ b/board/bf526-ezbrd/Makefile
@@ -36,12 +36,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/bf526-ezbrd/config.mk b/board/bf526-ezbrd/config.mk
index f4a5a80..eaa09ff 100644
--- a/board/bf526-ezbrd/config.mk
+++ b/board/bf526-ezbrd/config.mk
@@ -26,7 +26,5 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/bf527-ezkit/Makefile b/board/bf527-ezkit/Makefile
index c2b98ec..1a2f4b1 100644
--- a/board/bf527-ezkit/Makefile
+++ b/board/bf527-ezkit/Makefile
@@ -36,12 +36,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/bf527-ezkit/config.mk b/board/bf527-ezkit/config.mk
index f4a5a80..eaa09ff 100644
--- a/board/bf527-ezkit/config.mk
+++ b/board/bf527-ezkit/config.mk
@@ -26,7 +26,5 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/bf533-ezkit/Makefile b/board/bf533-ezkit/Makefile
index 1260277..487b737 100644
--- a/board/bf533-ezkit/Makefile
+++ b/board/bf533-ezkit/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/bf533-ezkit/config.mk b/board/bf533-ezkit/config.mk
index c8b9fb8..9847924 100644
--- a/board/bf533-ezkit/config.mk
+++ b/board/bf533-ezkit/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/bf533-stamp/Makefile b/board/bf533-stamp/Makefile
index 0f52837..dbba12b 100644
--- a/board/bf533-stamp/Makefile
+++ b/board/bf533-stamp/Makefile
@@ -36,12 +36,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/bf533-stamp/config.mk b/board/bf533-stamp/config.mk
index c8b9fb8..9847924 100644
--- a/board/bf533-stamp/config.mk
+++ b/board/bf533-stamp/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/bf537-minotaur/Makefile b/board/bf537-minotaur/Makefile
index 1b21728..f2bd2c2 100644
--- a/board/bf537-minotaur/Makefile
+++ b/board/bf537-minotaur/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/bf537-minotaur/config.mk b/board/bf537-minotaur/config.mk
index feafcef..d830843 100644
--- a/board/bf537-minotaur/config.mk
+++ b/board/bf537-minotaur/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_UART       := --port g --gpio 6
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/bf537-pnav/Makefile b/board/bf537-pnav/Makefile
index 1b21728..f2bd2c2 100644
--- a/board/bf537-pnav/Makefile
+++ b/board/bf537-pnav/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/bf537-pnav/config.mk b/board/bf537-pnav/config.mk
index f4a5a80..eaa09ff 100644
--- a/board/bf537-pnav/config.mk
+++ b/board/bf537-pnav/config.mk
@@ -26,7 +26,5 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/bf537-srv1/Makefile b/board/bf537-srv1/Makefile
index 1b21728..f2bd2c2 100644
--- a/board/bf537-srv1/Makefile
+++ b/board/bf537-srv1/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/bf537-srv1/config.mk b/board/bf537-srv1/config.mk
index feafcef..d830843 100644
--- a/board/bf537-srv1/config.mk
+++ b/board/bf537-srv1/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_UART       := --port g --gpio 6
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/bf537-stamp/Makefile b/board/bf537-stamp/Makefile
index 1dbf406..4c9e015 100644
--- a/board/bf537-stamp/Makefile
+++ b/board/bf537-stamp/Makefile
@@ -39,12 +39,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/bf537-stamp/config.mk b/board/bf537-stamp/config.mk
index 719b97e..d9e884e 100644
--- a/board/bf537-stamp/config.mk
+++ b/board/bf537-stamp/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 LDR_FLAGS-BFIN_BOOT_UART := --port g --gpio 6
diff --git a/board/bf538f-ezkit/Makefile b/board/bf538f-ezkit/Makefile
index 1b21728..f2bd2c2 100644
--- a/board/bf538f-ezkit/Makefile
+++ b/board/bf538f-ezkit/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/bf538f-ezkit/config.mk b/board/bf538f-ezkit/config.mk
index c8b9fb8..9847924 100644
--- a/board/bf538f-ezkit/config.mk
+++ b/board/bf538f-ezkit/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/bf548-ezkit/Makefile b/board/bf548-ezkit/Makefile
index c2b98ec..1a2f4b1 100644
--- a/board/bf548-ezkit/Makefile
+++ b/board/bf548-ezkit/Makefile
@@ -36,12 +36,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/bf548-ezkit/config.mk b/board/bf548-ezkit/config.mk
index 8b471f6..95ab6b3 100644
--- a/board/bf548-ezkit/config.mk
+++ b/board/bf548-ezkit/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA       := --dma 6
 LDR_FLAGS-BFIN_BOOT_FIFO       := --dma 1
diff --git a/board/bf561-ezkit/Makefile b/board/bf561-ezkit/Makefile
index daebb74..bfeaf79 100644
--- a/board/bf561-ezkit/Makefile
+++ b/board/bf561-ezkit/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/bf561-ezkit/config.mk b/board/bf561-ezkit/config.mk
index 710809a..77c888b 100644
--- a/board/bf561-ezkit/config.mk
+++ b/board/bf561-ezkit/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/blackstamp/Makefile b/board/blackstamp/Makefile
index 1b21728..f2bd2c2 100644
--- a/board/blackstamp/Makefile
+++ b/board/blackstamp/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/blackstamp/config.mk b/board/blackstamp/config.mk
index f4a5a80..eaa09ff 100644
--- a/board/blackstamp/config.mk
+++ b/board/blackstamp/config.mk
@@ -26,7 +26,5 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/cm-bf527/Makefile b/board/cm-bf527/Makefile
index 07d285e..c2cd244 100644
--- a/board/cm-bf527/Makefile
+++ b/board/cm-bf527/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/cm-bf527/config.mk b/board/cm-bf527/config.mk
index f4a5a80..eaa09ff 100644
--- a/board/cm-bf527/config.mk
+++ b/board/cm-bf527/config.mk
@@ -26,7 +26,5 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/cm-bf533/Makefile b/board/cm-bf533/Makefile
index 1b21728..f2bd2c2 100644
--- a/board/cm-bf533/Makefile
+++ b/board/cm-bf533/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/cm-bf533/config.mk b/board/cm-bf533/config.mk
index c8b9fb8..9847924 100644
--- a/board/cm-bf533/config.mk
+++ b/board/cm-bf533/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/cm-bf537e/Makefile b/board/cm-bf537e/Makefile
index f8c270e..3812ba1 100644
--- a/board/cm-bf537e/Makefile
+++ b/board/cm-bf537e/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/cm-bf537e/config.mk b/board/cm-bf537e/config.mk
index c8b9fb8..9847924 100644
--- a/board/cm-bf537e/config.mk
+++ b/board/cm-bf537e/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/cm-bf548/Makefile b/board/cm-bf548/Makefile
index c2b98ec..1a2f4b1 100644
--- a/board/cm-bf548/Makefile
+++ b/board/cm-bf548/Makefile
@@ -36,12 +36,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/cm-bf548/config.mk b/board/cm-bf548/config.mk
index 0dbce93..396f20a 100644
--- a/board/cm-bf548/config.mk
+++ b/board/cm-bf548/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA       := --dma 6
 LDR_FLAGS-BFIN_BOOT_FIFO       := --dma 1
diff --git a/board/cm-bf561/Makefile b/board/cm-bf561/Makefile
index 1b21728..f2bd2c2 100644
--- a/board/cm-bf561/Makefile
+++ b/board/cm-bf561/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/cm-bf561/config.mk b/board/cm-bf561/config.mk
index 710809a..77c888b 100644
--- a/board/cm-bf561/config.mk
+++ b/board/cm-bf561/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/ibf-dsp561/Makefile b/board/ibf-dsp561/Makefile
index daebb74..bfeaf79 100644
--- a/board/ibf-dsp561/Makefile
+++ b/board/ibf-dsp561/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/ibf-dsp561/config.mk b/board/ibf-dsp561/config.mk
index 710809a..77c888b 100644
--- a/board/ibf-dsp561/config.mk
+++ b/board/ibf-dsp561/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/board/tcm-bf537/Makefile b/board/tcm-bf537/Makefile
index f8c270e..3812ba1 100644
--- a/board/tcm-bf537/Makefile
+++ b/board/tcm-bf537/Makefile
@@ -35,12 +35,9 @@ SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS-y))
 SOBJS	:= $(addprefix $(obj),$(SOBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS) $(SOBJS) $(obj)u-boot.lds
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
 	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
 
-$(obj)u-boot.lds: u-boot.lds.S
-	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
-
 clean:
 	rm -f $(SOBJS) $(OBJS)
 
diff --git a/board/tcm-bf537/config.mk b/board/tcm-bf537/config.mk
index c8b9fb8..9847924 100644
--- a/board/tcm-bf537/config.mk
+++ b/board/tcm-bf537/config.mk
@@ -26,8 +26,6 @@
 # This is not actually used for Blackfin boards so do not change it
 #TEXT_BASE = do-not-use-me
 
-LDSCRIPT = $(obj)board/$(BOARDDIR)/u-boot.lds
-
 # Set some default LDR flags based on boot mode.
 LDR_FLAGS-BFIN_BOOT_PARA := --bits 16 --dma 8
 LDR_FLAGS += $(LDR_FLAGS-$(CONFIG_BFIN_BOOT_MODE))
diff --git a/include/configs/bf533-stamp.h b/include/configs/bf533-stamp.h
index 242bf5a..579540e 100644
--- a/include/configs/bf533-stamp.h
+++ b/include/configs/bf533-stamp.h
@@ -117,6 +117,21 @@
 #else
 #define ENV_IS_EMBEDDED_CUSTOM
 #endif
+#ifdef ENV_IS_EMBEDDED
+/* WARNING - the following is hand-optimized to fit within
+ * the sector before the environment sector. If it throws
+ * an error during compilation remove an object here to get
+ * it linked after the configuration sector.
+ */
+# define LDS_BOARD_TEXT \
+	cpu/blackfin/traps.o		(.text .text.*); \
+	cpu/blackfin/interrupt.o	(.text .text.*); \
+	cpu/blackfin/serial.o		(.text .text.*); \
+	common/dlmalloc.o		(.text .text.*); \
+	lib_generic/crc32.o		(.text .text.*); \
+	. = DEFINED(env_offset) ? env_offset : .; \
+	common/env_embedded.o		(.text .text.*);
+#endif
 
 
 /*
diff --git a/include/configs/bf537-pnav.h b/include/configs/bf537-pnav.h
index c8a59ab..284c7fc 100644
--- a/include/configs/bf537-pnav.h
+++ b/include/configs/bf537-pnav.h
@@ -105,6 +105,21 @@
 #endif
 #define CONFIG_ENV_SIZE		0x1000
 #define CONFIG_ENV_SECT_SIZE	0x2000
+#ifdef ENV_IS_EMBEDDED
+/* WARNING - the following is hand-optimized to fit within
+ * the sector before the environment sector. If it throws
+ * an error during compilation remove an object here to get
+ * it linked after the configuration sector.
+ */
+# define LDS_BOARD_TEXT \
+	cpu/blackfin/traps.o		(.text .text.*); \
+	cpu/blackfin/interrupt.o	(.text .text.*); \
+	cpu/blackfin/serial.o		(.text .text.*); \
+	common/dlmalloc.o		(.text .text.*); \
+	lib_generic/crc32.o		(.text .text.*); \
+	. = DEFINED(env_offset) ? env_offset : .; \
+	common/env_embedded.o		(.text .text.*);
+#endif
 
 
 /*
diff --git a/include/configs/bf537-stamp.h b/include/configs/bf537-stamp.h
index a8c5b91..e883f2e 100644
--- a/include/configs/bf537-stamp.h
+++ b/include/configs/bf537-stamp.h
@@ -115,6 +115,21 @@
 #else
 #define ENV_IS_EMBEDDED_CUSTOM
 #endif
+#ifdef ENV_IS_EMBEDDED
+/* WARNING - the following is hand-optimized to fit within
+ * the sector before the environment sector. If it throws
+ * an error during compilation remove an object here to get
+ * it linked after the configuration sector.
+ */
+# define LDS_BOARD_TEXT \
+	cpu/blackfin/traps.o		(.text .text.*); \
+	cpu/blackfin/interrupt.o	(.text .text.*); \
+	cpu/blackfin/serial.o		(.text .text.*); \
+	common/dlmalloc.o		(.text .text.*); \
+	lib_generic/crc32.o		(.text .text.*); \
+	. = DEFINED(env_offset) ? env_offset : .; \
+	common/env_embedded.o		(.text .text.*);
+#endif
 
 
 /*
diff --git a/include/configs/bf538f-ezkit.h b/include/configs/bf538f-ezkit.h
index f719acc..91622e3 100644
--- a/include/configs/bf538f-ezkit.h
+++ b/include/configs/bf538f-ezkit.h
@@ -111,6 +111,21 @@
 #else
 #define ENV_IS_EMBEDDED_CUSTOM
 #endif
+#ifdef ENV_IS_EMBEDDED
+/* WARNING - the following is hand-optimized to fit within
+ * the sector before the environment sector. If it throws
+ * an error during compilation remove an object here to get
+ * it linked after the configuration sector.
+ */
+# define LDS_BOARD_TEXT \
+	cpu/blackfin/traps.o		(.text .text.*); \
+	cpu/blackfin/interrupt.o	(.text .text.*); \
+	cpu/blackfin/serial.o		(.text .text.*); \
+	common/dlmalloc.o		(.text .text.*); \
+	lib_generic/crc32.o		(.text .text.*); \
+	. = DEFINED(env_offset) ? env_offset : .; \
+	common/env_embedded.o		(.text .text.*);
+#endif
 
 
 /*
diff --git a/include/configs/bf561-ezkit.h b/include/configs/bf561-ezkit.h
index e7cfc8a..4779a97 100644
--- a/include/configs/bf561-ezkit.h
+++ b/include/configs/bf561-ezkit.h
@@ -88,6 +88,23 @@
 #else
 #define ENV_IS_EMBEDDED_CUSTOM
 #endif
+#ifdef ENV_IS_EMBEDDED
+/* WARNING - the following is hand-optimized to fit within
+ * the sector before the environment sector. If it throws
+ * an error during compilation remove an object here to get
+ * it linked after the configuration sector.
+ */
+# define LDS_BOARD_TEXT \
+	cpu/blackfin/traps.o		(.text .text.*); \
+	cpu/blackfin/interrupt.o	(.text .text.*); \
+	cpu/blackfin/serial.o		(.text .text.*); \
+	common/dlmalloc.o		(.text .text.*); \
+	lib_generic/crc32.o		(.text .text.*); \
+	lib_generic/zlib.o		(.text .text.*); \
+	board/bf561-ezkit/bf561-ezkit.o	(.text .text.*); \
+	. = DEFINED(env_offset) ? env_offset : .; \
+	common/env_embedded.o		(.text .text.*);
+#endif
 
 
 /*
diff --git a/include/configs/cm-bf537e.h b/include/configs/cm-bf537e.h
index 65604ed..021b631 100644
--- a/include/configs/cm-bf537e.h
+++ b/include/configs/cm-bf537e.h
@@ -94,6 +94,21 @@
 #else
 #define ENV_IS_EMBEDDED_CUSTOM
 #endif
+#ifdef ENV_IS_EMBEDDED
+/* WARNING - the following is hand-optimized to fit within
+ * the sector before the environment sector. If it throws
+ * an error during compilation remove an object here to get
+ * it linked after the configuration sector.
+ */
+# define LDS_BOARD_TEXT \
+	cpu/blackfin/traps.o		(.text .text.*); \
+	cpu/blackfin/interrupt.o	(.text .text.*); \
+	cpu/blackfin/serial.o		(.text .text.*); \
+	common/dlmalloc.o		(.text .text.*); \
+	lib_generic/crc32.o		(.text .text.*); \
+	. = DEFINED(env_offset) ? env_offset : .; \
+	common/env_embedded.o		(.text .text.*);
+#endif
 
 
 /*
diff --git a/include/configs/ibf-dsp561.h b/include/configs/ibf-dsp561.h
index 7738742..066859f 100644
--- a/include/configs/ibf-dsp561.h
+++ b/include/configs/ibf-dsp561.h
@@ -77,6 +77,23 @@
 #else
 #define ENV_IS_EMBEDDED_CUSTOM
 #endif
+#ifdef ENV_IS_EMBEDDED
+/* WARNING - the following is hand-optimized to fit within
+ * the sector before the environment sector. If it throws
+ * an error during compilation remove an object here to get
+ * it linked after the configuration sector.
+ */
+# define LDS_BOARD_TEXT \
+	cpu/blackfin/traps.o		(.text .text.*); \
+	cpu/blackfin/interrupt.o	(.text .text.*); \
+	cpu/blackfin/serial.o		(.text .text.*); \
+	common/dlmalloc.o		(.text .text.*); \
+	lib_generic/crc32.o		(.text .text.*); \
+	lib_generic/zlib.o		(.text .text.*); \
+	board/ibf-dsp561/ibf-dsp561.o	(.text .text.*); \
+	. = DEFINED(env_offset) ? env_offset : .; \
+	common/env_embedded.o		(.text .text.*);
+#endif
 
 
 /*
diff --git a/include/configs/tcm-bf537.h b/include/configs/tcm-bf537.h
index 31fe61a..9794e1b 100644
--- a/include/configs/tcm-bf537.h
+++ b/include/configs/tcm-bf537.h
@@ -95,6 +95,21 @@
 #else
 #define ENV_IS_EMBEDDED_CUSTOM
 #endif
+#ifdef ENV_IS_EMBEDDED
+/* WARNING - the following is hand-optimized to fit within
+ * the sector before the environment sector. If it throws
+ * an error during compilation remove an object here to get
+ * it linked after the configuration sector.
+ */
+# define LDS_BOARD_TEXT \
+	cpu/blackfin/traps.o		(.text .text.*); \
+	cpu/blackfin/interrupt.o	(.text .text.*); \
+	cpu/blackfin/serial.o		(.text .text.*); \
+	common/dlmalloc.o		(.text .text.*); \
+	lib_generic/crc32.o		(.text .text.*); \
+	. = DEFINED(env_offset) ? env_offset : .; \
+	common/env_embedded.o		(.text .text.*);
+#endif
 
 
 /*
diff --git a/lib_blackfin/.gitignore b/lib_blackfin/.gitignore
new file mode 100644
index 0000000..09f1be0
--- /dev/null
+++ b/lib_blackfin/.gitignore
@@ -0,0 +1 @@
+u-boot.lds
diff --git a/lib_blackfin/Makefile b/lib_blackfin/Makefile
index 46ef7f3..e32ecc9 100644
--- a/lib_blackfin/Makefile
+++ b/lib_blackfin/Makefile
@@ -47,9 +47,12 @@ COBJS-y	+= string.o
 SRCS	:= $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS	:= $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
 
-$(LIB):	$(obj).depend $(OBJS)
+$(LIB):	$(obj).depend $(OBJS) $(obj)u-boot.lds
 	$(AR) $(ARFLAGS) $@ $(OBJS)
 
+$(obj)u-boot.lds: u-boot.lds.S
+	$(CPP) $(CPPFLAGS) -D__ASSEMBLY__ -P $^ > $@
+
 #########################################################################
 
 # defines $(obj).depend target
diff --git a/lib_blackfin/u-boot.lds.S b/lib_blackfin/u-boot.lds.S
new file mode 100644
index 0000000..4755153
--- /dev/null
+++ b/lib_blackfin/u-boot.lds.S
@@ -0,0 +1,132 @@
+/*
+ * U-boot - u-boot.lds.S
+ *
+ * Copyright (c) 2005-2009 Analog Device Inc.
+ *
+ * (C) Copyright 2000-2004
+ * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <config.h>
+#include <asm/blackfin.h>
+#undef ALIGN
+#undef ENTRY
+#undef bfin
+
+#ifndef LDS_BOARD_TEXT
+# define LDS_BOARD_TEXT
+#endif
+
+/* If we don't actually load anything into L1 data, this will avoid
+ * a syntax error.  If we do actually load something into L1 data,
+ * we'll get a linker memory load error (which is what we'd want).
+ * This is here in the first place so we can quickly test building
+ * for different CPU's which may lack non-cache L1 data.
+ */
+#ifndef L1_DATA_B_SRAM
+# define L1_DATA_B_SRAM      CONFIG_SYS_MONITOR_BASE
+# define L1_DATA_B_SRAM_SIZE 0
+#endif
+
+OUTPUT_ARCH(bfin)
+
+MEMORY
+{
+	ram     : ORIGIN = CONFIG_SYS_MONITOR_BASE, LENGTH = CONFIG_SYS_MONITOR_LEN
+	l1_code : ORIGIN = L1_INST_SRAM,            LENGTH = L1_INST_SRAM_SIZE
+	l1_data : ORIGIN = L1_DATA_B_SRAM,          LENGTH = L1_DATA_B_SRAM_SIZE
+}
+
+ENTRY(_start)
+SECTIONS
+{
+	.text :
+	{
+		cpu/blackfin/start.o (.text .text.*)
+
+		LDS_BOARD_TEXT
+
+		__initcode_start = .;
+		cpu/blackfin/initcode.o (.text .text.*)
+		__initcode_end = .;
+
+		*(.text .text.*)
+	} >ram
+
+	.rodata :
+	{
+		. = ALIGN(4);
+		*(.rodata .rodata.*)
+		*(.rodata1)
+		*(.eh_frame)
+		. = ALIGN(4);
+	} >ram
+
+	.data :
+	{
+		. = ALIGN(256);
+		*(.data .data.*)
+		*(.data1)
+		*(.sdata)
+		*(.sdata2)
+		*(.dynamic)
+		CONSTRUCTORS
+	} >ram
+
+	.u_boot_cmd :
+	{
+		___u_boot_cmd_start = .;
+		*(.u_boot_cmd)
+		___u_boot_cmd_end = .;
+	} >ram
+
+	.text_l1 :
+	{
+		. = ALIGN(4);
+		__stext_l1 = .;
+		*(.l1.text)
+		. = ALIGN(4);
+		__etext_l1 = .;
+	} >l1_code AT>ram
+	__stext_l1_lma = LOADADDR(.text_l1);
+
+	.data_l1 :
+	{
+		. = ALIGN(4);
+		__sdata_l1 = .;
+		*(.l1.data)
+		*(.l1.bss)
+		. = ALIGN(4);
+		__edata_l1 = .;
+	} >l1_data AT>ram
+	__sdata_l1_lma = LOADADDR(.data_l1);
+
+	.bss :
+	{
+		. = ALIGN(4);
+		__bss_start = .;
+		*(.sbss) *(.scommon)
+		*(.dynbss)
+		*(.bss .bss.*)
+		*(COMMON)
+		__bss_end = .;
+	} >ram
+}
-- 
1.6.3.1



More information about the U-Boot mailing list