/* score.h for Sunplus S+CORE processor
- Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Contributed by Sunnorth.
This file is part of GCC.
#define TARGET_VERSION \
fprintf (stderr, "Sunplus S+core rev=%s", SCORE_GCC_VERSION);
-#define OVERRIDE_OPTIONS score_override_options ()
-
-/* Show we can debug even without a frame pointer. */
-#define CAN_DEBUG_WITHOUT_FP
-
/* Target machine storage layout. */
#define BITS_BIG_ENDIAN 0
#define BYTES_BIG_ENDIAN (TARGET_LITTLE_ENDIAN == 0)
#define WORDS_BIG_ENDIAN (TARGET_LITTLE_ENDIAN == 0)
-/* Define this to set the endianness to use in libgcc2.c, which can
- not depend on target_flags. */
-#if defined(__scorele__)
-#define LIBGCC2_WORDS_BIG_ENDIAN 0
-#else
-#define LIBGCC2_WORDS_BIG_ENDIAN 1
-#endif
-
/* Width of a word, in units (bytes). */
#define UNITS_PER_WORD 4
Regarding coprocessor registers: without evidence to the contrary,
it's best to assume that each coprocessor register has a unique
- use. This can be overridden, in, e.g., override_options() or
+ use. This can be overridden, in, e.g., TARGET_OPTION_OVERRIDE or
CONDITIONAL_REGISTER_USAGE should the assumption be inappropriate
for a particular target. */
`crtl->outgoing_args_size'. */
#define OUTGOING_REG_PARM_STACK_SPACE(FNTYPE) 1
-#define RETURN_POPS_ARGS(FUNDECL, FUNTYPE, STACK_SIZE) 0
-
/* Passing Arguments in Registers */
/* Determine where to put an argument to a function.
Value is zero to push the argument on the stack,
} \
} while (0)
-#define TRAMPOLINE_TEMPLATE(STREAM) \
- do { \
- if (TARGET_SCORE7) \
- { \
- fprintf (STREAM, "\t.set r1\n"); \
- fprintf (STREAM, "\tmv r31, r3\n"); \
- fprintf (STREAM, "\tbl nextinsn\n"); \
- fprintf (STREAM, "nextinsn:\n"); \
- fprintf (STREAM, "\tlw r1, [r3, 6*4-8]\n"); \
- fprintf (STREAM, "\tlw r23, [r3, 6*4-4]\n"); \
- fprintf (STREAM, "\tmv r3, r31\n"); \
- fprintf (STREAM, "\tbr! r1\n"); \
- fprintf (STREAM, "\tnop!\n"); \
- fprintf (STREAM, "\t.set nor1\n"); \
- } \
- else if (TARGET_SCORE3) \
- { \
- fprintf (STREAM, "\t.set r1\n"); \
- fprintf (STREAM, "\tmv! r31, r3\n"); \
- fprintf (STREAM, "\tnop!\n"); \
- fprintf (STREAM, "\tbl nextinsn\n"); \
- fprintf (STREAM, "nextinsn:\n"); \
- fprintf (STREAM, "\tlw! r1, [r3, 6*4-8]\n"); \
- fprintf (STREAM, "\tnop!\n"); \
- fprintf (STREAM, "\tlw r23, [r3, 6*4-4]\n"); \
- fprintf (STREAM, "\tmv! r3, r31\n"); \
- fprintf (STREAM, "\tnop!\n"); \
- fprintf (STREAM, "\tbr! r1\n"); \
- fprintf (STREAM, "\tnop!\n"); \
- fprintf (STREAM, "\t.set nor1\n"); \
- } \
- } while (0)
-
/* Trampolines for Nested Functions. */
#define TRAMPOLINE_INSNS 6
/* A C expression for the size in bytes of the trampoline, as an integer. */
#define TRAMPOLINE_SIZE (24 + GET_MODE_SIZE (ptr_mode) * 2)
-/* A C statement to initialize the variable parts of a trampoline.
- ADDR is an RTX for the address of the trampoline; FNADDR is an
- RTX for the address of the nested function; STATIC_CHAIN is an
- RTX for the static chain value that should be passed to the
- function when it is called. */
-
-#define INITIALIZE_TRAMPOLINE(ADDR, FUNC, CHAIN) \
- score_initialize_trampoline (ADDR, FUNC, CHAIN)
-
#define HAVE_PRE_INCREMENT 1
#define HAVE_PRE_DECREMENT 1
#define HAVE_POST_INCREMENT 1
#define HAVE_PRE_MODIFY_REG 0
#define HAVE_POST_MODIFY_REG 0
-/* Recognize any constant value that is a valid address. */
-#define CONSTANT_ADDRESS_P(X) CONSTANT_P (X)
-
/* Maximum number of registers that can appear in a valid memory address. */
#define MAX_REGS_PER_ADDRESS 1
for 32-bit targets. */
#define FUNCTION_MODE Pmode
-struct extern_list GTY ((chain_next ("%h.next")))
+struct GTY ((chain_next ("%h.next"))) extern_list
{
struct extern_list *next; /* next external */
const char *name; /* name of the external */