summaryrefslogtreecommitdiffstats
path: root/arch/arm/include
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2018-03-07 09:05:29 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2018-03-21 12:23:02 +0100
commitf98ecf9159fc136ead07b25a28fd4b4ad4f1c0c0 (patch)
tree9d516f6caead64e62145c21451bce8eb97745418 /arch/arm/include
parent07172d63f31109c89012ddf0c5470c57c65c38a6 (diff)
downloadbarebox-f98ecf9159fc136ead07b25a28fd4b4ad4f1c0c0.tar.gz
barebox-f98ecf9159fc136ead07b25a28fd4b4ad4f1c0c0.tar.xz
ARM: aarch64: implement get_pc()
The arm32 version can't be used on aarch64, implement an aarch64 specific version. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/include')
-rw-r--r--arch/arm/include/asm/common.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/arm/include/asm/common.h b/arch/arm/include/asm/common.h
index 07ae619cea..97bfdc43f5 100644
--- a/arch/arm/include/asm/common.h
+++ b/arch/arm/include/asm/common.h
@@ -4,13 +4,19 @@
static inline unsigned long get_pc(void)
{
unsigned long pc;
-
+#ifdef CONFIG_CPU_32
__asm__ __volatile__(
"mov %0, pc\n"
: "=r" (pc)
:
: "memory");
-
+#else
+ __asm__ __volatile__(
+ "adr %0, .\n"
+ : "=r" (pc)
+ :
+ : "memory");
+#endif
return pc;
}