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
This commit is contained in:
Andrew Turner 2021-01-11 15:43:39 +00:00
parent 594389d1de
commit 63c858a04d

View File

@ -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 */