Skip to content

Commit

Permalink
arm64: entry: organise entry vectors consistently
Browse files Browse the repository at this point in the history
In subsequent patches we'll rename the entry handlers based on their
original EL, register width, and exception class. To do so, we need to
make all 3 mandatory arguments to the `kernel_ventry` macro, and
distinguish EL1h from EL1t.

In preparation for this, let's make the current set of arguments
mandatory, and move the `regsize` column before the branch label suffix,
making the vectors easier to read column-wise.

There should be no functional change as a result of this patch.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Acked-by: Marc Zyngier <maz@kernel.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Joey Gouly <joey.gouly@arm.com>
Cc: James Morse <james.morse@arm.com>
Cc: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20210607094624.34689-10-mark.rutland@arm.com
Signed-off-by: Will Deacon <will@kernel.org>
  • Loading branch information
Mark Rutland authored and Will Deacon committed Jun 7, 2021
1 parent 2f2bbaa commit e931fa0
Showing 1 changed file with 21 additions and 21 deletions.
42 changes: 21 additions & 21 deletions arch/arm64/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
#define BAD_FIQ 2
#define BAD_ERROR 3

.macro kernel_ventry, el, label, regsize = 64
.macro kernel_ventry, el:req, regsize:req, label:req
.align 7
#ifdef CONFIG_UNMAP_KERNEL_AT_EL0
.if \el == 0
Expand Down Expand Up @@ -504,31 +504,31 @@ tsk .req x28 // current thread_info

.align 11
SYM_CODE_START(vectors)
kernel_ventry 1, sync_invalid // Synchronous EL1t
kernel_ventry 1, irq_invalid // IRQ EL1t
kernel_ventry 1, fiq_invalid // FIQ EL1t
kernel_ventry 1, error_invalid // Error EL1t
kernel_ventry 1, 64, sync_invalid // Synchronous EL1t
kernel_ventry 1, 64, irq_invalid // IRQ EL1t
kernel_ventry 1, 64, fiq_invalid // FIQ EL1t
kernel_ventry 1, 64, error_invalid // Error EL1t

kernel_ventry 1, sync // Synchronous EL1h
kernel_ventry 1, irq // IRQ EL1h
kernel_ventry 1, fiq // FIQ EL1h
kernel_ventry 1, error // Error EL1h
kernel_ventry 1, 64, sync // Synchronous EL1h
kernel_ventry 1, 64, irq // IRQ EL1h
kernel_ventry 1, 64, fiq // FIQ EL1h
kernel_ventry 1, 64, error // Error EL1h

kernel_ventry 0, sync // Synchronous 64-bit EL0
kernel_ventry 0, irq // IRQ 64-bit EL0
kernel_ventry 0, fiq // FIQ 64-bit EL0
kernel_ventry 0, error // Error 64-bit EL0
kernel_ventry 0, 64, sync // Synchronous 64-bit EL0
kernel_ventry 0, 64, irq // IRQ 64-bit EL0
kernel_ventry 0, 64, fiq // FIQ 64-bit EL0
kernel_ventry 0, 64, error // Error 64-bit EL0

#ifdef CONFIG_COMPAT
kernel_ventry 0, sync_compat, 32 // Synchronous 32-bit EL0
kernel_ventry 0, irq_compat, 32 // IRQ 32-bit EL0
kernel_ventry 0, fiq_compat, 32 // FIQ 32-bit EL0
kernel_ventry 0, error_compat, 32 // Error 32-bit EL0
kernel_ventry 0, 32, sync_compat // Synchronous 32-bit EL0
kernel_ventry 0, 32, irq_compat // IRQ 32-bit EL0
kernel_ventry 0, 32, fiq_compat // FIQ 32-bit EL0
kernel_ventry 0, 32, error_compat // Error 32-bit EL0
#else
kernel_ventry 0, sync_invalid, 32 // Synchronous 32-bit EL0
kernel_ventry 0, irq_invalid, 32 // IRQ 32-bit EL0
kernel_ventry 0, fiq_invalid, 32 // FIQ 32-bit EL0
kernel_ventry 0, error_invalid, 32 // Error 32-bit EL0
kernel_ventry 0, 32, sync_invalid // Synchronous 32-bit EL0
kernel_ventry 0, 32, irq_invalid // IRQ 32-bit EL0
kernel_ventry 0, 32, fiq_invalid // FIQ 32-bit EL0
kernel_ventry 0, 32, error_invalid // Error 32-bit EL0
#endif
SYM_CODE_END(vectors)

Expand Down

0 comments on commit e931fa0

Please sign in to comment.