d0e9666b9681b723366c8286b881ae0c1bfa8f07
[ghc-hetmet.git] / ghc / misc / test-arch.c
1 /*
2     Compile this with GCC on a new platform, to learn various
3     things about argument-passing, return-returning, stack
4     layout, etc.  WDP 95/05
5 */
6
7 extern long int foo (long int, double, void *, char *, double, long int, char, long int);
8 extern double   bar (char, float, long int, long int, char *, char **);
9
10 long int
11 foo (long int a, double b, void *c, char *d, double e, long int f, char g, long int h)
12 {
13     __asm__ volatile ("--- BEGIN ---");
14     bar(*d, (float) b, a, f, d, (char **) d);
15     __asm__ volatile ("--- END ---");
16 }
17
18 double
19 bar (char a, float b, long int c, long int d, char *e, char **f)
20 {
21     __asm__ volatile ("--- BEGIN ---");
22    foo(c, (double) b, (void *) 0, e, 0.0, d, a, d);
23     __asm__ volatile ("--- END ---");
24 }
25
26 double 
27 baz(w)
28     int w;
29 {
30     int x[1000];
31     int y;
32
33     for(y = 0; y < 1000; y++)
34         w += x[y];
35
36     return ((double) w);
37 }