[08/15] arc: libgloss: Clean registers before any use

Message ID 20240521095658.10311-9-kolerov93@gmail.com
State New
Headers
Series A series of fixes for ARC and libgloss update |

Commit Message

Yuriy Kolerov May 21, 2024, 9:56 a.m. UTC
  From: Yuriy Kolerov <kolerov93@gmail.com>

Signed-off-by: Yuriy Kolerov <kolerov93@gmail.com>
---
 libgloss/arc/crt0.S | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)
  

Patch

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