AMD hudson: Round the float pointing number to integer

Try
sh> printf %d 0x005500AA | LC_ALL=C awk '{printf("%c%c%c%c", \
    $1 % 256, $1/256 % 256, $1/65536 % 256, $1/16777216);}' | \
    od -Ax -t x
On Linux with gawk, we get
   000000 005500aa
   000004
On FreeBSD with nongnu-awk, we get
   000000 000055aa
   000002

In awk, all the numbers are floating point number. So division doesn't
round the result from 0.75 (3/4) to 0.
And, There is a fact that, for the FreeBSD awk,
sh> awk 'BEGIN {printf("%c", 0.75)}';
produces nothing, instead of 0.

Here we need to convert the floating point number to
integer by int(X), which is an awk built-in function, instead of GNU
extension.

Change-Id: I3470d5f13e7ea59a978d5575a54c0d56368dc78d
Signed-off-by: Zheng Bao <zheng.bao@amd.com>
Signed-off-by: Zheng Bao <fishbaozi@gmail.com>
Reviewed-on: http://review.coreboot.org/1529
Tested-by: build bot (Jenkins)
Reviewed-by: Peter Stuge <peter@stuge.se>
This commit is contained in:
Zheng Bao 2012-09-24 14:05:22 +08:00 committed by Peter Stuge
parent 1d66897364
commit cf329ffac8
1 changed files with 1 additions and 1 deletions

View File

@ -58,7 +58,7 @@ $(obj)/hudson_romsig.bin: $(call strip_quotes, $(CONFIG_HUDSON_XHCI_FWM_FILE)) \
$(HUDSON_IMC_POSITION) \ $(HUDSON_IMC_POSITION) \
$(HUDSON_GEC_POSITION) \ $(HUDSON_GEC_POSITION) \
$(HUDSON_XHCI_POSITION) ; do \ $(HUDSON_XHCI_POSITION) ; do \
echo $$fwm | LC_ALL=C awk '{printf ("%c%c%c%c", $$1 % 256, $$1/256 % 256, $$1/65536 % 256, $$1/16777216);}'; \ echo $$fwm | LC_ALL=C awk '{printf ("%c%c%c%c", $$1 % 256, int($$1/256) % 256, int($$1/65536) % 256, int($$1/16777216));}'; \
done > $@ done > $@
ifeq ($(CONFIG_HUDSON_FWM), y) ifeq ($(CONFIG_HUDSON_FWM), y)