As was noted by Heinrich Schuchardt, some SoCs may not support 64-bit
divisions. Fix an issue by using lldiv() instead.
The code assumes that the benchmark never takes more than 4294 seconds
and thus the difference will be less than U32_MAX.
Also replace (speed / 1024) by (speed >> 10) to avoid potential 64-bit
division.
Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
#include <command.h>
#include <console.h>
+#include <div64.h>
#include <led.h>
#if CONFIG_IS_ENABLED(CMD_MTD_OTP)
#include <hexdump.h>
if (benchmark && bench_start) {
bench_end = timer_get_us();
- speed = (len * 1000000) / (bench_end - bench_start);
+ speed = lldiv(len * 1000000, bench_end - bench_start);
printf("%s speed: %lukiB/s\n",
read ? "Read" : "Write",
- (unsigned long)(speed / 1024));
+ (unsigned long)(speed >> 10));
}
led_activity_off();