I debugged an issue related to a RAM function failing after seemingly unrelated changes caused the starting address of a block of RAM used to hold a function to shift. When the block was aligned to even bytes the function executed flawlessly, but starting at an odd location caused Illegal Address (or Illegal Opcode, I don't remember) resets. My question is why does 16-bit alignment work?
I know that the 68K processors (from which the ColdFire is derived) required 16-bit alignment on the code. ColdFire has variable-length instructions, but they might require that a function start on an even address. I would check the reference manual for your particular processor as to alignment restrictions on the code.
---Tom