struct vlapic *target;
HVM_DBG_LOG(DBG_LEVEL_IOAPIC,
- "dest %x dest_mode %x delivery_mode %x vector %x trig_mode %x\n",
+ "dest=%x dest_mode=%x delivery_mode=%x "
+ "vector=%x trig_mode=%x\n",
dest, dest_mode, delivery_mode, vector, trig_mode);
deliver_bitmask = ioapic_get_delivery_bitmask(
}
else
{
- HVM_DBG_LOG(DBG_LEVEL_IOAPIC,
- "null round robin mask %x vector %x delivery_mode %x\n",
+ HVM_DBG_LOG(DBG_LEVEL_IOAPIC, "null round robin: "
+ "mask=%x vector=%x delivery_mode=%x\n",
deliver_bitmask, vector, dest_LowestPrio);
}
break;
#endif
/*
- * We use the "+m" constraint because the memory operand is both read from
- * and written to. Since the operand is in fact a word array, we also
- * specify "memory" in the clobbers list to indicate that words other than
- * the one directly addressed by the memory operand may be modified.
+ * We specify the memory operand as both input and output because the memory
+ * operand is both read from and written to. Since the operand is in fact a
+ * word array, we also specify "memory" in the clobbers list to indicate that
+ * words other than the one directly addressed by the memory operand may be
+ * modified. We don't use "+m" because the gcc manual says that it should be
+ * used only when the constraint allows the operand to reside in a register.
*/
#define ADDR (*(volatile long *) addr)
{
__asm__ __volatile__( LOCK_PREFIX
"btsl %1,%0"
- :"+m" (ADDR)
- :"dIr" (nr) : "memory");
+ :"=m" (ADDR)
+ :"dIr" (nr), "m" (ADDR) : "memory");
}
/**
{
__asm__(
"btsl %1,%0"
- :"+m" (ADDR)
- :"dIr" (nr) : "memory");
+ :"=m" (ADDR)
+ :"dIr" (nr), "m" (ADDR) : "memory");
}
/**
{
__asm__ __volatile__( LOCK_PREFIX
"btrl %1,%0"
- :"+m" (ADDR)
- :"dIr" (nr) : "memory");
+ :"=m" (ADDR)
+ :"dIr" (nr), "m" (ADDR) : "memory");
}
/**
{
__asm__(
"btrl %1,%0"
- :"+m" (ADDR)
- :"dIr" (nr) : "memory");
+ :"=m" (ADDR)
+ :"dIr" (nr), "m" (ADDR) : "memory");
}
#define smp_mb__before_clear_bit() barrier()
{
__asm__ __volatile__(
"btcl %1,%0"
- :"+m" (ADDR)
- :"dIr" (nr) : "memory");
+ :"=m" (ADDR)
+ :"dIr" (nr), "m" (ADDR) : "memory");
}
/**
{
__asm__ __volatile__( LOCK_PREFIX
"btcl %1,%0"
- :"+m" (ADDR)
- :"dIr" (nr) : "memory");
+ :"=m" (ADDR)
+ :"dIr" (nr), "m" (ADDR) : "memory");
}
/**
__asm__ __volatile__( LOCK_PREFIX
"btsl %2,%1\n\tsbbl %0,%0"
- :"=r" (oldbit),"+m" (ADDR)
- :"dIr" (nr) : "memory");
+ :"=r" (oldbit),"=m" (ADDR)
+ :"dIr" (nr), "m" (ADDR) : "memory");
return oldbit;
}
__asm__(
"btsl %2,%1\n\tsbbl %0,%0"
- :"=r" (oldbit),"+m" (ADDR)
- :"dIr" (nr) : "memory");
+ :"=r" (oldbit),"=m" (ADDR)
+ :"dIr" (nr), "m" (ADDR) : "memory");
return oldbit;
}
__asm__ __volatile__( LOCK_PREFIX
"btrl %2,%1\n\tsbbl %0,%0"
- :"=r" (oldbit),"+m" (ADDR)
- :"dIr" (nr) : "memory");
+ :"=r" (oldbit),"=m" (ADDR)
+ :"dIr" (nr), "m" (ADDR) : "memory");
return oldbit;
}
__asm__(
"btrl %2,%1\n\tsbbl %0,%0"
- :"=r" (oldbit),"+m" (ADDR)
- :"dIr" (nr) : "memory");
+ :"=r" (oldbit),"=m" (ADDR)
+ :"dIr" (nr), "m" (ADDR) : "memory");
return oldbit;
}
__asm__ __volatile__(
"btcl %2,%1\n\tsbbl %0,%0"
- :"=r" (oldbit),"+m" (ADDR)
- :"dIr" (nr) : "memory");
+ :"=r" (oldbit),"=m" (ADDR)
+ :"dIr" (nr), "m" (ADDR) : "memory");
return oldbit;
}
__asm__ __volatile__( LOCK_PREFIX
"btcl %2,%1\n\tsbbl %0,%0"
- :"=r" (oldbit),"+m" (ADDR)
- :"dIr" (nr) : "memory");
+ :"=r" (oldbit),"=m" (ADDR)
+ :"dIr" (nr), "m" (ADDR) : "memory");
return oldbit;
}