config.gcc (arm*-*-*): Set c_target_objs and cxx_target_objs.
2007-11-05 Paul Brook <paul@codesourcery.com> gcc/ * config.gcc (arm*-*-*): Set c_target_objs and cxx_target_objs. * config/arm/arm.c (arm_lang_output_object_attributes_hook): New. (arm_file_start): Don't set Tag_ABI_PCS_wchar_t. Call arm_lang_output_object_attributes_hook. * config/arm/arm.h (arm_lang_output_object_attributes_hook): Declare. (REGISTER_TARGET_PRAGMAS): Call arm_lang_object_attributes_init. * config/arm/arm-protos.h (arm_lang_object_attributes_init): Add prototype. * config/arm/t-arm.c (arm.o): New rule. * config/arm/arm-c.c: New file. From-SVN: r129904
This commit is contained in:
parent
04e0cb885c
commit
b76c3c4bee
@ -1,3 +1,20 @@
|
||||
2007-11-05 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* Makefile.target: Add ssd0303.o, pl022.o and ssd0323.o.
|
||||
* vl.c (register_machines): Add lm3s6965evb_machine.
|
||||
* vl.h (armv7m_init): Add.
|
||||
(lm3s6965evb_machine): Declare.
|
||||
(pl022_init): New prototype.
|
||||
(ssd0323_xfer_ssi, ssd0323_init): New prototype.
|
||||
* hw/ssd0323.c: New file.
|
||||
* hw/armv7m.c (armv7m_init): Remove board init code.
|
||||
(lm3s811evb_machine): Remove.
|
||||
* hw/osram_oled.c: Rename...
|
||||
* hw/ssd0303.c: ... to this.
|
||||
* hw/pl022.c: New file.
|
||||
* hw/stellaris.c: Define and use stellaris_boards.
|
||||
(lm3s811evb_machine, lm3s6965evb_machine): New.
|
||||
|
||||
2007-11-05 Nick Clifton <nickc@redhat.com>
|
||||
Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
|
@ -259,6 +259,8 @@ strongarm*-*-*)
|
||||
arm*-*-*)
|
||||
cpu_type=arm
|
||||
extra_headers="mmintrin.h arm_neon.h"
|
||||
c_target_objs="arm-c.o"
|
||||
cxx_target_objs="arm-c.o"
|
||||
;;
|
||||
bfin*-*)
|
||||
cpu_type=bfin
|
||||
|
27
gcc/config/arm/arm-c.c
Normal file
27
gcc/config/arm/arm-c.c
Normal file
@ -0,0 +1,27 @@
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "coretypes.h"
|
||||
#include "tm.h"
|
||||
#include "tm_p.h"
|
||||
#include "tree.h"
|
||||
#include "output.h"
|
||||
#include "c-common.h"
|
||||
|
||||
|
||||
/* Output C specific EABI object attributes. These can not be done in
|
||||
arm.c because they require information from the C frontend. */
|
||||
|
||||
static void arm_output_c_attributes(void)
|
||||
{
|
||||
/* Tag_ABI_PCS_wchar_t. */
|
||||
asm_fprintf (asm_out_file, "\t.eabi_attribute 18, %d\n",
|
||||
(int)(TYPE_PRECISION (wchar_type_node) / BITS_PER_UNIT));
|
||||
}
|
||||
|
||||
|
||||
/* Setup so that common code calls arm_output_c_attributes. */
|
||||
|
||||
void arm_lang_object_attributes_init(void)
|
||||
{
|
||||
arm_lang_output_object_attributes_hook = arm_output_c_attributes;
|
||||
}
|
@ -207,6 +207,8 @@ extern void arm_pr_long_calls (struct cpp_reader *);
|
||||
extern void arm_pr_no_long_calls (struct cpp_reader *);
|
||||
extern void arm_pr_long_calls_off (struct cpp_reader *);
|
||||
|
||||
extern void arm_lang_object_attributes_init(void);
|
||||
|
||||
extern const char *arm_mangle_type (const_tree);
|
||||
|
||||
#endif /* ! GCC_ARM_PROTOS_H */
|
||||
|
@ -59,6 +59,8 @@ typedef struct minipool_fixup Mfix;
|
||||
|
||||
const struct attribute_spec arm_attribute_table[];
|
||||
|
||||
void (*arm_lang_output_object_attributes_hook)(void);
|
||||
|
||||
/* Forward function declarations. */
|
||||
static arm_stack_offsets *arm_get_frame_offsets (void);
|
||||
static void arm_add_gc_roots (void);
|
||||
@ -17508,10 +17510,6 @@ arm_file_start (void)
|
||||
are used. However we don't have any easy way of figuring this out.
|
||||
Conservatively record the setting that would have been used. */
|
||||
|
||||
/* Tag_ABI_PCS_wchar_t. */
|
||||
asm_fprintf (asm_out_file, "\t.eabi_attribute 18, %d\n",
|
||||
(int)WCHAR_TYPE_SIZE / BITS_PER_UNIT);
|
||||
|
||||
/* Tag_ABI_FP_rounding. */
|
||||
if (flag_rounding_math)
|
||||
asm_fprintf (asm_out_file, "\t.eabi_attribute 19, 1\n");
|
||||
@ -17547,6 +17545,9 @@ arm_file_start (void)
|
||||
else
|
||||
val = 6;
|
||||
asm_fprintf (asm_out_file, "\t.eabi_attribute 30, %d\n", val);
|
||||
|
||||
if (arm_lang_output_object_attributes_hook)
|
||||
arm_lang_output_object_attributes_hook();
|
||||
}
|
||||
default_file_start();
|
||||
}
|
||||
|
@ -132,6 +132,8 @@ extern rtx pool_vector_label;
|
||||
/* Set to 1 when a return insn is output, this means that the epilogue
|
||||
is not needed. */
|
||||
extern int return_used_this_function;
|
||||
/* Callback to output language specific object attributes. */
|
||||
extern void (*arm_lang_output_object_attributes_hook)(void);
|
||||
|
||||
/* Just in case configure has failed to define anything. */
|
||||
#ifndef TARGET_CPU_DEFAULT
|
||||
@ -2287,10 +2289,12 @@ extern unsigned arm_pic_register;
|
||||
extern int making_const_table;
|
||||
|
||||
/* Handle pragmas for compatibility with Intel's compilers. */
|
||||
/* Also abuse this to register additional C specific EABI attributes. */
|
||||
#define REGISTER_TARGET_PRAGMAS() do { \
|
||||
c_register_pragma (0, "long_calls", arm_pr_long_calls); \
|
||||
c_register_pragma (0, "no_long_calls", arm_pr_no_long_calls); \
|
||||
c_register_pragma (0, "long_calls_off", arm_pr_long_calls_off); \
|
||||
arm_lang_object_attributes_init(); \
|
||||
} while (0)
|
||||
|
||||
/* Condition code information. */
|
||||
|
@ -23,3 +23,8 @@ $(srcdir)/config/arm/arm-tune.md: $(srcdir)/config/arm/gentune.sh \
|
||||
$(SHELL) $(srcdir)/config/arm/gentune.sh \
|
||||
$(srcdir)/config/arm/arm-cores.def > \
|
||||
$(srcdir)/config/arm/arm-tune.md
|
||||
|
||||
arm-c.o: $(srcdir)/config/arm/arm-c.c $(CONFIG_H) $(SYSTEM_H) \
|
||||
coretypes.h $(TM_H) $(TREE_H) output.h $(C_COMMON_H)
|
||||
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/arm/arm-c.c
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user