Hi Everyone,
Newbie time again.
I'm getting an error when compiling a CPP application with references to a "C" file wrapper for an assembly routine. The declaration is in a "h" file and the definition is in an "c" file. The "LINKER" error is undefined reference to the "C" function call "mcf5xxx_irq_enable".
If I force a CPP compile then the error moves to the unreferenced assembly call "asm_set_ipl".
How do I get this to compile properly?
Attached is the full project.
Thanks
MainBoot.cpp
#include "Common.h"
#include "MCF5xxx.h"
int main(int /* argc */, char /* **argc */)
{
mcf5xxx_irq_enable();
return 0;
}
MCF5xxx.h
...
void mcf5xxx_irq_enable (void);
...
MCF5xxx.c
...
void mcf5xxx_irq_enable (void)
{
asm_set_ipl(0);
}
...
mcf5xxx.s
...
.global asm_set_ipl
.global _asm_set_ipl
...
asm_set_ipl:
_asm_set_ipl:
link A6,#-8
movem.l D6-D7,(SP)
move.w SR,D7 /* current sr */
move.l D7,D0 /* prepare return value */
andi.l #0x0700,D0 /* mask out IPL */
lsr.l #8,D0 /* IPL */
move.l 8(A6),D6 /* get argument */
andi.l #0x07,D6 /* least significant three bits */
lsl.l #8,D6 /* move over to make mask */
andi.l #0x0000F8FF,D7 /* zero out current IPL */
or.l D6,D7 /* place new IPL in sr */
move.w D7,SR
movem.l (SP),D6-D7
lea 8(SP),SP
unlk A6
rts
...
Message Edited by t.dowe on 2009-09-04 11:28 AM