Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aa4d5d3c authored by James Morse's avatar James Morse Committed by Will Deacon
Browse files

arm64: Add this_cpu_ptr() assembler macro for use in entry.S



irq_stack is a per_cpu variable, that needs to be access from entry.S.
Use an assembler macro instead of the unreadable details.

Signed-off-by: default avatarJames Morse <james.morse@arm.com>
Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
parent 7596abf2
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -193,6 +193,17 @@ lr .req x30 // link register
	str	\src, [\tmp, :lo12:\sym]
	.endm

	/*
	 * @sym: The name of the per-cpu variable
	 * @reg: Result of per_cpu(sym, smp_processor_id())
	 * @tmp: scratch register
	 */
	.macro this_cpu_ptr, sym, reg, tmp
	adr_l	\reg, \sym
	mrs	\tmp, tpidr_el1
	add	\reg, \reg, \tmp
	.endm

/*
 * Annotate a function as position independent, i.e., safe to be called before
 * the kernel virtual mapping is activated.
+1 −3
Original line number Diff line number Diff line
@@ -179,9 +179,7 @@ alternative_endif
	.macro	irq_stack_entry, dummy_lr
	mov	x19, sp			// preserve the original sp

	adr_l	x25, irq_stack
	mrs	x26, tpidr_el1
	add	x25, x25, x26
	this_cpu_ptr irq_stack, x25, x26

	/*
	 * Check the lowest address on irq_stack for the irq_count value,