What is construction for EnterCritical and ExitCritical macro (function) to have part of code without interrupt?
Micro: MPC5604
I found these examples below.
methode #1:
Disable/Enable interrupts
void interrupt_enable_interrupt(void)
{
asm(" wrteei 1"); /* Enable external interrupts */
}
void interrupt_disable_interrupt(void)
{
asm(" wrteei 0"); /* disable external interrupts */
}
method #2:
Save/Restore interrupt status to local variable
A local variable 'cpu_sr' of type 'vint32_t' needs to be defined in this method.
vuint32_t interrupt_enter_critical(void)
{
asm("mfmsr r3"); /* save the register on the local variable */
asm("wrteei 0"); /* disable the interrupt */
}
void interrupt_exit_critical(vuint32_t status_reg)
{
asm("mtmsr r3"); /* Enable external interrupts */
}
Somebody used these constructions? Is it working?