Fix asm constraint in put_user

Andreas Schwab
2005-11-21T15:12:19Z

The st insn on the ia64 does not allow the post-increment to come from a
register (only ld does). Thus the "m" constraint is not suitable for the
asm statement in __put_user_size.

Signed-off-by: Andreas Schwab <schwab@suse.de>

--- linux-2.6.14/include/asm-ia64/uaccess.h.~1~ 2005-10-28 02:02:08.000000000 +0200
+++ linux-2.6.14/include/asm-ia64/uaccess.h 2005-11-20 18:15:46.559296784 +0100
@@ -154,10 +154,10 @@ do { \
# define __put_user_size(val, addr, n, err) \
do { \
register long __pu_r8 asm ("r8") = 0; \
- asm volatile ("\n[1:]\tst"#n" %1=%r2%P1\t// %0 gets overwritten by exception handler\n" \
+ asm volatile ("\n[1:]\tst"#n" [%1]=%r2\t// %0 gets overwritten by exception handler\n" \
"\t.xdata4 \"__ex_table\", 1b-., 1f-.\n" \
"[1:]" \
- : "=r"(__pu_r8) : "m"(__m(addr)), "rO"(val), "0"(__pu_r8)); \
+ : "=r"(__pu_r8) : "r"(addr), "rO"(val), "0"(__pu_r8)); \
(err) = __pu_r8; \
} while (0)

Andreas.

--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."