u-boot-brain/lib/dhry/cmd_dhry.c
Simon Glass f215287bd5 dhry: Correct dhrystone calculation for fast machines
At present samus reports about 5600 DMIPS. With the default iteration count
this is OK, but if 10 million runs are performed it overflows. Fix it.

Signed-off-by: Simon Glass <sjg@chromium.org>
2016-03-17 10:27:27 +08:00

37 lines
839 B
C

/*
* (C) Copyright 2015 Google, Inc
*
* SPDX-License-Identifier: GPL-2.0+
*/
#include <common.h>
#include <command.h>
#include <div64.h>
#include "dhry.h"
static int do_dhry(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
ulong start, duration, vax_mips;
u64 dhry_per_sec;
int iterations = 1000000;
if (argc > 1)
iterations = simple_strtoul(argv[1], NULL, 10);
start = get_timer(0);
dhry(iterations);
duration = get_timer(start);
dhry_per_sec = lldiv(iterations * 1000ULL, duration);
vax_mips = dhry_per_sec / 1757;
printf("%d iterations in %lu ms: %lu/s, %lu DMIPS\n", iterations,
duration, (ulong)dhry_per_sec, vax_mips);
return 0;
}
U_BOOT_CMD(
dhry, 2, 1, do_dhry,
"[iterations] - run dhrystone benchmark",
"\n - run the Dhrystone 2.1 benchmark, a rough measure of CPU speed\n"
);