Christophe Leroy <christophe.le...@c-s.fr> writes: > diff --git a/arch/powerpc/include/asm/nohash/32/kup-8xx.h > b/arch/powerpc/include/asm/nohash/32/kup-8xx.h > new file mode 100644 > index 000000000000..a44cc6c1b901 > --- /dev/null > +++ b/arch/powerpc/include/asm/nohash/32/kup-8xx.h > @@ -0,0 +1,68 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef _ASM_POWERPC_KUP_8XX_H_ > +#define _ASM_POWERPC_KUP_8XX_H_ > + > +#include <asm/bug.h> > + > +#ifdef CONFIG_PPC_KUAP > + > +#ifdef __ASSEMBLY__ > + > +.macro kuap_save_and_lock sp, thread, gpr1, gpr2, gpr3 > + lis \gpr2, MD_APG_KUAP@h /* only APG0 and APG1 are used */ > + mfspr \gpr1, SPRN_MD_AP > + mtspr SPRN_MD_AP, \gpr2 > + stw \gpr1, STACK_REGS_KUAP(\sp) > +.endm > + > +.macro kuap_restore sp, current, gpr1, gpr2, gpr3 > + lwz \gpr1, STACK_REGS_KUAP(\sp) > + mtspr SPRN_MD_AP, \gpr1 > +.endm > + > +.macro kuap_check current, gpr > +#ifdef CONFIG_PPC_KUAP_DEBUG > + mfspr \gpr, SPRN_MD_AP > + rlwinm \gpr, \gpr, 16, 0xffff > +999: twnei \gpr, MD_APG_KUAP@h > + EMIT_BUG_ENTRY 999b, __FILE__, __LINE__, (BUGFLAG_WARNING | > BUGFLAG_ONCE) > +#endif > +.endm > + > +#else /* !__ASSEMBLY__ */ > + > +#include <asm/reg.h> > + > +static inline void allow_user_access(void __user *to, const void __user > *from, > + unsigned long size) > +{ > + mtspr(SPRN_MD_AP, MD_APG_INIT); > +} > + > +static inline void prevent_user_access(void __user *to, const void __user > *from, > + unsigned long size) > +{ > + mtspr(SPRN_MD_AP, MD_APG_KUAP); > +} > + > +static inline void allow_read_from_user(const void __user *from, unsigned > long size) > +{ > + allow_user_access(NULL, from, size); > +} > + > +static inline void allow_write_to_user(void __user *to, unsigned long size) > +{ > + allow_user_access(to, NULL, size); > +}
I dropped the two above functions when rebasing on my v6. cheers