Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e28cabf1 authored by Daniel Thompson's avatar Daniel Thompson Committed by Will Deacon
Browse files

arm64: kernel: Adopt new alternative assembler macros



Convert the dynamic patching for ARM64_WORKAROUND_845719 over to
the newly added alternative assembler macros.

Signed-off-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
parent 271d35eb
Loading
Loading
Loading
Loading
+13 −16
Original line number Diff line number Diff line
@@ -122,26 +122,23 @@
	ct_user_enter
	ldr	x23, [sp, #S_SP]		// load return stack pointer
	msr	sp_el0, x23

#ifdef CONFIG_ARM64_ERRATUM_845719

#undef SEQUENCE_ORG
#undef SEQUENCE_ALT

alternative_if_not ARM64_WORKAROUND_845719
	nop
	nop
#ifdef CONFIG_PID_IN_CONTEXTIDR

#define SEQUENCE_ORG	"nop ; nop ; nop"
#define SEQUENCE_ALT	"tbz x22, #4, 1f ; mrs x29, contextidr_el1; msr contextidr_el1, x29; 1:"

	nop
#endif
alternative_else
	tbz	x22, #4, 1f
#ifdef CONFIG_PID_IN_CONTEXTIDR
	mrs	x29, contextidr_el1
	msr	contextidr_el1, x29
#else

#define SEQUENCE_ORG	"nop ; nop"
#define SEQUENCE_ALT	"tbz x22, #4, 1f ; msr contextidr_el1, xzr; 1:"

	msr contextidr_el1, xzr
#endif

	alternative_insn SEQUENCE_ORG, SEQUENCE_ALT, ARM64_WORKAROUND_845719

1:
alternative_endif
#endif
	.endif
	msr	elr_el1, x21			// set up the return data