diff options
author | Chung-Lin Tang <cltang@codesourcery.com> | 2012-08-29 09:33:49 +0000 |
---|---|---|
committer | Chung-Lin Tang <cltang@gcc.gnu.org> | 2012-08-29 09:33:49 +0000 |
commit | 1274718f64c1aa5bd0ec72a658502d26db864220 (patch) | |
tree | 95ecbd26b0cecc0e3e0a75ae56bb06a2134cab3e | |
parent | 867a8345348ba8723f93182c858c77a31e404dcf (diff) | |
download | gcc-1274718f64c1aa5bd0ec72a658502d26db864220.zip gcc-1274718f64c1aa5bd0ec72a658502d26db864220.tar.gz gcc-1274718f64c1aa5bd0ec72a658502d26db864220.tar.bz2 |
mips.h (CRT_CALL_STATIC_FUNCTION): Add nomips16 asm directives, remove #ifndef __mips16 guards.
2012-08-29 Chung-Lin Tang <cltang@codesourcery.com>
* config/mips/mips.h (CRT_CALL_STATIC_FUNCTION): Add nomips16 asm
directives, remove #ifndef __mips16 guards.
* config/mips/t-linux64 (MULTILIB_OSDIRNAMES): Change to use
mapping style, add ../lib/mips16.
(MULTILIB_OPTIONS,MULTILIB_DIRNAMES): Add mips16.
(MULTILIB_EXCLUSIONS): Exclude mips16 when not -mabi=32.
From-SVN: r190774
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/mips/mips.h | 8 | ||||
-rw-r--r-- | gcc/config/mips/t-linux64 | 10 |
3 files changed, 24 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d652521..76738f3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-08-29 Chung-Lin Tang <cltang@codesourcery.com> + + * config/mips/mips.h (CRT_CALL_STATIC_FUNCTION): Add nomips16 asm + directives, remove #ifndef __mips16 guards. + * config/mips/t-linux64 (MULTILIB_OSDIRNAMES): Change to use + mapping style, add ../lib/mips16. + (MULTILIB_OPTIONS,MULTILIB_DIRNAMES): Add mips16. + (MULTILIB_EXCLUSIONS): Exclude mips16 when not -mabi=32. + 2012-08-28 Walter Lee <walt@tilera.com> * confg/tilegx/tilegx.md: Fix code style. (*zero_extendsidi_truncdisi): Fix typo. diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index caad3c3..090b6a3 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -2793,7 +2793,6 @@ while (0) #define STORE_BY_PIECES_P(SIZE, ALIGN) \ mips_store_by_pieces_p (SIZE, ALIGN) -#ifndef __mips16 /* Since the bits of the _init and _fini function is spread across many object files, each potentially with its own GP, we must assume we need to load our GP. We don't preserve $gp or $ra, since each @@ -2802,27 +2801,32 @@ while (0) #if (defined _ABIO32 && _MIPS_SIM == _ABIO32) #define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \ asm (SECTION_OP "\n\ + .set push\n\ + .set nomips16\n\ .set noreorder\n\ bal 1f\n\ nop\n\ 1: .cpload $31\n\ .set reorder\n\ jal " USER_LABEL_PREFIX #FUNC "\n\ + .set pop\n\ " TEXT_SECTION_ASM_OP); #endif /* Switch to #elif when we're no longer limited by K&R C. */ #if (defined _ABIN32 && _MIPS_SIM == _ABIN32) \ || (defined _ABI64 && _MIPS_SIM == _ABI64) #define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \ asm (SECTION_OP "\n\ + .set push\n\ + .set nomips16\n\ .set noreorder\n\ bal 1f\n\ nop\n\ 1: .set reorder\n\ .cpsetup $31, $2, 1b\n\ jal " USER_LABEL_PREFIX #FUNC "\n\ + .set pop\n\ " TEXT_SECTION_ASM_OP); #endif -#endif #ifndef HAVE_AS_TLS #define HAVE_AS_TLS 0 diff --git a/gcc/config/mips/t-linux64 b/gcc/config/mips/t-linux64 index 5197e5e..420ee68 100644 --- a/gcc/config/mips/t-linux64 +++ b/gcc/config/mips/t-linux64 @@ -18,4 +18,12 @@ MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64 MULTILIB_DIRNAMES = n32 32 64 -MULTILIB_OSDIRNAMES = ../lib32 ../lib ../lib64 +MULTILIB_OSDIRNAMES = mabi.n32=../lib32 +MULTILIB_OSDIRNAMES += mabi.32=../lib +MULTILIB_OSDIRNAMES += mabi.64=../lib64 + +# MIPS16 is currently only supported under O32 +MULTILIB_OPTIONS += mips16 +MULTILIB_DIRNAMES += mips16 +MULTILIB_OSDIRNAMES += mabi.32/mips16=../lib/mips16 +MULTILIB_EXCLUSIONS = !mabi=32/mips16 |