Using the arm-cortexm4-eabi-as crossdev assembler, a MOVT of a negative value shifted right by 16 (to get the high 16 bits) results in an out of range error. On my beagleboard XM running ARM Gentoo I can assemble that same line of source with no problems. I am assuming that the >> operator is acting as though it were signed for the corssdev assembler but unsigned for the native assembker. One or other of them is doing this wrong, not sure which. This is probably low priority as I can change my source to MOVT Rn, ((-2 >> 16) & 0xffff) or some such
Please do file bug reports when you find bugs. Pleasee do not file bug reports when you're wondering about things.
how was this a "wondering about things". The assembler behaves differently depending on which version of it you run. just because there is a work around does not mean there is not an inconsistency!