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

Reply via email to