xtensa: clean up assembly arguments in uaccess macros
Numeric assembly arguments are hard to understand and assembly code that uses them is hard to modify. Use named arguments in __check_align_*, __get_user_asm and __put_user_asm. Modify macro parameter names so that they don't affect argument names. Use '+' constraint for the [err] argument instead of having it as both input and output. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
6595d144de
commit
c043764296
|
@ -132,14 +132,14 @@ do { \
|
||||||
#define __check_align_1 ""
|
#define __check_align_1 ""
|
||||||
|
|
||||||
#define __check_align_2 \
|
#define __check_align_2 \
|
||||||
" _bbci.l %3, 0, 1f \n" \
|
" _bbci.l %[addr], 0, 1f \n" \
|
||||||
" movi %0, %4 \n" \
|
" movi %[err], %[efault] \n" \
|
||||||
" _j 2f \n"
|
" _j 2f \n"
|
||||||
|
|
||||||
#define __check_align_4 \
|
#define __check_align_4 \
|
||||||
" _bbsi.l %3, 0, 0f \n" \
|
" _bbsi.l %[addr], 0, 0f \n" \
|
||||||
" _bbci.l %3, 1, 1f \n" \
|
" _bbci.l %[addr], 1, 1f \n" \
|
||||||
"0: movi %0, %4 \n" \
|
"0: movi %[err], %[efault] \n" \
|
||||||
" _j 2f \n"
|
" _j 2f \n"
|
||||||
|
|
||||||
|
|
||||||
|
@ -151,24 +151,24 @@ do { \
|
||||||
* WARNING: If you modify this macro at all, verify that the
|
* WARNING: If you modify this macro at all, verify that the
|
||||||
* __check_align_* macros still work.
|
* __check_align_* macros still work.
|
||||||
*/
|
*/
|
||||||
#define __put_user_asm(x, addr, err, align, insn, cb) \
|
#define __put_user_asm(x_, addr_, err_, align, insn, cb)\
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
__check_align_##align \
|
__check_align_##align \
|
||||||
"1: "insn" %2, %3, 0 \n" \
|
"1: "insn" %[x], %[addr], 0 \n" \
|
||||||
"2: \n" \
|
"2: \n" \
|
||||||
" .section .fixup,\"ax\" \n" \
|
" .section .fixup,\"ax\" \n" \
|
||||||
" .align 4 \n" \
|
" .align 4 \n" \
|
||||||
" .literal_position \n" \
|
" .literal_position \n" \
|
||||||
"5: \n" \
|
"5: \n" \
|
||||||
" movi %1, 2b \n" \
|
" movi %[tmp], 2b \n" \
|
||||||
" movi %0, %4 \n" \
|
" movi %[err], %[efault] \n" \
|
||||||
" jx %1 \n" \
|
" jx %[tmp] \n" \
|
||||||
" .previous \n" \
|
" .previous \n" \
|
||||||
" .section __ex_table,\"a\" \n" \
|
" .section __ex_table,\"a\" \n" \
|
||||||
" .long 1b, 5b \n" \
|
" .long 1b, 5b \n" \
|
||||||
" .previous" \
|
" .previous" \
|
||||||
:"=r" (err), "=r" (cb) \
|
:[err] "+r"(err_), [tmp] "=r"(cb) \
|
||||||
:"r" ((int)(x)), "r" (addr), "i" (-EFAULT), "0" (err))
|
:[x] "r"(x_), [addr] "r"(addr_), [efault] "i"(-EFAULT))
|
||||||
|
|
||||||
#define __get_user_nocheck(x, ptr, size) \
|
#define __get_user_nocheck(x, ptr, size) \
|
||||||
({ \
|
({ \
|
||||||
|
@ -217,25 +217,25 @@ do { \
|
||||||
* WARNING: If you modify this macro at all, verify that the
|
* WARNING: If you modify this macro at all, verify that the
|
||||||
* __check_align_* macros still work.
|
* __check_align_* macros still work.
|
||||||
*/
|
*/
|
||||||
#define __get_user_asm(x, addr, err, align, insn, cb) \
|
#define __get_user_asm(x_, addr_, err_, align, insn, cb) \
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
__check_align_##align \
|
__check_align_##align \
|
||||||
"1: "insn" %2, %3, 0 \n" \
|
"1: "insn" %[x], %[addr], 0 \n" \
|
||||||
"2: \n" \
|
"2: \n" \
|
||||||
" .section .fixup,\"ax\" \n" \
|
" .section .fixup,\"ax\" \n" \
|
||||||
" .align 4 \n" \
|
" .align 4 \n" \
|
||||||
" .literal_position \n" \
|
" .literal_position \n" \
|
||||||
"5: \n" \
|
"5: \n" \
|
||||||
" movi %1, 2b \n" \
|
" movi %[tmp], 2b \n" \
|
||||||
" movi %2, 0 \n" \
|
" movi %[x], 0 \n" \
|
||||||
" movi %0, %4 \n" \
|
" movi %[err], %[efault] \n" \
|
||||||
" jx %1 \n" \
|
" jx %[tmp] \n" \
|
||||||
" .previous \n" \
|
" .previous \n" \
|
||||||
" .section __ex_table,\"a\" \n" \
|
" .section __ex_table,\"a\" \n" \
|
||||||
" .long 1b, 5b \n" \
|
" .long 1b, 5b \n" \
|
||||||
" .previous" \
|
" .previous" \
|
||||||
:"=r" (err), "=r" (cb), "=r" (x) \
|
:[err] "+r"(err_), [tmp] "=r"(cb), [x] "=r"(x_)\
|
||||||
:"r" (addr), "i" (-EFAULT), "0" (err))
|
:[addr] "r"(addr_), [efault] "i"(-EFAULT))
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue