diff options
author | Christopher Ferris <cferris@google.com> | 2023-10-09 19:28:49 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-10-09 19:28:49 +0000 |
commit | 4717923be630696b36d7f6c0915ca1716b35c2c4 (patch) | |
tree | e46f5eee592fd14a1fcf5749129760ea1e9a3e14 | |
parent | 402ef1499991ea48a042685624d46426d07c9209 (diff) | |
parent | 6b4c427a1753e2894a3ebf39027ac060e7caa019 (diff) | |
download | unwinding-4717923be630696b36d7f6c0915ca1716b35c2c4.tar.gz |
Merge "libunwindstack: Fix AsmGetRegs to not assume Thumb state" into main am: c0f5fb7b2f am: f4e406433f am: 6b4c427a17
Original change: https://android-review.googlesource.com/c/platform/system/unwinding/+/2760271
Change-Id: If90855fc8688b8f150bca2deb6f8fc9d590b912e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | libunwindstack/include/unwindstack/RegsGetLocal.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libunwindstack/include/unwindstack/RegsGetLocal.h b/libunwindstack/include/unwindstack/RegsGetLocal.h index 0e1d1af..4cdab9a 100644 --- a/libunwindstack/include/unwindstack/RegsGetLocal.h +++ b/libunwindstack/include/unwindstack/RegsGetLocal.h @@ -34,9 +34,11 @@ namespace unwindstack { inline __attribute__((__always_inline__)) void AsmGetRegs(void* reg_data) { asm volatile( +#if defined(__thumb__) ".align 2\n" "bx pc\n" "nop\n" +#endif ".code 32\n" "stmia %[base], {r0-r12}\n" "add r2, %[base], #52\n" @@ -44,9 +46,11 @@ inline __attribute__((__always_inline__)) void AsmGetRegs(void* reg_data) { "mov r4, r14\n" "mov r5, r15\n" "stmia r2, {r3-r5}\n" +#if defined(__thumb__) "orr %[base], pc, #1\n" "bx %[base]\n" - : [ base ] "+r"(reg_data) +#endif + : [base] "+r"(reg_data) : : "r2", "r3", "r4", "r5", "memory"); } |