Skip to content
  • Mark Rutland's avatar
    arm64: ftrace: don't adjust the LR value · 2d6f9a86
    Mark Rutland authored
    
    
    [ 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: default avatarMark 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: default avatarWill Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    2d6f9a86