• Mark Rutland's avatar
    arm64: kill ESR_LNX_EXEC · 541ec870
    Mark Rutland authored
    Currently we treat ESR_EL1 bit 24 as software-defined for distinguishing
    instruction aborts from data aborts, but this bit is architecturally
    RES0 for instruction aborts, and could be allocated for an arbitrary
    purpose in future. Additionally, we hard-code the value in entry.S
    without the mnemonic, making the code difficult to understand.
    
    Instead, remove ESR_LNX_EXEC, and distinguish aborts based on the esr,
    which we already pass to the sole use of ESR_LNX_EXEC. A new helper,
    is_el0_instruction_abort() is added to make the logic clear. Any
    instruction aborts taken from EL1 will already have been handled by
    bad_mode, so we need not handle that case in the helper.
    
    For consistency, the existing permission_fault helper is renamed to
    is_permission_fault, and the return type is changed to bool. There
    should be no functional changes as the return value was a boolean
    expression, and the result is only used in another boolean expression.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Cc: Dave P Martin <dave.martin@arm.com>
    Cc: Huang Shijie <shijie.huang@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    541ec870
fault.c 18.6 KB