git: 63c858a04d56 - main - Switch the arm64 pcpu to a global register variable
Andrew Turner
andrew at FreeBSD.org
Wed Jan 13 16:42:52 UTC 2021
The branch main has been updated by andrew:
URL: https://cgit.FreeBSD.org/src/commit/?id=63c858a04d56529eddbddf85ad04fc8e99e73762
commit 63c858a04d56529eddbddf85ad04fc8e99e73762
Author: Andrew Turner <andrew at FreeBSD.org>
AuthorDate: 2021-01-11 15:43:39 +0000
Commit: Andrew Turner <andrew at FreeBSD.org>
CommitDate: 2021-01-13 16:36:52 +0000
Switch the arm64 pcpu to a global register variable
This removes an unneeded instruction to move the pointer from x18 to a
temporary register.
Reviewed by: emaste
Sponsored by: Innovate UK
Differential Revision: https://reviews.freebsd.org/D26971
---
sys/arm64/include/pcpu.h | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/sys/arm64/include/pcpu.h b/sys/arm64/include/pcpu.h
index a520cfc7df56..ce4dc46e1609 100644
--- a/sys/arm64/include/pcpu.h
+++ b/sys/arm64/include/pcpu.h
@@ -56,14 +56,9 @@ struct debug_monitor_state;
struct pcb;
struct pcpu;
-static inline struct pcpu *
-get_pcpu(void)
-{
- struct pcpu *pcpu;
+register struct pcpu *pcpup __asm ("x18");
- __asm __volatile("mov %0, x18" : "=&r"(pcpu));
- return (pcpu);
-}
+#define get_pcpu() pcpup
static inline struct thread *
get_curthread(void)
@@ -76,11 +71,11 @@ get_curthread(void)
#define curthread get_curthread()
-#define PCPU_GET(member) (get_pcpu()->pc_ ## member)
-#define PCPU_ADD(member, value) (get_pcpu()->pc_ ## member += (value))
+#define PCPU_GET(member) (pcpup->pc_ ## member)
+#define PCPU_ADD(member, value) (pcpup->pc_ ## member += (value))
#define PCPU_INC(member) PCPU_ADD(member, 1)
-#define PCPU_PTR(member) (&get_pcpu()->pc_ ## member)
-#define PCPU_SET(member,value) (get_pcpu()->pc_ ## member = (value))
+#define PCPU_PTR(member) (&pcpup->pc_ ## member)
+#define PCPU_SET(member,value) (pcpup->pc_ ## member = (value))
#endif /* _KERNEL */
More information about the dev-commits-src-main
mailing list