Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 932247e9 authored by Florian Mayer's avatar Florian Mayer
Browse files

Allow to get raw register data on all platforms.

No new test failures introduced.

atest libunwindstack_test on aosp_walleye-userdebug:

Without patch:
Total: 800, Passed: 781, Failed: 19
With patch:
Total: 800, Passed: 781, Failed: 19

Change-Id: I8853c3e1594799761b481464b75e2904b38c4830
parent 6b0ecdab
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -33,8 +33,7 @@ namespace unwindstack {

#if defined(__arm__)

inline __always_inline void RegsGetLocal(Regs* regs) {
  void* reg_data = regs->RawData();
inline __attribute__((__always_inline__)) void AsmGetRegs(void* reg_data) {
  asm volatile(
      ".align 2\n"
      "bx pc\n"
@@ -55,8 +54,7 @@ inline __always_inline void RegsGetLocal(Regs* regs) {

#elif defined(__aarch64__)

inline __always_inline void RegsGetLocal(Regs* regs) {
  void* reg_data = regs->RawData();
inline __attribute__((__always_inline__)) void AsmGetRegs(void* reg_data) {
  asm volatile(
      "1:\n"
      "stp x0, x1, [%[base], #0]\n"
@@ -87,11 +85,12 @@ inline __always_inline void RegsGetLocal(Regs* regs) {

extern "C" void AsmGetRegs(void* regs);

inline void RegsGetLocal(Regs* regs) {
#endif

inline __attribute__((__always_inline__)) void RegsGetLocal(Regs* regs) {
  AsmGetRegs(regs->RawData());
}

#endif

}  // namespace unwindstack