From 13ae6cae44d6cc542eff3b945545749f4e38a856 Mon Sep 17 00:00:00 2001 From: Yuriy Kolerov Date: Tue, 21 May 2024 10:56:51 +0100 Subject: [PATCH] arc: libgloss: Clean registers before any use Signed-off-by: Yuriy Kolerov --- libgloss/arc/crt0.S | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/libgloss/arc/crt0.S b/libgloss/arc/crt0.S index 1999e602b..0c2a2bd26 100644 --- a/libgloss/arc/crt0.S +++ b/libgloss/arc/crt0.S @@ -178,6 +178,47 @@ __start: #endif /* !__ARC601__ */ +;;; Clear the registers. + mov_s r0,0 + mov_s r1,0 + mov_s r2,0 + mov_s r3,0 +#ifndef __ARC_RF16__ + mov r4,0 + mov r5,0 + mov r6,0 + mov r7,0 + mov r8,0 + mov r9,0 +#endif + mov r10,0 + mov r11,0 + mov_s r12,0 + mov_s r13,0 + mov_s r14,0 + mov_s r15,0 +#ifndef __ARC_RF16__ + mov r16,0 + mov r17,0 + mov r18,0 + mov r19,0 + mov r20,0 + mov r21,0 + mov r22,0 + mov r23,0 + mov r24,0 + mov r25,0 +#endif + mov r27,0 + ;; SP (r28) is initialized +#if defined (__ARCEM__) || defined (__ARCHS__) + mov ilink,0 + mov r30,0 +#else + mov ilink1,0 + mov ilink2,0 +#endif /* ARCv2 */ + ;; Call constructors jl @_init