Module Name: src Committed By: rin Date: Mon May 31 11:41:22 UTC 2021
Modified Files: src/sys/lib/libunwind: Registers.hpp unwind_registers.S Log Message: PR toolchain/55837 Misc style fixes for clarity: - Rename lazyVFP1() and lazyVFP3() to lazyVFPv2() and lazyVFPv3(), respectively. Note that VFPv1 was obsoleted and replaced by VFPv2. - Introduce enum for flags. - Add few comments. No functional changes. To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/sys/lib/libunwind/Registers.hpp cvs rdiff -u -r1.18 -r1.19 src/sys/lib/libunwind/unwind_registers.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/lib/libunwind/Registers.hpp diff -u src/sys/lib/libunwind/Registers.hpp:1.21 src/sys/lib/libunwind/Registers.hpp:1.22 --- src/sys/lib/libunwind/Registers.hpp:1.21 Tue Feb 23 15:09:27 2021 +++ src/sys/lib/libunwind/Registers.hpp Mon May 31 11:41:22 2021 @@ -350,9 +350,8 @@ public: return REGNO_ARM32_SPSR; if (num >= DWARF_ARM32_D0 && num <= DWARF_ARM32_D31) return REGNO_ARM32_D0 + (num - DWARF_ARM32_D0); - if (num >= DWARF_ARM32_S0 && num <= DWARF_ARM32_S31) { + if (num >= DWARF_ARM32_S0 && num <= DWARF_ARM32_S31) return REGNO_ARM32_S0 + (num - DWARF_ARM32_S0); - } return LAST_REGISTER + 1; } @@ -385,9 +384,9 @@ public: void copyFloatVectorRegister(int num, uint64_t addr_) { const void *addr = reinterpret_cast<const void *>(addr_); if (num >= REGNO_ARM32_S0 && num <= REGNO_ARM32_S31) { - if ((flags & 1) == 0) { - lazyVFP1(); - flags |= 1; + if ((flags & FLAGS_VFPV2_USED) == 0) { + lazyVFPv2(); + flags |= FLAGS_VFPV2_USED; } /* * Emulate single precision register as half of the @@ -402,27 +401,32 @@ public: addr, sizeof(fpreg[0]) / 2); } if (num <= REGNO_ARM32_D15) { - if ((flags & 1) == 0) { - lazyVFP1(); - flags |= 1; + if ((flags & FLAGS_VFPV2_USED) == 0) { + lazyVFPv2(); + flags |= FLAGS_VFPV2_USED; } } else { - if ((flags & 2) == 0) { - lazyVFP3(); - flags |= 2; + if ((flags & FLAGS_VFPV3_USED) == 0) { + lazyVFPv3(); + flags |= FLAGS_VFPV3_USED; } } memcpy(fpreg + (num - REGNO_ARM32_D0), addr, sizeof(fpreg[0])); } - __dso_hidden void lazyVFP1(); - __dso_hidden void lazyVFP3(); + __dso_hidden void lazyVFPv2(); + __dso_hidden void lazyVFPv3(); __dso_hidden void jumpto() const __dead; private: uint32_t reg[REGNO_ARM32_SPSR + 1]; uint32_t flags; uint64_t fpreg[32]; + + enum { + FLAGS_VFPV2_USED = 0x1, + FLAGS_VFPV3_USED = 0x2, + }; }; enum { Index: src/sys/lib/libunwind/unwind_registers.S diff -u src/sys/lib/libunwind/unwind_registers.S:1.18 src/sys/lib/libunwind/unwind_registers.S:1.19 --- src/sys/lib/libunwind/unwind_registers.S:1.18 Tue Feb 23 15:09:27 2021 +++ src/sys/lib/libunwind/unwind_registers.S Mon May 31 11:41:22 2021 @@ -360,37 +360,37 @@ ARM_ENTRY(_ZN7_Unwind15Registers_arm32C1 mrs r1, cpsr str r1, [r0, #64] /* CPSR */ mov r1, #0 - str r1, [r0, #68] + str r1, [r0, #68] /* flags */ RET END(_ZN7_Unwind15Registers_arm32C1Ev) - .hidden _ZN7_Unwind15Registers_arm328lazyVFP1Ev -ARM_ENTRY(_ZN7_Unwind15Registers_arm328lazyVFP1Ev) + .hidden _ZN7_Unwind15Registers_arm329lazyVFPv2Ev +ARM_ENTRY(_ZN7_Unwind15Registers_arm329lazyVFPv2Ev) add r0, #72 vstmia r0, {d0-d15} RET -END(_ZN7_Unwind15Registers_arm328lazyVFP1Ev) +END(_ZN7_Unwind15Registers_arm329lazyVFPv2Ev) - .hidden _ZN7_Unwind15Registers_arm328lazyVFP3Ev -ARM_ENTRY(_ZN7_Unwind15Registers_arm328lazyVFP3Ev) + .hidden _ZN7_Unwind15Registers_arm329lazyVFPv3Ev +ARM_ENTRY(_ZN7_Unwind15Registers_arm329lazyVFPv3Ev) add r0, #200 vstmia r0, {d16-d31} RET -END(_ZN7_Unwind15Registers_arm328lazyVFP3Ev) +END(_ZN7_Unwind15Registers_arm329lazyVFPv3Ev) .hidden _ZNK7_Unwind15Registers_arm326jumptoEv ARM_ENTRY(_ZNK7_Unwind15Registers_arm326jumptoEv) - ldrb r1, [r0, #68] + ldrb r1, [r0, #68] /* flags */ tst r1, #1 - beq .Lnovfp1 + beq .Lnovfpv2 add r2, r0, #72 vldmia r2, {d0-d15} -.Lnovfp1: +.Lnovfpv2: tst r1, #2 - beq .Lnovfp3 + beq .Lnovfpv3 add r2, r0, #200 vldmia r2, {d16-d31} -.Lnovfp3: +.Lnovfpv3: ldr r1, [r0, #64] msr cpsr_sxc, r1 ldmia r0, {r0-r15}