[PATCH] LoongArch: Add LA32 pointer guard support

mengqinggang mengqinggang@loongson.cn
Sun Aug 23 01:46:10 GMT 2026


Hi,
Thanks for you  patch.
A similar patch is here: 
https://sourceware.org/pipermail/libc-alpha/2026-August/179652.html


在 2026/8/23 03:48, 魏祎晗 写道:
>  From f493e834ec4affef287e0e7352426f11fec83bc9 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?=E9=AD=8F=E7=A5=8E=E6=99=97?= <aqwyh@buaa.edu.cn>
> Date: Sun, 23 Aug 2026 03:40:42 +0800
> Subject: [PATCH] LoongArch: Add LA32 pointer guard support
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> The pointer guard assembly only implemented the 64-bit path using rotri.d.  LA32 lacks rotri.w, so implement the 32-bit branch using srli.w/slli.w/or to perform the rotation.
>
> Signed-off-by: 魏祎晗 <aqwyh@buaa.edu.cn>
> ---
>   .../unix/sysv/linux/loongarch/pointer_guard-asm.h   | 13 +++++++++++++
>   1 file changed, 13 insertions(+)
>
> diff --git a/sysdeps/unix/sysv/linux/loongarch/pointer_guard-asm.h b/sysdeps/unix/sysv/linux/loongarch/pointer_guard-asm.h
> index 24e27e4092..8fe71b5aee 100644
> --- a/sysdeps/unix/sysv/linux/loongarch/pointer_guard-asm.h
> +++ b/sysdeps/unix/sysv/linux/loongarch/pointer_guard-asm.h
> @@ -36,12 +36,25 @@
>     PTR_MANGLE_LOAD (guard); \
>     PTR_DEMANGLE2 (dst, src, guard);
>   /* Use PTR_MANGLE2 for efficiency if guard is already loaded.  */
> +# if __loongarch_grlen == 64
>   # define PTR_MANGLE2(dst, src, guard) \
>     xor  dst, src, guard; \
>     rotri.d  dst, dst, 47;
>   # define PTR_DEMANGLE2(dst, src, guard) \
>     rotri.d  src, src, 17; \
>     xor  dst, src, guard;
> +# else
> +# define PTR_MANGLE2(dst, src, guard) \
> +  xor  dst, src, guard; \
> +  srli.w  t2, dst, 23; \
> +  slli.w  dst, dst, 9; \
> +  or  dst, dst, t2;
> +# define PTR_DEMANGLE2(dst, src, guard) \
> +  srli.w  t2, src, 9; \
> +  slli.w  src, src, 23; \
> +  or  src, src, t2; \
> +  xor  dst, src, guard;
> +# endif
>   #endif
>   
>   #endif /* POINTER_GUARD_ASM_H */



More information about the Libc-alpha mailing list