mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-30 19:48:19 +00:00 
			
		
		
		
	Using optimized versions of memset and memcpy from linux brings a quite
noticeable speed (x2 or better) improvement for these two functions.
Here are some numbers for test done with jadecpu
                           | HEAD(1)| HEAD(1)| HEAD(2)| HEAD(2)|
                           |        | +patch |        | +patch |
---------------------------+--------+--------+--------+--------+
Reset to prompt            |  438ms |  330ms |  228ms |  120ms |
                           |        |        |        |        |
TFTP a 3MB img             | 4782ms | 3428ms | 3245ms | 2820ms |
                           |        |        |        |        |
FATLOAD USB a 3MB img*     | 8515ms | 8510ms | ------ | ------ |
                           |        |        |        |        |
BOOTM LZO img in RAM       | 3473ms | 3168ms |  592ms |  592ms |
 where CRC is              |  615ms |  615ms |   54ms |   54ms |
 uncompress                | 2460ms | 2462ms |  450ms |  451ms |
 final boot_elf            |  376ms |   68ms |   65ms |   65ms |
                           |        |        |        |        |
BOOTM LZO img in FLASH     | 3207ms | 2902ms | 1050ms | 1050ms |
 where CRC is              |  600ms |  600ms |  135ms |  135ms |
 uncompress                | 2209ms | 2211ms |  828ms |  828ms |
                           |        |        |        |        |
Copy 1.4MB from NOR to RAM |  134ms |   72ms |  120ms |   70ms |
(1) No dcache
(2) dcache enabled in board_init
*Does not work when dcache is on
Size impact:
C version:
   text    data     bss     dec     hex filename
 202862   18912  266456  488230   77326 u-boot
ASM version:
   text    data     bss     dec     hex filename
 203798   18912  266288  488998   77626 u-boot
222712  u-boot.bin
Signed-off-by: Matthias Weisser <weisserm@arcor.de>
		
	
			
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| #
 | |
| # (C) Copyright 2002-2006
 | |
| # Wolfgang Denk, DENX Software Engineering, wd@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 $(TOPDIR)/config.mk
 | |
| 
 | |
| LIB	= $(obj)lib$(ARCH).o
 | |
| LIBGCC	= $(obj)libgcc.o
 | |
| 
 | |
| GLSOBJS	+= _ashldi3.o
 | |
| GLSOBJS	+= _ashrdi3.o
 | |
| GLSOBJS	+= _divsi3.o
 | |
| GLSOBJS	+= _lshrdi3.o
 | |
| GLSOBJS	+= _modsi3.o
 | |
| GLSOBJS	+= _udivsi3.o
 | |
| GLSOBJS	+= _umodsi3.o
 | |
| 
 | |
| GLCOBJS	+= div0.o
 | |
| 
 | |
| COBJS-y	+= board.o
 | |
| COBJS-y	+= bootm.o
 | |
| COBJS-y	+= cache.o
 | |
| ifndef CONFIG_SYS_NO_CP15_CACHE
 | |
| COBJS-y	+= cache-cp15.o
 | |
| endif
 | |
| COBJS-y	+= interrupts.o
 | |
| COBJS-y	+= reset.o
 | |
| SOBJS-$(CONFIG_USE_ARCH_MEMSET) += memset.o
 | |
| SOBJS-$(CONFIG_USE_ARCH_MEMCPY) += memcpy.o
 | |
| 
 | |
| 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))
 | |
| 
 | |
| # Always build libarm.o
 | |
| TARGETS	:= $(LIB)
 | |
| 
 | |
| # Build private libgcc only when asked for
 | |
| ifdef USE_PRIVATE_LIBGCC
 | |
| TARGETS	+= $(LIBGCC)
 | |
| endif
 | |
| 
 | |
| # For EABI conformant tool chains, provide eabi_compat()
 | |
| ifneq (,$(findstring -mabi=aapcs-linux,$(PLATFORM_CPPFLAGS)))
 | |
| TARGETS	+= $(obj)eabi_compat.o
 | |
| endif
 | |
| 
 | |
| all:	$(TARGETS)
 | |
| 
 | |
| $(LIB):	$(obj).depend $(OBJS)
 | |
| 	$(call cmd_link_o_target, $(OBJS))
 | |
| 
 | |
| $(LIBGCC): $(obj).depend $(LGOBJS)
 | |
| 	$(call cmd_link_o_target, $(LGOBJS))
 | |
| 
 | |
| #########################################################################
 | |
| 
 | |
| # defines $(obj).depend target
 | |
| include $(SRCTREE)/rules.mk
 | |
| 
 | |
| sinclude $(obj).depend
 | |
| 
 | |
| #########################################################################
 |