Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libgloss/arc/gcrt0.S')
-rw-r--r--libgloss/arc/gcrt0.S79
1 files changed, 79 insertions, 0 deletions
diff --git a/libgloss/arc/gcrt0.S b/libgloss/arc/gcrt0.S
new file mode 100644
index 000000000..0ce6b63cd
--- /dev/null
+++ b/libgloss/arc/gcrt0.S
@@ -0,0 +1,79 @@
+/*
+ Copyright (c) 2016, Synopsys, Inc. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1) Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2) Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3) Neither the name of the Synopsys, Inc., nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+#define PROFILE_SUPPORT 1
+
+#include "crt0.S"
+
+ .global __mcount
+ .type __mcount, @function
+ .align 4
+__mcount:
+ ;; When a function is compiled for profiling, gcc will insert
+ ;; a call to __mcount without checking for resources. Hence,
+ ;; we need save all of the argument registers and temp registers,
+ ;; extract the address of <func_name>, and call the _mcount_internal
+ ;; to do the real work. Finally, restore all the argument registers
+ ;; before returning.
+ push_s blink
+ push_s r0
+ push_s r1
+ push_s r2
+ push_s r3
+#ifndef __ARC_RF16__
+ push r4
+ push r5
+ push r6
+ push r7
+ push r8
+ push r9
+#endif
+ push r10
+ push r11
+ push r12
+ mov r0,blink
+ jl @_mcount_internal
+ pop r12
+ pop r11
+ pop r10
+#ifndef __ARC_RF16__
+ pop r9
+ pop r8
+ pop r7
+ pop r6
+ pop r5
+ pop r4
+#endif
+ pop_s r3
+ pop_s r2
+ pop_s r1
+ pop_s r0
+ pop_s blink
+ j_s [blink]
+ .size __mcount, . - __mcount