Kasper,
> Inline asm, that I have found and plan to use:
>
> #define IENABLE \
> __asm { MSR CPSR_c, #0x1F } /* Enable IRQ (Sys Mode) */ \
>
> #define IDISABLE \
> __asm { MSR CPSR_c, #0x92 } /* Disable IRQ (IRQ Mode) */ \
a) You must be sure you are in ARM mode.
b) You must be at least in SYS mode.
c) You should not switch CPU state unless you are sure you know what you
are
doing :-)
I always suggest a small assmembly routine.
.macro SC_TFUNC name
.text
.code 16
.thumb_func
.globl name
name:
.endm
/*
****************************************
** disable interrupts and return old mask
****************************************
*/
SC_TFUNC sc_sysLock
bx pc
nop
.code 32
.globl sc_sysLock_a
sc_sysLock_a:
mrs r0,cpsr
orr r1,r0,#PSR_I_BIT
msr cpsr_c,r1
bx lr
/*
****************************************
** restore interrupt mask
****************************************
*/
SC_TFUNC sc_sysUnlock
bx pc
nop
.code 32
.globl sc_sysUnlock_a
sc_sysUnlock_a:
and r0,r0,#PSR_I_BIT
mrs r1,cpsr
bic r1,r1,#PSR_I_BIT
orr r1,r1,r0
msr cpsr_c,r1
bx lr
--
42Bastian SchickMessage
Re: [lpc2000] LPC2129 ARM7 Disable/Enable Interrupt..
2005-05-12 by 42Bastian Schick
Attachments
- No local attachments were found for this message.