Re: [RFC PATCH 06/13] arm64: percpu: Add infrastructure for preemptible this_cpu_*() ops

From: Peter Zijlstra

Date: Tue Jul 28 2026 - 14:14:01 EST


On Tue, Jul 28, 2026 at 04:53:52PM +0100, Mark Rutland wrote:

> I was being lazy here relative to what we do for asm-extable.h. How
> about I match the pattern there, and have:
>
> | #define PCPU_GPR_PCP_SHIFT 0
> | #define PCPU_GPR_PCP GENMASK(4, 0)
> | #define PCPU_GPR_OFF_SHIFT 5
> | #define PCPU_GPR_OFF GENMASK(9, 5)
> | #define PCPU_GPR_ADDR_SHIFT 10
> | #define PCPU_GPR_ADDR GENMASK(14, 10)
> |
> | #define __VAL_PCPU_GPRS(pcp, off, addr) \
> | "(" \
> | "(.L__gpr_num_" pcp " << " __stringify(PCPU_GPR_PCP_SHIFT) ") | " \
> | "(.L__gpr_num_" off " << " __stringify(PCPU_GPR_OFF_SHIFT) ") | " \
> | "(.L__gpr_num_" addr " << " __stringify(PCPU_GPR_ADDR_SHIFT) ")" \
> | ")"
>
> ... if that's any better?

#define PCPU_GPR_BITS 5
#define __PCPU_GPR_MASK(_shift) GENMASK((_shift+PCPU_GPR_BITS-1), _shift)

#define PCPU_GPR_PCP_SHIFT (0*PCPU_GPR_BITS)
#define PCPU_GPR_OFF_SHIFT (1*PCPU_GPR_BITS)
#define PCPU_GPR_ADDR_SHIFT (2*PCPU_GPR_BITS)

#define PCPU_GPR_PCP __PCPU_GPR_MASK(PCPU_GPR_PCP_SHIFT)
#define PCPU_GPR_OFF __PCPU_GPR_MASK(PCPU_GPR_OFF_SHIFT)
#define PCPU_GPR_ADDR __PCPU_GPR_MASK(PCPU_GPR_ADDR_SHIFT)

?