[ARC/LIBGCC] Add TLS support.
libgcc/ 2016-04-28 Claudiu Zissulescu <claziss@synopsys.com> Joern Rennecke <joern.rennecke@embecosm.com> * config/arc/crttls.S: New file. * config/arc/t-arc: New rule. * config.host (arc*-*-elf*, arc*-*-linux*): Add crttls.o. Co-Authored-By: Joern Rennecke <joern.rennecke@embecosm.com> From-SVN: r235558
This commit is contained in:
parent
24efbb3e41
commit
8b48923bac
4 changed files with 79 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
|||
2016-04-28 Claudiu Zissulescu <claziss@synopsys.com>
|
||||
Joern Rennecke <joern.rennecke@embecosm.com>
|
||||
|
||||
* config/arc/crttls.S: New file.
|
||||
* config/arc/t-arc: New rule.
|
||||
* config.host (arc*-*-elf*, arc*-*-linux*): Add crttls.o.
|
||||
|
||||
2016-04-25 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config/msp430/cmpd.c (__mspabi_cmpf): Add prototype.
|
||||
|
|
|
@ -367,10 +367,12 @@ alpha*-dec-*vms*)
|
|||
arc*-*-elf*)
|
||||
tmake_file="arc/t-arc-newlib arc/t-arc"
|
||||
extra_parts="crti.o crtn.o crtend.o crtbegin.o crtendS.o crtbeginS.o libgmon.a crtg.o crtgend.o"
|
||||
extra_parts="${extra_parts} crttls.o"
|
||||
;;
|
||||
arc*-*-linux-uclibc*)
|
||||
tmake_file="${tmake_file} t-slibgcc-libgcc t-slibgcc-nolc-override arc/t-arc700-uClibc arc/t-arc"
|
||||
extra_parts="crti.o crtn.o crtend.o crtbegin.o crtendS.o crtbeginS.o libgmon.a crtg.o crtgend.o"
|
||||
extra_parts="${extra_parts} crttls.o"
|
||||
;;
|
||||
arm-wrs-vxworks)
|
||||
tmake_file="$tmake_file arm/t-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
|
||||
|
|
67
libgcc/config/arc/crttls.S
Normal file
67
libgcc/config/arc/crttls.S
Normal file
|
@ -0,0 +1,67 @@
|
|||
; newlib tls glue code for Synopsys DesignWare ARC cpu.
|
||||
|
||||
/* Copyright (C) 2016 Free Software Foundation, Inc.
|
||||
Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
|
||||
on behalf of Synopsys Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 3, or (at your option) any later
|
||||
version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
Under Section 7 of GPL version 3, you are granted additional
|
||||
permissions described in the GCC Runtime Library Exception, version
|
||||
3.1, as published by the Free Software Foundation.
|
||||
|
||||
You should have received a copy of the GNU General Public License and
|
||||
a copy of the GCC Runtime Library Exception along with this program;
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* As a special exception, if you link this library with other files,
|
||||
some of which are compiled with GCC, to produce an executable,
|
||||
this library does not by itself cause the resulting executable
|
||||
to be covered by the GNU General Public License.
|
||||
This exception does not however invalidate any other reasons why
|
||||
the executable file might be covered by the GNU General Public License. */
|
||||
|
||||
|
||||
#if (__ARC_TLS_REGNO__ != -1)
|
||||
/* ANSI concatenation macros. */
|
||||
|
||||
#define CONCAT1(a, b) CONCAT2(a, b)
|
||||
#define CONCAT2(a, b) a ## b
|
||||
|
||||
/* Use the right prefix for global labels. */
|
||||
|
||||
#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
|
||||
|
||||
#define FUNC(X) .type SYM(X),@function
|
||||
#define ENDFUNC0(X) .Lfe_##X: .size X,.Lfe_##X-X
|
||||
#define ENDFUNC(X) ENDFUNC0(X)
|
||||
|
||||
.global SYM(__read_tp)
|
||||
SYM(__read_tp):
|
||||
FUNC(__read_tp)
|
||||
mov r0, CONCAT1 (r, __ARC_TLS_REGNO__)
|
||||
nop
|
||||
j [blink]
|
||||
ENDFUNC(__read_tp)
|
||||
|
||||
.section .init
|
||||
mov CONCAT1 (r, __ARC_TLS_REGNO__),__main_tcb_end+256
|
||||
|
||||
.section .tbss
|
||||
__main_tcb:
|
||||
.long 0
|
||||
.long 0
|
||||
__main_tcb_end:
|
||||
|
||||
#endif /*__ARC_TLS_REGNO__ != -1 */
|
|
@ -68,6 +68,9 @@ crtg.o: $(srcdir)/config/arc/crtg.S
|
|||
crtgend.o: $(srcdir)/config/arc/crtgend.S
|
||||
$(crt_compile) -c -x assembler-with-cpp $<
|
||||
|
||||
crttls.o: $(srcdir)/config/arc/crttls.S
|
||||
$(crt_compile) -c -x assembler-with-cpp $<
|
||||
|
||||
mcount.o: $(srcdir)/config/arc/gmon/mcount.c
|
||||
$(gcc_compile) -isystem $(srcdir)/config/arc/gmon -c $< \
|
||||
-fcall-saved-r0 -fcall-saved-r1 -fcall-saved-r2 -fcall-saved-r3 \
|
||||
|
|
Loading…
Add table
Reference in a new issue