1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */ 2d1389403SSimon Glass /* 3d1389403SSimon Glass * (C) Copyright 2015 Google, Inc 4d1389403SSimon Glass * 5d1389403SSimon Glass * Dhrystone is widely available in the public domain. A GPL license is 6d1389403SSimon Glass * chosen for U-Boot. 7d1389403SSimon Glass */ 8d1389403SSimon Glass 9d1389403SSimon Glass /***************************************************************************** 10d1389403SSimon Glass * The BYTE UNIX Benchmarks - Release 3 11d1389403SSimon Glass * Module: dhry.h SID: 3.4 5/15/91 19:30:21 12d1389403SSimon Glass * 13d1389403SSimon Glass ***************************************************************************** 14d1389403SSimon Glass * Bug reports, patches, comments, suggestions should be sent to: 15d1389403SSimon Glass * 16d1389403SSimon Glass * Ben Smith, Rick Grehan or Tom Yager 17d1389403SSimon Glass * ben@bytepb.byte.com rick_g@bytepb.byte.com tyager@bytepb.byte.com 18d1389403SSimon Glass * 19d1389403SSimon Glass ***************************************************************************** 20d1389403SSimon Glass * Modification Log: 21d1389403SSimon Glass * addapted from: 22d1389403SSimon Glass * 23d1389403SSimon Glass * 24d1389403SSimon Glass * "DHRYSTONE" Benchmark Program 25d1389403SSimon Glass * ----------------------------- 26d1389403SSimon Glass * 27d1389403SSimon Glass * Version: C, Version 2.1 28d1389403SSimon Glass * 29d1389403SSimon Glass * File: dhry.h (part 1 of 3) 30d1389403SSimon Glass * 31d1389403SSimon Glass * Date: May 25, 1988 32d1389403SSimon Glass * 33d1389403SSimon Glass * Author: Reinhold P. Weicker 34d1389403SSimon Glass * Siemens AG, AUT E 51 35d1389403SSimon Glass * Postfach 3220 36d1389403SSimon Glass * 8520 Erlangen 37d1389403SSimon Glass * Germany (West) 38d1389403SSimon Glass * Phone: [+49]-9131-7-20330 39d1389403SSimon Glass * (8-17 Central European Time) 40d1389403SSimon Glass * Usenet: ..!mcvax!unido!estevax!weicker 41d1389403SSimon Glass * 42d1389403SSimon Glass * Original Version (in Ada) published in 43d1389403SSimon Glass * "Communications of the ACM" vol. 27., no. 10 (Oct. 1984), 44d1389403SSimon Glass * pp. 1013 - 1030, together with the statistics 45d1389403SSimon Glass * on which the distribution of statements etc. is based. 46d1389403SSimon Glass * 47d1389403SSimon Glass * In this C version, the following C library functions are used: 48d1389403SSimon Glass * - strcpy, strcmp (inside the measurement loop) 49d1389403SSimon Glass * - printf, scanf (outside the measurement loop) 50d1389403SSimon Glass * In addition, Berkeley UNIX system calls "times ()" or "time ()" 51d1389403SSimon Glass * are used for execution time measurement. For measurements 52d1389403SSimon Glass * on other systems, these calls have to be changed. 53d1389403SSimon Glass * 54d1389403SSimon Glass * Collection of Results: 55d1389403SSimon Glass * Reinhold Weicker (address see above) and 56d1389403SSimon Glass * 57d1389403SSimon Glass * Rick Richardson 58d1389403SSimon Glass * PC Research. Inc. 59d1389403SSimon Glass * 94 Apple Orchard Drive 60d1389403SSimon Glass * Tinton Falls, NJ 07724 61d1389403SSimon Glass * Phone: (201) 834-1378 (9-17 EST) 62d1389403SSimon Glass * Usenet: ...!seismo!uunet!pcrat!rick 63d1389403SSimon Glass * 64d1389403SSimon Glass * Please send results to Rick Richardson and/or Reinhold Weicker. 65d1389403SSimon Glass * Complete information should be given on hardware and software used. 66d1389403SSimon Glass * Hardware information includes: Machine type, CPU, type and size 67d1389403SSimon Glass * of caches; for microprocessors: clock frequency, memory speed 68d1389403SSimon Glass * (number of wait states). 69d1389403SSimon Glass * Software information includes: Compiler (and runtime library) 70d1389403SSimon Glass * manufacturer and version, compilation switches, OS version. 71d1389403SSimon Glass * The Operating System version may give an indication about the 72d1389403SSimon Glass * compiler; Dhrystone itself performs no OS calls in the measurement loop. 73d1389403SSimon Glass * 74d1389403SSimon Glass * The complete output generated by the program should be mailed 75d1389403SSimon Glass * such that at least some checks for correctness can be made. 76d1389403SSimon Glass * 77d1389403SSimon Glass *************************************************************************** 78d1389403SSimon Glass * 79d1389403SSimon Glass * History: This version C/2.1 has been made for two reasons: 80d1389403SSimon Glass * 81d1389403SSimon Glass * 1) There is an obvious need for a common C version of 82d1389403SSimon Glass * Dhrystone, since C is at present the most popular system 83d1389403SSimon Glass * programming language for the class of processors 84d1389403SSimon Glass * (microcomputers, minicomputers) where Dhrystone is used most. 85d1389403SSimon Glass * There should be, as far as possible, only one C version of 86d1389403SSimon Glass * Dhrystone such that results can be compared without 87d1389403SSimon Glass * restrictions. In the past, the C versions distributed 88d1389403SSimon Glass * by Rick Richardson (Version 1.1) and by Reinhold Weicker 89d1389403SSimon Glass * had small (though not significant) differences. 90d1389403SSimon Glass * 91d1389403SSimon Glass * 2) As far as it is possible without changes to the Dhrystone 92d1389403SSimon Glass * statistics, optimizing compilers should be prevented from 93d1389403SSimon Glass * removing significant statements. 94d1389403SSimon Glass * 95d1389403SSimon Glass * This C version has been developed in cooperation with 96d1389403SSimon Glass * Rick Richardson (Tinton Falls, NJ), it incorporates many 97d1389403SSimon Glass * ideas from the "Version 1.1" distributed previously by 98d1389403SSimon Glass * him over the UNIX network Usenet. 99d1389403SSimon Glass * I also thank Chaim Benedelac (National Semiconductor), 100d1389403SSimon Glass * David Ditzel (SUN), Earl Killian and John Mashey (MIPS), 101d1389403SSimon Glass * Alan Smith and Rafael Saavedra-Barrera (UC at Berkeley) 102d1389403SSimon Glass * for their help with comments on earlier versions of the 103d1389403SSimon Glass * benchmark. 104d1389403SSimon Glass * 105d1389403SSimon Glass * Changes: In the initialization part, this version follows mostly 106d1389403SSimon Glass * Rick Richardson's version distributed via Usenet, not the 107d1389403SSimon Glass * version distributed earlier via floppy disk by Reinhold Weicker. 108d1389403SSimon Glass * As a concession to older compilers, names have been made 109d1389403SSimon Glass * unique within the first 8 characters. 110d1389403SSimon Glass * Inside the measurement loop, this version follows the 111d1389403SSimon Glass * version previously distributed by Reinhold Weicker. 112d1389403SSimon Glass * 113d1389403SSimon Glass * At several places in the benchmark, code has been added, 114d1389403SSimon Glass * but within the measurement loop only in branches that 115d1389403SSimon Glass * are not executed. The intention is that optimizing compilers 116d1389403SSimon Glass * should be prevented from moving code out of the measurement 117d1389403SSimon Glass * loop, or from removing code altogether. Since the statements 118d1389403SSimon Glass * that are executed within the measurement loop have NOT been 119d1389403SSimon Glass * changed, the numbers defining the "Dhrystone distribution" 120d1389403SSimon Glass * (distribution of statements, operand types and locality) 121d1389403SSimon Glass * still hold. Except for sophisticated optimizing compilers, 122d1389403SSimon Glass * execution times for this version should be the same as 123d1389403SSimon Glass * for previous versions. 124d1389403SSimon Glass * 125d1389403SSimon Glass * Since it has proven difficult to subtract the time for the 126d1389403SSimon Glass * measurement loop overhead in a correct way, the loop check 127d1389403SSimon Glass * has been made a part of the benchmark. This does have 128d1389403SSimon Glass * an impact - though a very minor one - on the distribution 129d1389403SSimon Glass * statistics which have been updated for this version. 130d1389403SSimon Glass * 131d1389403SSimon Glass * All changes within the measurement loop are described 132d1389403SSimon Glass * and discussed in the companion paper "Rationale for 133d1389403SSimon Glass * Dhrystone version 2". 134d1389403SSimon Glass * 135d1389403SSimon Glass * Because of the self-imposed limitation that the order and 136d1389403SSimon Glass * distribution of the executed statements should not be 137d1389403SSimon Glass * changed, there are still cases where optimizing compilers 138d1389403SSimon Glass * may not generate code for some statements. To a certain 139d1389403SSimon Glass * degree, this is unavoidable for small synthetic benchmarks. 140d1389403SSimon Glass * Users of the benchmark are advised to check code listings 141d1389403SSimon Glass * whether code is generated for all statements of Dhrystone. 142d1389403SSimon Glass * 143d1389403SSimon Glass * Version 2.1 is identical to version 2.0 distributed via 144d1389403SSimon Glass * the UNIX network Usenet in March 1988 except that it corrects 145d1389403SSimon Glass * some minor deficiencies that were found by users of version 2.0. 146d1389403SSimon Glass * The only change within the measurement loop is that a 147d1389403SSimon Glass * non-executed "else" part was added to the "if" statement in 148d1389403SSimon Glass * Func_3, and a non-executed "else" part removed from Proc_3. 149d1389403SSimon Glass * 150d1389403SSimon Glass *************************************************************************** 151d1389403SSimon Glass * 152d1389403SSimon Glass * Defines: The following "Defines" are possible: 153d1389403SSimon Glass * -DREG=register (default: Not defined) 154d1389403SSimon Glass * As an approximation to what an average C programmer 155d1389403SSimon Glass * might do, the "register" storage class is applied 156d1389403SSimon Glass * (if enabled by -DREG=register) 157d1389403SSimon Glass * - for local variables, if they are used (dynamically) 158d1389403SSimon Glass * five or more times 159d1389403SSimon Glass * - for parameters if they are used (dynamically) 160d1389403SSimon Glass * six or more times 161d1389403SSimon Glass * Note that an optimal "register" strategy is 162d1389403SSimon Glass * compiler-dependent, and that "register" declarations 163d1389403SSimon Glass * do not necessarily lead to faster execution. 164d1389403SSimon Glass * -DNOSTRUCTASSIGN (default: Not defined) 165d1389403SSimon Glass * Define if the C compiler does not support 166d1389403SSimon Glass * assignment of structures. 167d1389403SSimon Glass * -DNOENUMS (default: Not defined) 168d1389403SSimon Glass * Define if the C compiler does not support 169d1389403SSimon Glass * enumeration types. 170d1389403SSimon Glass * -DTIMES (default) 171d1389403SSimon Glass * -DTIME 172d1389403SSimon Glass * The "times" function of UNIX (returning process times) 173d1389403SSimon Glass * or the "time" function (returning wallclock time) 174d1389403SSimon Glass * is used for measurement. 175d1389403SSimon Glass * For single user machines, "time ()" is adequate. For 176d1389403SSimon Glass * multi-user machines where you cannot get single-user 177d1389403SSimon Glass * access, use the "times ()" function. If you have 178d1389403SSimon Glass * neither, use a stopwatch in the dead of night. 179d1389403SSimon Glass * "printf"s are provided marking the points "Start Timer" 180d1389403SSimon Glass * and "Stop Timer". DO NOT use the UNIX "time(1)" 181d1389403SSimon Glass * command, as this will measure the total time to 182d1389403SSimon Glass * run this program, which will (erroneously) include 183d1389403SSimon Glass * the time to allocate storage (malloc) and to perform 184d1389403SSimon Glass * the initialization. 185d1389403SSimon Glass * -DHZ=nnn 186d1389403SSimon Glass * In Berkeley UNIX, the function "times" returns process 187d1389403SSimon Glass * time in 1/HZ seconds, with HZ = 60 for most systems. 188d1389403SSimon Glass * CHECK YOUR SYSTEM DESCRIPTION BEFORE YOU JUST APPLY 189d1389403SSimon Glass * A VALUE. 190d1389403SSimon Glass * 191d1389403SSimon Glass *************************************************************************** 192d1389403SSimon Glass * 193d1389403SSimon Glass * Compilation model and measurement (IMPORTANT): 194d1389403SSimon Glass * 195d1389403SSimon Glass * This C version of Dhrystone consists of three files: 196d1389403SSimon Glass * - dhry.h (this file, containing global definitions and comments) 197d1389403SSimon Glass * - dhry_1.c (containing the code corresponding to Ada package Pack_1) 198d1389403SSimon Glass * - dhry_2.c (containing the code corresponding to Ada package Pack_2) 199d1389403SSimon Glass * 200d1389403SSimon Glass * The following "ground rules" apply for measurements: 201d1389403SSimon Glass * - Separate compilation 202d1389403SSimon Glass * - No procedure merging 203d1389403SSimon Glass * - Otherwise, compiler optimizations are allowed but should be indicated 204d1389403SSimon Glass * - Default results are those without register declarations 205d1389403SSimon Glass * See the companion paper "Rationale for Dhrystone Version 2" for a more 206d1389403SSimon Glass * detailed discussion of these ground rules. 207d1389403SSimon Glass * 208d1389403SSimon Glass * For 16-Bit processors (e.g. 80186, 80286), times for all compilation 209d1389403SSimon Glass * models ("small", "medium", "large" etc.) should be given if possible, 210d1389403SSimon Glass * together with a definition of these models for the compiler system used. 211d1389403SSimon Glass * 212d1389403SSimon Glass ************************************************************************** 213d1389403SSimon Glass * 214d1389403SSimon Glass * Dhrystone (C version) statistics: 215d1389403SSimon Glass * 216d1389403SSimon Glass * [Comment from the first distribution, updated for version 2. 217d1389403SSimon Glass * Note that because of language differences, the numbers are slightly 218d1389403SSimon Glass * different from the Ada version.] 219d1389403SSimon Glass * 220d1389403SSimon Glass * The following program contains statements of a high level programming 221d1389403SSimon Glass * language (here: C) in a distribution considered representative: 222d1389403SSimon Glass * 223d1389403SSimon Glass * assignments 52 (51.0 %) 224d1389403SSimon Glass * control statements 33 (32.4 %) 225d1389403SSimon Glass * procedure, function calls 17 (16.7 %) 226d1389403SSimon Glass * 227d1389403SSimon Glass * 103 statements are dynamically executed. The program is balanced with 228d1389403SSimon Glass * respect to the three aspects: 229d1389403SSimon Glass * 230d1389403SSimon Glass * - statement type 231d1389403SSimon Glass * - operand type 232d1389403SSimon Glass * - operand locality 233d1389403SSimon Glass * operand global, local, parameter, or constant. 234d1389403SSimon Glass * 235d1389403SSimon Glass * The combination of these three aspects is balanced only approximately. 236d1389403SSimon Glass * 237d1389403SSimon Glass * 1. Statement Type: 238d1389403SSimon Glass * ----------------- number 239d1389403SSimon Glass * 240d1389403SSimon Glass * V1 = V2 9 241d1389403SSimon Glass * (incl. V1 = F(..) 242d1389403SSimon Glass * V = Constant 12 243d1389403SSimon Glass * Assignment, 7 244d1389403SSimon Glass * with array element 245d1389403SSimon Glass * Assignment, 6 246d1389403SSimon Glass * with record component 247d1389403SSimon Glass * -- 248d1389403SSimon Glass * 34 34 249d1389403SSimon Glass * 250d1389403SSimon Glass * X = Y +|-|"&&"|"|" Z 5 251d1389403SSimon Glass * X = Y +|-|"==" Constant 6 252d1389403SSimon Glass * X = X +|- 1 3 253d1389403SSimon Glass * X = Y *|/ Z 2 254d1389403SSimon Glass * X = Expression, 1 255d1389403SSimon Glass * two operators 256d1389403SSimon Glass * X = Expression, 1 257d1389403SSimon Glass * three operators 258d1389403SSimon Glass * -- 259d1389403SSimon Glass * 18 18 260d1389403SSimon Glass * 261d1389403SSimon Glass * if .... 14 262d1389403SSimon Glass * with "else" 7 263d1389403SSimon Glass * without "else" 7 264d1389403SSimon Glass * executed 3 265d1389403SSimon Glass * not executed 4 266d1389403SSimon Glass * for ... 7 | counted every time 267d1389403SSimon Glass * while ... 4 | the loop condition 268d1389403SSimon Glass * do ... while 1 | is evaluated 269d1389403SSimon Glass * switch ... 1 270d1389403SSimon Glass * break 1 271d1389403SSimon Glass * declaration with 1 272d1389403SSimon Glass * initialization 273d1389403SSimon Glass * -- 274d1389403SSimon Glass * 34 34 275d1389403SSimon Glass * 276d1389403SSimon Glass * P (...) procedure call 11 277d1389403SSimon Glass * user procedure 10 278d1389403SSimon Glass * library procedure 1 279d1389403SSimon Glass * X = F (...) 280d1389403SSimon Glass * function call 6 281d1389403SSimon Glass * user function 5 282d1389403SSimon Glass * library function 1 283d1389403SSimon Glass * -- 284d1389403SSimon Glass * 17 17 285d1389403SSimon Glass * --- 286d1389403SSimon Glass * 103 287d1389403SSimon Glass * 288d1389403SSimon Glass * The average number of parameters in procedure or function calls 289d1389403SSimon Glass * is 1.82 (not counting the function values as implicit parameters). 290d1389403SSimon Glass * 291d1389403SSimon Glass * 292d1389403SSimon Glass * 2. Operators 293d1389403SSimon Glass * ------------ 294d1389403SSimon Glass * number approximate 295d1389403SSimon Glass * percentage 296d1389403SSimon Glass * 297d1389403SSimon Glass * Arithmetic 32 50.8 298d1389403SSimon Glass * 299d1389403SSimon Glass * + 21 33.3 300d1389403SSimon Glass * - 7 11.1 301d1389403SSimon Glass * * 3 4.8 302d1389403SSimon Glass * / (int div) 1 1.6 303d1389403SSimon Glass * 304d1389403SSimon Glass * Comparison 27 42.8 305d1389403SSimon Glass * 306d1389403SSimon Glass * == 9 14.3 307d1389403SSimon Glass * /= 4 6.3 308d1389403SSimon Glass * > 1 1.6 309d1389403SSimon Glass * < 3 4.8 310d1389403SSimon Glass * >= 1 1.6 311d1389403SSimon Glass * <= 9 14.3 312d1389403SSimon Glass * 313d1389403SSimon Glass * Logic 4 6.3 314d1389403SSimon Glass * 315d1389403SSimon Glass * && (AND-THEN) 1 1.6 316d1389403SSimon Glass * | (OR) 1 1.6 317d1389403SSimon Glass * ! (NOT) 2 3.2 318d1389403SSimon Glass * 319d1389403SSimon Glass * -- ----- 320d1389403SSimon Glass * 63 100.1 321d1389403SSimon Glass * 322d1389403SSimon Glass * 323d1389403SSimon Glass * 3. Operand Type (counted once per operand reference): 324d1389403SSimon Glass * --------------- 325d1389403SSimon Glass * number approximate 326d1389403SSimon Glass * percentage 327d1389403SSimon Glass * 328d1389403SSimon Glass * Integer 175 72.3 % 329d1389403SSimon Glass * Character 45 18.6 % 330d1389403SSimon Glass * Pointer 12 5.0 % 331d1389403SSimon Glass * String30 6 2.5 % 332d1389403SSimon Glass * Array 2 0.8 % 333d1389403SSimon Glass * Record 2 0.8 % 334d1389403SSimon Glass * --- ------- 335d1389403SSimon Glass * 242 100.0 % 336d1389403SSimon Glass * 337d1389403SSimon Glass * When there is an access path leading to the final operand (e.g. a record 338d1389403SSimon Glass * component), only the final data type on the access path is counted. 339d1389403SSimon Glass * 340d1389403SSimon Glass * 341d1389403SSimon Glass * 4. Operand Locality: 342d1389403SSimon Glass * ------------------- 343d1389403SSimon Glass * number approximate 344d1389403SSimon Glass * percentage 345d1389403SSimon Glass * 346d1389403SSimon Glass * local variable 114 47.1 % 347d1389403SSimon Glass * global variable 22 9.1 % 348d1389403SSimon Glass * parameter 45 18.6 % 349d1389403SSimon Glass * value 23 9.5 % 350d1389403SSimon Glass * reference 22 9.1 % 351d1389403SSimon Glass * function result 6 2.5 % 352d1389403SSimon Glass * constant 55 22.7 % 353d1389403SSimon Glass * --- ------- 354d1389403SSimon Glass * 242 100.0 % 355d1389403SSimon Glass * 356d1389403SSimon Glass * 357d1389403SSimon Glass * The program does not compute anything meaningful, but it is syntactically 358d1389403SSimon Glass * and semantically correct. All variables have a value assigned to them 359d1389403SSimon Glass * before they are used as a source operand. 360d1389403SSimon Glass * 361d1389403SSimon Glass * There has been no explicit effort to account for the effects of a 362d1389403SSimon Glass * cache, or to balance the use of long or short displacements for code or 363d1389403SSimon Glass * data. 364d1389403SSimon Glass * 365d1389403SSimon Glass *************************************************************************** 366d1389403SSimon Glass */ 367d1389403SSimon Glass 368d1389403SSimon Glass 369d1389403SSimon Glass /* Compiler and system dependent definitions: */ 370d1389403SSimon Glass 371d1389403SSimon Glass #ifndef TIME 372d1389403SSimon Glass #define TIMES 373d1389403SSimon Glass #endif 374d1389403SSimon Glass /* Use times(2) time function unless */ 375d1389403SSimon Glass /* explicitly defined otherwise */ 376d1389403SSimon Glass 377d1389403SSimon Glass #define Mic_secs_Per_Second 1000000.0 378d1389403SSimon Glass /* Berkeley UNIX C returns process times in seconds/HZ */ 379d1389403SSimon Glass 380d1389403SSimon Glass #ifdef NOSTRUCTASSIGN 381d1389403SSimon Glass #define structassign(d, s) memcpy(&(d), &(s), sizeof(d)) 382d1389403SSimon Glass #else 383d1389403SSimon Glass #define structassign(d, s) d = s 384d1389403SSimon Glass #endif 385d1389403SSimon Glass 386d1389403SSimon Glass #ifdef NOENUM 387d1389403SSimon Glass #define Ident_1 0 388d1389403SSimon Glass #define Ident_2 1 389d1389403SSimon Glass #define Ident_3 2 390d1389403SSimon Glass #define Ident_4 3 391d1389403SSimon Glass #define Ident_5 4 392d1389403SSimon Glass typedef int Enumeration; 393d1389403SSimon Glass #else 394d1389403SSimon Glass typedef enum {Ident_1, Ident_2, Ident_3, Ident_4, Ident_5} 395d1389403SSimon Glass Enumeration; 396d1389403SSimon Glass #endif 397d1389403SSimon Glass /* for boolean and enumeration types in Ada, Pascal */ 398d1389403SSimon Glass 399d1389403SSimon Glass /* General definitions: */ 400d1389403SSimon Glass 401d1389403SSimon Glass #define Null 0 402d1389403SSimon Glass /* Value of a Null pointer */ 403d1389403SSimon Glass #define true 1 404d1389403SSimon Glass #define false 0 405d1389403SSimon Glass 406d1389403SSimon Glass typedef int One_Thirty; 407d1389403SSimon Glass typedef int One_Fifty; 408d1389403SSimon Glass typedef char Capital_Letter; 409d1389403SSimon Glass typedef int Boolean; 410d1389403SSimon Glass typedef char Str_30 [31]; 411d1389403SSimon Glass typedef int Arr_1_Dim [50]; 412d1389403SSimon Glass typedef int Arr_2_Dim [50] [50]; 413d1389403SSimon Glass 414d1389403SSimon Glass typedef struct record 415d1389403SSimon Glass { 416d1389403SSimon Glass struct record *Ptr_Comp; 417d1389403SSimon Glass Enumeration Discr; 418d1389403SSimon Glass union { 419d1389403SSimon Glass struct { 420d1389403SSimon Glass Enumeration Enum_Comp; 421d1389403SSimon Glass int Int_Comp; 422d1389403SSimon Glass char Str_Comp [31]; 423d1389403SSimon Glass } var_1; 424d1389403SSimon Glass struct { 425d1389403SSimon Glass Enumeration E_Comp_2; 426d1389403SSimon Glass char Str_2_Comp [31]; 427d1389403SSimon Glass } var_2; 428d1389403SSimon Glass struct { 429d1389403SSimon Glass char Ch_1_Comp; 430d1389403SSimon Glass char Ch_2_Comp; 431d1389403SSimon Glass } var_3; 432d1389403SSimon Glass } variant; 433d1389403SSimon Glass } Rec_Type, *Rec_Pointer; 434d1389403SSimon Glass 435d1389403SSimon Glass 436d1389403SSimon Glass /* 437d1389403SSimon Glass * dhry() - run dhrystone for a given number of iterations 438d1389403SSimon Glass * 439d1389403SSimon Glass * @iterations: Number of iterations to run 440d1389403SSimon Glass */ 441d1389403SSimon Glass void dhry(int iterations); 442