blob: ea80545b102a0a9fe85f929d70720706f902ff67 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O -fdump-ipa-modref" } */
#define sysreg_read(regname) \
({ \
unsigned long __sr_val; \
asm volatile(""); \
\
__sr_val; \
})
#define sysreg_write(regname, __sw_val) \
do { \
asm volatile(""); \
} while (0)
#define isb() \
do { \
asm volatile( \
"isb" \
: \
: \
: "memory"); \
} while (0)
static unsigned long sctlr_read(void)
{
return sysreg_read(sctlr_el1);
}
static void sctlr_write(unsigned long val)
{
sysreg_write(sctlr_el1, val);
}
static void sctlr_rmw(void)
{
unsigned long val;
val = sctlr_read();
val |= 1UL << 7;
sctlr_write(val);
}
void sctlr_read_multiple(void)
{
sctlr_read();
sctlr_read();
sctlr_read();
sctlr_read();
}
void sctlr_write_multiple(void)
{
sctlr_write(0);
sctlr_write(0);
sctlr_write(0);
sctlr_write(0);
sctlr_write(0);
}
void sctlr_rmw_multiple(void)
{
sctlr_rmw();
sctlr_rmw();
sctlr_rmw();
sctlr_rmw();
}
void function(void)
{
sctlr_read_multiple();
sctlr_write_multiple();
sctlr_rmw_multiple();
isb();
}
/* { dg-final { scan-ipa-dump-not "Function found to be const" "modref" } } */