| From b94e603d35460c953521748a47adf9049c721ad8 Mon Sep 17 00:00:00 2001 |
| From: Mark Rutland <mark.rutland@arm.com> |
| Date: Thu, 15 Nov 2018 22:42:01 +0000 |
| Subject: arm64: ftrace: don't adjust the LR value |
| |
| [ Upstream commit 6e803e2e6e367db9a0d6ecae1bd24bb5752011bd ] |
| |
| The core ftrace code requires that when it is handed the PC of an |
| instrumented function, this PC is the address of the instrumented |
| instruction. This is necessary so that the core ftrace code can identify |
| the specific instrumentation site. Since the instrumented function will |
| be a BL, the address of the instrumented function is LR - 4 at entry to |
| the ftrace code. |
| |
| This fixup is applied in the mcount_get_pc and mcount_get_pc0 helpers, |
| which acquire the PC of the instrumented function. |
| |
| The mcount_get_lr helper is used to acquire the LR of the instrumented |
| function, whose value does not require this adjustment, and cannot be |
| adjusted to anything meaningful. No adjustment of this value is made on |
| other architectures, including arm. However, arm64 adjusts this value by |
| 4. |
| |
| This patch brings arm64 in line with other architectures and removes the |
| adjustment of the LR value. |
| |
| Signed-off-by: Mark Rutland <mark.rutland@arm.com> |
| Cc: AKASHI Takahiro <takahiro.akashi@linaro.org> |
| Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> |
| Cc: Catalin Marinas <catalin.marinas@arm.com> |
| Cc: Torsten Duwe <duwe@suse.de> |
| Cc: Will Deacon <will.deacon@arm.com> |
| Signed-off-by: Will Deacon <will.deacon@arm.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/arm64/kernel/entry-ftrace.S | 1 - |
| 1 file changed, 1 deletion(-) |
| |
| diff --git a/arch/arm64/kernel/entry-ftrace.S b/arch/arm64/kernel/entry-ftrace.S |
| index e1be42e11ff5..5a10e3a3e843 100644 |
| --- a/arch/arm64/kernel/entry-ftrace.S |
| +++ b/arch/arm64/kernel/entry-ftrace.S |
| @@ -79,7 +79,6 @@ |
| .macro mcount_get_lr reg |
| ldr \reg, [x29] |
| ldr \reg, [\reg, #8] |
| - mcount_adjust_addr \reg, \reg |
| .endm |
| |
| .macro mcount_get_lr_addr reg |
| -- |
| 2.19.1 |
| |