This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

update MDK , and generate erro

I am maintaining a project which is worked with ARM COMPILER V2.53 and is finished six years ago .

The development platform is lost, I try to build and download the latest Keil MDK 4.6.

There is a big problem with interrupt.

void Timer0Handler(void) __irq
{ T0IR = 1; // clear interrupt flag

IENABLE; // handles nested interrupt

jiffy++; // update the jiffy timer

IDISABLE;

VICVectAddr = 0; // Acknowledge Interrupt
}

ALL ISR ( timer0,timer1, i2c,...) have IENABLE and IDISABLE.

These embedded asm marco is in irq.h

#if NESTED_INTERRUPT

#define IENABLE __asm { MRS LR, SPSR } \

__asm { STMFD SP!, {LR} } \

__asm { MSR CPSR_c, #SYS32Mode } \

__asm { STMFD SP!, {LR} }

#else

#define IENABLE ; /* do nothing */

#endif

#if NESTED_INTERRUPT

#define IDISABLE __asm { LDMFD SP!, {LR} } \

__asm { MSR CPSR_c, #(IRQ32Mode|I_Bit) } \

__asm { LDMFD SP!, {LR} } \

__asm { MSR SPSR_cxsf, LR }

#else

#define IDISABLE ; /* do nothing */

#endif


The compiler generate error , like this

src\Timer.c(30): error: #20: identifier "LR" is undefined
src\Timer.c(30): error: #268: declaration may not appear after executable statement in block
src\Timer.c(30): error: #20: identifier "MSR" is undefined
src\Timer.c(30): error: #10: "#" not expected here
src\Timer.c(30): error: #40: expected an identifier
src\Timer.c(30): error: #40: expected an identifier
src\Timer.c(30): error: #65: expected a ";"

Can anybody give me a hand? How to modify the soruce code?