提交 c77a9c4b 编写于 作者: M Michal Simek

microblaze: uaccess: fix __get_user_asm macro

It is used __FIXUP_SECTION and __EX_TABLE_SECTION macros.
Signed-off-by: NMichal Simek <monstr@monstr.eu>
上级 40b1156d
...@@ -231,24 +231,25 @@ extern long strnlen_user(const char *src, long count); ...@@ -231,24 +231,25 @@ extern long strnlen_user(const char *src, long count);
__gu_err; \ __gu_err; \
}) })
#define __get_user_asm(insn, __gu_ptr, __gu_val, __gu_err) \ #define __get_user_asm(insn, __gu_ptr, __gu_val, __gu_err) \
({ \ ({ \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
"1:" insn " %1, %2, r0; \ "1:" insn " %1, %2, r0;" \
addk %0, r0, r0; \ " addk %0, r0, r0;" \
2: \ "2: " \
.section .fixup,\"ax\"; \ __FIXUP_SECTION \
3: brid 2b; \ "3: brid 2b; " \
addik %0, r0, %3; \ " addik %0, r0, %3;" \
.previous; \ ".previous;" \
.section __ex_table,\"a\"; \ __EX_TABLE_SECTION \
.word 1b,3b; \ ".word 1b,3b;" \
.previous;" \ ".previous;" \
: "=r"(__gu_err), "=r"(__gu_val) \ : "=&r"(__gu_err), "=r"(__gu_val) \
: "r"(__gu_ptr), "i"(-EFAULT) \ : "r"(__gu_ptr), "i"(-EFAULT) \
); \ ); \
}) })
#define __put_user(x, ptr) \ #define __put_user(x, ptr) \
({ \ ({ \
__typeof__(*(ptr)) volatile __gu_val = (x); \ __typeof__(*(ptr)) volatile __gu_val = (x); \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册