1d1389403SSimon Glass /* 2d1389403SSimon Glass * (C) Copyright 2015 Google, Inc 3d1389403SSimon Glass * 4d1389403SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 5d1389403SSimon Glass */ 6d1389403SSimon Glass 7d1389403SSimon Glass #include <common.h> 8d1389403SSimon Glass #include <command.h> 9*f215287bSSimon Glass #include <div64.h> 10d1389403SSimon Glass #include "dhry.h" 11d1389403SSimon Glass 12d1389403SSimon Glass static int do_dhry(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 13d1389403SSimon Glass { 14*f215287bSSimon Glass ulong start, duration, vax_mips; 15*f215287bSSimon Glass u64 dhry_per_sec; 16d1389403SSimon Glass int iterations = 1000000; 17d1389403SSimon Glass 18d1389403SSimon Glass if (argc > 1) 19d1389403SSimon Glass iterations = simple_strtoul(argv[1], NULL, 10); 20d1389403SSimon Glass 21d1389403SSimon Glass start = get_timer(0); 22d1389403SSimon Glass dhry(iterations); 23d1389403SSimon Glass duration = get_timer(start); 24*f215287bSSimon Glass dhry_per_sec = lldiv(iterations * 1000ULL, duration); 25d1389403SSimon Glass vax_mips = dhry_per_sec / 1757; 26d1389403SSimon Glass printf("%d iterations in %lu ms: %lu/s, %lu DMIPS\n", iterations, 27*f215287bSSimon Glass duration, (ulong)dhry_per_sec, vax_mips); 28d1389403SSimon Glass 29d1389403SSimon Glass return 0; 30d1389403SSimon Glass } 31d1389403SSimon Glass 32d1389403SSimon Glass U_BOOT_CMD( 33d1389403SSimon Glass dhry, 2, 1, do_dhry, 34d1389403SSimon Glass "[iterations] - run dhrystone benchmark", 35d1389403SSimon Glass "\n - run the Dhrystone 2.1 benchmark, a rough measure of CPU speed\n" 36d1389403SSimon Glass ); 37