diff options
Diffstat (limited to 'arch/arm64/include/asm/assembler.h')
| -rw-r--r-- | arch/arm64/include/asm/assembler.h | 28 | 
1 files changed, 14 insertions, 14 deletions
diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h index e3a15c751b13..b8cf7c85ffa2 100644 --- a/arch/arm64/include/asm/assembler.h +++ b/arch/arm64/include/asm/assembler.h @@ -124,17 +124,6 @@ alternative_endif  	.endm  /* - * Sanitise a 64-bit bounded index wrt speculation, returning zero if out - * of bounds. - */ -	.macro	mask_nospec64, idx, limit, tmp -	sub	\tmp, \idx, \limit -	bic	\tmp, \tmp, \idx -	and	\idx, \idx, \tmp, asr #63 -	csdb -	.endm - -/*   * NOP sequence   */  	.macro	nops, num @@ -350,6 +339,13 @@ alternative_endif  	.endm  /* + * tcr_set_t1sz - update TCR.T1SZ + */ +	.macro	tcr_set_t1sz, valreg, t1sz +	bfi	\valreg, \t1sz, #TCR_T1SZ_OFFSET, #TCR_TxSZ_WIDTH +	.endm + +/*   * tcr_compute_pa_size - set TCR.(I)PS to the highest supported   * ID_AA64MMFR0_EL1.PARange value   * @@ -538,9 +534,13 @@ USER(\label, ic	ivau, \tmp2)			// invalidate I line PoU   * In future this may be nop'ed out when dealing with 52-bit kernel VAs.   * 	ttbr: Value of ttbr to set, modified.   */ -	.macro	offset_ttbr1, ttbr -#ifdef CONFIG_ARM64_USER_VA_BITS_52 +	.macro	offset_ttbr1, ttbr, tmp +#ifdef CONFIG_ARM64_VA_BITS_52 +	mrs_s	\tmp, SYS_ID_AA64MMFR2_EL1 +	and	\tmp, \tmp, #(0xf << ID_AA64MMFR2_LVA_SHIFT) +	cbnz	\tmp, .Lskipoffs_\@  	orr	\ttbr, \ttbr, #TTBR1_BADDR_4852_OFFSET +.Lskipoffs_\@ :  #endif  	.endm @@ -550,7 +550,7 @@ USER(\label, ic	ivau, \tmp2)			// invalidate I line PoU   * to be nop'ed out when dealing with 52-bit kernel VAs.   */  	.macro	restore_ttbr1, ttbr -#ifdef CONFIG_ARM64_USER_VA_BITS_52 +#ifdef CONFIG_ARM64_VA_BITS_52  	bic	\ttbr, \ttbr, #TTBR1_BADDR_4852_OFFSET  #endif  	.endm  |