microblaze: Fix put_user macro for 64bits arguments
For 64bits arguments gcc caused that put_user macro works with wrong value because of optimalization. Adding volatile caused that gcc not optimized it. It is possible to use (as Blackfin do) two put_user macros with 32bits arguments but there is one more instruction which is due to duplication zero return value which is called put_user_asm macro. Signed-off-by: Michal Simek <monstr@monstr.eu>
This commit is contained in:
@@ -189,7 +189,7 @@ extern long strnlen_user(const char *src, long count);
|
|||||||
|
|
||||||
#define __put_user(x, ptr) \
|
#define __put_user(x, ptr) \
|
||||||
({ \
|
({ \
|
||||||
__typeof__(*(ptr)) __gu_val = x; \
|
__typeof__(*(ptr)) volatile __gu_val = (x); \
|
||||||
long __gu_err = 0; \
|
long __gu_err = 0; \
|
||||||
switch (sizeof(__gu_val)) { \
|
switch (sizeof(__gu_val)) { \
|
||||||
case 1: \
|
case 1: \
|
||||||
|
Reference in New Issue
Block a user