diff --git a/lib/libc/musl/arch/hexagon/crt_arch.h b/lib/libc/musl/arch/hexagon/crt_arch.h index 9f9428cf1927a98bcd5aac0bf8c90cdb87747c73..395b38d158059480f0bf532f5e6440abe58d618f 100644 --- a/lib/libc/musl/arch/hexagon/crt_arch.h +++ b/lib/libc/musl/arch/hexagon/crt_arch.h @@ -13,6 +13,7 @@ START ": \n" " r1 = memw(r2)\n" " r1 = add(r2, r1)\n" " r30 = #0 // Signals the end of backtrace\n" +" r31 = #0\n" " r0 = r29 // Pointer to argc/argv\n" " r29 = and(r29, #-16) // Align\n" " memw(r29+#-8) = r29\n" diff --git a/lib/libc/musl/src/thread/hexagon/clone.s b/lib/libc/musl/src/thread/hexagon/clone.s index 42aab67a375923b106c51d77a0a617fadbeefce1..b91bda60eb24c11ed318c5385508496de1dd96ab 100644 --- a/lib/libc/musl/src/thread/hexagon/clone.s +++ b/lib/libc/musl/src/thread/hexagon/clone.s @@ -29,6 +29,9 @@ __clone: p0 = cmp.eq(r0, #0) if (!p0) dealloc_return + { r30 = #0 + r31 = #0 } + { r0 = r10 callr r11 }