OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [config/] [or32/] [or32.h] - Diff between revs 333 and 399

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 333 Rev 399
Line 1... Line 1...
/* Definitions of target machine for GNU compiler.  OpenRISC 1000 version.
/* Definitions of target machine for GNU compiler.  OpenRISC 1000 version.
   Copyright (C) 1987, 1988, 1992, 1995, 1996, 1999, 2000, 2001, 2002,
   Copyright (C) 1987, 1988, 1992, 1995, 1996, 1999, 2000, 2001, 2002,
   2003, 2004, 2005 Free Software Foundation, Inc.
   2003, 2004, 2005 Free Software Foundation, Inc.
 
   Copyright (C) 2010 Embecosm Limited
   Contributed by Damjan Lampret <damjanl@bsemi.com> in 1999.
   Contributed by Damjan Lampret <damjanl@bsemi.com> in 1999.
   Major optimizations by Matjaz Breskvar <matjazb@bsemi.com> in 2005.
   Major optimizations by Matjaz Breskvar <matjazb@bsemi.com> in 2005.
 
 
This file is part of GNU CC.
This file is part of GNU CC.
 
 
Line 44... Line 45...
  { "target_prefix", TARGET_PREFIX }
  { "target_prefix", TARGET_PREFIX }
 
 
#undef CPP_SPEC
#undef CPP_SPEC
#define CPP_SPEC "%{mor32-newlib*:-idirafter %(target_prefix)/newlib-include}"
#define CPP_SPEC "%{mor32-newlib*:-idirafter %(target_prefix)/newlib-include}"
 
 
/* Make sure we pick up the crtinit.o and crtfini.o files. */
/* Make sure we pick up the or32-crtbegin.o and or32-crtend.o files. */
#undef STARTFILE_SPEC
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "%{!shared:%{mor32-newlib*:%(target_prefix)/newlib/crt0.o} \
#define STARTFILE_SPEC "%{!shared:%{mor32-newlib*:%(target_prefix)/newlib/crt0.o} \
                        %{!mor32-newlib*:crt0.o%s} crtinit.o%s}"
                        %{!mor32-newlib*:crt0.o%s} crti.o%s crtbegin.o%s}"
 
 
#undef ENDFILE_SPEC
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtfini.o%s"
#define ENDFILE_SPEC "crtend.o%s crtn.o%s"
 
 
/* Specify the newlib library path if necessary */
/* Specify the newlib library path if necessary */
#undef LINK_SPEC
#undef LINK_SPEC
#define LINK_SPEC "%{mor32-newlib*:-L%(target_prefix)/newlib}"
#define LINK_SPEC "%{mor32-newlib*:-L%(target_prefix)/newlib}"
 
 
Line 119... Line 120...
 
 
/* Alignment of field after `int : 0' in a structure.  */
/* Alignment of field after `int : 0' in a structure.  */
#define EMPTY_FIELD_BOUNDARY 8
#define EMPTY_FIELD_BOUNDARY 8
 
 
/* Every structure's size must be a multiple of this.  */
/* Every structure's size must be a multiple of this.  */
#define STRUCTURE_SIZE_BOUNDARY 32
#define STRUCTURE_SIZE_BOUNDARY (TARGET_PADSTRUCT ? 32 : 8)
 
 
/* A bitfield declared as `int' forces `int' alignment for the struct.  */
/* A bitfield declared as `int' forces `int' alignment for the struct.  */
#define PCC_BITFIELD_TYPE_MATTERS 1
#define PCC_BITFIELD_TYPE_MATTERS 1
 
 
/* No data type wants to be aligned rounder than this.  */
/* No data type wants to be aligned rounder than this.  */
#define BIGGEST_ALIGNMENT 32
#define BIGGEST_ALIGNMENT 32
 
 
/* The best alignment to use in cases where we have a choice.  */
/* The best alignment to use in cases where we have a choice.  */
#define FASTEST_ALIGNMENT 32
#define FASTEST_ALIGNMENT 32
 
 
 
#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED)   \
 
  ((TREE_CODE (STRUCT) == RECORD_TYPE                   \
 
    || TREE_CODE (STRUCT) == UNION_TYPE                 \
 
    || TREE_CODE (STRUCT) == QUAL_UNION_TYPE)           \
 
   && !TYPE_PACKED (STRUCT)                             \
 
   && TYPE_FIELDS (STRUCT) != 0                         \
 
     ? MAX (MAX ((COMPUTED), (SPECIFIED)), or32_struct_alignment (STRUCT)) \
 
     : MAX ((COMPUTED), (SPECIFIED)))                   \
 
 
/* Make strings word-aligned so strcpy from constants will be faster.  */
/* Make strings word-aligned so strcpy from constants will be faster.  */
/*
/*
#define CONSTANT_ALIGNMENT(EXP, ALIGN)                                  \
#define CONSTANT_ALIGNMENT(EXP, ALIGN)                                  \
  ((TREE_CODE (EXP) == STRING_CST || TREE_CODE (EXP) == CONSTRUCTOR)    \
  ((TREE_CODE (EXP) == STRING_CST || TREE_CODE (EXP) == CONSTRUCTOR)    \
    && (ALIGN) < FASTEST_ALIGNMENT                                      \
    && (ALIGN) < FASTEST_ALIGNMENT                                      \
Line 149... Line 159...
  ((((ALIGN) < FASTEST_ALIGNMENT)                                       \
  ((((ALIGN) < FASTEST_ALIGNMENT)                                       \
    && (TREE_CODE (TYPE) == ARRAY_TYPE                                  \
    && (TREE_CODE (TYPE) == ARRAY_TYPE                                  \
        || TREE_CODE (TYPE) == UNION_TYPE                               \
        || TREE_CODE (TYPE) == UNION_TYPE                               \
        || TREE_CODE (TYPE) == RECORD_TYPE)) ? FASTEST_ALIGNMENT : (ALIGN))
        || TREE_CODE (TYPE) == RECORD_TYPE)) ? FASTEST_ALIGNMENT : (ALIGN))
*/ /* CHECK - btw code gets bigger with this one */
*/ /* CHECK - btw code gets bigger with this one */
 
#define DATA_ALIGNMENT(TYPE, ALIGN) \
 
  ((ALIGN) < FASTEST_ALIGNMENT \
 
   ? or32_data_alignment ((TYPE), (ALIGN)) : (ALIGN))
 
 
 
#define LOCAL_ALIGNMENT(TYPE, ALIGN) \
 
  ((ALIGN) < FASTEST_ALIGNMENT \
 
   ? or32_data_alignment ((TYPE), (ALIGN)) : (ALIGN))
 
 
/* Define this if move instructions will actually fail to work
/* Define this if move instructions will actually fail to work
   when given unaligned data.  */
   when given unaligned data.  */
#define STRICT_ALIGNMENT 1 /* CHECK */
#define STRICT_ALIGNMENT 1 /* CHECK */
 
 
Line 196... Line 213...
 
 
/* Number of actual hardware registers.
/* Number of actual hardware registers.
   The hardware registers are assigned numbers for the compiler
   The hardware registers are assigned numbers for the compiler
   from 0 to just below FIRST_PSEUDO_REGISTER.
   from 0 to just below FIRST_PSEUDO_REGISTER.
   All registers that the compiler knows about must be given numbers,
   All registers that the compiler knows about must be given numbers,
   even those that are not normally considered general registers.
   even those that are not normally considered general registers.  */
 
 
   JPB 1-Sep-10: I think the old stuff was incorrect. Regs 0-31 are the GPRs,
#define OR32_LAST_ACTUAL_REG       31
                 reg 32 is the CC register, all the rest are pseudo. I think
#define ARG_POINTER_REGNUM     (OR32_LAST_ACTUAL_REG + 1)
                 OR32_LAST_INT_REG should be 31, not 32. */
#define FRAME_POINTER_REGNUM   (ARG_POINTER_REGNUM + 1)
#define OR32_LAST_INT_REG       32
#define OR32_LAST_INT_REG      FRAME_POINTER_REGNUM
#define OR32_FLAGS_REG         (OR32_LAST_INT_REG + 0)
#define OR32_FLAGS_REG         (OR32_LAST_INT_REG + 1)
#define FIRST_PSEUDO_REGISTER  (OR32_FLAGS_REG + 1)
#define FIRST_PSEUDO_REGISTER  (OR32_FLAGS_REG + 1)
 
 
/* 1 for registers that have pervasive standard uses
/* 1 for registers that have pervasive standard uses
   and are not available for the register allocator.
   and are not available for the register allocator.
   On the or32, these are r1 as stack pointer and
   On the or32, these are r1 as stack pointer and
   r2 as frame/arg pointer.  r9 is link register, r0
   r2 as frame/arg pointer.  r9 is link register, r0
   is zero, r10 is linux thread */
   is zero, r10 is linux thread */
#define FIXED_REGISTERS { \
#define FIXED_REGISTERS { \
  1, 1, 1, 0, 0, 0, 0, 0, \
  1, 1, 0, 0, 0, 0, 0, 0, \
  0, 1, 1, 0, 0, 0, 0, 0, \
  0, 1, 1, 0, 0, 0, 0, 0, \
  0, 0, 0, 0, 0, 0, 0, 0, \
  0, 0, 0, 0, 0, 0, 0, 0, \
  0, 0, 0, 0, 0, 0, 0, 0, 1}
  0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1 }
/* 1 for registers not available across function calls.
/* 1 for registers not available across function calls.
   These must include the FIXED_REGISTERS and also any
   These must include the FIXED_REGISTERS and also any
   registers that can be used without being saved.
   registers that can be used without being saved.
   The latter must include the registers where values are returned
   The latter must include the registers where values are returned
   and the register where structure-value addresses are passed.
   and the register where structure-value addresses are passed.
   Aside from that, you can include as many other registers as you like.  */
   Aside from that, you can include as many other registers as you like.  */
#define CALL_USED_REGISTERS { \
#define CALL_USED_REGISTERS { \
  1, 1, 1, 1, 1, 1, 1, 1, \
  1, 1, 0, 1, 1, 1, 1, 1, \
  1, 1, 1, 1, 0, 1, 0, 1, \
  1, 1, 1, 1, 0, 1, 0, 1, \
  0, 1, 0, 1, 0, 1, 0, 1, \
  0, 1, 0, 1, 0, 1, 0, 1, \
  0, 1, 0, 1, 0, 1, 0, 1, 1}
  0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1}
 
 
/* stack pointer: must be FIXED and CALL_USED */
/* stack pointer: must be FIXED and CALL_USED */
/* frame pointer: must be FIXED and CALL_USED */
/* hard frame pointer: must be FIXED and CALL_USED */
 
 
/* Return number of consecutive hard regs needed starting at reg REGNO
/* Return number of consecutive hard regs needed starting at reg REGNO
   to hold something of mode MODE.
   to hold something of mode MODE.
   This is ordinarily the length in words of a value of mode MODE
   This is ordinarily the length in words of a value of mode MODE
   but can be less for certain modes in special long registers.
   but can be less for certain modes in special long registers.
Line 320... Line 337...
 
 
/* Register to use for pushing function arguments.  */
/* Register to use for pushing function arguments.  */
#define STACK_POINTER_REGNUM 1
#define STACK_POINTER_REGNUM 1
 
 
/* Base register for access to local variables of the function.  */
/* Base register for access to local variables of the function.  */
#define FRAME_POINTER_REGNUM 2
#define HARD_FRAME_POINTER_REGNUM 2
 
 
/* Link register. */
/* Link register. */
#define LINK_REGNUM 9
#define LINK_REGNUM 9
 
 
/* Define this macro if debugging can be performed even without a frame pointer.
/* Define this macro if debugging can be performed even without a frame pointer.
Line 356... Line 373...
      + offset                                                          \
      + offset                                                          \
      + OR32_ALIGN (crtl->outgoing_args_size, 4)                        \
      + OR32_ALIGN (crtl->outgoing_args_size, 4)                        \
      + OR32_ALIGN (get_frame_size(), 4);                               \
      + OR32_ALIGN (get_frame_size(), 4);                               \
  }
  }
 
 
/* Base register for access to arguments of the function.  */
/* Register in which static-chain is passed to a function.  */
#define ARG_POINTER_REGNUM FRAME_POINTER_REGNUM
 
 
 
/* Register in which static-chain is passed to a function.
 
 
 
   JPB 4-Sep-10: r0 was the wrong thing to use here. I'll take a punt at
 
                 using r11 (return value reg). This is a change to the
 
                 ABI, which needs documenting. */
 
#define STATIC_CHAIN_REGNUM 11
#define STATIC_CHAIN_REGNUM 11
 
 
 
#define PROLOGUE_TMP 13
 
#define EPILOGUE_TMP 3
 
 
/* Register in which address to store a structure value
/* Register in which address to store a structure value
   is passed to a function.  */
   is passed to a function.  */
/*#define STRUCT_VALUE_REGNUM 0*/
/*#define STRUCT_VALUE_REGNUM 0*/
 
 
/* Pass address of result struct to callee as "invisible" first argument */
/* Pass address of result struct to callee as "invisible" first argument */
Line 438... Line 452...
   For the OR32 we have the minimal set. GENERAL_REGS is all except r0, which
   For the OR32 we have the minimal set. GENERAL_REGS is all except r0, which
   it permanently zero. */
   it permanently zero. */
#define REG_CLASS_CONTENTS                                              \
#define REG_CLASS_CONTENTS                                              \
  {                                                                     \
  {                                                                     \
    { 0x00000000, 0x00000000 },         /* NO_REGS */                   \
    { 0x00000000, 0x00000000 },         /* NO_REGS */                   \
    { 0xffffffff, 0x00000001 },         /* GENERAL_REGS */              \
    { 0xffffffff, 0x00000003 },         /* GENERAL_REGS */              \
    { 0xffffffff, 0x00000000 }          /* ALL_REGS */                  \
    { 0xffffffff, 0x00000007 }          /* ALL_REGS */                  \
  }
  }
 
 
/* The same information, inverted:
/* The same information, inverted:
 
 
   Return the class number of the smallest class containing reg number REGNO.
   Return the class number of the smallest class containing reg number REGNO.
   This could be a conditional expression or could index an array.
   This could be a conditional expression or could index an array.
 
 
   For the OR32, so long as the reg is r1-r31, we are in GENERAL_REGS, if we
   ??? 0 is not really a register, but a constant.  */
   are > 32, then we are in NO_REGS, otherwise we are in ALL_REGS. */
 
#define REGNO_REG_CLASS(regno)                                          \
#define REGNO_REG_CLASS(regno)                                          \
  ((0 == regno) ? ALL_REGS : ((1 <= regno) && (regno <= 31))            \
  ((0 == regno) ? ALL_REGS : ((1 <= regno) && (regno <= OR32_LAST_INT_REG))             \
   ? GENERAL_REGS : NO_REGS)
   ? GENERAL_REGS : NO_REGS)
 
 
/* The class value for index registers, and the one for base regs.  */
/* The class value for index registers, and the one for base regs.  */
#define INDEX_REG_CLASS GENERAL_REGS
#define INDEX_REG_CLASS GENERAL_REGS
#define BASE_REG_CLASS  GENERAL_REGS
#define BASE_REG_CLASS  GENERAL_REGS
 
 
/* Get reg_class from a letter such as appears in the machine description.  */
 
/* JPB 29 Aug 10: Obsolete, need to be replaced. */
 
#define REG_CLASS_FROM_LETTER(C) NO_REGS
 
 
 
/* A C expression that defines the machine-dependent operand constraint
 
   letters ('I', 'J', 'K', . . . 'P') that specify particular ranges of
 
   integer values. If "c" is one of those letters, the expression should check
 
   that value, an integer, is in the appropriate range and return 1 if so, 0
 
   otherwise. If "c" is not one of those letters, the value should be 0
 
   regardless of value.
 
 
 
   For OR32, I don't believe we use J, O or P, so these should return 0.
 
 
 
   JPB 29 Aug 10: Obsolete, need to be replaced. */
 
#define CONST_OK_FOR_LETTER_P(value, c)                                 \
 
  (  (c) == 'I' ? ((value) >= -32768 && (value) <= 32767)               \
 
   : (c) == 'J' ? ((value) == 0)                                        \
 
   : (c) == 'K' ? ((value) >=0 && (value) <= 65535)                     \
 
   : (c) == 'L' ? ((value) >=0 && (value) <= 31)                        \
 
   : (c) == 'M' ? (((value) & 0xffff) == 0)                             \
 
   : (c) == 'N' ? ((value) >= -33554432 && (value) <= 33554431)         \
 
   : (c) == 'O' ? ((value) == 0)                                        \
 
   : 0 )
 
 
 
/* Similar, but for floating constants, and defining letters G and H.
 
   Here "value" is the CONST_DOUBLE rtx itself.  */
 
/* JPB 29 Aug 10: Obsolete, need to be replaced. */
 
#define CONST_DOUBLE_OK_FOR_LETTER_P(value, C) 1
 
 
 
/* Given an rtx X being reloaded into a reg required to be in class CLASS,
/* Given an rtx X being reloaded into a reg required to be in class CLASS,
   return the class of reg to actually use.  In general this is just CLASS;
   return the class of reg to actually use.  In general this is just CLASS;
   but on some machines in some cases it is preferable to use a more
   but on some machines in some cases it is preferable to use a more
   restrictive class.  */
   restrictive class.  */
#define PREFERRED_RELOAD_CLASS(X,CLASS)  (CLASS)
#define PREFERRED_RELOAD_CLASS(X,CLASS)  (CLASS)
Line 552... Line 536...
   Setting both PUSH_ARGS and ACCUMULATE_OUTGOING_ARGS is not proper.
   Setting both PUSH_ARGS and ACCUMULATE_OUTGOING_ARGS is not proper.
 
 
   This is the approached used by OR32. */
   This is the approached used by OR32. */
#define ACCUMULATE_OUTGOING_ARGS 1
#define ACCUMULATE_OUTGOING_ARGS 1
 
 
 
#define ELIMINABLE_REGS                                                 \
 
{{ ARG_POINTER_REGNUM,   STACK_POINTER_REGNUM},                         \
 
 { ARG_POINTER_REGNUM,   HARD_FRAME_POINTER_REGNUM},                    \
 
 { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM},                         \
 
 { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}}
 
 
 
#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
 
  (OFFSET) = or32_initial_elimination_offset ((FROM), (TO))
 
 
/* A C expression that should indicate the number of bytes of its own
/* A C expression that should indicate the number of bytes of its own
   arguments that a function pops on returning, or 0 if the function pops no
   arguments that a function pops on returning, or 0 if the function pops no
   arguments and the caller must therefore pop them all after the function
   arguments and the caller must therefore pop them all after the function
   returns.
   returns.
 
 
Line 778... Line 771...
/* A C expression whose value is RTL representing the location of the
/* A C expression whose value is RTL representing the location of the
   incoming return address at the beginning of any function, before the
   incoming return address at the beginning of any function, before the
   prologue.  This RTL is either a REG, indicating that the return
   prologue.  This RTL is either a REG, indicating that the return
   value is saved in REG, or a MEM representing a location in
   value is saved in REG, or a MEM representing a location in
   the stack.  */
   the stack.  */
#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, GP_ARG_RETURN)
#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, LINK_REGNUM)
 
 
 
#define RETURN_ADDR_RTX(COUNT, FP) \
 
  ((COUNT) ? NULL_RTX : get_hard_reg_initial_val (Pmode, LINK_REGNUM))
 
 
 
 
/* Addressing modes, and classification of registers for them.  */
/* Addressing modes, and classification of registers for them.  */
 
 
/* #define HAVE_POST_INCREMENT */
/* #define HAVE_POST_INCREMENT */
Line 961... Line 957...
#define REGISTER_NAMES                                                  \
#define REGISTER_NAMES                                                  \
  {"r0",   "r1",  "r2",  "r3",  "r4",  "r5",  "r6",  "r7",              \
  {"r0",   "r1",  "r2",  "r3",  "r4",  "r5",  "r6",  "r7",              \
   "r8",   "r9", "r10", "r11", "r12", "r13", "r14", "r15",              \
   "r8",   "r9", "r10", "r11", "r12", "r13", "r14", "r15",              \
   "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",              \
   "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",              \
   "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31",              \
   "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31",              \
   "cc-flag"}
   "argp", "frame", "cc-flag"}
 
 
 
 
/* -------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
/* Debug things for DBX (STABS)                                               */
/* Debug things for DBX (STABS)                                               */
/*                                                                            */
/*                                                                            */
Line 1134... Line 1130...
#define ASM_OUTPUT_ADDR_VEC_ELT(stream, value)                          \
#define ASM_OUTPUT_ADDR_VEC_ELT(stream, value)                          \
  fprintf (stream, "\t.word\t.L%d\n", value)
  fprintf (stream, "\t.word\t.L%d\n", value)
 
 
/* This is how to output an element of a case-vector that is relative.  */
/* This is how to output an element of a case-vector that is relative.  */
#define ASM_OUTPUT_ADDR_DIFF_ELT(stream, body, value, rel)              \
#define ASM_OUTPUT_ADDR_DIFF_ELT(stream, body, value, rel)              \
  fprintf (stream, "\t.wordt.L%d-.L%d\n", value, rel)
  fprintf (stream, "\t.word\t.L%d-.L%d\n", value, rel)
 
 
 
#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
 
/* ??? If we were serious about PIC, we should also use l.jal to get
 
   the table start address.  */
 
 
/* This is how to output an assembler line that says to advance the location
/* This is how to output an assembler line that says to advance the location
   counter to a multiple of 2**log bytes.  */
   counter to a multiple of 2**log bytes.  */
#define ASM_OUTPUT_ALIGN(stream, log)                                   \
#define ASM_OUTPUT_ALIGN(stream, log)                                   \
  if ((log) != 0)                                                        \
  if ((log) != 0)                                                        \
Line 1284... Line 1284...
      if (GET_CODE (x) == REG)                                          \
      if (GET_CODE (x) == REG)                                          \
        fprintf (stream, "%s", reg_names[REGNO (x) + 1]);               \
        fprintf (stream, "%s", reg_names[REGNO (x) + 1]);               \
      else                                                              \
      else                                                              \
        abort ();                                                       \
        abort ();                                                       \
    }                                                                   \
    }                                                                   \
 
  else if (code == 'J')                                                 \
 
    or32_print_jump_restore (x);                                        \
  else if (GET_CODE (x) == REG)                                         \
  else if (GET_CODE (x) == REG)                                         \
    fprintf (stream, "%s", reg_names[REGNO (x)]);                       \
    fprintf (stream, "%s", reg_names[REGNO (x)]);                       \
  else if (GET_CODE (x) == MEM)                                         \
  else if (GET_CODE (x) == MEM)                                         \
    output_address (XEXP (x, 0));                                        \
    output_address (XEXP (x, 0));                                        \
  else                                                                  \
  else                                                                  \
Line 1335... Line 1337...
}
}
 
 
/* The size of the trampoline in bytes. This is a block of code followed by
/* The size of the trampoline in bytes. This is a block of code followed by
   two words specifying the function address and static chain pointer. */
   two words specifying the function address and static chain pointer. */
#define TRAMPOLINE_SIZE                                                 \
#define TRAMPOLINE_SIZE                                                 \
  (or32_trampoline_code_size + GET_MODE_SIZE (ptr_mode) * 2)
  (or32_trampoline_code_size () + GET_MODE_SIZE (ptr_mode) * 2)
 
 
/* Alignment required for trampolines, in bits.
/* Alignment required for trampolines, in bits.
 
 
   For the OR32, there is no need for anything other than word alignment. */
   For the OR32, there is no need for anything other than word alignment. */
#define TRAMPOLINE_ALIGNMENT  32
#define TRAMPOLINE_ALIGNMENT  32

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.