Message ID | 20221031055440.3594315-6-npiggin@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Remove STACK_FRAME_OVERHEAD | expand |
It contradicts commit a85c728cb5e1 ("powerpc/32: Don't use lmw/stmw for saving/restoring non volatile regs") Le 31/10/2022 à 06:54, Nicholas Piggin a écrit : > --- > arch/powerpc/include/asm/ppc_asm.h | 18 ++++++++++++++++-- > 1 file changed, 16 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h > index 753a2757bcd4..ac44383d350a 100644 > --- a/arch/powerpc/include/asm/ppc_asm.h > +++ b/arch/powerpc/include/asm/ppc_asm.h > @@ -57,8 +57,22 @@ > #define SAVE_NVGPRS(base) SAVE_GPRS(14, 31, base) > #define REST_NVGPRS(base) REST_GPRS(14, 31, base) > #else > -#define SAVE_GPRS(start, end, base) OP_REGS stw, 4, start, end, base, GPR0 > -#define REST_GPRS(start, end, base) OP_REGS lwz, 4, start, end, base, GPR0 > +.macro __SAVE_GPRS start, end, base, offset > + .if \end == 31 > + stmw \start,\offset(\base) > + .else > + OP_REGS stw, 4, \start, \end, \base, \offset > + .endif > +.endm > +.macro __REST_GPRS start, end, base, offset > + .if \end == 31 > + lmw \start,\offset(\base) > + .else > + OP_REGS lwz, 4, \start, \end, \base, \offset > + .endif > +.endm > +#define SAVE_GPRS(start, end, base) __SAVE_GPRS start, end, base, GPR0 > +#define REST_GPRS(start, end, base) __REST_GPRS start, end, base, GPR0 > #define SAVE_NVGPRS(base) SAVE_GPRS(13, 31, base) > #define REST_NVGPRS(base) REST_GPRS(13, 31, base) > #endif
On Thu Nov 3, 2022 at 6:26 PM AEST, Christophe Leroy wrote: > It contradicts commit a85c728cb5e1 ("powerpc/32: Don't use lmw/stmw for > saving/restoring non volatile regs") Hmm okay. Do you want to keep the #ifdef case in ppc_save_regs for ppc32 to save ~124 bytes of text? I don't mind either way. Thanks, Nick > > Le 31/10/2022 à 06:54, Nicholas Piggin a écrit : > > --- > > arch/powerpc/include/asm/ppc_asm.h | 18 ++++++++++++++++-- > > 1 file changed, 16 insertions(+), 2 deletions(-) > > > > diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h > > index 753a2757bcd4..ac44383d350a 100644 > > --- a/arch/powerpc/include/asm/ppc_asm.h > > +++ b/arch/powerpc/include/asm/ppc_asm.h > > @@ -57,8 +57,22 @@ > > #define SAVE_NVGPRS(base) SAVE_GPRS(14, 31, base) > > #define REST_NVGPRS(base) REST_GPRS(14, 31, base) > > #else > > -#define SAVE_GPRS(start, end, base) OP_REGS stw, 4, start, end, base, GPR0 > > -#define REST_GPRS(start, end, base) OP_REGS lwz, 4, start, end, base, GPR0 > > +.macro __SAVE_GPRS start, end, base, offset > > + .if \end == 31 > > + stmw \start,\offset(\base) > > + .else > > + OP_REGS stw, 4, \start, \end, \base, \offset > > + .endif > > +.endm > > +.macro __REST_GPRS start, end, base, offset > > + .if \end == 31 > > + lmw \start,\offset(\base) > > + .else > > + OP_REGS lwz, 4, \start, \end, \base, \offset > > + .endif > > +.endm > > +#define SAVE_GPRS(start, end, base) __SAVE_GPRS start, end, base, GPR0 > > +#define REST_GPRS(start, end, base) __REST_GPRS start, end, base, GPR0 > > #define SAVE_NVGPRS(base) SAVE_GPRS(13, 31, base) > > #define REST_NVGPRS(base) REST_GPRS(13, 31, base) > > #endif
Le 07/11/2022 à 13:45, Nicholas Piggin a écrit : > On Thu Nov 3, 2022 at 6:26 PM AEST, Christophe Leroy wrote: >> It contradicts commit a85c728cb5e1 ("powerpc/32: Don't use lmw/stmw for >> saving/restoring non volatile regs") > > Hmm okay. Do you want to keep the #ifdef case in ppc_save_regs for ppc32 > to save ~124 bytes of text? I don't mind either way. I think you can make ppc_save_regs() generic. I don't think the lmw/stmw is worth it in ppc_save_regs(), just drop it. Christophe > > Thanks, > Nick > >> >> Le 31/10/2022 à 06:54, Nicholas Piggin a écrit : >>> --- >>> arch/powerpc/include/asm/ppc_asm.h | 18 ++++++++++++++++-- >>> 1 file changed, 16 insertions(+), 2 deletions(-) >>> >>> diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h >>> index 753a2757bcd4..ac44383d350a 100644 >>> --- a/arch/powerpc/include/asm/ppc_asm.h >>> +++ b/arch/powerpc/include/asm/ppc_asm.h >>> @@ -57,8 +57,22 @@ >>> #define SAVE_NVGPRS(base) SAVE_GPRS(14, 31, base) >>> #define REST_NVGPRS(base) REST_GPRS(14, 31, base) >>> #else >>> -#define SAVE_GPRS(start, end, base) OP_REGS stw, 4, start, end, base, GPR0 >>> -#define REST_GPRS(start, end, base) OP_REGS lwz, 4, start, end, base, GPR0 >>> +.macro __SAVE_GPRS start, end, base, offset >>> + .if \end == 31 >>> + stmw \start,\offset(\base) >>> + .else >>> + OP_REGS stw, 4, \start, \end, \base, \offset >>> + .endif >>> +.endm >>> +.macro __REST_GPRS start, end, base, offset >>> + .if \end == 31 >>> + lmw \start,\offset(\base) >>> + .else >>> + OP_REGS lwz, 4, \start, \end, \base, \offset >>> + .endif >>> +.endm >>> +#define SAVE_GPRS(start, end, base) __SAVE_GPRS start, end, base, GPR0 >>> +#define REST_GPRS(start, end, base) __REST_GPRS start, end, base, GPR0 >>> #define SAVE_NVGPRS(base) SAVE_GPRS(13, 31, base) >>> #define REST_NVGPRS(base) REST_GPRS(13, 31, base) >>> #endif >
diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h index 753a2757bcd4..ac44383d350a 100644 --- a/arch/powerpc/include/asm/ppc_asm.h +++ b/arch/powerpc/include/asm/ppc_asm.h @@ -57,8 +57,22 @@ #define SAVE_NVGPRS(base) SAVE_GPRS(14, 31, base) #define REST_NVGPRS(base) REST_GPRS(14, 31, base) #else -#define SAVE_GPRS(start, end, base) OP_REGS stw, 4, start, end, base, GPR0 -#define REST_GPRS(start, end, base) OP_REGS lwz, 4, start, end, base, GPR0 +.macro __SAVE_GPRS start, end, base, offset + .if \end == 31 + stmw \start,\offset(\base) + .else + OP_REGS stw, 4, \start, \end, \base, \offset + .endif +.endm +.macro __REST_GPRS start, end, base, offset + .if \end == 31 + lmw \start,\offset(\base) + .else + OP_REGS lwz, 4, \start, \end, \base, \offset + .endif +.endm +#define SAVE_GPRS(start, end, base) __SAVE_GPRS start, end, base, GPR0 +#define REST_GPRS(start, end, base) __REST_GPRS start, end, base, GPR0 #define SAVE_NVGPRS(base) SAVE_GPRS(13, 31, base) #define REST_NVGPRS(base) REST_GPRS(13, 31, base) #endif