From 0768b7a872964085eece8d5e9fec9175e9deb161 Mon Sep 17 00:00:00 2001 From: Haavard Skinnemoen Date: Mon, 18 Aug 2008 13:41:27 +0200 Subject: [PATCH] Consolidate strmhz() implementation ARM, i386, m68k and ppc all have identical implementations of strmhz(). Other architectures don't provide this function at all. This patch moves strmhz() into lib_generic, reducing code duplication and providing a more unified API across architectures. Signed-off-by: Haavard Skinnemoen --- include/common.h | 4 +++- lib_arm/board.c | 13 ------------- lib_generic/Makefile | 1 + lib_generic/strmhz.c | 36 ++++++++++++++++++++++++++++++++++++ lib_i386/board.c | 13 ------------- lib_m68k/board.c | 17 ----------------- lib_ppc/board.c | 13 ------------- 7 files changed, 40 insertions(+), 57 deletions(-) create mode 100644 lib_generic/strmhz.c diff --git a/include/common.h b/include/common.h index 06ed278..de3d595 100644 --- a/include/common.h +++ b/include/common.h @@ -224,7 +224,6 @@ void board_init_r (gd_t *, ulong) __attribute__ ((noreturn)); int checkboard (void); int checkflash (void); int checkdram (void); -char * strmhz(char *buf, long hz); int last_stage_init(void); extern ulong monitor_flash_len; int mac_read_from_eeprom(void); @@ -615,6 +614,9 @@ int sprintf(char * buf, const char *fmt, ...) __attribute__ ((format (__printf__, 2, 3))); int vsprintf(char *buf, const char *fmt, va_list args); +/* lib_generic/strmhz.c */ +char * strmhz(char *buf, long hz); + /* lib_generic/crc32.c */ uint32_t crc32 (uint32_t, const unsigned char *, uint); uint32_t crc32_wd (uint32_t, const unsigned char *, uint, uint); diff --git a/lib_arm/board.c b/lib_arm/board.c index a093860..6e3ef08 100644 --- a/lib_arm/board.c +++ b/lib_arm/board.c @@ -115,19 +115,6 @@ void *sbrk (ptrdiff_t increment) return ((void *) old); } -char *strmhz(char *buf, long hz) -{ - long l, n; - long m; - - n = hz / 1000000L; - l = sprintf (buf, "%ld", n); - m = (hz % 1000000L) / 1000L; - if (m != 0) - sprintf (buf + l, ".%03ld", m); - return (buf); -} - /************************************************************************ * Coloured LED functionality diff --git a/lib_generic/Makefile b/lib_generic/Makefile index 4f6ce73..bf0e31d 100644 --- a/lib_generic/Makefile +++ b/lib_generic/Makefile @@ -40,6 +40,7 @@ COBJS-$(CONFIG_MD5) += md5.o COBJS-y += sha1.o COBJS-$(CONFIG_SHA256) += sha256.o COBJS-y += string.o +COBJS-y += strmhz.o COBJS-y += vsprintf.o COBJS-y += zlib.o diff --git a/lib_generic/strmhz.c b/lib_generic/strmhz.c new file mode 100644 index 0000000..d0b6bc6 --- /dev/null +++ b/lib_generic/strmhz.c @@ -0,0 +1,36 @@ +/* + * (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 + +char *strmhz (char *buf, long hz) +{ + long l, n; + long m; + + n = hz / 1000000L; + l = sprintf (buf, "%ld", n); + m = (hz % 1000000L) / 1000L; + if (m != 0) + sprintf (buf + l, ".%03ld", m); + return (buf); +} diff --git a/lib_i386/board.c b/lib_i386/board.c index 22191e6..55fa42a 100644 --- a/lib_i386/board.c +++ b/lib_i386/board.c @@ -108,19 +108,6 @@ void *sbrk (ptrdiff_t increment) return ((void *) old); } -char *strmhz (char *buf, long hz) -{ - long l, n; - long m; - - n = hz / 1000000L; - l = sprintf (buf, "%ld", n); - m = (hz % 1000000L) / 1000L; - if (m != 0) - sprintf (buf + l, ".%03ld", m); - return (buf); -} - /************************************************************************ * Init Utilities * ************************************************************************ diff --git a/lib_m68k/board.c b/lib_m68k/board.c index dedc9e4..e59c6b0 100644 --- a/lib_m68k/board.c +++ b/lib_m68k/board.c @@ -140,23 +140,6 @@ void *sbrk (ptrdiff_t increment) return ((void *)old); } -char *strmhz(char *buf, long hz) -{ - long l, n; - long m; - - n = hz / 1000000L; - - l = sprintf (buf, "%ld", n); - - m = (hz % 1000000L) / 1000L; - - if (m != 0) - sprintf (buf+l, ".%03ld", m); - - return (buf); -} - /* * All attempts to come up with a "common" initialization sequence * that works for all boards and architectures failed: some of the diff --git a/lib_ppc/board.c b/lib_ppc/board.c index 71a70db..c8f075f 100644 --- a/lib_ppc/board.c +++ b/lib_ppc/board.c @@ -168,19 +168,6 @@ void *sbrk (ptrdiff_t increment) return ((void *) old); } -char *strmhz (char *buf, long hz) -{ - long l, n; - long m; - - n = hz / 1000000L; - l = sprintf (buf, "%ld", n); - m = (hz % 1000000L) / 1000L; - if (m != 0) - sprintf (buf + l, ".%03ld", m); - return (buf); -} - /* * All attempts to come up with a "common" initialization sequence * that works for all boards and architectures failed: some of the