summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Kolesov <Anton.Kolesov@synopsys.com>2016-05-13 18:21:08 +0300
committerCorinna Vinschen <corinna@vinschen.de>2016-05-25 12:15:51 +0200
commitd1dcdb8886370ea1fc348417c0d934e0f4243beb (patch)
tree6aa6fc3f42aa940505d89101f8ac51013915c9d1
parentdd00a8e71935e01062bae711c1e02bcc34baa8a8 (diff)
downloadcygnal-d1dcdb8886370ea1fc348417c0d934e0f4243beb.tar.gz
cygnal-d1dcdb8886370ea1fc348417c0d934e0f4243beb.tar.bz2
cygnal-d1dcdb8886370ea1fc348417c0d934e0f4243beb.zip
arc: Have nops in _exit_halt only for ARCompact
ARCompact processors (ARC 600 and ARC 700) require three "nop"s after the "flag 1" instruction. Later ARC processors do not have this requirement, so it is possible to reduce size of "_exit_halt" for them. libgloss/ 2016-05-24 Anton Kolesov <Anton.Kolesov@synopsys.com> * arc/crt0.S (_exit_halt): Insert nops only for ARCompact.
-rw-r--r--libgloss/arc/crt0.S15
1 files changed, 9 insertions, 6 deletions
diff --git a/libgloss/arc/crt0.S b/libgloss/arc/crt0.S
index 1d966c211..7db07fff0 100644
--- a/libgloss/arc/crt0.S
+++ b/libgloss/arc/crt0.S
@@ -207,15 +207,18 @@ __start:
; r0 contains exit code
j @exit
- .section .text._exit_halt,"ax",@progbits
- .global _exit_halt
- .type _exit_halt, @function
+.section .text._exit_halt,"ax",@progbits
+.global _exit_halt
+.type _exit_halt, @function
_exit_halt:
; r0 contains exit code
- flag 0x01
+ flag 1
+#if defined (__ARC600__) || defined (__ARC700__)
+ ; ARCompact requires 3 nops after flag 1
nop
- nop ; ARCompact requires 3 nops after flag 1
nop
- b @_exit_halt
nop
+#endif
+ b @_exit_halt
+.balign 4