summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/m68k/interrupt_thread-1.c
blob: ee7179cd4d9627e85427cdf2c86a1d8ef78d5910 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/* { dg-do compile } */
/* { dg-options "-mcpu=fidoa -O2 -fomit-frame-pointer" } */

/* Check that interrupt_thread attribute works.  */

#ifdef __mfido__
extern void foo (void) __attribute__ ((interrupt_thread));

int a, b, c, d;

void bar (void);

void
foo (void)
{
  int w, x, y, z;

  w = a;
  x = b;
  y = c;
  z = d;

  bar ();

  a = w;
  b = x;
  c = y;
  d = z;
}
#else
/* If the current mutilib is, say, -mcpu=5485, the compiler gets
   -mcpu=fidoa -mcpu=5485, where -mcpu=fidoa is overridden.  In that
   case, we just print out "sleep" in the assembly file and pretend
   that everything is all right.  */
asm ("sleep");
#endif

/* "sleep" should be generated in place of "rts".  */
/* { dg-final { scan-assembler-times "sleep" 1 } } */
/* { dg-final { scan-assembler-times "rts" 0 } } */

/* There should be no stack adjustment.  */
/* { dg-final { scan-assembler-times "sp" 0 } } */