[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