aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/msp430/isr-push-pop-leaf-isr-430x.c
blob: 872a40ef755cb5c45d6f1bddfd0954201168c6fc (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
/* { dg-do compile } */
/* { dg-skip-if "" { *-*-* } { "-mcpu=msp430" } { "" } } */
/* { dg-final { scan-assembler "PUSHM.*#4.*R15" } } */
/* { dg-final { scan-assembler "PUSHM.*#6.*R10" } } */

/* To check that the compiler doesn't blindly save all regs, we omit R4 and R11
   from the trashing.  */
#define TRASH_REGS_LITE				\
  __asm__ ("mov #0xFFFF, r5" : : : "R5");	\
  __asm__ ("mov #0xFFFF, r6" : : : "R6");	\
  __asm__ ("mov #0xFFFF, r7" : : : "R7");	\
  __asm__ ("mov #0xFFFF, r8" : : : "R8");	\
  __asm__ ("mov #0xFFFF, r9" : : : "R9");	\
  __asm__ ("mov #0xFFFF, r10" : : : "R10");	\
  __asm__ ("mov #0xFFFF, r12" : : : "R12");	\
  __asm__ ("mov #0xFFFF, r13" : : : "R13");	\
  __asm__ ("mov #0xFFFF, r14" : : : "R14");	\
  __asm__ ("mov #0xFFFF, r15" : : : "R15");

void __attribute__((interrupt))
isr_leaf (void)
{
  TRASH_REGS_LITE
}