Commit db5192fd authored by Ard Biesheuvel's avatar Ard Biesheuvel Committed by Zheng Zengkai
Browse files

arm-soc: exynos: replace open coded VA->PA conversions

maillist inclusion
commit 6b12f315331362a8ec9e8fe3f97d9ae09e43fd28
category: feature
feature: ARM kaslr support
bugzilla: 47952
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git/commit/?h=arm-kaslr-latest&id=6b12f315331362a8ec9e8fe3f97d9ae09e43fd28



-------------------------------------------------

This replaces a couple of open coded calculations to obtain the
physical address of a far symbol with calls to the new adr_l etc
macros.

Acked-by: default avatarNicolas Pitre <nico@linaro.org>
Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: default avatarCui GaoSheng <cuigaosheng1@huawei.com>
Reviewed-by: default avatarXiu Jianfeng <xiujianfeng@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent 24f6f487
Loading
Loading
Loading
Loading
+1 −8
Original line number Diff line number Diff line
@@ -19,10 +19,7 @@ ENTRY(exynos4_secondary_startup)
ARM_BE8(setend	be)
	mrc	p15, 0, r0, c0, c0, 5
	and	r0, r0, #15
	adr	r4, 1f
	ldmia	r4, {r5, r6}
	sub	r4, r4, r5
	add	r6, r6, r4
	adr_l	r6, exynos_pen_release
pen:	ldr	r7, [r6]
	cmp	r7, r0
	bne	pen
@@ -33,7 +30,3 @@ pen: ldr r7, [r6]
	 */
	b	secondary_startup
ENDPROC(exynos4_secondary_startup)

	.align 2
1:	.long	.
	.long	exynos_pen_release
+5 −21
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@

#include <linux/linkage.h>
#include <asm/asm-offsets.h>
#include <asm/assembler.h>
#include <asm/hardware/cache-l2x0.h>
#include "smc.h"

@@ -54,19 +55,13 @@ ENTRY(exynos_cpu_resume_ns)
	cmp	r0, r1
	bne	skip_cp15

	adr	r0, _cp15_save_power
	ldr	r1, [r0]
	ldr	r1, [r0, r1]
	adr	r0, _cp15_save_diag
	ldr	r2, [r0]
	ldr	r2, [r0, r2]
	ldr_l	r1, cp15_save_power
	ldr_l	r2, cp15_save_diag
	mov	r0, #SMC_CMD_C15RESUME
	dsb
	smc	#0
#ifdef CONFIG_CACHE_L2X0
	adr	r0, 1f
	ldr	r2, [r0]
	add	r0, r2, r0
	adr_l	r0, l2x0_saved_regs

	/* Check that the address has been initialised. */
	ldr	r1, [r0, #L2X0_R_PHY_BASE]
@@ -85,9 +80,7 @@ ENTRY(exynos_cpu_resume_ns)
	smc	#0

	/* Reload saved regs pointer because smc corrupts registers. */
	adr	r0, 1f
	ldr	r2, [r0]
	add	r0, r2, r0
	adr_l	r0, l2x0_saved_regs

	ldr	r1, [r0, #L2X0_R_PWR_CTRL]
	ldr	r2, [r0, #L2X0_R_AUX_CTRL]
@@ -106,15 +99,6 @@ skip_cp15:
	b	cpu_resume
ENDPROC(exynos_cpu_resume_ns)

	.align
_cp15_save_power:
	.long	cp15_save_power - .
_cp15_save_diag:
	.long	cp15_save_diag - .
#ifdef CONFIG_CACHE_L2X0
1:	.long	l2x0_saved_regs - .
#endif /* CONFIG_CACHE_L2X0 */

	.data
	.align	2
	.globl cp15_save_diag