Displaying 3 results from an estimated 3 matches for "bitop_addr".
2013 Jul 15
1
[LLVMdev] [PATCH] x86/asm: avoid mnemonics without type suffix
...mbiguate btr/bts automatically.
>
> That sounds reasonable for all other operations because it makes a real
> semantic difference, but overly strict for bit operations.
>
To be fair, we *ought to* be able to do something like:
asm volatile(LOCK_PREFIX "bts%z0 %1,%0"
: BITOP_ADDR(addr) : "Ir" (nr) : "memory");
... but some older version of gcc are broken and emit "ll" rather than
"q". Furthermore, since that would actually result in *worse* code
emitted overall (unnecessary REX prefixes), I'm not exactly happy on the
idea.
-hp...
2013 Jul 14
9
[LLVMdev] [PATCH] x86/asm: avoid mnemonics without type suffix
...s.h
+++ b/arch/x86/include/asm/bitops.h
@@ -67,7 +67,7 @@ set_bit(unsigned int nr, volatile unsigned long *addr)
: "iq" ((u8)CONST_MASK(nr))
: "memory");
} else {
- asm volatile(LOCK_PREFIX "bts %1,%0"
+ asm volatile(LOCK_PREFIX "btsl %1,%0"
: BITOP_ADDR(addr) : "Ir" (nr) : "memory");
}
}
@@ -83,7 +83,7 @@ set_bit(unsigned int nr, volatile unsigned long *addr)
*/
static inline void __set_bit(int nr, volatile unsigned long *addr)
{
- asm volatile("bts %1,%0" : ADDR : "Ir" (nr) : "memory");
+ a...
2013 Jul 14
0
[LLVMdev] [PATCH] x86/asm: avoid mnemonics without type suffix
...ps.h
> @@ -67,7 +67,7 @@ set_bit(unsigned int nr, volatile unsigned long *addr)
> : "iq" ((u8)CONST_MASK(nr))
> : "memory");
> } else {
> - asm volatile(LOCK_PREFIX "bts %1,%0"
> + asm volatile(LOCK_PREFIX "btsl %1,%0"
> : BITOP_ADDR(addr) : "Ir" (nr) : "memory");
> }
> }
> @@ -83,7 +83,7 @@ set_bit(unsigned int nr, volatile unsigned long *addr)
> */
> static inline void __set_bit(int nr, volatile unsigned long *addr)
> {
> - asm volatile("bts %1,%0" : ADDR : "Ir&qu...