void
md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
- asection *sec,
+ asection *sec ATTRIBUTE_UNUSED,
fragS *fragP)
{
- union u
- {
- bfd_reloc_code_real_type fx_r_type;
- char * fr_opcode;
- }
- opcode_converter;
- subseg_change (sec, 0);
-
- opcode_converter.fr_opcode = fragP->fr_opcode;
-
- subseg_change (sec, 0);
+ unsigned int opindex = (uintptr_t) fragP->fr_opcode;
if (fragP->fr_subtype == SUBYPTE_LOOP_16_22)
{
fix_new (fragP, fragP->fr_fix, 4, fragP->fr_symbol,
- fragP->fr_offset, 1,
- BFD_RELOC_UNUSED + opcode_converter.fx_r_type);
+ fragP->fr_offset, 1, BFD_RELOC_UNUSED + opindex);
fragP->fr_fix += 4;
}
else if (fragP->fr_subtype == SUBYPTE_LOOP_16_22 + 1)
{
- unsigned char * buffer =
- (unsigned char *) (fragP->fr_fix + &fragP->fr_literal[0]);
- int loop_reg = (buffer[0] & 0x1f);
+ char *buffer = fragP->fr_literal + fragP->fr_fix;
+ int loop_reg = buffer[0] & 0x1f;
/* Add -1.reg. */
- md_number_to_chars ((char *) buffer, 0x025f | (loop_reg << 11), 2);
+ md_number_to_chars (buffer, 0x025f | (loop_reg << 11), 2);
/* Now create the conditional branch + fixup to the final target. */
/* 0x000107ea = bne LBL(disp17). */
- md_number_to_chars ((char *) buffer + 2, 0x000107ea, 4);
+ md_number_to_chars (buffer + 2, 0x000107ea, 4);
fix_new (fragP, fragP->fr_fix + 2, 4, fragP->fr_symbol,
- fragP->fr_offset, 1,
- BFD_RELOC_V850_17_PCREL);
+ fragP->fr_offset, 1, BFD_RELOC_V850_17_PCREL);
fragP->fr_fix += 6;
}
/* In range conditional or unconditional branch. */
{
fix_new (fragP, fragP->fr_fix, 2, fragP->fr_symbol,
- fragP->fr_offset, 1,
- BFD_RELOC_UNUSED + opcode_converter.fx_r_type);
+ fragP->fr_offset, 1, BFD_RELOC_UNUSED + opindex);
fragP->fr_fix += 2;
}
/* V850e2r-v3 17bit conditional branch. */
|| fragP->fr_subtype == SUBYPTE_SA_9_17_22 + 1
|| fragP->fr_subtype == SUBYPTE_SA_9_17_22_32 + 1)
{
- unsigned char *buffer =
- (unsigned char *) (fragP->fr_fix + &fragP->fr_literal[0]);
+ char *buffer = fragP->fr_literal + fragP->fr_fix;
buffer[0] &= 0x0f; /* Use condition. */
buffer[0] |= 0xe0;
/* Now create the unconditional branch + fixup to the final
target. */
- md_number_to_chars ((char *) buffer + 2, 0x0001, 2);
+ md_number_to_chars (buffer + 2, 0x0001, 2);
fix_new (fragP, fragP->fr_fix, 4, fragP->fr_symbol,
fragP->fr_offset, 1, BFD_RELOC_V850_17_PCREL);
fragP->fr_fix += 4;
|| fragP->fr_subtype == SUBYPTE_COND_9_17_22 + 2
|| fragP->fr_subtype == SUBYPTE_COND_9_17_22_32 + 2)
{
- unsigned char *buffer =
- (unsigned char *) (fragP->fr_fix + fragP->fr_literal);
+ char *buffer = fragP->fr_literal + fragP->fr_fix;
/* Reverse the condition of the first branch. */
buffer[0] ^= 0x08;
/* Now create the unconditional branch + fixup to the final
target. */
- md_number_to_chars ((char *) buffer + 2, 0x00000780, 4);
+ md_number_to_chars (buffer + 2, 0x00000780, 4);
fix_new (fragP, fragP->fr_fix + 2, 4, fragP->fr_symbol,
fragP->fr_offset, 1, BFD_RELOC_V850_22_PCREL);
fragP->fr_fix += 6;
else if (fragP->fr_subtype == SUBYPTE_COND_9_22_32 + 2
|| fragP->fr_subtype == SUBYPTE_COND_9_17_22_32 + 3)
{
- unsigned char *buffer =
- (unsigned char *) (fragP->fr_fix + fragP->fr_literal);
+ char *buffer = fragP->fr_literal + fragP->fr_fix;
/* Reverse the condition of the first branch. */
buffer[0] ^= 0x08;
/* Now create the unconditional branch + fixup to the final
target. */
- md_number_to_chars ((char *) buffer + 2, 0x02e0, 2);
+ md_number_to_chars (buffer + 2, 0x02e0, 2);
fix_new (fragP, fragP->fr_fix + 4, 4, fragP->fr_symbol,
fragP->fr_offset + 2, 1, BFD_RELOC_V850_32_PCREL);
fragP->fr_fix += 8;
|| fragP->fr_subtype == SUBYPTE_SA_9_17_22 + 2
|| fragP->fr_subtype == SUBYPTE_SA_9_17_22_32 + 2)
{
- unsigned char *buffer =
- (unsigned char *) (fragP->fr_fix + fragP->fr_literal);
+ char *buffer = fragP->fr_literal + fragP->fr_fix;
/* bsa .+4 */
buffer[0] &= 0x8f;
buffer[1] &= 0x07;
/* br .+6 */
- md_number_to_chars ((char *) buffer + 2, 0x05b5, 2);
+ md_number_to_chars (buffer + 2, 0x05b5, 2);
/* Now create the unconditional branch + fixup to the final
target. */
/* jr SYM */
- md_number_to_chars ((char *) buffer + 4, 0x00000780, 4);
+ md_number_to_chars (buffer + 4, 0x00000780, 4);
fix_new (fragP, fragP->fr_fix + 4, 4, fragP->fr_symbol,
- fragP->fr_offset, 1,
- BFD_RELOC_V850_22_PCREL);
+ fragP->fr_offset, 1, BFD_RELOC_V850_22_PCREL);
fragP->fr_fix += 8;
}
/* Out of range SA conditional branch. Emit a branch around a 32bit jump. */
else if (fragP->fr_subtype == SUBYPTE_SA_9_22_32 + 2
|| fragP->fr_subtype == SUBYPTE_SA_9_17_22_32 + 3)
{
- unsigned char *buffer =
- (unsigned char *) (fragP->fr_fix + fragP->fr_literal);
+ char *buffer = fragP->fr_literal + fragP->fr_fix;
/* bsa .+2 */
buffer[0] &= 0x8f;
buffer[1] &= 0x07;
/* br .+8 */
- md_number_to_chars ((char *) buffer + 2, 0x05c5, 2);
+ md_number_to_chars (buffer + 2, 0x05c5, 2);
/* Now create the unconditional branch + fixup to the final
target. */
/* jr SYM */
- md_number_to_chars ((char *) buffer + 4, 0x02e0, 2);
+ md_number_to_chars (buffer + 4, 0x02e0, 2);
fix_new (fragP, fragP->fr_fix + 6, 4, fragP->fr_symbol,
fragP->fr_offset + 2, 1, BFD_RELOC_V850_32_PCREL);
f = frag_var (rs_machine_dependent, 6, 2, SUBYPTE_LOOP_16_22,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)(intptr_t) fixups[0].opindex);
+ (char *) (uintptr_t) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f+4, 0, 4);
}
f = frag_var (rs_machine_dependent, 4, 2, SUBYPTE_UNCOND_9_22,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)(intptr_t) fixups[0].opindex);
+ (char *) (uintptr_t) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 2);
}
f = frag_var (rs_machine_dependent, 6, 4, SUBYPTE_UNCOND_9_22_32,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)(intptr_t) fixups[0].opindex);
+ (char *) (uintptr_t) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 4);
}
f = frag_var (rs_machine_dependent, 8, 6, SUBYPTE_SA_9_17_22,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)(intptr_t) fixups[0].opindex);
+ (char *) (uintptr_t) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 6);
}
f = frag_var (rs_machine_dependent, 6, 4, SUBYPTE_COND_9_17_22,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)(intptr_t) fixups[0].opindex);
+ (char *) (uintptr_t) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 4);
}
f = frag_var (rs_machine_dependent, 8, 6, SUBYPTE_SA_9_22,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)(intptr_t) fixups[0].opindex);
+ (char *) (uintptr_t) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 6);
}
f = frag_var (rs_machine_dependent, 6, 4, SUBYPTE_COND_9_22,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)(intptr_t) fixups[0].opindex);
+ (char *) (uintptr_t) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 4);
}
f = frag_var (rs_machine_dependent, 10, 8, SUBYPTE_SA_9_17_22_32,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)(intptr_t) fixups[0].opindex);
+ (char *) (uintptr_t) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 8);
}
f = frag_var (rs_machine_dependent, 8, 6, SUBYPTE_COND_9_17_22_32,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)(intptr_t) fixups[0].opindex);
+ (char *) (uintptr_t) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 6);
}
f = frag_var (rs_machine_dependent, 10, 8, SUBYPTE_SA_9_22_32,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)(intptr_t) fixups[0].opindex);
+ (char *) (uintptr_t) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 8);
}
f = frag_var (rs_machine_dependent, 8, 6, SUBYPTE_COND_9_22_32,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)(intptr_t) fixups[0].opindex);
+ (char *) (uintptr_t) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 6);
}