CVS: gcc/gcc-3.3/gcc/config/msp430 libgcc.S, 1.15.2.1, 1.15.2.2 msp430.c, 1.99.2.2, 1.99.2.3 msp430.h, 1.49.2.1, 1.49.2.2
"Sergey A. Borshch" <[email protected]> Thu, 5 Feb 2009 01:29:39 +0000
| Newsgroups | gmane.comp.hardware.texas-instruments.msp430.gcc.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/mspgcc/gcc/gcc-3.3/gcc/config/msp430
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv26558/gcc-3.3/gcc/config/msp430
Modified Files:
Tag: MSP430X
libgcc.S msp430.c msp430.h
Log Message:
prologue & epilogue generation reworked. stack frame bug fixed
__prologue_saver improved.
some rudimental comments removed.
Index: libgcc.S
===================================================================
RCS file: /cvsroot/mspgcc/gcc/gcc-3.3/gcc/config/msp430/libgcc.S,v
retrieving revision 1.15.2.1
retrieving revision 1.15.2.2
diff -u -w -d -r1.15.2.1 -r1.15.2.2
--- libgcc.S 26 Jan 2009 15:57:16 -0000 1.15.2.1
+++ libgcc.S 5 Feb 2009 01:29:37 -0000 1.15.2.2
@@ -564,15 +564,16 @@
.global __prologue_saver
.func __prologue_saver
__prologue_saver:
- mov r4, 0(r1)
- mov r5, 2(r1)
- mov r6, 4(r1)
- mov r7, 6(r1)
- mov r8, 8(r1)
- mov r9, 10(r1)
- mov r10, 12(r1)
- mov r11, 14(r1)
- br r12 ; now jump to the function body
+ ; 0(r1) = return address
+ mov r4, 2(r1)
+ mov r5, 4(r1)
+ mov r6, 6(r1)
+ mov r7, 8(r1)
+ mov r8, 10(r1)
+ mov r9, 12(r1)
+ mov r10, 14(r1)
+ mov r11, 16(r1)
+ ret
.endfunc
#endif
@@ -703,28 +704,17 @@
#endif /* defined (L_udivmoddi3_parts) */
#if defined (L_clobbers) && defined(__MSP430_SAVE_PROLOGUE__) && !defined(__MSP430X__)
-/*
- we cannot use __prologue_saver as r12 is used for operand
- but we can use __epilogue_restorer, as __restore_clobbers
-*/
-__store_clobbers:
- push r11
- push r10
- push r9
- push r8
- push r7
- push r6
- push r5
- push r4
- ret
+
.set __restore_clobbers, __epilogue_restorer
+
#endif /* defined (L_clobbers) */
.macro store_clobbers
#if defined(__MSP430X__)
XPUSHM #8, r11
#elif defined(__MSP430_SAVE_PROLOGUE__)
- call #__store_clobbers
+ sub #16, r1
+ call #__prologue_saver
#else
push r11
push r10
Index: msp430.c
===================================================================
RCS file: /cvsroot/mspgcc/gcc/gcc-3.3/gcc/config/msp430/msp430.c,v
retrieving revision 1.99.2.2
retrieving revision 1.99.2.3
diff -u -w -d -r1.99.2.2 -r1.99.2.3
--- msp430.c 4 Feb 2009 23:10:06 -0000 1.99.2.2
+++ msp430.c 5 Feb 2009 01:29:37 -0000 1.99.2.3
@@ -77,7 +77,6 @@
/* aux functions */
static int msp430_cc_source PARAMS ((rtx, enum rtx_code, rtx, rtx));
-static int msp430_func_num_saved_regs PARAMS ((void));
static int noint_hwmul_function_p PARAMS ((tree func));
static int interrupt_function_p PARAMS ((tree func));
static int msp430_naked_function_p PARAMS ((tree func));
@@ -113,9 +112,10 @@
enum hwmul_t hwmul;
};
-// we can add more options,
-// for example cpu bugs workaround requirements as soon as they will be implemented
-// remark: CPU4 bug workaround implemented in assembler
+/* we can add more options,
+ for example cpu bugs workaround requirements as soon as they will be implemented.
+ remark: CPU4 bug workaround implemented in assembler
+ */
#define MSP430_ISA_1 CORE_430, HWMUL_ABSENT
#define MSP430_ISA_2 CORE_430, HWMUL_16X16
#define MSP430_ISA_3 CORE_430, HWMUL_32X32
@@ -455,9 +455,9 @@
msp430_save_prologue_function_p (func)
tree func;
{
+ tree a;
if (TARGET_SAVE_PROLOGUE)
return !0;
- tree a;
if (TREE_CODE (func) != FUNCTION_DECL)
abort ();
a = lookup_attribute ("saveprologue", DECL_ATTRIBUTES (func));
@@ -916,30 +916,6 @@
return 0;
}
-/* Returns a number of pushed registers */
-static int
-msp430_func_num_saved_regs ()
-{
- int i;
- int saves = 0;
- int interrupt_func_p = interrupt_function_p (current_function_decl);
- int leaf_func_p = leaf_function_p ();
-
- for (i = 4; i < 16; i++)
- {
- if ((regs_ever_live[i]
- && (!call_used_regs[i]
- || interrupt_func_p))
- || (!leaf_func_p && (call_used_regs[i] && interrupt_func_p)))
- {
- saves += 1;
- }
- }
-
- return saves;
-}
-
-
/* Output function prologue */
void
function_prologue (file, size)
@@ -961,7 +937,6 @@
int ree = msp430_reentrant_function_p (current_function_decl);
int save_prologue_p =
msp430_save_prologue_function_p (current_function_decl);
- int num_saved_regs;
return_issued = 0;
last_insn_address = 0;
@@ -1057,101 +1032,118 @@
}
else
{
- do
- {
- if (tfp)
- break;
- num_saved_regs = msp430_func_num_saved_regs ();
- if (!interrupt_func_p)
+ if (!tfp)
{
if ( MCU_CORE_X )
{
- if (num_saved_regs)
+ int sequental_regs = 0;
+ for (i = 15; i >= 4; i--)
{
- fprintf (file, "\tpushm%s\t#%d, r11\n", ARG_SIZE, num_saved_regs);
+ if ((regs_ever_live[i]
+ && (!call_used_regs[i] || interrupt_func_p))
+ || (!leaf_func_p
+ && (call_used_regs[i] && interrupt_func_p)))
+ {
+ sequental_regs++;
+ }
+ else if (sequental_regs != 0)
+ {
+ fprintf (file, "\tpushm%s\t#%d, r%d\n", ARG_SIZE, sequental_regs, i + sequental_regs);
prologue_size += 1;
- size -= (8 - num_saved_regs) * target_mcu.regs_size == REGS_20BITS ? 4 : 2;
+ sequental_regs = 0;
}
- break;
}
- else
- {
- /* Here, we've got a chance to jump to prologue saver */
- if (save_prologue_p && !arg_register_used[12] && num_saved_regs > 3)
- {
- /* because if num_saved_regs <= 3, inlined pushes
- takes less time and/or code space
- */
- fprintf (file, "\tsub\t#16, r1\n");
- fprintf (file, "\tmov\t#1f, r12\n");
- fprintf (file, "\tbr\t#__prologue_saver+%d\n",
- (8 - num_saved_regs) * 4);
- fprintf (file, "1:\n");
- if (cfp && 8 - num_saved_regs)
+ if (sequental_regs != 0)
{
- /* adjust stack back */
- int n = (8 - num_saved_regs) * 2;
- fprintf (file, "\tadd\t#%d, r1\n", n);
- if (n != 0 && n != 1 && n != 2 && n != 4 && n != 8)
- prologue_size += 2;
- else
+ fprintf (file, "\tpushm%s\t#%d, r%d\n", ARG_SIZE, sequental_regs, 3 + sequental_regs);
prologue_size += 1;
}
- else
- /* space alredy reserved by sub #16, r1 */
- size -= (8 - num_saved_regs) * 2;
- prologue_size += 7;
- break;
- }
}
- } /* !interrupt_func_p */
- if ( MCU_CORE_X )
+ else /* !MCU_CORE_X */
{
int sequental_regs = 0;
- for (i = 15; i >= 4; i--)
+ for (i = 15; i >= 12; i--)
{
if ((regs_ever_live[i]
- && (!call_used_regs[i]
- || interrupt_func_p))
- || (!leaf_func_p && (call_used_regs[i]
- && (interrupt_func_p))))
+ && (!call_used_regs[i] || interrupt_func_p))
+ || (!leaf_func_p
+ && (call_used_regs[i] && interrupt_func_p)))
{
- sequental_regs++;
+ fprintf (file, "\tpush\tr%d\n", i);
+ prologue_size += 1;
}
- else
+ }
+ /* Here, we've got a chance to jump to prologue saver */
+ if ( save_prologue_p )
{
- if (sequental_regs != 0)
+ int regs_to_save = 0;
+ int stack_adjust = 0;
+ int stack_adjust_cmd_size = 0;
+ for (i = 11; i >= 4; i--)
{
- fprintf (file, "\tpushm%s\t#%d, r%d\n", ARG_SIZE, sequental_regs, i + sequental_regs);
- prologue_size += 1;
- sequental_regs = 0;
+ if ((regs_ever_live[i]
+ && (!call_used_regs[i] || interrupt_func_p))
+ || (!leaf_func_p
+ && (call_used_regs[i] && interrupt_func_p)))
+ {
+ if (sequental_regs == 11 - i) /* if continuous set of regs */
+ ++sequental_regs;
+ ++regs_to_save;
}
}
+ if (regs_to_save != sequental_regs /* need to save more regs */
+ || (cfp && sequental_regs != 8)) /* crit. func and extra stack allocated */
+ {
+ stack_adjust = (8 - sequental_regs) * 2;
+ stack_adjust_cmd_size = stack_adjust == 0 || stack_adjust == 1 ||
+ stack_adjust == 2 || stack_adjust == 4 || stack_adjust == 8 ?
+ 1 : 2;
}
- if (sequental_regs != 0)
+ if (sequental_regs > 4 + stack_adjust_cmd_size)
{
- fprintf (file, "\tpushm%s\t#%d, r%d\n", ARG_SIZE, sequental_regs, 3 + sequental_regs);
- prologue_size += 1;
+ /* because if less, inlined pushes
+ takes less time and/or code space
+ */
+ fprintf (file, "\tsub\t#16, r1\n");
+ fprintf (file, "\tcall\t#__prologue_saver+%d\n",
+ (8 - sequental_regs) * 4);
+ if (stack_adjust)
+ {
+ /* adjust stack back */
+ fprintf (file, "\tadd\t#%d, r1\n", stack_adjust);
+ prologue_size += 4 + stack_adjust_cmd_size;
+ }
+ else
+ {
+ /* space already reserved by sub #16, r1 */
+ size -= (8 - sequental_regs) * 2;
+ prologue_size += 4;
}
}
else
+ for(i = 0; i < sequental_regs; ++i)
{
- for (i = 15; i >= 4; i--)
+ fprintf (file, "\tpush\tr%d\n", 11 - i);
+ prologue_size += 1;
+ }
+ } /* save_prologue_p */
+ /* here R15...R12 are pushed if needed,
+ and sequental_regs regs down from R11 saved,
+ so push remainig regs
+ */
+ for (i = 11 - sequental_regs; i >= 4; i--)
{
if ((regs_ever_live[i]
- && (!call_used_regs[i]
- || interrupt_func_p))
- || (!leaf_func_p && (call_used_regs[i]
- && (interrupt_func_p))))
+ && (!call_used_regs[i] || interrupt_func_p))
+ || (!leaf_func_p
+ && (call_used_regs[i] && interrupt_func_p)))
{
fprintf (file, "\tpush\tr%d\n", i);
prologue_size += 1;
}
}
- }
- }
- while(0);
-
+ } /* !MCU_CORE_X */
+ } /* !tfp */
if (!interrupt_func_p && cfp)
{
prologue_size += 3;
@@ -1207,7 +1199,7 @@
prologue_size += 1;
else
prologue_size += 2;
- }
+ } /* if (size) */
/* disable interrupt for reentrant function */
if (!interrupt_func_p && ree)
@@ -1215,8 +1207,7 @@
prologue_size += 1;
fprintf (file, "\tdint\n");
}
- }
-
+ } /* !main */
fprintf (file, "\t/* prologue end (size=%d) */\n\n", prologue_size);
}
@@ -1240,7 +1231,6 @@
int still_return = 1;
int function_size;
-
last_insn_address = 0;
jump_tables_size = 0;
epilogue_size = 0;
@@ -1319,37 +1309,15 @@
fprintf (file, "\tpop\tr2\n");
}
- if (save_prologue_p && !MCU_CORE_X
- && !interrupt_func_p && msp430_func_num_saved_regs () > 2)
- {
- fprintf (file, "\tbr\t#__epilogue_restorer+%d\n",
- (8 - msp430_func_num_saved_regs ()) * 2);
- epilogue_size += 2;
- }
- else if ( save_prologue_p && !MCU_CORE_X
- && interrupt_func_p)
- {
- int num_saved_regs = msp430_func_num_saved_regs ();
- if (wakeup_func_p)
- {
- fprintf (file, "\tbic\t#0xf0,%d(r1)\n", num_saved_regs * 2);
- epilogue_size += 3;
- }
- fprintf (file, "\tbr\t#__epilogue_restorer_intr+%d\n",
- (12 - num_saved_regs) * 2);
- epilogue_size += 2;
- }
- else
- {
if ( MCU_CORE_X )
{
int sequental_regs = 0;
- for (i = 4; i < 16; i++)
+ for (i = 4; i <= 15; i++)
{
if ((regs_ever_live[i]
- && (!call_used_regs[i]
- || interrupt_func_p))
- || (!leaf_func_p && (call_used_regs[i] && interrupt_func_p)))
+ && (!call_used_regs[i] || interrupt_func_p))
+ || (!leaf_func_p
+ && (call_used_regs[i] && interrupt_func_p)))
{
sequental_regs++;
}
@@ -1367,7 +1335,48 @@
epilogue_size += 1;
}
}
- else
+ else /* !MCU_CORE_X */
+ {
+ if (save_prologue_p)
+ {
+ int num_saved_regs = 0;
+ int start_from = interrupt_func_p ? 15 : 11; /* gcc 3.4.3 fails into segmentation fault without this local */
+ for (i = 4; i <= start_from; ++i)
+ {
+ if (regs_ever_live[i] && !call_used_regs[i])
+ ++num_saved_regs;
+ else if (num_saved_regs)
+ {
+ do
+ {
+ fprintf (file, "\tpop\tr%d\n", i - num_saved_regs);
+ epilogue_size += 1;
+ }
+ while (--num_saved_regs);
+ }
+ }
+ if (num_saved_regs)
+ {
+ if (!interrupt_func_p)
+ {
+ fprintf (file, "\tbr\t#__epilogue_restorer+%d\n",
+ (8 - num_saved_regs) * 2);
+ }
+ else /* interrupt_func_p */
+ {
+ if (wakeup_func_p)
+ {
+ fprintf (file, "\tbic\t#0xf0,%d(r1)\n", num_saved_regs * 2);
+ epilogue_size += 3;
+ }
+ fprintf (file, "\tbr\t#__epilogue_restorer_intr+%d\n",
+ (12 - num_saved_regs) * 2);
+ }
+ epilogue_size += 2;
+ still_return = 0;
+ }
+ }
+ else /* !save_prologue_p */
{
for (i = 4; i < 16; i++)
{
@@ -1381,6 +1390,9 @@
}
}
}
+ } /* !MCU_CORE_X */
+ if (still_return)
+ {
if (interrupt_func_p)
{
if (wakeup_func_p)
@@ -1388,18 +1400,16 @@
fprintf (file, "\tbic\t#0xf0,0(r1)\n");
epilogue_size += 3;
}
-
fprintf (file, "\treti\n");
epilogue_size += 1;
}
- else
+ else /* !interrupt_func_p */
{
- if (still_return)
fprintf (file, CHECK_JUMP_SIZE("\tret\n","\treta\n"));
epilogue_size += 1;
}
- }
- }
+ } /* still_return */
+ } /* !main_p */
fprintf (file, "\t/* epilogue end (size=%d) */\n", epilogue_size);
done_epilogue:
Index: msp430.h
===================================================================
RCS file: /cvsroot/mspgcc/gcc/gcc-3.3/gcc/config/msp430/msp430.h,v
retrieving revision 1.49.2.1
retrieving revision 1.49.2.2
diff -u -w -d -r1.49.2.1 -r1.49.2.2
--- msp430.h 26 Jan 2009 15:57:17 -0000 1.49.2.1
+++ msp430.h 5 Feb 2009 01:29:37 -0000 1.49.2.2
@@ -57,6 +57,7 @@
#define MASK_RTL_DUMP 0x00000010
#define MASK_ALL_DEBUG 0x00000FE0
#define MASK_FORCE_HWMUL 0x00001000
+#define MASK_INT8 0x00002000
#define MASK_NO_STACK_INIT 0x00008000
#define MASK_NO_VOLAT_WRKAR 0x00010000
#define MASK_REORDER 0x00020000
@@ -72,6 +73,7 @@
#define TARGET_PROF_STD (target_flags & MASK_PROF_STD)
#define TARGET_PROF_LIB (target_flags & MASK_PROF_LIB)
#define TARGET_PROF_STACK (target_flags & MASK_PROF_STACK)
+#define TARGET_INT8 (target_flags & MASK_INT8)
#define TARGET_NO_HWMUL (target_flags & MASK_NO_HWMUL)
#define TARGET_HWMUL (target_flags & MASK_FORCE_HWMUL)
#define TARGET_NOINT_HWMUL (target_flags & MASK_NOINT_HWMUL)
@@ -92,6 +94,7 @@
{ "pgr", MASK_PROF_STACK,N_("Add stack information to profiler") }, \
{ "rtl", MASK_RTL_DUMP, NULL }, \
{ "deb", MASK_ALL_DEBUG, NULL }, \
+ { "int8", MASK_INT8, N_("Assume int to be 8 bit integer") }, \
{ "force-hwmul", MASK_FORCE_HWMUL,N_("Force hardware multiplier") },\
{ "disable-hwmul", MASK_NO_HWMUL, N_("Disable hardware multiplier") }, \
{ "inline-hwmul", MASK_INLINESIHWMUL, N_("Issue inline multiplication code for 32-bit integers") }, \
@@ -188,7 +191,6 @@
See also the macro `Pmode' defined below. */
#define POINTER_SIZE 16
-
/* Maximum sized of reasonable data type
DImode or Dfmode ... */
#define MAX_FIXED_MODE_SIZE 32
@@ -214,7 +216,7 @@
/* A C expression for the size in bits of the type `int' on the
target machine. If you don't define this, the default is one word. */
-#define INT_TYPE_SIZE ( 16)
+#define INT_TYPE_SIZE (TARGET_INT8 ? 8 : 16)
/* A C expression for the size in bits of the type `short' on the
@@ -1938,10 +1940,10 @@
name string in the `symbol_ref' (if one bit is not enough
information). */
-
+/*
#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME) \
(VAR) = (SYMBOL_NAME) + ((SYMBOL_NAME)[0] == '*' || (SYMBOL_NAME)[0] == '@');
-/* `STRIP_NAME_ENCODING (VAR, SYM_NAME)'
+ `STRIP_NAME_ENCODING (VAR, SYM_NAME)'
Decode SYM_NAME and store the real name part in VAR, sans the
characters that encode section info. Define this macro if
`ENCODE_SECTION_INFO' alters the symbol's name string. */
@@ -2270,17 +2272,11 @@
do { \
if (!flag_inhibit_size_directive) \
{ \
- char label[256]; \
- static int labelno; \
- labelno++; \
- ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
- ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
- fprintf (FILE, "%s", SIZE_ASM_OP); \
- assemble_name (FILE, (FNAME)); \
- fprintf (FILE, ","); \
- assemble_name (FILE, label); \
- fprintf (FILE, "-"); \
- assemble_name (FILE, (FNAME)); \
+ fputs (SIZE_ASM_OP, FILE); \
+ assemble_name (FILE, FNAME); \
+ fputs (", .-", FILE); \
+ assemble_name (FILE, FNAME); \
+ putc ('\n', FILE); \
fprintf (FILE,"\n/********* End of function ******/\n\n"); \
} \
} while (0)
@@ -3095,10 +3091,6 @@
#define ASM_SPEC " \
%{mmcu=*:-mmcu=%*} \
"
-/*
- As assembler don't care about hardware multiplier,
- translate gcc generic cpu types (see t-msp430) into gas generic types
-*/
/* A C string constant that tells the GNU CC driver program options to
pass to the assembler. It can also specify how to translate
options you give to GNU CC into options for GNU CC to pass to the
@@ -3117,142 +3109,6 @@
#define LINK_SPEC "\
%{mmcu=*:-m %*} \
"
-/*
-%{!mmcu=*|mmcu=msp430x110:-m msp430x110} \
-%{mmcu=msp430x112:-m msp430x112} \
-%{mmcu=msp430x1101:-m msp430x1101} \
-%{mmcu=msp430x1111:-m msp430x1111} \
-%{mmcu=msp430x1121:-m msp430x1121} \
-%{mmcu=msp430x1122:-m msp430x1122} \
-%{mmcu=msp430x1132:-m msp430x1132} \
-%{mmcu=msp430x122:-m msp430x122} \
-%{mmcu=msp430x123:-m msp430x123} \
-%{mmcu=msp430x1222:-m msp430x1222} \
-%{mmcu=msp430x1232:-m msp430x1232} \
-%{mmcu=msp430x133:-m msp430x133} \
-%{mmcu=msp430x135:-m msp430x135} \
-%{mmcu=msp430x1331:-m msp430x1331} \
-%{mmcu=msp430x1351:-m msp430x1351} \
-%{mmcu=msp430x147:-m msp430x147} \
-%{mmcu=msp430x148:-m msp430x148} \
-%{mmcu=msp430x149:-m msp430x149} \
-%{mmcu=msp430x1471:-m msp430x1471} \
-%{mmcu=msp430x1481:-m msp430x1481} \
-%{mmcu=msp430x1491:-m msp430x1491} \
-%{mmcu=msp430x155:-m msp430x155} \
-%{mmcu=msp430x156:-m msp430x156} \
-%{mmcu=msp430x157:-m msp430x157} \
-%{mmcu=msp430x167:-m msp430x167} \
-%{mmcu=msp430x168:-m msp430x168} \
-%{mmcu=msp430x169:-m msp430x169} \
-%{mmcu=msp430x1610:-m msp430x1610} \
-%{mmcu=msp430x1611:-m msp430x1611} \
-%{mmcu=msp430x1612:-m msp430x1612} \
-%{mmcu=msp430x2001:-m msp430x2001} \
-%{mmcu=msp430x2011:-m msp430x2011} \
-%{mmcu=msp430x2002:-m msp430x2002} \
-%{mmcu=msp430x2012:-m msp430x2012} \
-%{mmcu=msp430x2003:-m msp430x2003} \
-%{mmcu=msp430x2013:-m msp430x2013} \
-%{mmcu=msp430x2101:-m msp430x2101} \
-%{mmcu=msp430x2111:-m msp430x2111} \
-%{mmcu=msp430x2121:-m msp430x2121} \
-%{mmcu=msp430x2131:-m msp430x2131} \
-%{mmcu=msp430x2112:-m msp430x2112} \
-%{mmcu=msp430x2122:-m msp430x2122} \
-%{mmcu=msp430x2132:-m msp430x2132} \
-%{mmcu=msp430x2232:-m msp430x2232} \
-%{mmcu=msp430x2252:-m msp430x2252} \
-%{mmcu=msp430x2272:-m msp430x2272} \
-%{mmcu=msp430x2234:-m msp430x2234} \
-%{mmcu=msp430x2254:-m msp430x2254} \
-%{mmcu=msp430x2274:-m msp430x2274} \
-%{mmcu=msp430x233:-m msp430x233} \
-%{mmcu=msp430x235:-m msp430x235} \
-%{mmcu=msp430x2330:-m msp430x2330} \
-%{mmcu=msp430x2350:-m msp430x2350} \
-%{mmcu=msp430x2370:-m msp430x2370} \
-%{mmcu=msp430x247:-m msp430x247} \
-%{mmcu=msp430x248:-m msp430x248} \
-%{mmcu=msp430x249:-m msp430x249} \
-%{mmcu=msp430x2410:-m msp430x2410} \
-%{mmcu=msp430x2471:-m msp430x2471} \
-%{mmcu=msp430x2481:-m msp430x2481} \
-%{mmcu=msp430x2491:-m msp430x2491} \
-%{mmcu=msp430x2416:-m msp430x2416} \
-%{mmcu=msp430x2417:-m msp430x2417} \
-%{mmcu=msp430x2418:-m msp430x2418} \
-%{mmcu=msp430x2419:-m msp430x2419} \
-%{mmcu=msp430x2616:-m msp430x2616} \
-%{mmcu=msp430x2617:-m msp430x2617} \
-%{mmcu=msp430x2618:-m msp430x2618} \
-%{mmcu=msp430x2619:-m msp430x2619} \
-%{mmcu=msp430x311:-m msp430x311} \
-%{mmcu=msp430x312:-m msp430x312} \
-%{mmcu=msp430x313:-m msp430x313} \
-%{mmcu=msp430x314:-m msp430x314} \
-%{mmcu=msp430x315:-m msp430x315} \
-%{mmcu=msp430x323:-m msp430x323} \
-%{mmcu=msp430x325:-m msp430x325} \
-%{mmcu=msp430x336:-m msp430x336} \
-%{mmcu=msp430x337:-m msp430x337} \
-%{mmcu=msp430x412:-m msp430x412} \
-%{mmcu=msp430x413:-m msp430x413} \
-%{mmcu=msp430x415:-m msp430x415} \
-%{mmcu=msp430x417:-m msp430x417} \
-%{mmcu=msp430x423:-m msp430x423} \
-%{mmcu=msp430x425:-m msp430x425} \
-%{mmcu=msp430x427:-m msp430x427} \
-%{mmcu=msp430x4250:-m msp430x4250} \
-%{mmcu=msp430x4260:-m msp430x4260} \
-%{mmcu=msp430x4270:-m msp430x4270} \
-%{mmcu=msp430xG4250:-m msp430xG4250} \
-%{mmcu=msp430xG4260:-m msp430xG4260} \
-%{mmcu=msp430xG4270:-m msp430xG4270} \
-%{mmcu=msp430xE423:-m msp430xE423} \
-%{mmcu=msp430xE425:-m msp430xE425} \
-%{mmcu=msp430xE427:-m msp430xE427} \
-%{mmcu=msp430xE4232:-m msp430xE4232} \
-%{mmcu=msp430xE4242:-m msp430xE4242} \
-%{mmcu=msp430xE4252:-m msp430xE4252} \
-%{mmcu=msp430xE4272:-m msp430xE4272} \
-%{mmcu=msp430xW423:-m msp430xW423} \
-%{mmcu=msp430xW425:-m msp430xW425} \
-%{mmcu=msp430xW427:-m msp430xW427} \
-%{mmcu=msp430xG437:-m msp430xG437} \
-%{mmcu=msp430xG438:-m msp430xG438} \
-%{mmcu=msp430xG439:-m msp430xG439} \
-%{mmcu=msp430x435:-m msp430x435} \
-%{mmcu=msp430x436:-m msp430x436} \
-%{mmcu=msp430x437:-m msp430x437} \
-%{mmcu=msp430x447:-m msp430x447} \
-%{mmcu=msp430x448:-m msp430x448} \
-%{mmcu=msp430x449:-m msp430x449} \
-%{mmcu=msp430xG4616:-m msp430xG4616} \
-%{mmcu=msp430xG4617:-m msp430xG4617} \
-%{mmcu=msp430xG4618:-m msp430xG4618} \
-%{mmcu=msp430xG4619:-m msp430xG4619} \
-%{mmcu=msp430x4783:-m msp430x4783} \
-%{mmcu=msp430x4784:-m msp430x4784} \
-%{mmcu=msp430x4793:-m msp430x4793} \
-%{mmcu=msp430x4794:-m msp430x4794} \
-%{mmcu=msp430x47166:-m msp430x47166} \
-%{mmcu=msp430x47176:-m msp430x47176} \
-%{mmcu=msp430x47186:-m msp430x47186} \
-%{mmcu=msp430x47196:-m msp430x47196} \
-%{mmcu=msp430x47167:-m msp430x47167} \
-%{mmcu=msp430x47177:-m msp430x47177} \
-%{mmcu=msp430x47187:-m msp430x47187} \
-%{mmcu=msp430x47197:-m msp430x47197} \
-%{mmcu=msp430x5418:-m msp430x5418} \
-%{mmcu=msp430x5419:-m msp430x5419} \
-%{mmcu=msp430x5435:-m msp430x5435} \
-%{mmcu=msp430x5436:-m msp430x5436} \
-%{mmcu=msp430x5437:-m msp430x5437} \
-%{mmcu=msp430x5438:-m msp430x5438} \
-"
-*/
-
/* A C string constant that tells the GNU CC driver program options to
pass to the linker. It can also specify how to translate options
you give to GNU CC into options for GNU CC to pass to the linker.
@@ -3545,6 +3401,8 @@
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
#define DWARF2_DEBUGGING_INFO 1
+#define DWARF2_ADDR_SIZE 2
+
#define OBJECT_FORMAT_ELF
#define DBX_REGISTER_NUMBER(r) (r)
------------------------------------------------------------------------------
Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM)
software. With Adobe AIR, Ajax developers can use existing skills and code to
build responsive, highly engaging applications that combine the power of local
resources and data with the reach of the web. Download the Adobe AIR SDK and
Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com