[PATCH] LoongArch: Add LA32 pointer guard support
魏祎晗 <[email protected]>
| Newsgroups | gmane.comp.lib.glibc.alpha |
|---|---|
| Message-ID | <[email protected]> |
From f493e834ec4affef287e0e7352426f11fec83bc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E7=A5=8E=E6=99=97?= <[email protected]> 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: 魏祎晗 <[email protected]> --- .../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 */ -- 2.55.0