OSDN Git Service

arm64: entry: convert el0_sync to C
authorMark Rutland <mark.rutland@arm.com>
Fri, 25 Oct 2019 16:42:14 +0000 (17:42 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Mon, 28 Oct 2019 11:22:49 +0000 (11:22 +0000)
commit582f95835a8fc812cd38dce0447fe9386b78913e
tree07a404a950fae7f1d0cbb4a1a9cd0295f7e359c3
parented3768db588291ddb5dc794daed12cc751373566
arm64: entry: convert el0_sync to C

This is largely a 1-1 conversion of asm to C, with a couple of caveats.

The el0_sync{_compat} switches explicitly handle all the EL0 debug
cases, so el0_dbg doesn't have to try to bail out for unexpected EL1
debug ESR values. This also means that an unexpected vector catch from
AArch32 is routed to el0_inv.

We *could* merge the native and compat switches, which would make the
diffstat negative, but I've tried to stay as close to the existing
assembly as possible for the moment.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
[split out of a bigger series, added nokprobes. removed irq trace
 calls as the C helpers do this. renamed el0_dbg's use of FAR]
Signed-off-by: James Morse <james.morse@arm.com>
Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Cc: Julien Thierry <julien.thierry.kdev@gmail.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/include/asm/asm-uaccess.h
arch/arm64/kernel/entry-common.c
arch/arm64/kernel/entry.S