/* Definitions of target machine for GNU compiler for picoChip Copyright (C) 2001-2014 Free Software Foundation, Inc. Contributed by Picochip Ltd. (http://www.picochip.com) Maintained by Daniel Towner (daniel.towner@picochip.com) and Hariharan Sandanagobalane (hariharan@picochip.com). This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not, see . */ /* Which type of DFA scheduling to use - schedule for speed (VLIW), or schedule for space. When scheduling for space, attempt to schedule into stall cycles, but don't pack instructions. */ enum picochip_dfa_type { DFA_TYPE_NONE, DFA_TYPE_SPACE, DFA_TYPE_SPEED }; extern enum picochip_dfa_type picochip_schedule_type; /* Controlling the Compilation Driver */ /* Pass through the save-temps command option. */ #define LINK_SPEC " %{save-temps:--save-temps}" /* This is an embedded processor, and only supports a cut-down version of * the standard C library. */ #define LIB_SPEC "-lpicoC" /* The start file is automatically provided by the linker. */ #define STARTFILE_SPEC "" /* Run-time Target Specification */ /* Define some additional pre-processor macros. */ #define TARGET_CPU_CPP_BUILTINS() \ do \ { \ builtin_define ("NO_TRAMPOLINES"); \ builtin_define ("PICOCHIP"); \ builtin_define ("__PICOCHIP__"); \ } \ while (0) /* Translate requests for particular AEs into their respective ISA options. Note that byte access is enabled by default. */ #define DRIVER_SELF_SPECS \ "%{mae=ANY:-mmul-type=none -mno-byte-access} %')) #define PRINT_OPERAND_ADDRESS(STREAM,X) \ picochip_print_operand_address(STREAM,X) /* Output of Dispatch Tables */ /* Initialise a data memory location to an absolute code label. Used for building switch statement jump tables. Note - the format of the label must match that of the function picochip_output_label. */ #define ASM_OUTPUT_ADDR_VEC_ELT(stream, value) \ fprintf (stream, ".initWord _L%d\n", value); /* Assembler Commands for Alignment */ #define ASM_OUTPUT_SKIP(STREAM,BYTES) \ fprintf(STREAM, ".skip "HOST_WIDE_INT_PRINT_UNSIGNED"\n", BYTES); #define ASM_OUTPUT_ALIGN(STREAM,POWER) \ fprintf(STREAM, ".align %u\n", 1 << POWER); /* The elaborator doesn't output zero bytes in the text section. */ #define ASM_NO_SKIP_IN_TEXT 1 /* Controlling Debugging Information Format */ /* Macros Affecting All Debugging Formats */ #define DBX_REGISTER_NUMBER(REGNO) (REGNO) #define DWARF2_DEBUGGING_INFO #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG #define DWARF2_FRAME_INFO 1 /* Generate .file/.loc directives, so that the assembler generates the line table. */ #define DWARF2_ASM_LINE_DEBUG_INFO 1 /* Miscellaneous Parameters */ #define CASE_VECTOR_MODE HImode #define WORD_REGISTER_OPERATIONS #define LOAD_EXTEND_OP(MODE) ((MODE) == QImode ? SIGN_EXTEND : ZERO_EXTEND) #define MOVE_MAX 4 #define SHIFT_COUNT_TRUNCATED 1 #define Pmode HImode #define FUNCTION_MODE QImode #define TRULY_NOOP_TRUNCATION(OUTPREC,INPREC) 1 #define ASM_LONG ":TODO:.word\t" /* Define builtins for selected special-purpose instructions. */ enum picochip_builtins { PICOCHIP_BUILTIN_SBC, PICOCHIP_BUILTIN_PUT, PICOCHIP_BUILTIN_GET, PICOCHIP_BUILTIN_TESTPORT, PICOCHIP_BUILTIN_COPYSW, PICOCHIP_BUILTIN_ADDS, PICOCHIP_BUILTIN_SUBS, PICOCHIP_BUILTIN_BREV, PICOCHIP_BUILTIN_BYTESWAP, PICOCHIP_BUILTIN_GET_ARRAY, PICOCHIP_BUILTIN_PUT_ARRAY, PICOCHIP_BUILTIN_TESTPORT_ARRAY, PICOCHIP_BUILTIN_ASRI, PICOCHIP_BUILTIN_HALT }; #define NO_DOLLAR_IN_LABEL 1 #define NO_DOT_IN_LABEL 1 /* The assembler does support LEB128, despite the auto-configure test not detecting this. */ #define HAVE_AS_LEB128 1 /* picochip-unknown-none target has no support of C99 runtime */ #undef TARGET_LIBC_HAS_FUNCTION #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function /* The End */