Commit 50cfbf99 by Nick Clifton

msp430.h (TARGET_CPU_CPP_BUILTINS): Define the name returned by msp430_mcu_name.

	* 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.

From-SVN: r204447
parent 25990163
2013-11-06 Nick Clifton <nickc@redhat.com> 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 * gcc.c (do_spec_1): Do not insert a space after a %* substitution
unless it is the last part of a spec substring. unless it is the last part of a spec substring.
* doc/invoke.texi (Spec Files): Document space insertion * doc/invoke.texi (Spec Files): Document space insertion
...@@ -24,7 +38,7 @@ ...@@ -24,7 +38,7 @@
2013-11-06 Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com> 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. to support issue rate of 4 and remodeled vector unit.
* config/i386/i386.c (ix86_issue_rate): Issue rate for BD * config/i386/i386.c (ix86_issue_rate): Issue rate for BD
architectures is set to 4. architectures is set to 4.
...@@ -35,6 +35,7 @@ void msp430_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int); ...@@ -35,6 +35,7 @@ void msp430_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int);
int msp430_initial_elimination_offset (int, int); int msp430_initial_elimination_offset (int, int);
bool msp430_is_interrupt_func (void); bool msp430_is_interrupt_func (void);
const char * msp430x_logical_shift_right (rtx); const char * msp430x_logical_shift_right (rtx);
const char * msp430_mcu_name (void);
bool msp430_modes_tieable_p (enum machine_mode, enum machine_mode); bool msp430_modes_tieable_p (enum machine_mode, enum machine_mode);
void msp430_output_labelref (FILE *, const char *); void msp430_output_labelref (FILE *, const char *);
void msp430_register_pragmas (void); void msp430_register_pragmas (void);
......
...@@ -109,69 +109,87 @@ msp430_handle_option (struct gcc_options *opts ATTRIBUTE_UNUSED, ...@@ -109,69 +109,87 @@ msp430_handle_option (struct gcc_options *opts ATTRIBUTE_UNUSED,
#undef TARGET_OPTION_OVERRIDE #undef TARGET_OPTION_OVERRIDE
#define TARGET_OPTION_OVERRIDE msp430_option_override #define TARGET_OPTION_OVERRIDE msp430_option_override
static const char * msp430x_names [] = /* 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
"msp430x", /* Generic name. */ the ones in:
"msp430xv2", /* Generic name. */
gcc/config/msp430/t-msp430
/* These names have been provided by TI and match the names currently gas/config/tc-msp430.c
supported by GAS.
NB/ This list should be kept in sync with the ones in: FIXME: We ought to read the names in from a file at run, rather
gcc/config/msp430/t-msp430 than having them built in like this. Also such a file should be
gas/config/tc-msp430.c shared with gas. */
FIXME: We ought to read the names in from a file at run, rather static const char * msp430x_names [] =
than having them built in like this. Also such a file should be {
shared with gas. */ "cc430f5123", "cc430f5125", "cc430f5133", "cc430f5135", "cc430f5137",
"cc430f5143", "cc430f5145", "cc430f5147", "cc430f6125", "cc430f6126",
"msp430cg4616", "msp430cg4617", "msp430cg4618", "msp430cg4619", "msp430f2416", "cc430f6127", "cc430f6135", "cc430f6137", "cc430f6143", "cc430f6145",
"msp430f2417", "msp430f2418", "msp430f2419", "msp430f2616", "msp430f2617", "cc430f6147", "msp430bt5190", "msp430cg4616", "msp430cg4617", "msp430cg4618",
"msp430f2618", "msp430f2619", "msp430f47126", "msp430f47127", "msp430f47163", "msp430cg4619", "msp430f2416", "msp430f2417", "msp430f2418", "msp430f2419",
"msp430f47173", "msp430f47183", "msp430f47193", "msp430f47166", "msp430f47176", "msp430f2616", "msp430f2617", "msp430f2618", "msp430f2619", "msp430f4616",
"msp430f47186", "msp430f47196", "msp430f47167", "msp430f47177", "msp430f47187", "msp430f46161", "msp430f4617", "msp430f46171", "msp430f4618", "msp430f46181",
"msp430f47197", "msp430f46161", "msp430f46171", "msp430f46181", "msp430f46191", "msp430f4619", "msp430f46191", "msp430f47126", "msp430f47127", "msp430f47163",
"msp430f4616", "msp430f4617", "msp430f4618", "msp430f4619", "msp430fg4616", "msp430f47166", "msp430f47167", "msp430f47173", "msp430f47176", "msp430f47177",
"msp430fg4617", "msp430fg4618", "msp430fg4619", "msp430f5418", "msp430f5419", "msp430f47183", "msp430f47186", "msp430f47187", "msp430f47193", "msp430f47196",
"msp430f5435", "msp430f5436", "msp430f5437", "msp430f5438", "msp430f5418a", "msp430f47197", "msp430f5131", "msp430f5132", "msp430f5151", "msp430f5152",
"msp430f5419a", "msp430f5435a", "msp430f5436a", "msp430f5437a", "msp430f5438a", "msp430f5171", "msp430f5172", "msp430f5212", "msp430f5213", "msp430f5214",
"msp430f5212", "msp430f5213", "msp430f5214", "msp430f5217", "msp430f5218", "msp430f5217", "msp430f5218", "msp430f5219", "msp430f5222", "msp430f5223",
"msp430f5219", "msp430f5222", "msp430f5223", "msp430f5224", "msp430f5227", "msp430f5224", "msp430f5227", "msp430f5228", "msp430f5229", "msp430f5304",
"msp430f5228", "msp430f5229", "msp430f5304", "msp430f5308", "msp430f5309", "msp430f5308", "msp430f5309", "msp430f5310", "msp430f5324", "msp430f5325",
"msp430f5310", "msp430f5340", "msp430f5341", "msp430f5342", "msp430f5324", "msp430f5326", "msp430f5327", "msp430f5328", "msp430f5329", "msp430f5333",
"msp430f5325", "msp430f5326", "msp430f5327", "msp430f5328", "msp430f5329", "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", "msp430f5500", "msp430f5501", "msp430f5502", "msp430f5503", "msp430f5504",
"msp430f5505", "msp430f5506", "msp430f5507", "msp430f5508", "msp430f5509", "msp430f5505", "msp430f5506", "msp430f5507", "msp430f5508", "msp430f5509",
"msp430f5510", "msp430f5513", "msp430f5514", "msp430f5515", "msp430f5517", "msp430f5510", "msp430f5513", "msp430f5514", "msp430f5515", "msp430f5517",
"msp430f5519", "msp430f5521", "msp430f5522", "msp430f5524", "msp430f5525", "msp430f5519", "msp430f5521", "msp430f5522", "msp430f5524", "msp430f5525",
"msp430f5526", "msp430f5527", "msp430f5528", "msp430f5529", "cc430f5133", "msp430f5526", "msp430f5527", "msp430f5528", "msp430f5529", "msp430f5630",
"cc430f5135", "cc430f5137", "cc430f6125", "cc430f6126", "cc430f6127",
"cc430f6135", "cc430f6137", "cc430f5123", "cc430f5125", "cc430f5143",
"cc430f5145", "cc430f5147", "cc430f6143", "cc430f6145", "cc430f6147",
"msp430f5333", "msp430f5335", "msp430f5336", "msp430f5338", "msp430f5630",
"msp430f5631", "msp430f5632", "msp430f5633", "msp430f5634", "msp430f5635", "msp430f5631", "msp430f5632", "msp430f5633", "msp430f5634", "msp430f5635",
"msp430f5636", "msp430f5637", "msp430f5638", "msp430f6433", "msp430f6435", "msp430f5636", "msp430f5637", "msp430f5638", "msp430f5658", "msp430f5659",
"msp430f6436", "msp430f6438", "msp430f6630", "msp430f6631", "msp430f6632", "msp430f6433", "msp430f6435", "msp430f6436", "msp430f6438", "msp430f6458",
"msp430f6633", "msp430f6634", "msp430f6635", "msp430f6636", "msp430f6637", "msp430f6459", "msp430f6630", "msp430f6631", "msp430f6632", "msp430f6633",
"msp430f6638", "msp430f5358", "msp430f5359", "msp430f5658", "msp430f5659", "msp430f6634", "msp430f6635", "msp430f6636", "msp430f6637", "msp430f6638",
"msp430f6458", "msp430f6459", "msp430f6658", "msp430f6659", "msp430f5131", "msp430f6658", "msp430f6659", "msp430f6720", "msp430f6721", "msp430f6723",
"msp430f5151", "msp430f5171", "msp430f5132", "msp430f5152", "msp430f5172", "msp430f6724", "msp430f6725", "msp430f6726", "msp430f6730", "msp430f6731",
"msp430f6720", "msp430f6721", "msp430f6723", "msp430f6724", "msp430f6725", "msp430f6733", "msp430f6734", "msp430f6735", "msp430f6736", "msp430f6745",
"msp430f6726", "msp430f6730", "msp430f6731", "msp430f6733", "msp430f6734", "msp430f67451", "msp430f6746", "msp430f67461", "msp430f6747", "msp430f67471",
"msp430f6735", "msp430f6736", "msp430f67451", "msp430f67651", "msp430f67751", "msp430f6748", "msp430f67481", "msp430f6749", "msp430f67491", "msp430f6765",
"msp430f67461", "msp430f67661", "msp430f67761", "msp430f67471", "msp430f67671", "msp430f67651", "msp430f6766", "msp430f67661", "msp430f6767", "msp430f67671",
"msp430f67771", "msp430f67481", "msp430f67681", "msp430f67781", "msp430f67491", "msp430f6768", "msp430f67681", "msp430f6769", "msp430f67691", "msp430f6775",
"msp430f67691", "msp430f67791", "msp430f6745", "msp430f6765", "msp430f6775", "msp430f67751", "msp430f6776", "msp430f67761", "msp430f6777", "msp430f67771",
"msp430f6746", "msp430f6766", "msp430f6776", "msp430f6747", "msp430f6767", "msp430f6778", "msp430f67781", "msp430f6779", "msp430f67791", "msp430fg4616",
"msp430f6777", "msp430f6748", "msp430f6768", "msp430f6778", "msp430f6749", "msp430fg4617", "msp430fg4618", "msp430fg4619", "msp430fr5720", "msp430fr5721",
"msp430f6769", "msp430f6779", "msp430fr5720", "msp430fr5721", "msp430fr5722", "msp430fr5722", "msp430fr5723", "msp430fr5724", "msp430fr5725", "msp430fr5726",
"msp430fr5723", "msp430fr5724", "msp430fr5725", "msp430fr5726", "msp430fr5727", "msp430fr5727", "msp430fr5728", "msp430fr5729", "msp430fr5730", "msp430fr5731",
"msp430fr5728", "msp430fr5729", "msp430fr5730", "msp430fr5731", "msp430fr5732", "msp430fr5732", "msp430fr5733", "msp430fr5734", "msp430fr5735", "msp430fr5736",
"msp430fr5733", "msp430fr5734", "msp430fr5735", "msp430fr5736", "msp430fr5737", "msp430fr5737", "msp430fr5738", "msp430fr5739", "msp430fr5949", "msp430fr5969",
"msp430fr5738", "msp430fr5739", "msp430bt5190", "msp430fr5949", "msp430fr5969", "msp430sl5438a","msp430x241x", "msp430x26x", "msp430x461x1", "msp430x46x",
"msp430sl5438a" "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 static void
msp430_option_override (void) msp430_option_override (void)
{ {
...@@ -191,6 +209,13 @@ msp430_option_override (void) ...@@ -191,6 +209,13 @@ msp430_option_override (void)
name. The msp430x_names array only contains those MCU names name. The msp430x_names array only contains those MCU names
which are currently known to use the MSP430X ISA. There are which are currently known to use the MSP430X ISA. There are
lots of other MCUs which just use the MSP430 ISA. */ 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) if (TARGET_LARGE && !msp430x)
......
...@@ -31,6 +31,7 @@ extern bool msp430x; ...@@ -31,6 +31,7 @@ extern bool msp430x;
{ \ { \
builtin_define ("NO_TRAMPOLINES"); \ builtin_define ("NO_TRAMPOLINES"); \
builtin_define ("__MSP430__"); \ builtin_define ("__MSP430__"); \
builtin_define (msp430_mcu_name ()); \
if (msp430x) \ if (msp430x) \
{ \ { \
builtin_define ("__MSP430X__"); \ builtin_define ("__MSP430X__"); \
...@@ -70,10 +71,11 @@ extern bool msp430x; ...@@ -70,10 +71,11 @@ extern bool msp430x;
%{msim:-lsim} \ %{msim:-lsim} \
%{!msim:-lnosys} \ %{!msim:-lnosys} \
--end-group \ --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 */ /* Storage Layout */
#define BITS_BIG_ENDIAN 0 #define BITS_BIG_ENDIAN 0
......
...@@ -254,7 +254,15 @@ MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430bt5190 ...@@ -254,7 +254,15 @@ MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430bt5190
MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430fr5949 MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430fr5949
MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430fr5969 MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430fr5969
MULTILIB_MATCHES += mmcu?msp430x=mmcu?msp430sl5438a 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 MULTILIB_EXCEPTIONS = mlarge
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment