Hi
To add to the previous post, you probably want to change the cpu target you have invoked for gcc from -m5307 to -m528x so that the compiler knows which version of the instruction set to use - although it is unlikely to be the cause of your problem.
Secondly, if you want to disable interrupts, then the way to do that is to modify the CPU's status register to mask them. Use something like the assembler in the previous post, which you can make inline if you wish. Here is an assembler function that you can call from C easily:
Code:/********************************************************************//* * From mcf52xx_lo.s * * This routines changes the IPL to the value passed into the routine. * It also returns the old IPL value back. * * Calling convention from C: * old_ipl = asm_set_ipl(new_ipl); * * Note that only the least significant three bits of the passed * value are used. */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
Finally, a memory fault exception will occur when you attempt to read or write to memory that is not configured for read/write access, or the CPU tries to execute code from an address that is not configured as executable.
Cheers,
Paul.