diff options
author | nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-11-06 09:03:35 +0000 |
---|---|---|
committer | nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-11-06 09:03:35 +0000 |
commit | 8e24685177b82db6da35587a11fa2c012e39a3af (patch) | |
tree | a695397d72bb65673ddb5dfdad52117ceda13b57 | |
parent | 1d9ad37bb55217ac8c8c0e7d8deda317426b1299 (diff) | |
download | ppe42-gcc-8e24685177b82db6da35587a11fa2c012e39a3af.tar.gz ppe42-gcc-8e24685177b82db6da35587a11fa2c012e39a3af.zip |
* config/msp430/msp430.h (TARGET_CPU_CPP_BUILTINS): Define the
name returned by msp430_mcu_name.
(LIB_SPEC): If a -T option has not been specified then set a
default, mcu-specific, linker script.
* config/msp430/t-msp430 (MULTILIB_MATCHES): Add more mcu names.
* config/msp430/msp430.c (msp430x_names): Likewise.
Alpha sort the names for ease of comparison.
(msp430_mcu_name): New function: Returns a string suitable for
use as a C preprocessor symbol based upon the name of the MCU
being targeted.
(msp430_option_override): Accept msp430x and msp430xv2 as generic
mcu names.
* config/msp430/msp430-protos.h (msp430_mcu_name): Prototype.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@204447 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 16 | ||||
-rw-r--r-- | gcc/config/msp430/msp430-protos.h | 1 | ||||
-rw-r--r-- | gcc/config/msp430/msp430.c | 133 | ||||
-rw-r--r-- | gcc/config/msp430/msp430.h | 6 | ||||
-rw-r--r-- | gcc/config/msp430/t-msp430 | 10 |
5 files changed, 108 insertions, 58 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f5409b76151..af79ba32d96 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,19 @@ 2013-11-06 Nick Clifton <nickc@redhat.com> + * config/msp430/msp430.h (TARGET_CPU_CPP_BUILTINS): Define the + name returned by msp430_mcu_name. + (LIB_SPEC): If a -T option has not been specified then set a + default, mcu-specific, linker script. + * config/msp430/t-msp430 (MULTILIB_MATCHES): Add more mcu names. + * config/msp430/msp430.c (msp430x_names): Likewise. + Alpha sort the names for ease of comparison. + (msp430_mcu_name): New function: Returns a string suitable for + use as a C preprocessor symbol based upon the name of the MCU + being targeted. + (msp430_option_override): Accept msp430x and msp430xv2 as generic + mcu names. + * config/msp430/msp430-protos.h (msp430_mcu_name): Prototype. + * gcc.c (do_spec_1): Do not insert a space after a %* substitution unless it is the last part of a spec substring. * doc/invoke.texi (Spec Files): Document space insertion @@ -24,7 +38,7 @@ 2013-11-06 Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com> - * config/i386/bdver3.md : Added two additional decoder units + * config/i386/bdver3.md : Added two additional decoder units to support issue rate of 4 and remodeled vector unit. * config/i386/i386.c (ix86_issue_rate): Issue rate for BD architectures is set to 4. diff --git a/gcc/config/msp430/msp430-protos.h b/gcc/config/msp430/msp430-protos.h index f116855ecae..61402e59f38 100644 --- a/gcc/config/msp430/msp430-protos.h +++ b/gcc/config/msp430/msp430-protos.h @@ -35,6 +35,7 @@ void msp430_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int); int msp430_initial_elimination_offset (int, int); bool msp430_is_interrupt_func (void); const char * msp430x_logical_shift_right (rtx); +const char * msp430_mcu_name (void); bool msp430_modes_tieable_p (enum machine_mode, enum machine_mode); void msp430_output_labelref (FILE *, const char *); void msp430_register_pragmas (void); diff --git a/gcc/config/msp430/msp430.c b/gcc/config/msp430/msp430.c index fe692ca81b9..1ebb583c1ed 100644 --- a/gcc/config/msp430/msp430.c +++ b/gcc/config/msp430/msp430.c @@ -109,69 +109,87 @@ msp430_handle_option (struct gcc_options *opts ATTRIBUTE_UNUSED, #undef TARGET_OPTION_OVERRIDE #define TARGET_OPTION_OVERRIDE msp430_option_override -static const char * msp430x_names [] = -{ - "msp430x", /* Generic name. */ - "msp430xv2", /* Generic name. */ - - /* These names have been provided by TI and match the names currently - supported by GAS. +/* This list provides a set of known MCU names that support the MSP430X + ISA. The list has been provided by TI and should be kept in sync with + the ones in: + + gcc/config/msp430/t-msp430 + gas/config/tc-msp430.c - NB/ This list should be kept in sync with the ones in: - gcc/config/msp430/t-msp430 - gas/config/tc-msp430.c + FIXME: We ought to read the names in from a file at run, rather + than having them built in like this. Also such a file should be + shared with gas. */ - FIXME: We ought to read the names in from a file at run, rather - than having them built in like this. Also such a file should be - shared with gas. */ - - "msp430cg4616", "msp430cg4617", "msp430cg4618", "msp430cg4619", "msp430f2416", - "msp430f2417", "msp430f2418", "msp430f2419", "msp430f2616", "msp430f2617", - "msp430f2618", "msp430f2619", "msp430f47126", "msp430f47127", "msp430f47163", - "msp430f47173", "msp430f47183", "msp430f47193", "msp430f47166", "msp430f47176", - "msp430f47186", "msp430f47196", "msp430f47167", "msp430f47177", "msp430f47187", - "msp430f47197", "msp430f46161", "msp430f46171", "msp430f46181", "msp430f46191", - "msp430f4616", "msp430f4617", "msp430f4618", "msp430f4619", "msp430fg4616", - "msp430fg4617", "msp430fg4618", "msp430fg4619", "msp430f5418", "msp430f5419", - "msp430f5435", "msp430f5436", "msp430f5437", "msp430f5438", "msp430f5418a", - "msp430f5419a", "msp430f5435a", "msp430f5436a", "msp430f5437a", "msp430f5438a", - "msp430f5212", "msp430f5213", "msp430f5214", "msp430f5217", "msp430f5218", - "msp430f5219", "msp430f5222", "msp430f5223", "msp430f5224", "msp430f5227", - "msp430f5228", "msp430f5229", "msp430f5304", "msp430f5308", "msp430f5309", - "msp430f5310", "msp430f5340", "msp430f5341", "msp430f5342", "msp430f5324", - "msp430f5325", "msp430f5326", "msp430f5327", "msp430f5328", "msp430f5329", +static const char * msp430x_names [] = +{ + "cc430f5123", "cc430f5125", "cc430f5133", "cc430f5135", "cc430f5137", + "cc430f5143", "cc430f5145", "cc430f5147", "cc430f6125", "cc430f6126", + "cc430f6127", "cc430f6135", "cc430f6137", "cc430f6143", "cc430f6145", + "cc430f6147", "msp430bt5190", "msp430cg4616", "msp430cg4617", "msp430cg4618", + "msp430cg4619", "msp430f2416", "msp430f2417", "msp430f2418", "msp430f2419", + "msp430f2616", "msp430f2617", "msp430f2618", "msp430f2619", "msp430f4616", + "msp430f46161", "msp430f4617", "msp430f46171", "msp430f4618", "msp430f46181", + "msp430f4619", "msp430f46191", "msp430f47126", "msp430f47127", "msp430f47163", + "msp430f47166", "msp430f47167", "msp430f47173", "msp430f47176", "msp430f47177", + "msp430f47183", "msp430f47186", "msp430f47187", "msp430f47193", "msp430f47196", + "msp430f47197", "msp430f5131", "msp430f5132", "msp430f5151", "msp430f5152", + "msp430f5171", "msp430f5172", "msp430f5212", "msp430f5213", "msp430f5214", + "msp430f5217", "msp430f5218", "msp430f5219", "msp430f5222", "msp430f5223", + "msp430f5224", "msp430f5227", "msp430f5228", "msp430f5229", "msp430f5304", + "msp430f5308", "msp430f5309", "msp430f5310", "msp430f5324", "msp430f5325", + "msp430f5326", "msp430f5327", "msp430f5328", "msp430f5329", "msp430f5333", + "msp430f5335", "msp430f5336", "msp430f5338", "msp430f5340", "msp430f5341", + "msp430f5342", "msp430f5358", "msp430f5359", "msp430f5418", "msp430f5418a", + "msp430f5419", "msp430f5419a", "msp430f5435", "msp430f5435a", "msp430f5436", + "msp430f5436a", "msp430f5437", "msp430f5437a", "msp430f5438", "msp430f5438a", "msp430f5500", "msp430f5501", "msp430f5502", "msp430f5503", "msp430f5504", "msp430f5505", "msp430f5506", "msp430f5507", "msp430f5508", "msp430f5509", "msp430f5510", "msp430f5513", "msp430f5514", "msp430f5515", "msp430f5517", "msp430f5519", "msp430f5521", "msp430f5522", "msp430f5524", "msp430f5525", - "msp430f5526", "msp430f5527", "msp430f5528", "msp430f5529", "cc430f5133", - "cc430f5135", "cc430f5137", "cc430f6125", "cc430f6126", "cc430f6127", - "cc430f6135", "cc430f6137", "cc430f5123", "cc430f5125", "cc430f5143", - "cc430f5145", "cc430f5147", "cc430f6143", "cc430f6145", "cc430f6147", - "msp430f5333", "msp430f5335", "msp430f5336", "msp430f5338", "msp430f5630", + "msp430f5526", "msp430f5527", "msp430f5528", "msp430f5529", "msp430f5630", "msp430f5631", "msp430f5632", "msp430f5633", "msp430f5634", "msp430f5635", - "msp430f5636", "msp430f5637", "msp430f5638", "msp430f6433", "msp430f6435", - "msp430f6436", "msp430f6438", "msp430f6630", "msp430f6631", "msp430f6632", - "msp430f6633", "msp430f6634", "msp430f6635", "msp430f6636", "msp430f6637", - "msp430f6638", "msp430f5358", "msp430f5359", "msp430f5658", "msp430f5659", - "msp430f6458", "msp430f6459", "msp430f6658", "msp430f6659", "msp430f5131", - "msp430f5151", "msp430f5171", "msp430f5132", "msp430f5152", "msp430f5172", - "msp430f6720", "msp430f6721", "msp430f6723", "msp430f6724", "msp430f6725", - "msp430f6726", "msp430f6730", "msp430f6731", "msp430f6733", "msp430f6734", - "msp430f6735", "msp430f6736", "msp430f67451", "msp430f67651", "msp430f67751", - "msp430f67461", "msp430f67661", "msp430f67761", "msp430f67471", "msp430f67671", - "msp430f67771", "msp430f67481", "msp430f67681", "msp430f67781", "msp430f67491", - "msp430f67691", "msp430f67791", "msp430f6745", "msp430f6765", "msp430f6775", - "msp430f6746", "msp430f6766", "msp430f6776", "msp430f6747", "msp430f6767", - "msp430f6777", "msp430f6748", "msp430f6768", "msp430f6778", "msp430f6749", - "msp430f6769", "msp430f6779", "msp430fr5720", "msp430fr5721", "msp430fr5722", - "msp430fr5723", "msp430fr5724", "msp430fr5725", "msp430fr5726", "msp430fr5727", - "msp430fr5728", "msp430fr5729", "msp430fr5730", "msp430fr5731", "msp430fr5732", - "msp430fr5733", "msp430fr5734", "msp430fr5735", "msp430fr5736", "msp430fr5737", - "msp430fr5738", "msp430fr5739", "msp430bt5190", "msp430fr5949", "msp430fr5969", - "msp430sl5438a" + "msp430f5636", "msp430f5637", "msp430f5638", "msp430f5658", "msp430f5659", + "msp430f6433", "msp430f6435", "msp430f6436", "msp430f6438", "msp430f6458", + "msp430f6459", "msp430f6630", "msp430f6631", "msp430f6632", "msp430f6633", + "msp430f6634", "msp430f6635", "msp430f6636", "msp430f6637", "msp430f6638", + "msp430f6658", "msp430f6659", "msp430f6720", "msp430f6721", "msp430f6723", + "msp430f6724", "msp430f6725", "msp430f6726", "msp430f6730", "msp430f6731", + "msp430f6733", "msp430f6734", "msp430f6735", "msp430f6736", "msp430f6745", + "msp430f67451", "msp430f6746", "msp430f67461", "msp430f6747", "msp430f67471", + "msp430f6748", "msp430f67481", "msp430f6749", "msp430f67491", "msp430f6765", + "msp430f67651", "msp430f6766", "msp430f67661", "msp430f6767", "msp430f67671", + "msp430f6768", "msp430f67681", "msp430f6769", "msp430f67691", "msp430f6775", + "msp430f67751", "msp430f6776", "msp430f67761", "msp430f6777", "msp430f67771", + "msp430f6778", "msp430f67781", "msp430f6779", "msp430f67791", "msp430fg4616", + "msp430fg4617", "msp430fg4618", "msp430fg4619", "msp430fr5720", "msp430fr5721", + "msp430fr5722", "msp430fr5723", "msp430fr5724", "msp430fr5725", "msp430fr5726", + "msp430fr5727", "msp430fr5728", "msp430fr5729", "msp430fr5730", "msp430fr5731", + "msp430fr5732", "msp430fr5733", "msp430fr5734", "msp430fr5735", "msp430fr5736", + "msp430fr5737", "msp430fr5738", "msp430fr5739", "msp430fr5949", "msp430fr5969", + "msp430sl5438a","msp430x241x", "msp430x26x", "msp430x461x1", "msp430x46x", + "msp430x471x3", "msp430x471x6", "msp430x471x7", "msp430xg46x" }; + +/* Generate a C preprocessor symbol based upon the MCU selected by the user. + If a specific MCU has not been selected then return a generic symbol instead. */ + +const char * +msp430_mcu_name (void) +{ + if (target_cpu) + { + unsigned int i; + static char mcu_name [64]; + + snprintf (mcu_name, sizeof (mcu_name) - 1, "__%s__", target_cpu); + for (i = strlen (mcu_name); i--;) + mcu_name[i] = TOUPPER (mcu_name[i]); + return mcu_name; + } + return msp430x ? "__MSP430XGENERIC__" : "__MSP430GENERIC__"; +} + static void msp430_option_override (void) { @@ -191,6 +209,13 @@ msp430_option_override (void) name. The msp430x_names array only contains those MCU names which are currently known to use the MSP430X ISA. There are lots of other MCUs which just use the MSP430 ISA. */ + + /* We also recognise two generic MCU 430X names. They do not + appear in the msp430x_names table as we want to be able to + generate special C preprocessor defines for them. */ + if (strcasecmp (target_cpu, "msp430x") == 0 + || strcasecmp (target_cpu, "msp430xv2") == 0) + msp430x = true; } if (TARGET_LARGE && !msp430x) diff --git a/gcc/config/msp430/msp430.h b/gcc/config/msp430/msp430.h index f5289b551e3..953c6387e99 100644 --- a/gcc/config/msp430/msp430.h +++ b/gcc/config/msp430/msp430.h @@ -31,6 +31,7 @@ extern bool msp430x; { \ builtin_define ("NO_TRAMPOLINES"); \ builtin_define ("__MSP430__"); \ + builtin_define (msp430_mcu_name ()); \ if (msp430x) \ { \ builtin_define ("__MSP430X__"); \ @@ -70,10 +71,11 @@ extern bool msp430x; %{msim:-lsim} \ %{!msim:-lnosys} \ --end-group \ -%{!T*: %{msim: %{mlarge:%Tmsp430xl-sim.ld}%{!mlarge:%Tmsp430-sim.ld}}%{!msim:%Tmsp430.ld}} \ +%{!T*:%{!msim:%{mmcu=*:--script=%*/memory.ld --script=%*/peripherals.ld}}} \ +%{!T*:%{!msim:%{!mmcu=*:%Tmsp430.ld}}} \ +%{!T*:%{msim:%{mlarge:%Tmsp430xl-sim.ld}%{!mlarge:%Tmsp430-sim.ld}}} \ " - /* Storage Layout */ #define BITS_BIG_ENDIAN 0 diff --git a/gcc/config/msp430/t-msp430 b/gcc/config/msp430/t-msp430 index 52f0f4c1845..895810ff7e6 100644 --- a/gcc/config/msp430/t-msp430 +++ b/gcc/config/msp430/t-msp430 @@ -254,7 +254,15 @@ MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430bt5190 MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430fr5949 MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430fr5969 MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430sl5438a - +MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430x241x +MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430x26x +MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430x461x1 +MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430x46x +MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430x471x3 +MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430x471x6 +MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430x471x7 +MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430xg46x + MULTILIB_EXCEPTIONS = mlarge |