[libunwind] [RISCV] Allow libunwind to build for rv32e (PR #98855)

via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 1 11:37:38 PDT 2024


https://github.com/ArcaneNibble updated https://github.com/llvm/llvm-project/pull/98855

>From c5435a4567c6b6bf46eb3fb5361e168811dc7be9 Mon Sep 17 00:00:00 2001
From: R <rqou at berkeley.edu>
Date: Mon, 15 Jul 2024 04:29:07 +0100
Subject: [PATCH] [RISCV] Allow libunwind to build for rv32e

---
 libunwind/src/UnwindRegistersRestore.S | 4 ++++
 libunwind/src/UnwindRegistersSave.S    | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/libunwind/src/UnwindRegistersRestore.S b/libunwind/src/UnwindRegistersRestore.S
index 67d9e05711898..e18fec0b90d93 100644
--- a/libunwind/src/UnwindRegistersRestore.S
+++ b/libunwind/src/UnwindRegistersRestore.S
@@ -1169,7 +1169,11 @@ DEFINE_LIBUNWIND_FUNCTION(_ZN9libunwind15Registers_riscv6jumptoEv)
     ILOAD x\i, (RISCV_ISIZE * \i)(a0)
   .endr
   // skip a0 for now
+#if defined(__riscv_32e)
+  .irp i,11,12,13,14,15
+#else
   .irp i,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
+#endif
     ILOAD x\i, (RISCV_ISIZE * \i)(a0)
   .endr
   ILOAD    x10, (RISCV_ISIZE * 10)(a0)   // restore a0
diff --git a/libunwind/src/UnwindRegistersSave.S b/libunwind/src/UnwindRegistersSave.S
index 5bf6055fe4147..fab234fcd6f31 100644
--- a/libunwind/src/UnwindRegistersSave.S
+++ b/libunwind/src/UnwindRegistersSave.S
@@ -1108,7 +1108,11 @@ DEFINE_LIBUNWIND_FUNCTION(__unw_getcontext)
 #
 DEFINE_LIBUNWIND_FUNCTION(__unw_getcontext)
   ISTORE    x1, (RISCV_ISIZE * 0)(a0) // store ra as pc
+#if defined(__riscv_32e)
+  .irp i,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
+#else
   .irp i,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
+#endif
     ISTORE x\i, (RISCV_ISIZE * \i)(a0)
   .endr
 



More information about the cfe-commits mailing list