summaryrefslogtreecommitdiff
path: root/arch/arm64/include/asm/assembler.h
diff options
context:
space:
mode:
authorJames Morse <james.morse@arm.com>2015-12-10 10:22:39 +0000
committerJeffrey Vander Stoep <jeffv@google.com>2016-09-16 21:32:58 +0000
commit722e6114950d4dfdf890c045461932c91a4209d7 (patch)
tree67cefe8af99a6d8c411e799bf8ee010467d6676f /arch/arm64/include/asm/assembler.h
parentb485dccd9eee43b0739198f53459c6a0088e93a5 (diff)
UPSTREAM: 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> Bug: 30369029 Patchset: per-cpu-irq-stack (cherry picked from commit aa4d5d3cbc258c355151a3903211b27359390ec5) Signed-off-by: Jeff Vander Stoep <jeffv@google.com> Change-Id: I2ccc11f442c0303c62e1c3e0a05a088958c922b8
Diffstat (limited to 'arch/arm64/include/asm/assembler.h')
-rw-r--r--arch/arm64/include/asm/assembler.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h
index 12eff928ef8b..bb7b72734c24 100644
--- a/arch/arm64/include/asm/assembler.h
+++ b/arch/arm64/include/asm/assembler.h
@@ -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.