This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] MIPS16 TLS support for GCC
- From: Richard Sandiford <rdsandiford at googlemail dot com>
- To: Chung-Lin Tang <cltang at codesourcery dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Sun, 15 Jan 2012 18:23:31 +0000
- Subject: Re: [PATCH] MIPS16 TLS support for GCC
- References: <4F0709B3.8060202@codesourcery.com> <87r4zaxwx6.fsf@firetop.home>
Richard Sandiford <rdsandiford@googlemail.com> writes:
> gcc/
> 2012-01-08 Chung-Lin Tang <cltang@codesourcery.com>
> Richard Sandiford <rdsandiford@googlemail.com>
>
> * config/mips/mips-protos.h (SYMBOL_FORCE_TO_MEM): Delete.
> (SYMBOL_32_HIGH): Likewise.
> (mips_output_tls_reloc_directive): Declare.
> * config/mips/mips.h (PIC_FUNCTION_ADDR_REGNUM): Move to mips.md.
> (mips_use_pcrel_pool_p, mips_lo_relocs, mips_hi_relocs): Declare.
> * config/mips/mips.c (mips_use_pcrel_pool_p): New variable.
> (mips_lo_relocs, mips_hi_relocs): Make extern.
> (mips16_stub_function): Move up file.
> (mips_classify_symbol): Remove SYMBOL_FORCE_TO_MEM handling.
> (mips_symbolic_constant_p): Likewise. Remove SYMBOL_32_HIGH too.
> (mips_symbol_insns_1): Likewise. Check mips_use_pcrel_pool_p.
> (mips_cannot_force_const_mem): Use mips_use_pcrel_pool_p instead
> of SYMBOL_FORCE_TO_MEM. Only check mips_tls_symbol_ref_1
> if it's false.
> (mips_get_tp): Add MIPS16 support.
> (mips_legitimize_tls_address): Remove MIPS16 sorry().
> Generalize DTPREL and TPREL handling.
> (mips_init_relocs): Initialize mips_use_pcrel_pool_p.
> Add MIPS16 TLS support.
> (mips_output_tls_reloc_directive): New function.
> (mips16_rewrite_pool_refs): Ignore UNSPEC_TLS_GET_TPs.
> * config/mips/predicates.md (symbolic_operand_with_high)
> (tls_reloc_operand): New predicates.
> (force_to_mem_operand): Use mips_use_pcrel_pool_p.
> * config/mips/mips.md (UNSPEC_UNSHIFTED_HIGH): New unspec.
> (PIC_FUNCTION_ADDR_REGNUM): Moved from mips.h.
> (*unshifted_high): New instruction. Use it for MIPS16
> high splitter.
> (consttable_tls_reloc, tls_get_tp_mips16_<mode>): New patterns.
> (*tls_get_tp_mips16_call_<mode>): Likewise.
>
> gcc/testsuite/
> * gcc.target/mips/code-readable-2.c: Allow the jump table address
> to be loaded from the constant pool, rather than via %hi and %lo.
>
> libgcc/
> 2012-01-08 Chung-Lin Tang <cltang@codesourcery.com>
> Richard Sandiford <rdsandiford@googlemail.com>
>
> * config/mips/libgcc-mips16.ver (__mips16_rdhwr): Add.
> * config/mips/mips16.S (__mips16_rdhwr): New function.
> * config/mips/t-mips16 (LIB1ASMFUNCS): Add _m16rdhwr.
This wouldn't normally be "stage 4" material, but since it was posted
just before stage 3 closed, I went ahead and applied it. I'll update
the web pages "soon".
Richard