mirror of https://gitee.com/openkylin/linux.git
powerpc/uaccess: Move get_user_instr helpers in asm/inst.h
Those helpers use get_user helpers but they don't participate in their implementation, so they do not belong to asm/uaccess.h Move them in asm/inst.h Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/2c6e83581b4fa434aa7cf2fa7714c41e98f57007.1615398265.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
bad956b8fe
commit
35506a3e2d
|
@ -4,6 +4,40 @@
|
|||
|
||||
#include <asm/ppc-opcode.h>
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
|
||||
#define ___get_user_instr(gu_op, dest, ptr) \
|
||||
({ \
|
||||
long __gui_ret = 0; \
|
||||
unsigned long __gui_ptr = (unsigned long)ptr; \
|
||||
struct ppc_inst __gui_inst; \
|
||||
unsigned int __prefix, __suffix; \
|
||||
__gui_ret = gu_op(__prefix, (unsigned int __user *)__gui_ptr); \
|
||||
if (__gui_ret == 0) { \
|
||||
if ((__prefix >> 26) == OP_PREFIX) { \
|
||||
__gui_ret = gu_op(__suffix, \
|
||||
(unsigned int __user *)__gui_ptr + 1); \
|
||||
__gui_inst = ppc_inst_prefix(__prefix, \
|
||||
__suffix); \
|
||||
} else { \
|
||||
__gui_inst = ppc_inst(__prefix); \
|
||||
} \
|
||||
if (__gui_ret == 0) \
|
||||
(dest) = __gui_inst; \
|
||||
} \
|
||||
__gui_ret; \
|
||||
})
|
||||
#else /* !CONFIG_PPC64 */
|
||||
#define ___get_user_instr(gu_op, dest, ptr) \
|
||||
gu_op((dest).val, (u32 __user *)(ptr))
|
||||
#endif /* CONFIG_PPC64 */
|
||||
|
||||
#define get_user_instr(x, ptr) \
|
||||
___get_user_instr(get_user, x, ptr)
|
||||
|
||||
#define __get_user_instr(x, ptr) \
|
||||
___get_user_instr(__get_user, x, ptr)
|
||||
|
||||
/*
|
||||
* Instruction data type for POWER
|
||||
*/
|
||||
|
|
|
@ -53,40 +53,6 @@ static inline bool __access_ok(unsigned long addr, unsigned long size)
|
|||
#define __put_user(x, ptr) \
|
||||
__put_user_nocheck((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)))
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
|
||||
#define ___get_user_instr(gu_op, dest, ptr) \
|
||||
({ \
|
||||
long __gui_ret = 0; \
|
||||
unsigned long __gui_ptr = (unsigned long)ptr; \
|
||||
struct ppc_inst __gui_inst; \
|
||||
unsigned int __prefix, __suffix; \
|
||||
__gui_ret = gu_op(__prefix, (unsigned int __user *)__gui_ptr); \
|
||||
if (__gui_ret == 0) { \
|
||||
if ((__prefix >> 26) == OP_PREFIX) { \
|
||||
__gui_ret = gu_op(__suffix, \
|
||||
(unsigned int __user *)__gui_ptr + 1); \
|
||||
__gui_inst = ppc_inst_prefix(__prefix, \
|
||||
__suffix); \
|
||||
} else { \
|
||||
__gui_inst = ppc_inst(__prefix); \
|
||||
} \
|
||||
if (__gui_ret == 0) \
|
||||
(dest) = __gui_inst; \
|
||||
} \
|
||||
__gui_ret; \
|
||||
})
|
||||
#else /* !CONFIG_PPC64 */
|
||||
#define ___get_user_instr(gu_op, dest, ptr) \
|
||||
gu_op((dest).val, (u32 __user *)(ptr))
|
||||
#endif /* CONFIG_PPC64 */
|
||||
|
||||
#define get_user_instr(x, ptr) \
|
||||
___get_user_instr(get_user, x, ptr)
|
||||
|
||||
#define __get_user_instr(x, ptr) \
|
||||
___get_user_instr(__get_user, x, ptr)
|
||||
|
||||
extern long __put_user_bad(void);
|
||||
|
||||
#define __put_user_size(x, ptr, size, retval) \
|
||||
|
|
Loading…
Reference in New Issue