authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-01-27 05:23:02+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-01-27 05:23:31+01:00
log519f1eb3613a95343d4401f0b3643636b1ee721e
tree03bf4154144bb0d38aa157e4ae3719300f86879c
parent4e3fadd90ea6ddb24b5f98b049ad3374d1db0ab8
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

musl: zero fp/lr registers in _start() and clone() on hexagon


2 files changed, 4 insertions(+), 0 deletions(-)

lib/libc/musl/arch/hexagon/crt_arch.h+1
...@@ -13,6 +13,7 @@ START ": \n"...@@ -13,6 +13,7 @@ START ": \n"
13" r1 = memw(r2)\n"13" r1 = memw(r2)\n"
14" r1 = add(r2, r1)\n"14" r1 = add(r2, r1)\n"
15" r30 = #0 // Signals the end of backtrace\n"15" r30 = #0 // Signals the end of backtrace\n"
16" r31 = #0\n"
16" r0 = r29 // Pointer to argc/argv\n"17" r0 = r29 // Pointer to argc/argv\n"
17" r29 = and(r29, #-16) // Align\n"18" r29 = and(r29, #-16) // Align\n"
18" memw(r29+#-8) = r29\n"19" memw(r29+#-8) = r29\n"
lib/libc/musl/src/thread/hexagon/clone.s+3
...@@ -29,6 +29,9 @@ __clone:...@@ -29,6 +29,9 @@ __clone:
29 p0 = cmp.eq(r0, #0)29 p0 = cmp.eq(r0, #0)
30 if (!p0) dealloc_return30 if (!p0) dealloc_return
3131
32 { r30 = #0
33 r31 = #0 }
34
32 { r0 = r1035 { r0 = r10
33 callr r11 }36 callr r11 }
3437