diff options
author | Yuriy Kolerov <kolerov93@gmail.com> | 2024-05-21 10:56:51 +0100 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2024-05-22 14:25:57 -0400 |
commit | 13ae6cae44d6cc542eff3b945545749f4e38a856 (patch) | |
tree | 841cd72fd3ed5a4befd4438822d9f7a5afd0135a | |
parent | 6cfdd3350ee6f8c8ba8ccd46505d70a624ef3f75 (diff) | |
download | newlib-13ae6cae44d6cc542eff3b945545749f4e38a856.zip newlib-13ae6cae44d6cc542eff3b945545749f4e38a856.tar.gz newlib-13ae6cae44d6cc542eff3b945545749f4e38a856.tar.bz2 |
arc: libgloss: Clean registers before any use
Signed-off-by: Yuriy Kolerov <kolerov93@gmail.com>
-rw-r--r-- | libgloss/arc/crt0.S | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/libgloss/arc/crt0.S b/libgloss/arc/crt0.S index 1999e60..0c2a2bd 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 |