{
__nesc_atomic_t result = SREG;
__nesc_disable_interrupt();
+ asm volatile("" : : : "memory"); /* ensure atomic section effect visibility */
return result;
}
inline void
__nesc_atomic_end(__nesc_atomic_t original_SREG) @spontaneous()
{
+ asm volatile("" : : : "memory"); /* ensure atomic section effect visibility */
SREG = original_SREG;
}
#endif
{
__nesc_atomic_t result = ((READ_SR & SR_GIE) != 0);
__nesc_disable_interrupt();
+ asm volatile("" : : : "memory"); /* ensure atomic section effect visibility */
return result;
}
void __nesc_atomic_end(__nesc_atomic_t reenable_interrupts) @spontaneous()
{
+ asm volatile("" : : : "memory"); /* ensure atomic section effect visibility */
if( reenable_interrupts )
__nesc_enable_interrupt();
}
: "=r" (result) , "=r" (temp)
: "0" (result) , "1" (temp) , "i" (ARM_CPSR_INT_MASK)
);
+ asm volatile("" : : : "memory"); /* ensure atomic section effect visibility */
return result;
}
{
uint32_t statusReg = 0;
//make sure that we only mess with the INT bit
+ asm volatile("" : : : "memory"); /* ensure atomic section effect visibility */
oldState &= ARM_CPSR_INT_MASK;
asm volatile (
"mrs %0,CPSR\n\t"