[U-Boot] [PATCH v2] Use do_div from div64.h for vsprintf

Use do_div from div64.h for vsprintf in case of 64bit division. For 32bit division, do_div from div64.h can't be used as it needs a 64bit parameter.
Signed-off-by: Dirk Behme dirk.behme@googlemail.com CC: Simon Kagstrom simon.kagstrom@netinsight.net ---
This patch replaces first version
http://lists.denx.de/pipermail/u-boot/2009-July/055599.html
due to compiler warnings
http://lists.denx.de/pipermail/u-boot/2009-July/056994.html
lib_generic/vsprintf.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
Index: u-boot-main/lib_generic/vsprintf.c =================================================================== --- u-boot-main.orig/lib_generic/vsprintf.c +++ u-boot-main/lib_generic/vsprintf.c @@ -22,18 +22,19 @@ extern int do_reset (cmd_tbl_t *cmdtp, i #endif
#ifdef CONFIG_SYS_64BIT_VSPRINTF +#include <div64.h> # define NUM_TYPE long long #else # define NUM_TYPE long -#endif -#define noinline __attribute__((noinline)) - #define do_div(n, base) ({ \ unsigned int __res; \ __res = ((unsigned NUM_TYPE) n) % base; \ n = ((unsigned NUM_TYPE) n) / base; \ __res; \ }) +#endif +#define noinline __attribute__((noinline)) +
const char hex_asc[] = "0123456789abcdef"; #define hex_asc_lo(x) hex_asc[((x) & 0x0f)]

On Wednesday 22 July 2009 17:51:56 Dirk Behme wrote:
Use do_div from div64.h for vsprintf in case of 64bit division. For 32bit division, do_div from div64.h can't be used as it needs a 64bit parameter.
Signed-off-by: Dirk Behme dirk.behme@googlemail.com CC: Simon Kagstrom simon.kagstrom@netinsight.net
I just did some testing on the image size effect of this patch. All this is done on Canyonlands (PPC4xx):
a) Without 64bit printf support, without this patch b) With 64bit printf support, without this patch c) With 64bit printf support, with this patch
Image-type Image-size --------------------------- a 351028 b 352536 c 351400
So without this patch the 64bit printf support increases the image size by 5390 bytes and with this patch by "only" 984 bytes.
So ack from me for this patch:
Acked-by: Stefan Roese sr@denx.de
Thanks.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================

Dear Dirk Behme,
In message 1248277916-4623-1-git-send-email-dirk.behme@googlemail.com you wrote:
Use do_div from div64.h for vsprintf in case of 64bit division. For 32bit division, do_div from div64.h can't be used as it needs a 64bit parameter.
Signed-off-by: Dirk Behme dirk.behme@googlemail.com CC: Simon Kagstrom simon.kagstrom@netinsight.net
This patch replaces first version
http://lists.denx.de/pipermail/u-boot/2009-July/055599.html
due to compiler warnings
http://lists.denx.de/pipermail/u-boot/2009-July/056994.html
lib_generic/vsprintf.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk
participants (3)
-
Dirk Behme
-
Stefan Roese
-
Wolfgang Denk