On Tue, 2010-07-13 at 20:25 +0200, Peter Palfrader wrote: > On Tue, 13 Jul 2010, Avi Kivity wrote: > > > Well, current upstream uses "m": > > > >> case 8: \ > >> asm volatile(lock "cmpxchgq %1,%2" \ > >> : "=a"(__ret) \ > >> : "r"(__new), "m"(*__xg(ptr)), "0"(__old) \ > >> : "memory"); \ > >> break; \ > > > > and works; I also failed to reproduce with 2.6.32.16. So I expect some > > toolchain involvement. > > > > Peter, what gcc are you using? > > gcc (Debian 4.3.2-1.1) 4.3.2 The experimental Debian packages of 2.6.35-rc5 are built with gcc 4.4 and they don't have this bug - last_value is marked as 'b' in System.map, which I assume means BSS. So this may be specific to gcc 4.3. Ben. -- Ben Hutchings Once a job is fouled up, anything done to improve it makes it worse.