blob: cbb45974c4ae1dd2b0adeb87e570f1f7e2c26c81 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-skip-if "" { *-*-* } { "-mcpu=msp430x*" "-mlarge" } { "" } } */
/* { dg-options "-mcpu=msp430" } */
/* { dg-final { scan-assembler "PUSH\tR5" } } */
/* { dg-final { scan-assembler "PUSH\tR12" } } */
/* { dg-final { scan-assembler-not "PUSH\tR4" } } */
/* { dg-final { scan-assembler-not "PUSH\tR11" } } */
/* 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
}