mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 15:18:19 +00:00
arm64: uaccess: move uao_* alternatives to asm-uaccess.h
The uao_* alternative asm macros are only used by the uaccess assembly routines in arch/arm64/lib/, where they are included indirectly via asm-uaccess.h. Since they're specific to the uaccess assembly (and will lose the alternatives in subsequent patches), let's move them into asm-uaccess.h. There should be no functional change as a result of this patch. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Christoph Hellwig <hch@lst.de> Cc: James Morse <james.morse@arm.com> Cc: Will Deacon <will@kernel.org> [will: update #include in mte.S to pull in uao asm macros] Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
parent
f8394f232b
commit
e2a2190a80
3 changed files with 60 additions and 60 deletions
|
@ -224,65 +224,6 @@ alternative_endif
|
||||||
_asm_extable 9999b, \label
|
_asm_extable 9999b, \label
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
/*
|
|
||||||
* Generate the assembly for UAO alternatives with exception table entries.
|
|
||||||
* This is complicated as there is no post-increment or pair versions of the
|
|
||||||
* unprivileged instructions, and USER() only works for single instructions.
|
|
||||||
*/
|
|
||||||
#ifdef CONFIG_ARM64_UAO
|
|
||||||
.macro uao_ldp l, reg1, reg2, addr, post_inc
|
|
||||||
alternative_if_not ARM64_HAS_UAO
|
|
||||||
8888: ldp \reg1, \reg2, [\addr], \post_inc;
|
|
||||||
8889: nop;
|
|
||||||
nop;
|
|
||||||
alternative_else
|
|
||||||
ldtr \reg1, [\addr];
|
|
||||||
ldtr \reg2, [\addr, #8];
|
|
||||||
add \addr, \addr, \post_inc;
|
|
||||||
alternative_endif
|
|
||||||
|
|
||||||
_asm_extable 8888b,\l;
|
|
||||||
_asm_extable 8889b,\l;
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.macro uao_stp l, reg1, reg2, addr, post_inc
|
|
||||||
alternative_if_not ARM64_HAS_UAO
|
|
||||||
8888: stp \reg1, \reg2, [\addr], \post_inc;
|
|
||||||
8889: nop;
|
|
||||||
nop;
|
|
||||||
alternative_else
|
|
||||||
sttr \reg1, [\addr];
|
|
||||||
sttr \reg2, [\addr, #8];
|
|
||||||
add \addr, \addr, \post_inc;
|
|
||||||
alternative_endif
|
|
||||||
|
|
||||||
_asm_extable 8888b,\l;
|
|
||||||
_asm_extable 8889b,\l;
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.macro uao_user_alternative l, inst, alt_inst, reg, addr, post_inc
|
|
||||||
alternative_if_not ARM64_HAS_UAO
|
|
||||||
8888: \inst \reg, [\addr], \post_inc;
|
|
||||||
nop;
|
|
||||||
alternative_else
|
|
||||||
\alt_inst \reg, [\addr];
|
|
||||||
add \addr, \addr, \post_inc;
|
|
||||||
alternative_endif
|
|
||||||
|
|
||||||
_asm_extable 8888b,\l;
|
|
||||||
.endm
|
|
||||||
#else
|
|
||||||
.macro uao_ldp l, reg1, reg2, addr, post_inc
|
|
||||||
USER(\l, ldp \reg1, \reg2, [\addr], \post_inc)
|
|
||||||
.endm
|
|
||||||
.macro uao_stp l, reg1, reg2, addr, post_inc
|
|
||||||
USER(\l, stp \reg1, \reg2, [\addr], \post_inc)
|
|
||||||
.endm
|
|
||||||
.macro uao_user_alternative l, inst, alt_inst, reg, addr, post_inc
|
|
||||||
USER(\l, \inst \reg, [\addr], \post_inc)
|
|
||||||
.endm
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -58,4 +58,63 @@ alternative_else_nop_endif
|
||||||
.endm
|
.endm
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Generate the assembly for UAO alternatives with exception table entries.
|
||||||
|
* This is complicated as there is no post-increment or pair versions of the
|
||||||
|
* unprivileged instructions, and USER() only works for single instructions.
|
||||||
|
*/
|
||||||
|
#ifdef CONFIG_ARM64_UAO
|
||||||
|
.macro uao_ldp l, reg1, reg2, addr, post_inc
|
||||||
|
alternative_if_not ARM64_HAS_UAO
|
||||||
|
8888: ldp \reg1, \reg2, [\addr], \post_inc;
|
||||||
|
8889: nop;
|
||||||
|
nop;
|
||||||
|
alternative_else
|
||||||
|
ldtr \reg1, [\addr];
|
||||||
|
ldtr \reg2, [\addr, #8];
|
||||||
|
add \addr, \addr, \post_inc;
|
||||||
|
alternative_endif
|
||||||
|
|
||||||
|
_asm_extable 8888b,\l;
|
||||||
|
_asm_extable 8889b,\l;
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro uao_stp l, reg1, reg2, addr, post_inc
|
||||||
|
alternative_if_not ARM64_HAS_UAO
|
||||||
|
8888: stp \reg1, \reg2, [\addr], \post_inc;
|
||||||
|
8889: nop;
|
||||||
|
nop;
|
||||||
|
alternative_else
|
||||||
|
sttr \reg1, [\addr];
|
||||||
|
sttr \reg2, [\addr, #8];
|
||||||
|
add \addr, \addr, \post_inc;
|
||||||
|
alternative_endif
|
||||||
|
|
||||||
|
_asm_extable 8888b,\l;
|
||||||
|
_asm_extable 8889b,\l;
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro uao_user_alternative l, inst, alt_inst, reg, addr, post_inc
|
||||||
|
alternative_if_not ARM64_HAS_UAO
|
||||||
|
8888: \inst \reg, [\addr], \post_inc;
|
||||||
|
nop;
|
||||||
|
alternative_else
|
||||||
|
\alt_inst \reg, [\addr];
|
||||||
|
add \addr, \addr, \post_inc;
|
||||||
|
alternative_endif
|
||||||
|
|
||||||
|
_asm_extable 8888b,\l;
|
||||||
|
.endm
|
||||||
|
#else
|
||||||
|
.macro uao_ldp l, reg1, reg2, addr, post_inc
|
||||||
|
USER(\l, ldp \reg1, \reg2, [\addr], \post_inc)
|
||||||
|
.endm
|
||||||
|
.macro uao_stp l, reg1, reg2, addr, post_inc
|
||||||
|
USER(\l, stp \reg1, \reg2, [\addr], \post_inc)
|
||||||
|
.endm
|
||||||
|
.macro uao_user_alternative l, inst, alt_inst, reg, addr, post_inc
|
||||||
|
USER(\l, \inst \reg, [\addr], \post_inc)
|
||||||
|
.endm
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
|
|
||||||
#include <asm/alternative.h>
|
#include <asm/asm-uaccess.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/mte.h>
|
#include <asm/mte.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
|
Loading…
Reference in a new issue