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: James Morse <james.morse@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
This commit is contained in:
Родитель
7596abf2e5
Коммит
aa4d5d3cbc
|
@ -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.
|
||||
|
|
|
@ -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,
|
||||
|
|
Загрузка…
Ссылка в новой задаче