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_1.c 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 *
21d1389403SSimon Glass * *** WARNING **** With BYTE's modifications applied, results obtained with
22d1389403SSimon Glass * ******* this version of the Dhrystone program may not be applicable
23d1389403SSimon Glass * to other versions.
24d1389403SSimon Glass *
25d1389403SSimon Glass * Modification Log:
26d1389403SSimon Glass * 10/22/97 - code cleanup to remove ANSI C compiler warnings
27d1389403SSimon Glass * Andy Kahn <kahn@zk3.dec.com>
28d1389403SSimon Glass *
29d1389403SSimon Glass * Adapted from:
30d1389403SSimon Glass *
31d1389403SSimon Glass * "DHRYSTONE" Benchmark Program
32d1389403SSimon Glass * -----------------------------
33d1389403SSimon Glass *
34d1389403SSimon Glass * Version: C, Version 2.1
35d1389403SSimon Glass *
36d1389403SSimon Glass * File: dhry_1.c (part 2 of 3)
37d1389403SSimon Glass *
38d1389403SSimon Glass * Date: May 25, 1988
39d1389403SSimon Glass *
40d1389403SSimon Glass * Author: Reinhold P. Weicker
41d1389403SSimon Glass *
42d1389403SSimon Glass ***************************************************************************/
43d1389403SSimon Glass char SCCSid[] = "@(#) @(#)dhry_1.c:3.4 -- 5/15/91 19:30:21";
44d1389403SSimon Glass
45d1389403SSimon Glass #include <common.h>
46d1389403SSimon Glass #include <malloc.h>
47d1389403SSimon Glass
48d1389403SSimon Glass #include "dhry.h"
49d1389403SSimon Glass
50d1389403SSimon Glass unsigned long Run_Index;
51d1389403SSimon Glass
report(void)52d1389403SSimon Glass void report(void)
53d1389403SSimon Glass {
54d1389403SSimon Glass printf("%ld loops\n", Run_Index);
55d1389403SSimon Glass }
56d1389403SSimon Glass
57d1389403SSimon Glass /* Global Variables: */
58d1389403SSimon Glass
59d1389403SSimon Glass Rec_Pointer Ptr_Glob,
60d1389403SSimon Glass Next_Ptr_Glob;
61d1389403SSimon Glass int Int_Glob;
62d1389403SSimon Glass Boolean Bool_Glob;
63d1389403SSimon Glass char Ch_1_Glob,
64d1389403SSimon Glass Ch_2_Glob;
65d1389403SSimon Glass int Arr_1_Glob [50];
66d1389403SSimon Glass int Arr_2_Glob [50] [50];
67d1389403SSimon Glass
68d1389403SSimon Glass Enumeration Func_1 (Capital_Letter Ch_1_Par_Val, Capital_Letter Ch_2_Par_Val);
69d1389403SSimon Glass /* forward declaration necessary since Enumeration may not simply be int */
70d1389403SSimon Glass
71d1389403SSimon Glass #ifndef REG
72d1389403SSimon Glass Boolean Reg = false;
73d1389403SSimon Glass #define REG
74d1389403SSimon Glass /* REG becomes defined as empty */
75d1389403SSimon Glass /* i.e. no register variables */
76d1389403SSimon Glass #else
77d1389403SSimon Glass Boolean Reg = true;
78d1389403SSimon Glass #endif
79d1389403SSimon Glass
80d1389403SSimon Glass /* variables for time measurement: */
81d1389403SSimon Glass
82d1389403SSimon Glass #ifdef TIMES
83d1389403SSimon Glass #define Too_Small_Time 120
84d1389403SSimon Glass /* Measurements should last at least about 2 seconds */
85d1389403SSimon Glass #endif
86d1389403SSimon Glass #ifdef TIME
87d1389403SSimon Glass extern long time();
88d1389403SSimon Glass /* see library function "time" */
89d1389403SSimon Glass #define Too_Small_Time 2
90d1389403SSimon Glass /* Measurements should last at least 2 seconds */
91d1389403SSimon Glass #endif
92d1389403SSimon Glass
93d1389403SSimon Glass long Begin_Time,
94d1389403SSimon Glass End_Time,
95d1389403SSimon Glass User_Time;
96d1389403SSimon Glass
97d1389403SSimon Glass /* end of variables for time measurement */
98d1389403SSimon Glass
99d1389403SSimon Glass void Proc_1 (REG Rec_Pointer Ptr_Val_Par);
100d1389403SSimon Glass void Proc_2 (One_Fifty *Int_Par_Ref);
101d1389403SSimon Glass void Proc_3 (Rec_Pointer *Ptr_Ref_Par);
102d1389403SSimon Glass void Proc_4 (void);
103d1389403SSimon Glass void Proc_5 (void);
104d1389403SSimon Glass
105d1389403SSimon Glass
106d1389403SSimon Glass extern Boolean Func_2(Str_30, Str_30);
107d1389403SSimon Glass extern void Proc_6(Enumeration, Enumeration *);
108d1389403SSimon Glass extern void Proc_7(One_Fifty, One_Fifty, One_Fifty *);
109d1389403SSimon Glass extern void Proc_8(Arr_1_Dim, Arr_2_Dim, int, int);
110d1389403SSimon Glass
dhry(int Number_Of_Runs)111d1389403SSimon Glass void dhry(int Number_Of_Runs)
112d1389403SSimon Glass /* main program, corresponds to procedures */
113d1389403SSimon Glass /* Main and Proc_0 in the Ada version */
114d1389403SSimon Glass {
115d1389403SSimon Glass One_Fifty Int_1_Loc;
116d1389403SSimon Glass REG One_Fifty Int_2_Loc;
117d1389403SSimon Glass One_Fifty Int_3_Loc;
118d1389403SSimon Glass REG char Ch_Index;
119d1389403SSimon Glass Enumeration Enum_Loc;
120d1389403SSimon Glass Str_30 Str_1_Loc;
121d1389403SSimon Glass Str_30 Str_2_Loc;
122d1389403SSimon Glass
123d1389403SSimon Glass /* Initializations */
124d1389403SSimon Glass
125d1389403SSimon Glass Next_Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
126d1389403SSimon Glass Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
127d1389403SSimon Glass
128d1389403SSimon Glass Ptr_Glob->Ptr_Comp = Next_Ptr_Glob;
129d1389403SSimon Glass Ptr_Glob->Discr = Ident_1;
130d1389403SSimon Glass Ptr_Glob->variant.var_1.Enum_Comp = Ident_3;
131d1389403SSimon Glass Ptr_Glob->variant.var_1.Int_Comp = 40;
132d1389403SSimon Glass strcpy (Ptr_Glob->variant.var_1.Str_Comp,
133d1389403SSimon Glass "DHRYSTONE PROGRAM, SOME STRING");
134d1389403SSimon Glass strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING");
135d1389403SSimon Glass
136d1389403SSimon Glass Arr_2_Glob [8][7] = 10;
137d1389403SSimon Glass /* Was missing in published program. Without this statement, */
138d1389403SSimon Glass /* Arr_2_Glob [8][7] would have an undefined value. */
139d1389403SSimon Glass /* Warning: With 16-Bit processors and Number_Of_Runs > 32000, */
140d1389403SSimon Glass /* overflow may occur for this array element. */
141d1389403SSimon Glass
142d1389403SSimon Glass #ifdef PRATTLE
143d1389403SSimon Glass printf ("\n");
144d1389403SSimon Glass printf ("Dhrystone Benchmark, Version 2.1 (Language: C)\n");
145d1389403SSimon Glass printf ("\n");
146d1389403SSimon Glass if (Reg)
147d1389403SSimon Glass {
148d1389403SSimon Glass printf ("Program compiled with 'register' attribute\n");
149d1389403SSimon Glass printf ("\n");
150d1389403SSimon Glass }
151d1389403SSimon Glass else
152d1389403SSimon Glass {
153d1389403SSimon Glass printf ("Program compiled without 'register' attribute\n");
154d1389403SSimon Glass printf ("\n");
155d1389403SSimon Glass }
156d1389403SSimon Glass printf ("Please give the number of runs through the benchmark: ");
157d1389403SSimon Glass {
158d1389403SSimon Glass int n;
159d1389403SSimon Glass scanf ("%d", &n);
160d1389403SSimon Glass Number_Of_Runs = n;
161d1389403SSimon Glass }
162d1389403SSimon Glass printf ("\n");
163d1389403SSimon Glass
164d1389403SSimon Glass printf ("Execution starts, %d runs through Dhrystone\n", Number_Of_Runs);
165d1389403SSimon Glass #endif /* PRATTLE */
166d1389403SSimon Glass
167d1389403SSimon Glass Run_Index = 0;
168d1389403SSimon Glass
169d1389403SSimon Glass /***************/
170d1389403SSimon Glass /* Start timer */
171d1389403SSimon Glass /***************/
172d1389403SSimon Glass
173d1389403SSimon Glass #ifdef SELF_TIMED
174d1389403SSimon Glass #ifdef TIMES
175d1389403SSimon Glass times (&time_info);
176d1389403SSimon Glass Begin_Time = (long) time_info.tms_utime;
177d1389403SSimon Glass #endif
178d1389403SSimon Glass #ifdef TIME
179d1389403SSimon Glass Begin_Time = time ( (long *) 0);
180d1389403SSimon Glass #endif
181d1389403SSimon Glass #endif /* SELF_TIMED */
182d1389403SSimon Glass
183d1389403SSimon Glass for (Run_Index = 1; Run_Index < Number_Of_Runs; ++Run_Index)
184d1389403SSimon Glass {
185d1389403SSimon Glass
186d1389403SSimon Glass Proc_5();
187d1389403SSimon Glass Proc_4();
188d1389403SSimon Glass /* Ch_1_Glob == 'A', Ch_2_Glob == 'B', Bool_Glob == true */
189d1389403SSimon Glass Int_1_Loc = 2;
190d1389403SSimon Glass Int_2_Loc = 3;
191d1389403SSimon Glass strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 2'ND STRING");
192d1389403SSimon Glass Enum_Loc = Ident_2;
193d1389403SSimon Glass Bool_Glob = ! Func_2 (Str_1_Loc, Str_2_Loc);
194d1389403SSimon Glass /* Bool_Glob == 1 */
195d1389403SSimon Glass while (Int_1_Loc < Int_2_Loc) /* loop body executed once */
196d1389403SSimon Glass {
197d1389403SSimon Glass Int_3_Loc = 5 * Int_1_Loc - Int_2_Loc;
198d1389403SSimon Glass /* Int_3_Loc == 7 */
199d1389403SSimon Glass Proc_7 (Int_1_Loc, Int_2_Loc, &Int_3_Loc);
200d1389403SSimon Glass /* Int_3_Loc == 7 */
201d1389403SSimon Glass Int_1_Loc += 1;
202d1389403SSimon Glass } /* while */
203d1389403SSimon Glass /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */
204d1389403SSimon Glass Proc_8 (Arr_1_Glob, Arr_2_Glob, Int_1_Loc, Int_3_Loc);
205d1389403SSimon Glass /* Int_Glob == 5 */
206d1389403SSimon Glass Proc_1 (Ptr_Glob);
207d1389403SSimon Glass for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index)
208d1389403SSimon Glass /* loop body executed twice */
209d1389403SSimon Glass {
210d1389403SSimon Glass if (Enum_Loc == Func_1 (Ch_Index, 'C'))
211d1389403SSimon Glass /* then, not executed */
212d1389403SSimon Glass {
213d1389403SSimon Glass Proc_6 (Ident_1, &Enum_Loc);
214d1389403SSimon Glass strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 3'RD STRING");
215d1389403SSimon Glass Int_2_Loc = Run_Index;
216d1389403SSimon Glass Int_Glob = Run_Index;
217d1389403SSimon Glass }
218d1389403SSimon Glass }
219d1389403SSimon Glass /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */
220d1389403SSimon Glass Int_2_Loc = Int_2_Loc * Int_1_Loc;
221d1389403SSimon Glass Int_1_Loc = Int_2_Loc / Int_3_Loc;
222d1389403SSimon Glass Int_2_Loc = 7 * (Int_2_Loc - Int_3_Loc) - Int_1_Loc;
223d1389403SSimon Glass /* Int_1_Loc == 1, Int_2_Loc == 13, Int_3_Loc == 7 */
224d1389403SSimon Glass Proc_2 (&Int_1_Loc);
225d1389403SSimon Glass /* Int_1_Loc == 5 */
226d1389403SSimon Glass
227d1389403SSimon Glass } /* loop "for Run_Index" */
228d1389403SSimon Glass
229d1389403SSimon Glass /**************/
230d1389403SSimon Glass /* Stop timer */
231d1389403SSimon Glass /**************/
232d1389403SSimon Glass #ifdef SELF_TIMED
233d1389403SSimon Glass #ifdef TIMES
234d1389403SSimon Glass times (&time_info);
235d1389403SSimon Glass End_Time = (long) time_info.tms_utime;
236d1389403SSimon Glass #endif
237d1389403SSimon Glass #ifdef TIME
238d1389403SSimon Glass End_Time = time ( (long *) 0);
239d1389403SSimon Glass #endif
240d1389403SSimon Glass #endif /* SELF_TIMED */
241d1389403SSimon Glass
242d1389403SSimon Glass /* BYTE version never executes this stuff */
243d1389403SSimon Glass #ifdef SELF_TIMED
244d1389403SSimon Glass printf ("Execution ends\n");
245d1389403SSimon Glass printf ("\n");
246d1389403SSimon Glass printf ("Final values of the variables used in the benchmark:\n");
247d1389403SSimon Glass printf ("\n");
248d1389403SSimon Glass printf ("Int_Glob: %d\n", Int_Glob);
249d1389403SSimon Glass printf (" should be: %d\n", 5);
250d1389403SSimon Glass printf ("Bool_Glob: %d\n", Bool_Glob);
251d1389403SSimon Glass printf (" should be: %d\n", 1);
252d1389403SSimon Glass printf ("Ch_1_Glob: %c\n", Ch_1_Glob);
253d1389403SSimon Glass printf (" should be: %c\n", 'A');
254d1389403SSimon Glass printf ("Ch_2_Glob: %c\n", Ch_2_Glob);
255d1389403SSimon Glass printf (" should be: %c\n", 'B');
256d1389403SSimon Glass printf ("Arr_1_Glob[8]: %d\n", Arr_1_Glob[8]);
257d1389403SSimon Glass printf (" should be: %d\n", 7);
258d1389403SSimon Glass printf ("Arr_2_Glob[8][7]: %d\n", Arr_2_Glob[8][7]);
259d1389403SSimon Glass printf (" should be: Number_Of_Runs + 10\n");
260d1389403SSimon Glass printf ("Ptr_Glob->\n");
261d1389403SSimon Glass printf (" Ptr_Comp: %d\n", (int) Ptr_Glob->Ptr_Comp);
262d1389403SSimon Glass printf (" should be: (implementation-dependent)\n");
263d1389403SSimon Glass printf (" Discr: %d\n", Ptr_Glob->Discr);
264d1389403SSimon Glass printf (" should be: %d\n", 0);
265d1389403SSimon Glass printf (" Enum_Comp: %d\n", Ptr_Glob->variant.var_1.Enum_Comp);
266d1389403SSimon Glass printf (" should be: %d\n", 2);
267d1389403SSimon Glass printf (" Int_Comp: %d\n", Ptr_Glob->variant.var_1.Int_Comp);
268d1389403SSimon Glass printf (" should be: %d\n", 17);
269d1389403SSimon Glass printf (" Str_Comp: %s\n", Ptr_Glob->variant.var_1.Str_Comp);
270d1389403SSimon Glass printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n");
271d1389403SSimon Glass printf ("Next_Ptr_Glob->\n");
272d1389403SSimon Glass printf (" Ptr_Comp: %d\n", (int) Next_Ptr_Glob->Ptr_Comp);
273d1389403SSimon Glass printf (" should be: (implementation-dependent), same as above\n");
274d1389403SSimon Glass printf (" Discr: %d\n", Next_Ptr_Glob->Discr);
275d1389403SSimon Glass printf (" should be: %d\n", 0);
276d1389403SSimon Glass printf (" Enum_Comp: %d\n", Next_Ptr_Glob->variant.var_1.Enum_Comp);
277d1389403SSimon Glass printf (" should be: %d\n", 1);
278d1389403SSimon Glass printf (" Int_Comp: %d\n", Next_Ptr_Glob->variant.var_1.Int_Comp);
279d1389403SSimon Glass printf (" should be: %d\n", 18);
280d1389403SSimon Glass printf (" Str_Comp: %s\n",
281d1389403SSimon Glass Next_Ptr_Glob->variant.var_1.Str_Comp);
282d1389403SSimon Glass printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n");
283d1389403SSimon Glass printf ("Int_1_Loc: %d\n", Int_1_Loc);
284d1389403SSimon Glass printf (" should be: %d\n", 5);
285d1389403SSimon Glass printf ("Int_2_Loc: %d\n", Int_2_Loc);
286d1389403SSimon Glass printf (" should be: %d\n", 13);
287d1389403SSimon Glass printf ("Int_3_Loc: %d\n", Int_3_Loc);
288d1389403SSimon Glass printf (" should be: %d\n", 7);
289d1389403SSimon Glass printf ("Enum_Loc: %d\n", Enum_Loc);
290d1389403SSimon Glass printf (" should be: %d\n", 1);
291d1389403SSimon Glass printf ("Str_1_Loc: %s\n", Str_1_Loc);
292d1389403SSimon Glass printf (" should be: DHRYSTONE PROGRAM, 1'ST STRING\n");
293d1389403SSimon Glass printf ("Str_2_Loc: %s\n", Str_2_Loc);
294d1389403SSimon Glass printf (" should be: DHRYSTONE PROGRAM, 2'ND STRING\n");
295d1389403SSimon Glass printf ("\n");
296d1389403SSimon Glass
297d1389403SSimon Glass User_Time = End_Time - Begin_Time;
298d1389403SSimon Glass
299d1389403SSimon Glass if (User_Time < Too_Small_Time)
300d1389403SSimon Glass {
301d1389403SSimon Glass printf ("Measured time too small to obtain meaningful results\n");
302d1389403SSimon Glass printf ("Please increase number of runs\n");
303d1389403SSimon Glass printf ("\n");
304d1389403SSimon Glass }
305d1389403SSimon Glass else
306d1389403SSimon Glass {
307d1389403SSimon Glass #ifdef TIME
308d1389403SSimon Glass Microseconds = (float) User_Time * Mic_secs_Per_Second
309d1389403SSimon Glass / (float) Number_Of_Runs;
310d1389403SSimon Glass Dhrystones_Per_Second = (float) Number_Of_Runs / (float) User_Time;
311d1389403SSimon Glass #else
312d1389403SSimon Glass Microseconds = (float) User_Time * Mic_secs_Per_Second
313d1389403SSimon Glass / ((float) HZ * ((float) Number_Of_Runs));
314d1389403SSimon Glass Dhrystones_Per_Second = ((float) HZ * (float) Number_Of_Runs)
315d1389403SSimon Glass / (float) User_Time;
316d1389403SSimon Glass #endif
317d1389403SSimon Glass printf ("Microseconds for one run through Dhrystone: ");
318d1389403SSimon Glass printf ("%6.1f \n", Microseconds);
319d1389403SSimon Glass printf ("Dhrystones per Second: ");
320d1389403SSimon Glass printf ("%6.1f \n", Dhrystones_Per_Second);
321d1389403SSimon Glass printf ("\n");
322d1389403SSimon Glass }
323d1389403SSimon Glass #endif /* SELF_TIMED */
324d1389403SSimon Glass }
325d1389403SSimon Glass
326d1389403SSimon Glass
Proc_1(REG Rec_Pointer Ptr_Val_Par)327d1389403SSimon Glass void Proc_1 (REG Rec_Pointer Ptr_Val_Par)
328d1389403SSimon Glass /* executed once */
329d1389403SSimon Glass {
330d1389403SSimon Glass REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp;
331d1389403SSimon Glass /* == Ptr_Glob_Next */
332d1389403SSimon Glass /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp, */
333d1389403SSimon Glass /* corresponds to "rename" in Ada, "with" in Pascal */
334d1389403SSimon Glass
335d1389403SSimon Glass structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob);
336d1389403SSimon Glass Ptr_Val_Par->variant.var_1.Int_Comp = 5;
337d1389403SSimon Glass Next_Record->variant.var_1.Int_Comp
338d1389403SSimon Glass = Ptr_Val_Par->variant.var_1.Int_Comp;
339d1389403SSimon Glass Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp;
340d1389403SSimon Glass Proc_3 (&Next_Record->Ptr_Comp);
341d1389403SSimon Glass /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp
342d1389403SSimon Glass == Ptr_Glob->Ptr_Comp */
343d1389403SSimon Glass if (Next_Record->Discr == Ident_1)
344d1389403SSimon Glass /* then, executed */
345d1389403SSimon Glass {
346d1389403SSimon Glass Next_Record->variant.var_1.Int_Comp = 6;
347d1389403SSimon Glass Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp,
348d1389403SSimon Glass &Next_Record->variant.var_1.Enum_Comp);
349d1389403SSimon Glass Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp;
350d1389403SSimon Glass Proc_7 (Next_Record->variant.var_1.Int_Comp, 10,
351d1389403SSimon Glass &Next_Record->variant.var_1.Int_Comp);
352d1389403SSimon Glass }
353d1389403SSimon Glass else /* not executed */
354d1389403SSimon Glass structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp);
355d1389403SSimon Glass } /* Proc_1 */
356d1389403SSimon Glass
357d1389403SSimon Glass
Proc_2(One_Fifty * Int_Par_Ref)358d1389403SSimon Glass void Proc_2 (One_Fifty *Int_Par_Ref)
359d1389403SSimon Glass /* executed once */
360d1389403SSimon Glass /* *Int_Par_Ref == 1, becomes 4 */
361d1389403SSimon Glass {
362d1389403SSimon Glass One_Fifty Int_Loc;
363d1389403SSimon Glass Enumeration Enum_Loc;
364d1389403SSimon Glass
365d1389403SSimon Glass Enum_Loc = 0;
366d1389403SSimon Glass
367d1389403SSimon Glass Int_Loc = *Int_Par_Ref + 10;
368d1389403SSimon Glass do /* executed once */
369d1389403SSimon Glass if (Ch_1_Glob == 'A')
370d1389403SSimon Glass /* then, executed */
371d1389403SSimon Glass {
372d1389403SSimon Glass Int_Loc -= 1;
373d1389403SSimon Glass *Int_Par_Ref = Int_Loc - Int_Glob;
374d1389403SSimon Glass Enum_Loc = Ident_1;
375d1389403SSimon Glass } /* if */
376d1389403SSimon Glass while (Enum_Loc != Ident_1); /* true */
377d1389403SSimon Glass } /* Proc_2 */
378d1389403SSimon Glass
379d1389403SSimon Glass
Proc_3(Rec_Pointer * Ptr_Ref_Par)380d1389403SSimon Glass void Proc_3 (Rec_Pointer *Ptr_Ref_Par)
381d1389403SSimon Glass /* executed once */
382d1389403SSimon Glass /* Ptr_Ref_Par becomes Ptr_Glob */
383d1389403SSimon Glass {
384d1389403SSimon Glass if (Ptr_Glob != Null)
385d1389403SSimon Glass /* then, executed */
386d1389403SSimon Glass *Ptr_Ref_Par = Ptr_Glob->Ptr_Comp;
387d1389403SSimon Glass Proc_7 (10, Int_Glob, &Ptr_Glob->variant.var_1.Int_Comp);
388d1389403SSimon Glass } /* Proc_3 */
389d1389403SSimon Glass
390d1389403SSimon Glass
Proc_4(void)391d1389403SSimon Glass void Proc_4 (void) /* without parameters */
392d1389403SSimon Glass /* executed once */
393d1389403SSimon Glass {
394d1389403SSimon Glass Boolean Bool_Loc;
395d1389403SSimon Glass
396d1389403SSimon Glass Bool_Loc = Ch_1_Glob == 'A';
397d1389403SSimon Glass Bool_Glob = Bool_Loc | Bool_Glob;
398d1389403SSimon Glass Ch_2_Glob = 'B';
399d1389403SSimon Glass } /* Proc_4 */
400d1389403SSimon Glass
Proc_5(void)401d1389403SSimon Glass void Proc_5 (void) /* without parameters */
402d1389403SSimon Glass /*******/
403d1389403SSimon Glass /* executed once */
404d1389403SSimon Glass {
405d1389403SSimon Glass Ch_1_Glob = 'A';
406d1389403SSimon Glass Bool_Glob = false;
407d1389403SSimon Glass } /* Proc_5 */
408d1389403SSimon Glass
409d1389403SSimon Glass
410d1389403SSimon Glass /* Procedure for the assignment of structures, */
411d1389403SSimon Glass /* if the C compiler doesn't support this feature */
412d1389403SSimon Glass #ifdef NOSTRUCTASSIGN
memcpy(d,s,l)413d1389403SSimon Glass memcpy (d, s, l)
414d1389403SSimon Glass register char *d;
415d1389403SSimon Glass register char *s;
416d1389403SSimon Glass register int l;
417d1389403SSimon Glass {
418d1389403SSimon Glass while (l--) *d++ = *s++;
419d1389403SSimon Glass }
420d1389403SSimon Glass #endif
421