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

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [gas/] [config/] [tc-arm.c] - Diff between revs 148 and 160

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

Rev 148 Rev 160
Line 722... Line 722...
#define MISSING_FNSTART _("missing .fnstart before unwinding directive")
#define MISSING_FNSTART _("missing .fnstart before unwinding directive")
#define BAD_PC_ADDRESSING \
#define BAD_PC_ADDRESSING \
        _("cannot use register index with PC-relative addressing")
        _("cannot use register index with PC-relative addressing")
#define BAD_PC_WRITEBACK \
#define BAD_PC_WRITEBACK \
        _("cannot use writeback with PC-relative addressing")
        _("cannot use writeback with PC-relative addressing")
 
#define BAD_RANGE     _("branch out of range")
 
 
static struct hash_control * arm_ops_hsh;
static struct hash_control * arm_ops_hsh;
static struct hash_control * arm_cond_hsh;
static struct hash_control * arm_cond_hsh;
static struct hash_control * arm_shift_hsh;
static struct hash_control * arm_shift_hsh;
static struct hash_control * arm_psr_hsh;
static struct hash_control * arm_psr_hsh;
Line 756... Line 757...
  unsigned int           next_free_entry;
  unsigned int           next_free_entry;
  unsigned int           id;
  unsigned int           id;
  symbolS *              symbol;
  symbolS *              symbol;
  segT                   section;
  segT                   section;
  subsegT                sub_section;
  subsegT                sub_section;
 
#ifdef OBJ_ELF
 
  struct dwarf2_line_info locs [MAX_LITERAL_POOL_SIZE];
 
#endif
  struct literal_pool *  next;
  struct literal_pool *  next;
} literal_pool;
} literal_pool;
 
 
/* Pointer to a linked list of literal pools.  */
/* Pointer to a linked list of literal pools.  */
literal_pool * list_of_pools = NULL;
literal_pool * list_of_pools = NULL;
Line 2587... Line 2591...
 
 
  if (mapstate == state)
  if (mapstate == state)
    /* The mapping symbol has already been emitted.
    /* The mapping symbol has already been emitted.
       There is nothing else to do.  */
       There is nothing else to do.  */
    return;
    return;
  else if (TRANSITION (MAP_UNDEFINED, MAP_DATA))
 
 
  if (state == MAP_ARM || state == MAP_THUMB)
 
    /*  PR gas/12931
 
        All ARM instructions require 4-byte alignment.
 
        (Almost) all Thumb instructions require 2-byte alignment.
 
 
 
        When emitting instructions into any section, mark the section
 
        appropriately.
 
 
 
        Some Thumb instructions are alignment-sensitive modulo 4 bytes,
 
        but themselves require 2-byte alignment; this applies to some
 
        PC- relative forms.  However, these cases will invovle implicit
 
        literal pool generation or an explicit .align >=2, both of
 
        which will cause the section to me marked with sufficient
 
        alignment.  Thus, we don't handle those cases here.  */
 
    record_alignment (now_seg, state == MAP_ARM ? 2 : 1);
 
 
 
  if (TRANSITION (MAP_UNDEFINED, MAP_DATA))
    /* This case will be evaluated later in the next else.  */
    /* This case will be evaluated later in the next else.  */
    return;
    return;
  else if (TRANSITION (MAP_UNDEFINED, MAP_ARM)
  else if (TRANSITION (MAP_UNDEFINED, MAP_ARM)
          || TRANSITION (MAP_UNDEFINED, MAP_THUMB))
          || TRANSITION (MAP_UNDEFINED, MAP_THUMB))
    {
    {
Line 3054... Line 3075...
          inst.error = _("literal pool overflow");
          inst.error = _("literal pool overflow");
          return FAIL;
          return FAIL;
        }
        }
 
 
      pool->literals[entry] = inst.reloc.exp;
      pool->literals[entry] = inst.reloc.exp;
 
#ifdef OBJ_ELF
 
      /* PR ld/12974: Record the location of the first source line to reference
 
         this entry in the literal pool.  If it turns out during linking that the
 
         symbol does not exist we will be able to give an accurate line number for
 
         the (first use of the) missing reference.  */
 
      if (debug_type == DEBUG_DWARF2)
 
        dwarf2_where (pool->locs + entry);
 
#endif
      pool->next_free_entry += 1;
      pool->next_free_entry += 1;
    }
    }
 
 
  inst.reloc.exp.X_op         = O_symbol;
  inst.reloc.exp.X_op         = O_symbol;
  inst.reloc.exp.X_add_number = ((int) entry) * 4;
  inst.reloc.exp.X_add_number = ((int) entry) * 4;
Line 3151... Line 3180...
#if defined OBJ_COFF || defined OBJ_ELF
#if defined OBJ_COFF || defined OBJ_ELF
  ARM_SET_INTERWORK (pool->symbol, support_interwork);
  ARM_SET_INTERWORK (pool->symbol, support_interwork);
#endif
#endif
 
 
  for (entry = 0; entry < pool->next_free_entry; entry ++)
  for (entry = 0; entry < pool->next_free_entry; entry ++)
 
    {
 
#ifdef OBJ_ELF
 
      if (debug_type == DEBUG_DWARF2)
 
        dwarf2_gen_line_info (frag_now_fix (), pool->locs + entry);
 
#endif
    /* First output the expression in the instruction to the pool.  */
    /* First output the expression in the instruction to the pool.  */
    emit_expr (&(pool->literals[entry]), 4); /* .word  */
    emit_expr (&(pool->literals[entry]), 4); /* .word  */
 
    }
 
 
  /* Mark the pool as empty.  */
  /* Mark the pool as empty.  */
  pool->next_free_entry = 0;
  pool->next_free_entry = 0;
  pool->symbol = NULL;
  pool->symbol = NULL;
}
}
Line 6116... Line 6151...
 
 
  /* Optional operands.  */
  /* Optional operands.  */
  OP_oI7b,       /* immediate, prefix optional, 0 .. 7 */
  OP_oI7b,       /* immediate, prefix optional, 0 .. 7 */
  OP_oI31b,      /*                             0 .. 31 */
  OP_oI31b,      /*                             0 .. 31 */
  OP_oI32b,      /*                             1 .. 32 */
  OP_oI32b,      /*                             1 .. 32 */
 
  OP_oI32z,      /*                             0 .. 32 */
  OP_oIffffb,    /*                             0 .. 65535 */
  OP_oIffffb,    /*                             0 .. 65535 */
  OP_oI255c,     /*       curly-brace enclosed, 0 .. 255 */
  OP_oI255c,     /*       curly-brace enclosed, 0 .. 255 */
 
 
  OP_oRR,        /* ARM register */
  OP_oRR,        /* ARM register */
  OP_oRRnpc,     /* ARM register, not the PC */
  OP_oRRnpc,     /* ARM register, not the PC */
Line 6445... Line 6481...
        case OP_I7b:     po_imm_or_fail (  0,       7, TRUE);    break;
        case OP_I7b:     po_imm_or_fail (  0,       7, TRUE);    break;
        case OP_I15b:    po_imm_or_fail (  0,      15, TRUE);    break;
        case OP_I15b:    po_imm_or_fail (  0,      15, TRUE);    break;
        case OP_oI31b:
        case OP_oI31b:
        case OP_I31b:    po_imm_or_fail (  0,      31, TRUE);    break;
        case OP_I31b:    po_imm_or_fail (  0,      31, TRUE);    break;
        case OP_oI32b:   po_imm_or_fail (  1,     32, TRUE);    break;
        case OP_oI32b:   po_imm_or_fail (  1,     32, TRUE);    break;
 
        case OP_oI32z:   po_imm_or_fail (  0,     32, TRUE);    break;
        case OP_oIffffb: po_imm_or_fail (  0, 0xffff, TRUE);     break;
        case OP_oIffffb: po_imm_or_fail (  0, 0xffff, TRUE);     break;
 
 
          /* Immediate variants */
          /* Immediate variants */
        case OP_oI255c:
        case OP_oI255c:
          po_char_or_fail ('{');
          po_char_or_fail ('{');
Line 8462... Line 8499...
  inst.instruction |= inst.operands[2].reg << 16;
  inst.instruction |= inst.operands[2].reg << 16;
  inst.reloc.type = BFD_RELOC_UNUSED;
  inst.reloc.type = BFD_RELOC_UNUSED;
}
}
 
 
static void
static void
 
do_t_strexbh (void)
 
{
 
  constraint (!inst.operands[2].isreg || !inst.operands[2].preind
 
              || inst.operands[2].postind || inst.operands[2].writeback
 
              || inst.operands[2].immisreg || inst.operands[2].shifted
 
              || inst.operands[2].negative,
 
              BAD_ADDR_MODE);
 
 
 
  constraint (inst.operands[0].reg == inst.operands[1].reg
 
              || inst.operands[0].reg == inst.operands[2].reg, BAD_OVERLAP);
 
 
 
  do_rm_rd_rn ();
 
}
 
 
 
static void
do_strexd (void)
do_strexd (void)
{
{
  constraint (inst.operands[1].reg % 2 != 0,
  constraint (inst.operands[1].reg % 2 != 0,
              _("even register required"));
              _("even register required"));
  constraint (inst.operands[2].present
  constraint (inst.operands[2].present
Line 8734... Line 8786...
}
}
 
 
static void
static void
vfp_conv (int srcsize)
vfp_conv (int srcsize)
{
{
  unsigned immbits = srcsize - inst.operands[1].imm;
  int immbits = srcsize - inst.operands[1].imm;
 
 
 
  if (srcsize == 16 && !(immbits >= 0 && immbits <= srcsize))
 
    {
 
      /* If srcsize is 16, inst.operands[1].imm must be in the range 0-16.
 
         i.e. immbits must be in range 0 - 16.  */
 
      inst.error = _("immediate value out of range, expected range [0, 16]");
 
      return;
 
    }
 
  else if (srcsize == 32 && !(immbits >= 0 && immbits < srcsize))
 
    {
 
      /* If srcsize is 32, inst.operands[1].imm must be in the range 1-32.
 
         i.e. immbits must be in range 0 - 31.  */
 
      inst.error = _("immediate value out of range, expected range [1, 32]");
 
      return;
 
    }
 
 
  inst.instruction |= (immbits & 1) << 5;
  inst.instruction |= (immbits & 1) << 5;
  inst.instruction |= (immbits >> 1);
  inst.instruction |= (immbits >> 1);
}
}
 
 
static void
static void
Line 9436... Line 9504...
              inst.instruction |= Rs << 16;
              inst.instruction |= Rs << 16;
            }
            }
        }
        }
      else
      else
        {
        {
 
          unsigned int value = inst.reloc.exp.X_add_number;
 
          unsigned int shift = inst.operands[2].shift_kind;
 
 
          Rn = inst.operands[2].reg;
          Rn = inst.operands[2].reg;
          /* See if we can do this with a 16-bit instruction.  */
          /* See if we can do this with a 16-bit instruction.  */
          if (!inst.operands[2].shifted && inst.size_req != 4)
          if (!inst.operands[2].shifted && inst.size_req != 4)
            {
            {
              if (Rd > 7 || Rs > 7 || Rn > 7)
              if (Rd > 7 || Rs > 7 || Rn > 7)
Line 9486... Line 9557...
          constraint (inst.operands[2].shifted && inst.operands[2].immisreg,
          constraint (inst.operands[2].shifted && inst.operands[2].immisreg,
                      _("shift must be constant"));
                      _("shift must be constant"));
          inst.instruction = THUMB_OP32 (inst.instruction);
          inst.instruction = THUMB_OP32 (inst.instruction);
          inst.instruction |= Rd << 8;
          inst.instruction |= Rd << 8;
          inst.instruction |= Rs << 16;
          inst.instruction |= Rs << 16;
 
          constraint (Rd == REG_SP && Rs == REG_SP && value > 3,
 
                      _("shift value over 3 not allowed in thumb mode"));
 
          constraint (Rd == REG_SP && Rs == REG_SP && shift != SHIFT_LSL,
 
                      _("only LSL shift allowed in thumb mode"));
          encode_thumb32_shifted_operand (2);
          encode_thumb32_shifted_operand (2);
        }
        }
    }
    }
  else
  else
    {
    {
Line 17454... Line 17529...
 TCE("ldrexb",  1d00f9f, e8d00f4f, 2, (RRnpc_npcsp,RRnpcb),
 TCE("ldrexb",  1d00f9f, e8d00f4f, 2, (RRnpc_npcsp,RRnpcb),
     rd_rn,  rd_rn),
     rd_rn,  rd_rn),
 TCE("ldrexh",  1f00f9f, e8d00f5f, 2, (RRnpc_npcsp, RRnpcb),
 TCE("ldrexh",  1f00f9f, e8d00f5f, 2, (RRnpc_npcsp, RRnpcb),
     rd_rn,  rd_rn),
     rd_rn,  rd_rn),
 TCE("strexb",  1c00f90, e8c00f40, 3, (RRnpc_npcsp, RRnpc_npcsp, ADDR),
 TCE("strexb",  1c00f90, e8c00f40, 3, (RRnpc_npcsp, RRnpc_npcsp, ADDR),
     strex, rm_rd_rn),
     strex, t_strexbh),
 TCE("strexh",  1e00f90, e8c00f50, 3, (RRnpc_npcsp, RRnpc_npcsp, ADDR),
 TCE("strexh",  1e00f90, e8c00f50, 3, (RRnpc_npcsp, RRnpc_npcsp, ADDR),
     strex, rm_rd_rn),
     strex, t_strexbh),
 TUF("clrex",   57ff01f, f3bf8f2f, 0, (),                              noargs, noargs),
 TUF("clrex",   57ff01f, f3bf8f2f, 0, (),                              noargs, noargs),
 
 
#undef  ARM_VARIANT
#undef  ARM_VARIANT
#define ARM_VARIANT    & arm_ext_sec
#define ARM_VARIANT    & arm_ext_sec
#undef THUMB_VARIANT
#undef THUMB_VARIANT
Line 18175... Line 18250...
 NCE(vstmia,    c800b00, 2, (RRnpctw, VRSDLST), neon_ldm_stm),
 NCE(vstmia,    c800b00, 2, (RRnpctw, VRSDLST), neon_ldm_stm),
 NCE(vstmdb,    d000b00, 2, (RRnpctw, VRSDLST), neon_ldm_stm),
 NCE(vstmdb,    d000b00, 2, (RRnpctw, VRSDLST), neon_ldm_stm),
 NCE(vldr,      d100b00, 2, (RVSD, ADDRGLDC), neon_ldr_str),
 NCE(vldr,      d100b00, 2, (RVSD, ADDRGLDC), neon_ldr_str),
 NCE(vstr,      d000b00, 2, (RVSD, ADDRGLDC), neon_ldr_str),
 NCE(vstr,      d000b00, 2, (RVSD, ADDRGLDC), neon_ldr_str),
 
 
 nCEF(vcvt,     _vcvt,   3, (RNSDQ, RNSDQ, oI32b), neon_cvt),
 nCEF(vcvt,     _vcvt,   3, (RNSDQ, RNSDQ, oI32z), neon_cvt),
 nCEF(vcvtr,    _vcvt,   2, (RNSDQ, RNSDQ), neon_cvtr),
 nCEF(vcvtr,    _vcvt,   2, (RNSDQ, RNSDQ), neon_cvtr),
 nCEF(vcvtb,    _vcvt,   2, (RVS, RVS), neon_cvtb),
 nCEF(vcvtb,    _vcvt,   2, (RVS, RVS), neon_cvtb),
 nCEF(vcvtt,    _vcvt,   2, (RVS, RVS), neon_cvtt),
 nCEF(vcvtt,    _vcvt,   2, (RVS, RVS), neon_cvtt),
 
 
 
 
Line 20907... Line 20982...
      if (value & temp)
      if (value & temp)
        as_bad_where (fixP->fx_file, fixP->fx_line,
        as_bad_where (fixP->fx_file, fixP->fx_line,
                      _("misaligned branch destination"));
                      _("misaligned branch destination"));
      if ((value & (offsetT)0xfe000000) != (offsetT)0
      if ((value & (offsetT)0xfe000000) != (offsetT)0
          && (value & (offsetT)0xfe000000) != (offsetT)0xfe000000)
          && (value & (offsetT)0xfe000000) != (offsetT)0xfe000000)
        as_bad_where (fixP->fx_file, fixP->fx_line,
        as_bad_where (fixP->fx_file, fixP->fx_line, BAD_RANGE);
                      _("branch out of range"));
 
 
 
      if (fixP->fx_done || !seg->use_rela_p)
      if (fixP->fx_done || !seg->use_rela_p)
        {
        {
          newval = md_chars_to_number (buf, INSN_SIZE);
          newval = md_chars_to_number (buf, INSN_SIZE);
          newval |= (value >> 2) & 0x00ffffff;
          newval |= (value >> 2) & 0x00ffffff;
Line 20944... Line 21018...
          md_number_to_chars (buf, newval, THUMB_SIZE);
          md_number_to_chars (buf, newval, THUMB_SIZE);
        }
        }
      else
      else
        {
        {
          if (value & ~0x7e)
          if (value & ~0x7e)
            as_bad_where (fixP->fx_file, fixP->fx_line,
            as_bad_where (fixP->fx_file, fixP->fx_line, BAD_RANGE);
                          _("branch out of range"));
 
 
 
          if (fixP->fx_done || !seg->use_rela_p)
          if (fixP->fx_done || !seg->use_rela_p)
            {
            {
              newval = md_chars_to_number (buf, THUMB_SIZE);
              newval = md_chars_to_number (buf, THUMB_SIZE);
              newval |= ((value & 0x3e) << 2) | ((value & 0x40) << 3);
              newval |= ((value & 0x3e) << 2) | ((value & 0x40) << 3);
Line 20958... Line 21031...
        }
        }
      break;
      break;
 
 
    case BFD_RELOC_THUMB_PCREL_BRANCH9: /* Conditional branch.  */
    case BFD_RELOC_THUMB_PCREL_BRANCH9: /* Conditional branch.  */
      if ((value & ~0xff) && ((value & ~0xff) != ~0xff))
      if ((value & ~0xff) && ((value & ~0xff) != ~0xff))
        as_bad_where (fixP->fx_file, fixP->fx_line,
        as_bad_where (fixP->fx_file, fixP->fx_line, BAD_RANGE);
                      _("branch out of range"));
 
 
 
      if (fixP->fx_done || !seg->use_rela_p)
      if (fixP->fx_done || !seg->use_rela_p)
        {
        {
          newval = md_chars_to_number (buf, THUMB_SIZE);
          newval = md_chars_to_number (buf, THUMB_SIZE);
          newval |= (value & 0x1ff) >> 1;
          newval |= (value & 0x1ff) >> 1;
Line 20971... Line 21043...
        }
        }
      break;
      break;
 
 
    case BFD_RELOC_THUMB_PCREL_BRANCH12: /* Unconditional branch.  */
    case BFD_RELOC_THUMB_PCREL_BRANCH12: /* Unconditional branch.  */
      if ((value & ~0x7ff) && ((value & ~0x7ff) != ~0x7ff))
      if ((value & ~0x7ff) && ((value & ~0x7ff) != ~0x7ff))
        as_bad_where (fixP->fx_file, fixP->fx_line,
        as_bad_where (fixP->fx_file, fixP->fx_line, BAD_RANGE);
                      _("branch out of range"));
 
 
 
      if (fixP->fx_done || !seg->use_rela_p)
      if (fixP->fx_done || !seg->use_rela_p)
        {
        {
          newval = md_chars_to_number (buf, THUMB_SIZE);
          newval = md_chars_to_number (buf, THUMB_SIZE);
          newval |= (value & 0xfff) >> 1;
          newval |= (value & 0xfff) >> 1;
Line 20992... Line 21063...
          && ARM_CPU_HAS_FEATURE (selected_cpu, arm_ext_v5t))
          && ARM_CPU_HAS_FEATURE (selected_cpu, arm_ext_v5t))
        {
        {
          /* Force a relocation for a branch 20 bits wide.  */
          /* Force a relocation for a branch 20 bits wide.  */
          fixP->fx_done = 0;
          fixP->fx_done = 0;
        }
        }
      if ((value & ~0x1fffff) && ((value & ~0x1fffff) != ~0x1fffff))
      if ((value & ~0x1fffff) && ((value & ~0x0fffff) != ~0x0fffff))
        as_bad_where (fixP->fx_file, fixP->fx_line,
        as_bad_where (fixP->fx_file, fixP->fx_line,
                      _("conditional branch out of range"));
                      _("conditional branch out of range"));
 
 
      if (fixP->fx_done || !seg->use_rela_p)
      if (fixP->fx_done || !seg->use_rela_p)
        {
        {
Line 21017... Line 21088...
          md_number_to_chars (buf + THUMB_SIZE, newval2, THUMB_SIZE);
          md_number_to_chars (buf + THUMB_SIZE, newval2, THUMB_SIZE);
        }
        }
      break;
      break;
 
 
    case BFD_RELOC_THUMB_PCREL_BLX:
    case BFD_RELOC_THUMB_PCREL_BLX:
 
 
      /* If there is a blx from a thumb state function to
      /* If there is a blx from a thumb state function to
         another thumb function flip this to a bl and warn
         another thumb function flip this to a bl and warn
         about it.  */
         about it.  */
 
 
      if (fixP->fx_addsy
      if (fixP->fx_addsy
Line 21042... Line 21112...
 
 
 
 
      goto thumb_bl_common;
      goto thumb_bl_common;
 
 
    case BFD_RELOC_THUMB_PCREL_BRANCH23:
    case BFD_RELOC_THUMB_PCREL_BRANCH23:
 
 
      /* A bl from Thumb state ISA to an internal ARM state function
      /* A bl from Thumb state ISA to an internal ARM state function
         is converted to a blx.  */
         is converted to a blx.  */
      if (fixP->fx_addsy
      if (fixP->fx_addsy
          && (S_GET_SEGMENT (fixP->fx_addsy) == seg)
          && (S_GET_SEGMENT (fixP->fx_addsy) == seg)
          && !S_FORCE_RELOC (fixP->fx_addsy, TRUE)
          && !S_FORCE_RELOC (fixP->fx_addsy, TRUE)
Line 21073... Line 21142...
           to a word boundary.  This follows the semantics of the instruction
           to a word boundary.  This follows the semantics of the instruction
           which specifies that bit 1 of the target address will come from bit
           which specifies that bit 1 of the target address will come from bit
           1 of the base address.  */
           1 of the base address.  */
        value = (value + 1) & ~ 1;
        value = (value + 1) & ~ 1;
 
 
 
 
       if ((value & ~0x3fffff) && ((value & ~0x3fffff) != ~0x3fffff))
       if ((value & ~0x3fffff) && ((value & ~0x3fffff) != ~0x3fffff))
        {
        {
          if (!(ARM_CPU_HAS_FEATURE (cpu_variant, arm_arch_t2)))
          if (!(ARM_CPU_HAS_FEATURE (cpu_variant, arm_arch_t2)))
            {
             as_bad_where (fixP->fx_file, fixP->fx_line, BAD_RANGE);
              as_bad_where (fixP->fx_file, fixP->fx_line,
 
                            _("branch out of range"));
 
            }
 
          else if ((value & ~0x1ffffff)
          else if ((value & ~0x1ffffff)
                   && ((value & ~0x1ffffff) != ~0x1ffffff))
                   && ((value & ~0x1ffffff) != ~0x1ffffff))
              {
 
                as_bad_where (fixP->fx_file, fixP->fx_line,
                as_bad_where (fixP->fx_file, fixP->fx_line,
                            _("Thumb2 branch out of range"));
                            _("Thumb2 branch out of range"));
              }
              }
        }
 
 
 
      if (fixP->fx_done || !seg->use_rela_p)
      if (fixP->fx_done || !seg->use_rela_p)
        encode_thumb2_b_bl_offset (buf, value);
        encode_thumb2_b_bl_offset (buf, value);
 
 
      break;
      break;
 
 
    case BFD_RELOC_THUMB_PCREL_BRANCH25:
    case BFD_RELOC_THUMB_PCREL_BRANCH25:
      if ((value & ~0x1ffffff) && ((value & ~0x1ffffff) != ~0x1ffffff))
      if ((value & ~0x0ffffff) && ((value & ~0x0ffffff) != ~0x0ffffff))
        as_bad_where (fixP->fx_file, fixP->fx_line,
        as_bad_where (fixP->fx_file, fixP->fx_line, BAD_RANGE);
                      _("branch out of range"));
 
 
 
      if (fixP->fx_done || !seg->use_rela_p)
      if (fixP->fx_done || !seg->use_rela_p)
          encode_thumb2_b_bl_offset (buf, value);
          encode_thumb2_b_bl_offset (buf, value);
 
 
      break;
      break;

powered by: WebSVN 2.1.0

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