aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libgloss/arc/crt0.S41
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