The bne instruction expects an absolute target address and it isn't
best-suited for implementing a short range jump, such as the one in
XCHG_M_R().
Replace it with jne which expects a relative address that can be
correctly computed a link time.
Interestingly, the jump is almost never taken. If it would, this would
crash the test. However, linkers may complain when relacating the
target address used in bne.
__asm__ __volatile__( \
"0: l 0,%[global]\n\t" \
" cs 0,%[local],%[global]\n\t" \
- " bne 0b\n\t" \
+ " jne 0b\n\t" \
" lr %[local],0\n\t" \
: /*out*/ [global]"+m"(_addr), [local]"+d"(_lval) \
: /*in*/ \