Commit 2f279eeb authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

powerpc/uaccess: Add pre-update addressing to __get_user_asm() and __put_user_asm()

Enable pre-update addressing mode in __get_user_asm() and __put_user_asm()
Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Reviewed-by: default avatarSegher Boessenkool <segher@kernel.crashing.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/13041c7df39e89ddf574ea0cdc6dedfdd9734140.1597235091.git.christophe.leroy@csgroup.eu
parent c20beffe
...@@ -158,7 +158,7 @@ extern long __put_user_bad(void); ...@@ -158,7 +158,7 @@ extern long __put_user_bad(void);
*/ */
#define __put_user_asm(x, addr, err, op) \ #define __put_user_asm(x, addr, err, op) \
__asm__ __volatile__( \ __asm__ __volatile__( \
"1: " op "%X2 %1,%2 # put_user\n" \ "1: " op "%U2%X2 %1,%2 # put_user\n" \
"2:\n" \ "2:\n" \
".section .fixup,\"ax\"\n" \ ".section .fixup,\"ax\"\n" \
"3: li %0,%3\n" \ "3: li %0,%3\n" \
...@@ -166,7 +166,7 @@ extern long __put_user_bad(void); ...@@ -166,7 +166,7 @@ extern long __put_user_bad(void);
".previous\n" \ ".previous\n" \
EX_TABLE(1b, 3b) \ EX_TABLE(1b, 3b) \
: "=r" (err) \ : "=r" (err) \
: "r" (x), "m" (*addr), "i" (-EFAULT), "0" (err)) : "r" (x), "m<>" (*addr), "i" (-EFAULT), "0" (err))
#ifdef __powerpc64__ #ifdef __powerpc64__
#define __put_user_asm2(x, ptr, retval) \ #define __put_user_asm2(x, ptr, retval) \
...@@ -316,7 +316,7 @@ extern long __get_user_bad(void); ...@@ -316,7 +316,7 @@ extern long __get_user_bad(void);
#define __get_user_asm(x, addr, err, op) \ #define __get_user_asm(x, addr, err, op) \
__asm__ __volatile__( \ __asm__ __volatile__( \
"1: "op"%X2 %1, %2 # get_user\n" \ "1: "op"%U2%X2 %1, %2 # get_user\n" \
"2:\n" \ "2:\n" \
".section .fixup,\"ax\"\n" \ ".section .fixup,\"ax\"\n" \
"3: li %0,%3\n" \ "3: li %0,%3\n" \
...@@ -325,7 +325,7 @@ extern long __get_user_bad(void); ...@@ -325,7 +325,7 @@ extern long __get_user_bad(void);
".previous\n" \ ".previous\n" \
EX_TABLE(1b, 3b) \ EX_TABLE(1b, 3b) \
: "=r" (err), "=r" (x) \ : "=r" (err), "=r" (x) \
: "m" (*addr), "i" (-EFAULT), "0" (err)) : "m<>" (*addr), "i" (-EFAULT), "0" (err))
#ifdef __powerpc64__ #ifdef __powerpc64__
#define __get_user_asm2(x, addr, err) \ #define __get_user_asm2(x, addr, err) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment