On Wed, Oct 18, 2017 at 05:17:19PM +0200, Michael Matz wrote: > On Wed, 18 Oct 2017, Segher Boessenkool wrote: > > > Certainly. And to work around the bug, it should work to mention some > > hard register as asm input. Ideally something that is live anyway; > > perhaps the stack pointer :-) Like so: > > > > __asm volatile ("mrs %0,PRIMASK" : "=r" (status) :: "sp"); > > > > (I tested this, it does work around the bug). > > > > Or hey, why not the program counter, that should make it even clearer > > something is funny here: > > > > __asm volatile ("mrs %0,PRIMASK" : "=r" (status) :: "pc"); > > > > (also tested, works fine). > > Both of these are not asm inputs but clobbers, though :)
Yeah I typed (and tested) the code after writing that first sentence. Clobbering was easier :-) > And clobbering > "pc" could have funny effects if any of our allocators ever would produce > save/restore code around such asms for such clobbers. Yeah -- but sp (and pc, if it exists) is a fixed register, so we don't do such things :-) Segher