summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorMikhail Kshevetskiy <[email protected]>2025-11-01 09:24:23 +0300
committerMichael Trimarchi <[email protected]>2025-11-18 20:06:21 +0100
commit5572d9410074b56ad25d35b0d3e17c93d8dbaeb0 (patch)
treebe0436d6ebd2e5cceaeabd16cae126dbcce52028 /cmd
parent75153d92a5c02d8eba01c0893f6aff69ad4d2e2b (diff)
cmd: mtd: benchmark: use lldiv() instead of 64-bit division
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 <[email protected]>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/mtd.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/cmd/mtd.c b/cmd/mtd.c
index d0072129659..7f25144098b 100644
--- a/cmd/mtd.c
+++ b/cmd/mtd.c
@@ -10,6 +10,7 @@
#include <command.h>
#include <console.h>
+#include <div64.h>
#include <led.h>
#if CONFIG_IS_ENABLED(CMD_MTD_OTP)
#include <hexdump.h>
@@ -595,10 +596,10 @@ static int do_mtd_io(struct cmd_tbl *cmdtp, int flag, int argc,
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();