[libcxx-commits] [PATCH] D156283: MIPS: unwind, don't save/restore hi/lo for R6
YunQiang Su via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Jul 25 18:42:13 PDT 2023
wzssyqa created this revision.
Herald added subscribers: atanasyan, arichardson, sdardis.
Herald added a project: All.
wzssyqa requested review of this revision.
Herald added projects: LLVM, libunwind.
Herald added subscribers: libcxx-commits, llvm-commits.
Herald added a reviewer: libunwind.
HI/LO registers have been removed in MIPSr6.
Save and restore them only for pre-R6.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D156283
Files:
libunwind/src/UnwindRegistersRestore.S
libunwind/src/UnwindRegistersSave.S
Index: libunwind/src/UnwindRegistersSave.S
===================================================================
--- libunwind/src/UnwindRegistersSave.S
+++ libunwind/src/UnwindRegistersSave.S
@@ -174,11 +174,13 @@
sw $31, (4 * 31)($4)
# Store return address to pc
sw $31, (4 * 32)($4)
+#if __mips_isa_rev < 6
# hi and lo
mfhi $8
sw $8, (4 * 33)($4)
mflo $8
sw $8, (4 * 34)($4)
+#endif
#ifdef __mips_hard_float
#if __mips_fpr != 64
sdc1 $f0, (4 * 36 + 8 * 0)($4)
@@ -255,11 +257,13 @@
.endr
# Store return address to pc
sd $31, (8 * 32)($4)
+#if __mips_isa_rev < 6
# hi and lo
mfhi $8
sd $8, (8 * 33)($4)
mflo $8
sd $8, (8 * 34)($4)
+#endif
#ifdef __mips_hard_float
.irp i,FROM_0_TO_31
sdc1 $f\i, (280+8*\i)($4)
Index: libunwind/src/UnwindRegistersRestore.S
===================================================================
--- libunwind/src/UnwindRegistersRestore.S
+++ libunwind/src/UnwindRegistersRestore.S
@@ -993,11 +993,13 @@
ldc1 $f31, (4 * 36 + 8 * 31)($4)
#endif
#endif
+#if __mips_isa_rev < 6
// restore hi and lo
lw $8, (4 * 33)($4)
mthi $8
lw $8, (4 * 34)($4)
mtlo $8
+#endif
// r0 is zero
lw $1, (4 * 1)($4)
lw $2, (4 * 2)($4)
@@ -1054,11 +1056,13 @@
ldc1 $f\i, (280+8*\i)($4)
.endr
#endif
+#if __mips_isa_rev < 6
// restore hi and lo
ld $8, (8 * 33)($4)
mthi $8
ld $8, (8 * 34)($4)
mtlo $8
+#endif
// r0 is zero
ld $1, (8 * 1)($4)
ld $2, (8 * 2)($4)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D156283.544172.patch
Type: text/x-patch
Size: 1547 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20230726/4b04b6e0/attachment.bin>
More information about the libcxx-commits
mailing list