LIBBOARD := $(addprefix $(obj),$(LIBBOARD))
 
 # Add GCC lib
-PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+ifdef USE_PRIVATE_LIBGCC
+ifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
+PLATFORM_LIBGCC = -L $(OBJTREE)/lib_$(ARCH) -lgcc
+else
+PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
+endif
+else
+PLATFORM_LIBGCC = -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+endif
+PLATFORM_LIBS += $(PLATFORM_LIBGCC)
+export PLATFORM_LIBS
 
 ifeq ($(CONFIG_NAND_U_BOOT),y)
 NAND_SPL = nand_spl
 
 
 OBJS_FKT := $(addprefix $(obj),$(COBJS_FKT))
 
-gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)
-
 LOAD_ADDR = 0xc100000
 
 #########################################################################
                -L$(obj)../../examples/standalone -lstubs \
                -L$(obj)../../lib_generic -lgeneric \
                $(obj)../../lib_arm/div0.o \
-               $(obj)../../lib_arm/_*.o
+               $(PLATFORM_LIBS)
        $(OBJCOPY) -O srec $(<:.o=) $@
 
 $(obj)trab_fkt.bin:    $(obj)trab_fkt.srec
 
 include $(TOPDIR)/config.mk
 
 LIB    = $(obj)lib$(ARCH).a
+LIBGCC = $(obj)libgcc.a
 
-SOBJS-y        += _ashldi3.o
-SOBJS-y        += _ashrdi3.o
-SOBJS-y        += _divsi3.o
-SOBJS-y        += _modsi3.o
-SOBJS-y        += _udivsi3.o
-SOBJS-y        += _umodsi3.o
+GLSOBJS        += _ashldi3.o
+GLSOBJS        += _ashrdi3.o
+GLSOBJS        += _divsi3.o
+GLSOBJS        += _modsi3.o
+GLSOBJS        += _udivsi3.o
+GLSOBJS        += _umodsi3.o
+
+GLCOBJS        += div0.o
 
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 ifndef CONFIG_SYS_NO_CP15_CACHE
 COBJS-y        += cache-cp15.o
 endif
-COBJS-y        += div0.o
 COBJS-y        += interrupts.o
 COBJS-y        += reset.o
 
-SRCS   := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
+SRCS   := $(GLSOBJS:.o=.S) $(GLCOBJS:.o=.c) \
+          $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
 OBJS   := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
+LGOBJS := $(addprefix $(obj),$(GLSOBJS)) \
+          $(addprefix $(obj),$(GLCOBJS))
+
+ifdef USE_PRIVATE_LIBGCC
+all:   $(LIB) $(LIBGCC)
+else
+all:   $(LIB)
+endif
 
 $(LIB):        $(obj).depend $(OBJS)
        $(AR) $(ARFLAGS) $@ $(OBJS)
 
+$(LIBGCC): $(obj).depend $(LGOBJS)
+       $(AR) $(ARFLAGS) $@ $(LGOBJS)
+
 #########################################################################
 
 # defines $(obj).depend target