2007-12-17 H.J. Lu <hongjiu.lu@intel.com>

* config/tc-i386.c (output_insn): Use FRAG_APPEND_1_CHAR
	instead of frag_more/md_number_to_chars.
	(md_short_jump_size): Removed.
	(md_long_jump_size): Likewise.
	(md_create_short_jump): Likewise.
	(md_create_long_jump): Likewise.
This commit is contained in:
H.J. Lu
2007-12-17 18:53:06 +00:00
parent c6a0999f0f
commit 4a3523fa63
2 changed files with 16 additions and 53 deletions

View File

@ -1,3 +1,12 @@
2007-12-17 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (output_insn): Use FRAG_APPEND_1_CHAR
instead of frag_more/md_number_to_chars.
(md_short_jump_size): Removed.
(md_long_jump_size): Likewise.
(md_create_short_jump): Likewise.
(md_create_long_jump): Likewise.
2007-12-13 Bob Wilson <bob.wilson@acm.org> 2007-12-13 Bob Wilson <bob.wilson@acm.org>
* config/tc-xtensa.c (xg_symbolic_immeds_fit): Relax for weak * config/tc-xtensa.c (xg_symbolic_immeds_fit): Relax for weak

View File

@ -5000,10 +5000,7 @@ check_prefix:
q++) q++)
{ {
if (*q) if (*q)
{ FRAG_APPEND_1_CHAR (*q);
p = frag_more (1);
md_number_to_chars (p, (valueT) *q, 1);
}
} }
/* Now the opcode; be careful about word order here! */ /* Now the opcode; be careful about word order here! */
@ -5042,12 +5039,9 @@ check_prefix:
/* Now the modrm byte and sib byte (if present). */ /* Now the modrm byte and sib byte (if present). */
if (i.tm.opcode_modifier.modrm) if (i.tm.opcode_modifier.modrm)
{ {
p = frag_more (1); FRAG_APPEND_1_CHAR ((i.rm.regmem << 0
md_number_to_chars (p, | i.rm.reg << 3
(valueT) (i.rm.regmem << 0 | i.rm.mode << 6));
| i.rm.reg << 3
| i.rm.mode << 6),
1);
/* If i.rm.regmem == ESP (4) /* If i.rm.regmem == ESP (4)
&& i.rm.mode != (Register mode) && i.rm.mode != (Register mode)
&& not 16 bit && not 16 bit
@ -5055,14 +5049,9 @@ check_prefix:
if (i.rm.regmem == ESCAPE_TO_TWO_BYTE_ADDRESSING if (i.rm.regmem == ESCAPE_TO_TWO_BYTE_ADDRESSING
&& i.rm.mode != 3 && i.rm.mode != 3
&& !(i.base_reg && i.base_reg->reg_type.bitfield.reg16)) && !(i.base_reg && i.base_reg->reg_type.bitfield.reg16))
{ FRAG_APPEND_1_CHAR ((i.sib.base << 0
p = frag_more (1); | i.sib.index << 3
md_number_to_chars (p, | i.sib.scale << 6));
(valueT) (i.sib.base << 0
| i.sib.index << 3
| i.sib.scale << 6),
1);
}
} }
/* Write the DREX byte if needed. */ /* Write the DREX byte if needed. */
@ -6574,41 +6563,6 @@ md_convert_frag (abfd, sec, fragP)
fragP->fr_fix += extension; fragP->fr_fix += extension;
} }
/* Size of byte displacement jmp. */
int md_short_jump_size = 2;
/* Size of dword displacement jmp. */
int md_long_jump_size = 5;
void
md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol)
char *ptr;
addressT from_addr, to_addr;
fragS *frag ATTRIBUTE_UNUSED;
symbolS *to_symbol ATTRIBUTE_UNUSED;
{
offsetT offset;
offset = to_addr - (from_addr + 2);
/* Opcode for byte-disp jump. */
md_number_to_chars (ptr, (valueT) 0xeb, 1);
md_number_to_chars (ptr + 1, (valueT) offset, 1);
}
void
md_create_long_jump (ptr, from_addr, to_addr, frag, to_symbol)
char *ptr;
addressT from_addr, to_addr;
fragS *frag ATTRIBUTE_UNUSED;
symbolS *to_symbol ATTRIBUTE_UNUSED;
{
offsetT offset;
offset = to_addr - (from_addr + 5);
md_number_to_chars (ptr, (valueT) 0xe9, 1);
md_number_to_chars (ptr + 1, (valueT) offset, 4);
}
/* Apply a fixup (fixS) to segment data, once it has been determined /* Apply a fixup (fixS) to segment data, once it has been determined
by our caller that we have all the info we need to fix it up. by our caller that we have all the info we need to fix it up.