Hi everybody,
I would like to report an issue that I've discovered working with my MSP430 launchpad kit. I've noticed how the CPU doesn't correctly recognize the PUSHX.W instructions using absolute mode with a 20-bit address. Specifically, using the instruction "PUSHX[.W] &0x10000", or any other value above "0xFFFF", will simply let the CPU push the value at the address given by the specified one with its most important bit dropped. The CPU drops the most important bit, which is correctly encoded in the extension word, and simply ignores it. "PUSHX[.W] &0x10000" will become "PUSHX[.W] &0x0000", "PUSHX[.W] &0x10010" will become "PUSHX[.W] &0x0010" and "PUSHX[.W] &0x20333" will become "PUSHX[.W] &0x0333".
It's worth noting that the compiler correctly distinguishes between "PUSHX[.W] &0x10000" and "PUSHX[.W] &0x0000" since it uses the extension word to encode the extra bit and creates a binary code with different instructions, but the CPU does not make any distinction between these two instructions.
If anybody has a solution to this problem I would appreciate any feedback!