summaryrefslogtreecommitdiffstats
path: root/include/asm-sh64/system.h
diff options
context:
space:
mode:
authorConstantine Gavrilov <constg@qlusters.com>2005-11-17 11:40:43 +0200
committerLinus Torvalds <torvalds@g5.osdl.org>2005-11-17 08:42:26 -0800
commitb7fd1edd2c0c225afa96af92d4adecb91e7d439d (patch)
tree5e8d4cbc6d16eb318bc7df102b39a09056981817 /include/asm-sh64/system.h
parent3b26b1100e26811e54770abaa221eae140ba840d (diff)
downloadop-kernel-dev-b7fd1edd2c0c225afa96af92d4adecb91e7d439d.zip
op-kernel-dev-b7fd1edd2c0c225afa96af92d4adecb91e7d439d.tar.gz
[PATCH] x86: fix sigaddset() inline asm memory constraint
Due to incomplete memory constraints, gcc would miscompile code with sigaddset on i386 if sig arg was const. A quote form Jakub to make the issue clear: "You need either __asm__("btsl %1,%0" : "+m"(*set) : "Ir"(_sig-1) : "cc"); or __asm__("btsl %1,%0" : "=m"(*set) : "Ir"(_sig-1), "m"(*set) : "cc"); because the btsl instruction doesn't just set the memory to some value, but needs to read its previous content as well. If you don't tell that fact to GCC, GCC is of course free to optimize as if the asm was just setting the value and not depended on the previous value." Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-sh64/system.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud