diff options
author | eager <eager@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-03-14 15:43:23 +0000 |
---|---|---|
committer | eager <eager@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-03-14 15:43:23 +0000 |
commit | 4eae25aa47aca627eaaf6399a89caa87090f5e4a (patch) | |
tree | d50aa5b7886fb5d93895d40669595dd9aa771577 /gcc/configure.ac | |
parent | 23413aedf6423fb5debde561b80294c9421c0e88 (diff) | |
download | gcc-4eae25aa47aca627eaaf6399a89caa87090f5e4a.tar.gz |
Add support for TLS in MicroBlaze
* configure.ac: Add MicroBlaze TLS support detection.
* configure: Regenerate.
* config/microblaze/microblaze-protos.h: (microblaze_cannot_force_const_mem,
microblaze_tls_referenced_p, symbol_mentioned_p,
label_mentioned_p): Add prototypes.
* config/microblaze/microblaze.c (microblaze_address_type): Add ADDRESS_TLS
and tls_reloc address types.
(microblaze_address_info): Add tls_reloc.
(TARGET_HAVE_TLS): Define.
(get_tls_get_addr, microblaze_tls_symbol_p, microblaze_tls_operand_p_1,
microblaze_tls_referenced_p, microblaze_cannot_force_const_mem,
symbol_mentioned_p, label_mentioned_p, tls_mentioned_p, load_tls_operand,
microblaze_call_tls_get_addr, microblaze_legitimize_tls_address): New functions.
(microblaze_classify_unspec): Handle UNSPEC_TLS.
(get_base_reg): Use microblaze_tls_symbol_p.
(microblaze_classify_address): Handle TLS.
(microblaze_legitimate_pic_operand): Use symbol_mentioned_p, label_mentioned_p
and microblaze_tls_referenced_p.
(microblaze_legitimize_address): Handle TLS.
(microblaze_address_insns): Handle ADDRESS_TLS.
(pic_address_needs_scratch): Handle TLS.
(print_operand_address): Handle TLS.
(microblaze_expand_prologue): Check TLS_NEEDS_GOT.
(microblaze_expand_move): Handle TLS.
(microblaze_legitimate_constant_p): Check microblaze_cannot_force_const_mem
and microblaze_tls_symbol_p.
(TARGET_CANNOT_FORCE_CONST_MEM): Define.
* config/microblaze/microblaze.h (TLS_NEEDS_GOT): Define
(PIC_OFFSET_TABLE_REGNUM): Set.
* config/microblaze/linux.h (TLS_NEEDS_GOT): Define.
* config/microblaze/microblaze.md (UNSPEC_TLS): Define.
(addsi3, movsi_internal2, movdf_internal): Update constraints
* config/microblaze/predicates.md (arith_plus_operand): Define
(move_operand): Redefine as move_src_operand, check microblaze_tls_referenced_p.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@196659 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/configure.ac')
-rw-r--r-- | gcc/configure.ac | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/configure.ac b/gcc/configure.ac index 811c296cb81..eba35774648 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -2968,6 +2968,18 @@ foo: data8 25 tls_first_minor=13 tls_as_opt=--fatal-warnings ;; + microblaze*-*-*) + conftest_s=' + .section .tdata,"awT",@progbits +x: + .word 2 + .text + addik r5,r20,x@TLSGD + addik r5,r20,x@TLSLDM' + tls_first_major=2 + tls_first_minor=20 + tls_as_opt='--fatal-warnings' + ;; mips*-*-*) conftest_s=' .section .tdata,"awT",@progbits |