aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-cris.c856
-rw-r--r--gas/config/tc-i386.c613
-rw-r--r--gas/config/tc-sparc.c6
4 files changed, 735 insertions, 746 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 41dcabb..94fa866 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2000-08-05 Kazu Hirata <kazu@hxi.com>
+
+ * config/tc-cris.c: Fix formatting.
+ * config/tc-i386.c: Likewise.
+ * config/tc-sparc.c (sparc_ip): Simplify the code.
+
2000-08-04 Kazu Hirata <kazu@hxi.com>
* config/tc-cris.c: Rearrange code for readability.
diff --git a/gas/config/tc-cris.c b/gas/config/tc-cris.c
index 20ce137b..4d21a82 100644
--- a/gas/config/tc-cris.c
+++ b/gas/config/tc-cris.c
@@ -20,7 +20,7 @@
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA. */
+ MA 02111-1307, USA. */
#include <stdio.h>
#include <ctype.h>
@@ -56,12 +56,12 @@ enum prefix_kind
/* The prefix for an instruction. */
struct cris_prefix
{
- enum prefix_kind kind;
- int base_reg_number;
- unsigned int opcode;
+ enum prefix_kind kind;
+ int base_reg_number;
+ unsigned int opcode;
/* There might be an expression to be evaluated, like I in [rN+I]. */
- expressionS expr;
+ expressionS expr;
/* If there's an expression, we might need a relocation. Here's the
type of what relocation to start relaxaton with.
@@ -70,29 +70,29 @@ struct cris_prefix
enum bfd_reloc_code_real reloc;
};
-/* The description of the instruction being assembled. */
+/* The description of the instruction being assembled. */
struct cris_instruction
{
/* If CRIS_INSN_NONE, then this insn is of zero length. */
- enum cris_insn_kind insn_type;
+ enum cris_insn_kind insn_type;
/* If a special register was mentioned, this is its description, else
- it is NULL. */
+ it is NULL. */
const struct cris_spec_reg *spec_reg;
- unsigned int opcode;
+ unsigned int opcode;
/* An insn may have at most one expression; theoretically there could be
- another in its prefix (but I don't see how that could happen). */
- expressionS expr;
+ another in its prefix (but I don't see how that could happen). */
+ expressionS expr;
/* The expression might need a relocation. Here's one to start
relaxation with. */
- enum bfd_reloc_code_real reloc;
+ enum bfd_reloc_code_real reloc;
/* The size in bytes of an immediate expression, or zero in
nonapplicable. */
- int imm_oprnd_size;
+ int imm_oprnd_size;
};
static void cris_process_instruction PARAMS ((char *,
@@ -133,11 +133,11 @@ const char cris_comment_chars[] = ";";
/* This array holds the chars that only start a comment at the beginning of
a line. If the line seems to have the form '# 123 filename'
- .line and .file directives will appear in the pre-processed output */
+ .line and .file directives will appear in the pre-processed output. */
/* Note that input_file.c hand-checks for '#' at the beginning of the
first line of the input file. This is because the compiler outputs
- #NO_APP at the beginning of its output. */
-/* Also note that slash-star will always start a comment */
+ #NO_APP at the beginning of its output. */
+/* Also note that slash-star will always start a comment. */
const char line_comment_chars[] = "#";
const char line_separator_chars[] = "@";
@@ -145,7 +145,6 @@ const char line_separator_chars[] = "@";
const char EXP_CHARS[] = "";
const char FLT_CHARS[] = "";
-
/* For CRIS, we encode the relax_substateTs (in e.g. fr_substate) as:
2 1 0
---/ /--+-----------------+-----------------+-----------------+
@@ -162,7 +161,7 @@ const char FLT_CHARS[] = "";
length: byte, word, 10-byte expansion
2. BDAP
- length: byte, word, dword */
+ length: byte, word, dword */
#define STATE_CONDITIONAL_BRANCH (1)
#define STATE_BASE_PLUS_DISP_PREFIX (2)
@@ -175,15 +174,14 @@ const char FLT_CHARS[] = "";
#define STATE_UNDF (3)
#define STATE_MAX_LENGTH (3)
-
/* These displacements are relative to the adress following the opcode
word of the instruction. The first letter is Byte, Word. The 2nd
letter is Forward, Backward. */
#define BRANCH_BF ( 254)
#define BRANCH_BB (-256)
-#define BRANCH_WF (2+ 32767)
-#define BRANCH_WB (2+-32768)
+#define BRANCH_WF (2 + 32767)
+#define BRANCH_WB (2 + -32768)
#define BDAP_BF ( 127)
#define BDAP_BB (-128)
@@ -209,7 +207,7 @@ const relax_typeS md_cris_relax_table[] =
/* Bcc o (1, 0). */
{BRANCH_BF, BRANCH_BB, 0, ENCODE_RELAX (1, 1)},
- /* Bcc [PC+] (1, 1). */
+ /* Bcc [PC+] (1, 1). */
{BRANCH_WF, BRANCH_WB, 2, ENCODE_RELAX (1, 2)},
/* BEXT/BWF, BA, JUMP (external), JUMP (always), Bnot_cc, JUMP (default)
@@ -238,7 +236,6 @@ const relax_typeS md_cris_relax_table[] =
#undef BDAP_WF
#undef BDAP_WB
-
/* Target-specific multicharacter options, not const-declared at usage
in 2.9.1 and CVS of 2000-02-16. */
struct option md_longopts[] =
@@ -250,7 +247,6 @@ struct option md_longopts[] =
size_t md_longopts_size = sizeof (md_longopts);
const char *md_shortopts = "hHN";
-
/* At first glance, this may seems wrong and should be 4 (ba + nop); but
since a short_jump must skip a *number* of long jumps, it must also be
a long jump. Here, we hope to make it a "ba [16bit_offs]" and a "nop"
@@ -264,8 +260,8 @@ const char *md_shortopts = "hHN";
const int md_short_jump_size = 6;
const int md_long_jump_size = 6;
-
/* Report output format. */
+
const char *
cris_target_format ()
{
@@ -295,15 +291,15 @@ cris_target_format ()
or fr_var contributes to our returned value.
Although it may not be explicit in the frag, pretend
- fr_var starts with a value. */
+ fr_var starts with a value. */
int
md_estimate_size_before_relax (fragP, segment_type)
fragS *fragP;
/* The segment is either N_DATA or N_TEXT. */
- segT segment_type;
+ segT segment_type;
{
- int old_fr_fix;
+ int old_fr_fix;
old_fr_fix = fragP->fr_fix;
@@ -327,7 +323,7 @@ md_estimate_size_before_relax (fragP, segment_type)
fragP->fr_fix += 2 + 2 + 2 + 4;
writep = fragP->fr_literal + old_fr_fix;
gen_cond_branch_32 (fragP->fr_opcode, writep, fragP,
- fragP->fr_symbol, (symbolS *)NULL,
+ fragP->fr_symbol, (symbolS *) NULL,
fragP->fr_offset);
frag_wane (fragP);
}
@@ -395,14 +391,14 @@ md_estimate_size_before_relax (fragP, segment_type)
/* Modify the byte-offset BDAP into a word or dword offset
BDAP. Or really, a BDAP rX,8bit into a
- BDAP.[wd] rX,[PC+] followed by a and a word or dword. */
+ BDAP.[wd] rX,[PC+] followed by a and a word or dword. */
(fragP->fr_opcode)[0] = BDAP_PC_LOW + pow2_of_size * 16;
/* Keep the register number in the highest four bits. */
(fragP->fr_opcode)[1] &= 0xF0;
(fragP->fr_opcode)[1] |= BDAP_INCR_HIGH;
- /* It grew by two or four bytes. */
+ /* It grew by two or four bytes. */
fragP->fr_fix += 1 << pow2_of_size;
writep = fragP->fr_literal + old_fr_fix;
md_number_to_chars (writep, value, 1 << pow2_of_size);
@@ -418,7 +414,6 @@ md_estimate_size_before_relax (fragP, segment_type)
return fragP->fr_var + (fragP->fr_fix - old_fr_fix);
}
-
/* Perform post-processing of machine-dependent frags after relaxation.
Called after relaxation is finished.
In: Address of frag.
@@ -435,7 +430,7 @@ md_convert_frag (abfd, sec, fragP)
segT sec ATTRIBUTE_UNUSED;
fragS *fragP;
{
- /* Pointer to first byte in variable-sized part of the frag. */
+ /* Pointer to first byte in variable-sized part of the frag. */
char *var_partp;
/* Pointer to first opcode byte in frag. */
@@ -476,67 +471,66 @@ md_convert_frag (abfd, sec, fragP)
address_of_var_part = fragP->fr_address + var_part_offset;
switch (fragP->fr_subtype)
- {
- case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_BYTE):
- opcodep[0] = branch_disp ((target_address - address_of_var_part));
- var_part_size = 0;
- break;
-
- case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_WORD):
- /* We had a quick immediate branch, now turn it into a word one i.e. a
- PC autoincrement. */
- opcodep[0] = BRANCH_PC_LOW;
- opcodep[1] &= 0xF0;
- opcodep[1] |= BRANCH_INCR_HIGH;
- md_number_to_chars (var_partp,
- (long) (target_address - (address_of_var_part + 2)),
- 2);
- var_part_size = 2;
- break;
-
- case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_DWORD):
- gen_cond_branch_32 (fragP->fr_opcode, var_partp, fragP,
- fragP->fr_symbol, (symbolS *)NULL,
- fragP->fr_offset);
- /* Ten bytes added: a branch, nop and a jump. */
- var_part_size = 2 + 2 + 4 + 2;
- break;
-
- case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_BYTE):
- var_partp[0] = target_address - (address_of_var_part + 1);
- var_part_size = 0;
- break;
-
- case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_WORD):
- /* We had a BDAP 8-bit "quick immediate", now turn it into a 16-bit
- one that uses PC autoincrement. */
- opcodep[0] = BDAP_PC_LOW + (1 << 4);
- opcodep[1] &= 0xF0;
- opcodep[1] |= BDAP_INCR_HIGH;
- md_number_to_chars (var_partp, (long)(target_address), 2);
- var_part_size = 2;
- break;
-
- case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_DWORD):
- /* We had a BDAP 16-bit "word", change the offset to a dword. */
- opcodep[0] = BDAP_PC_LOW + (2 << 4);
- opcodep[1] &= 0xF0;
- opcodep[1] |= BDAP_INCR_HIGH;
- if (fragP->fr_symbol == NULL)
- md_number_to_chars (var_partp, fragP->fr_offset, 4);
- else
- fix_new (fragP, var_partp - fragP->fr_literal, 4, fragP->fr_symbol,
- fragP->fr_offset, 0, BFD_RELOC_32);
- var_part_size = 4;
- break;
-
- default:
- BAD_CASE (fragP->fr_subtype);
- break;
- }
+ {
+ case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_BYTE):
+ opcodep[0] = branch_disp ((target_address - address_of_var_part));
+ var_part_size = 0;
+ break;
- fragP->fr_fix += var_part_size;
+ case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_WORD):
+ /* We had a quick immediate branch, now turn it into a word one i.e. a
+ PC autoincrement. */
+ opcodep[0] = BRANCH_PC_LOW;
+ opcodep[1] &= 0xF0;
+ opcodep[1] |= BRANCH_INCR_HIGH;
+ md_number_to_chars (var_partp,
+ (long) (target_address - (address_of_var_part + 2)),
+ 2);
+ var_part_size = 2;
+ break;
+
+ case ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_DWORD):
+ gen_cond_branch_32 (fragP->fr_opcode, var_partp, fragP,
+ fragP->fr_symbol, (symbolS *) NULL,
+ fragP->fr_offset);
+ /* Ten bytes added: a branch, nop and a jump. */
+ var_part_size = 2 + 2 + 4 + 2;
+ break;
+ case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_BYTE):
+ var_partp[0] = target_address - (address_of_var_part + 1);
+ var_part_size = 0;
+ break;
+
+ case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_WORD):
+ /* We had a BDAP 8-bit "quick immediate", now turn it into a 16-bit
+ one that uses PC autoincrement. */
+ opcodep[0] = BDAP_PC_LOW + (1 << 4);
+ opcodep[1] &= 0xF0;
+ opcodep[1] |= BDAP_INCR_HIGH;
+ md_number_to_chars (var_partp, (long) (target_address), 2);
+ var_part_size = 2;
+ break;
+
+ case ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_DWORD):
+ /* We had a BDAP 16-bit "word", change the offset to a dword. */
+ opcodep[0] = BDAP_PC_LOW + (2 << 4);
+ opcodep[1] &= 0xF0;
+ opcodep[1] |= BDAP_INCR_HIGH;
+ if (fragP->fr_symbol == NULL)
+ md_number_to_chars (var_partp, fragP->fr_offset, 4);
+ else
+ fix_new (fragP, var_partp - fragP->fr_literal, 4, fragP->fr_symbol,
+ fragP->fr_offset, 0, BFD_RELOC_32);
+ var_part_size = 4;
+ break;
+
+ default:
+ BAD_CASE (fragP->fr_subtype);
+ break;
+ }
+
+ fragP->fr_fix += var_part_size;
}
/* Generate a short jump around a secondary jump table.
@@ -545,7 +539,7 @@ md_convert_frag (abfd, sec, fragP)
This used to be md_create_short_jump, but is now called from
md_create_long_jump instead, when sufficient.
since the sizes of the jumps are the same. It used to be brittle,
- making possibilities for creating bad code. */
+ making possibilities for creating bad code. */
static void
cris_create_short_jump (storep, from_addr, to_addr, fragP, to_symbol)
@@ -562,30 +556,29 @@ cris_create_short_jump (storep, from_addr, to_addr, fragP, to_symbol)
if (-254 <= distance && distance <= 256)
{
/* Create a "short" short jump: "BA distance - 2". */
- storep[0] = branch_disp (distance-2);
+ storep[0] = branch_disp (distance - 2);
storep[1] = BA_QUICK_HIGH;
/* A nop for the delay slot. */
- md_number_to_chars (storep+2, NOP_OPCODE, 2);
+ md_number_to_chars (storep + 2, NOP_OPCODE, 2);
/* The extra word should be filled with something sane too. Make it
a nop to keep disassembly sane. */
- md_number_to_chars (storep+4, NOP_OPCODE, 2);
+ md_number_to_chars (storep + 4, NOP_OPCODE, 2);
}
else
{
/* Make it a "long" short jump: "BA (PC+)". */
md_number_to_chars (storep, BA_PC_INCR_OPCODE, 2);
- /* ".WORD distance - 4". */
+ /* ".WORD distance - 4". */
md_number_to_chars (storep + 2, (long) (distance - 4), 2);
/* A nop for the delay slot. */
- md_number_to_chars (storep+4, NOP_OPCODE, 2);
+ md_number_to_chars (storep + 4, NOP_OPCODE, 2);
}
}
-
/* Generate a long jump in a secondary jump table.
storep Where to store the jump instruction.
@@ -624,15 +617,15 @@ md_create_long_jump (storep, from_addr, to_addr, fragP, to_symbol)
}
}
-
/* Port-specific assembler initialization. */
+
void
md_begin ()
{
const char *hashret = NULL;
int i = 0;
- /* Set up a hash table for the instructions. */
+ /* Set up a hash table for the instructions. */
op_hash = hash_new ();
if (op_hash == NULL)
as_fatal (_("Virtual memory exhausted"));
@@ -644,7 +637,7 @@ md_begin ()
if (hashret != NULL && *hashret != '\0')
as_fatal (_("Can't hash `%s': %s\n"), cris_opcodes[i].name,
- *hashret == 0 ? _("(unknown reason)") : hashret);
+ *hashret == 0 ? _("(unknown reason)") : hashret);
do
{
if (cris_opcodes[i].match & cris_opcodes[i].lose)
@@ -652,13 +645,14 @@ md_begin ()
cris_opcodes[i].args);
++i;
- } while (cris_opcodes[i].name != NULL
- && strcmp (cris_opcodes[i].name, name) == 0);
+ }
+ while (cris_opcodes[i].name != NULL
+ && strcmp (cris_opcodes[i].name, name) == 0);
}
}
-
/* Assemble a source line. */
+
void
md_assemble (str)
char *str;
@@ -698,7 +692,7 @@ md_assemble (str)
no reloc. */
if (prefix.reloc != BFD_RELOC_NONE)
{
- /* Output an absolute mode address. */
+ /* Output an absolute mode address. */
p = frag_more (4);
fix_new_exp (frag_now, (p - frag_now->fr_literal), 4,
&prefix.expr, 0, prefix.reloc);
@@ -712,12 +706,12 @@ md_assemble (str)
size of the register to "sp". */
if (output_instruction.spec_reg != NULL)
{
- /* Special register. */
+ /* Special register. */
opcodep[0] = -output_instruction.spec_reg->reg_size;
}
else
{
- /* General register. */
+ /* General register. */
opcodep[0] = -4;
}
opcodep[1] = (REG_SP << 4) + (BDAP_QUICK_OPCODE >> 8);
@@ -735,7 +729,7 @@ md_assemble (str)
opcodep = frag_more (2);
/* Output the instruction opcode. */
- md_number_to_chars (opcodep, (long)(output_instruction.opcode), 2);
+ md_number_to_chars (opcodep, (long) (output_instruction.opcode), 2);
/* Output the symbol-dependent instruction stuff. */
if (output_instruction.insn_type == CRIS_INSN_BRANCH)
@@ -756,7 +750,7 @@ md_assemble (str)
|| to_seg == now_seg || is_undefined)
{
/* If is_undefined, then the expression may BECOME now_seg. */
- length_code = is_undefined ? STATE_UNDF : STATE_BYTE;
+ length_code = is_undefined ? STATE_UNDF : STATE_BYTE;
/* Make room for max ten bytes of variable length. */
frag_var (rs_machine_dependent, 10, 0,
@@ -773,7 +767,7 @@ md_assemble (str)
branch. */
gen_cond_branch_32 (opcodep, frag_more (10), frag_now,
output_instruction.expr.X_add_symbol,
- (symbolS *)NULL,
+ (symbolS *) NULL,
output_instruction.expr.X_add_number);
}
}
@@ -810,7 +804,7 @@ md_assemble (str)
else if (output_instruction.reloc != BFD_RELOC_NONE)
{
/* An immediate operand that has a relocation and needs to be
- processed further. */
+ processed further. */
/* It is important to use fix_new_exp here and everywhere else
(and not fix_new), as fix_new_exp can handle "difference
@@ -823,23 +817,23 @@ md_assemble (str)
}
}
-
/* Low level text-to-bits assembly. */
+
static void
cris_process_instruction (insn_text, out_insnp, prefixp)
char *insn_text;
- struct cris_instruction *out_insnp;
+ struct cris_instruction *out_insnp;
struct cris_prefix *prefixp;
{
- char *s;
- char modified_char = 0;
- const char *args;
+ char *s;
+ char modified_char = 0;
+ const char *args;
struct cris_opcode *instruction;
- char *operands;
- int match = 0;
- int mode;
- int regno;
- int size_bits;
+ char *operands;
+ int match = 0;
+ int mode;
+ int regno;
+ int size_bits;
/* Reset these fields to a harmless state in case we need to return in
error. */
@@ -850,10 +844,8 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
/* Find the end of the opcode mnemonic. We assume (true in 2.9.1)
that the caller has translated the opcode to lower-case, up to the
- first non-letter. */
- for (operands = insn_text;
- islower (*operands);
- ++operands)
+ first non-letter. */
+ for (operands = insn_text; islower (*operands); ++operands)
;
/* Terminate the opcode after letters, but save the character there if
@@ -864,13 +856,13 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
break;
case '.':
- /* Put back the modified character later */
+ /* Put back the modified character later. */
modified_char = *operands;
- /* FALLTHROUGH. */
+ /* Fall through. */
case ' ':
- /* Consume the character after the mnemonic and replace */
- /* it with '\0'. */
+ /* Consume the character after the mnemonic
+ and replace it with '\0'. */
*operands++ = '\0';
break;
@@ -897,16 +889,13 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
*--operands = modified_char;
}
-
/* Try to match an opcode table slot. */
- for (s = operands;
- ;
- )
+ for (s = operands;;)
{
- int imm_expr_found;
+ int imm_expr_found;
/* Initialize *prefixp, perhaps after being modified for a
- "near match". */
+ "near match". */
prefixp->kind = PREFIX_NONE;
prefixp->reloc = BFD_RELOC_NONE;
@@ -921,9 +910,7 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
/* Build the opcode, checking as we go to make sure that the
operands match. */
- for (args = instruction->args;
- ;
- ++args)
+ for (args = instruction->args;; ++args)
{
switch (*args)
{
@@ -947,7 +934,7 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
case 'B':
/* This is not really an operand, but causes a "BDAP
- -size,SP" prefix to be output, for PUSH instructions. */
+ -size,SP" prefix to be output, for PUSH instructions. */
prefixp->kind = PREFIX_PUSH;
continue;
@@ -1011,8 +998,7 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
if (! get_flags (&s, &flags))
break;
- out_insnp->opcode
- |= ((flags & 0xf0) << 8) | (flags & 0xf);
+ out_insnp->opcode |= ((flags & 0xf0) << 8) | (flags & 0xf);
continue;
}
@@ -1106,7 +1092,7 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
break;
/* Since 'O' is used with an explicit bdap, we have no
- "real" instruction. */
+ "real" instruction. */
prefixp->kind = PREFIX_BDAP_IMM;
out_insnp->insn_type = CRIS_INSN_NONE;
continue;
@@ -1139,7 +1125,7 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
/* This character is used in the disassembler to
recognize a prefix instruction to fold into the
addressing mode for the next instruction. It is
- ignored here. */
+ ignored here. */
continue;
case 'R':
@@ -1203,8 +1189,7 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
break;
else
{
- out_insnp->opcode |=
- (regno << 12) | (size_bits << 4);
+ out_insnp->opcode |= (regno << 12) | (size_bits << 4);
continue;
}
@@ -1312,7 +1297,7 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
|| out_insnp->expr.X_add_number > 255))
as_bad (_("Immediate value not in 8 bit range: %ld"),
out_insnp->expr.X_add_number);
- /* FALLTHROUGH. */
+ /* Fall through. */
case 2:
/* FIXME: We need an indicator in the instruction
table to pass on, to indicate if we need to check
@@ -1343,7 +1328,7 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
|| out_insnp->expr.X_add_number > 255))
as_bad (_("Immediate value not in 8 bit range: %ld"),
out_insnp->expr.X_add_number);
- /* FALLTHROUGH. */
+ /* Fall through. */
case 1:
if (out_insnp->expr.X_op == O_constant
&& (out_insnp->expr.X_add_number < -32768
@@ -1367,7 +1352,6 @@ cris_process_instruction (insn_text, out_insnp, prefixp)
}
}
-
/* Get a B, W, or D size modifier from the string pointed out by *cPP,
which must point to a '.' in front of the modifier. On successful
return, *cPP is advanced to the character following the size
@@ -1390,7 +1374,7 @@ get_bwd_size_modifier (cPP, size_bitsp)
return 0;
else
{
- /* Consume the '.' */
+ /* Consume the '.'. */
(*cPP)++;
switch (**cPP)
@@ -1420,7 +1404,6 @@ get_bwd_size_modifier (cPP, size_bitsp)
}
}
-
/* Get a B or W size modifier from the string pointed out by *cPP,
which must point to a '.' in front of the modifier. On successful
return, *cPP is advanced to the character following the size
@@ -1443,7 +1426,7 @@ get_bw_size_modifier (cPP, size_bitsp)
return 0;
else
{
- /* Consume the '.' */
+ /* Consume the '.'. */
(*cPP)++;
switch (**cPP)
@@ -1468,7 +1451,6 @@ get_bw_size_modifier (cPP, size_bitsp)
}
}
-
/* Get a general register from the string pointed out by *cPP. The
variable *cPP is advanced to the character following the general
register name on a successful return, and has its initial position
@@ -1509,7 +1491,7 @@ get_gen_reg (cPP, regnop)
case 'R':
case 'r':
- /* Hopefully r[0-9] or r1[0-5]. Consume 'R' or 'r' */
+ /* Hopefully r[0-9] or r1[0-5]. Consume 'R' or 'r'. */
(*cPP)++;
if (isdigit (**cPP))
@@ -1520,13 +1502,13 @@ get_gen_reg (cPP, regnop)
if (! isalnum (**cPP))
{
- /* No more digits, we're done. */
+ /* No more digits, we're done. */
return 1;
}
else
{
/* One more digit. Consume and add. */
- *regnop = *regnop*10 + (**cPP - '0');
+ *regnop = *regnop * 10 + (**cPP - '0');
/* We need to check for a valid register number; Rn,
0 <= n <= MAX_REG. */
@@ -1563,7 +1545,6 @@ get_gen_reg (cPP, regnop)
return 0;
}
-
/* Get a special register from the string pointed out by *cPP. The
variable *cPP is advanced to the character following the special
register name if one is found, and retains its original position
@@ -1588,11 +1569,8 @@ get_spec_reg (cPP, sregpp)
const struct cris_spec_reg *sregp;
/* Loop over all special registers. */
- for (sregp = cris_spec_regs;
- sregp->name != NULL;
- sregp++)
+ for (sregp = cris_spec_regs; sregp->name != NULL; sregp++)
{
-
/* Start over from beginning of the supposed name. */
s1 = *cPP;
s2 = sregp->name;
@@ -1606,21 +1584,20 @@ get_spec_reg (cPP, sregpp)
/* For a match, we must have consumed the name in the table, and we
must be outside what could be part of a name. Assume here that a
- test for alphanumerics is sufficient for a name test. */
+ test for alphanumerics is sufficient for a name test. */
if (*s2 == 0 && ! isalnum (*s1))
{
- /* We have a match. Update the pointer and be done. */
+ /* We have a match. Update the pointer and be done. */
*cPP = s1;
*sregpp = sregp;
return 1;
}
}
- /* If we got here, we did not find any name. */
+ /* If we got here, we did not find any name. */
return 0;
}
-
/* Get an unprefixed or side-effect-prefix operand from the string pointed
out by *cPP. The pointer *cPP is advanced to the character following
the indirect operand if we have success, else it contains an undefined
@@ -1649,12 +1626,12 @@ get_spec_reg (cPP, sregpp)
static int
get_autoinc_prefix_or_indir_op (cPP, prefixp, is_autoincp, src_regnop,
imm_foundp, imm_exprP)
- char **cPP;
- struct cris_prefix *prefixp;
- int *is_autoincp;
- int *src_regnop;
- int *imm_foundp;
- expressionS *imm_exprP;
+ char **cPP;
+ struct cris_prefix *prefixp;
+ int *is_autoincp;
+ int *src_regnop;
+ int *imm_foundp;
+ expressionS *imm_exprP;
{
/* Assume there was no immediate mode expression. */
*imm_foundp = 0;
@@ -1763,59 +1740,59 @@ get_autoinc_prefix_or_indir_op (cPP, prefixp, is_autoincp, src_regnop,
/* It wasn't an indirection. Check if it's a
register. */
else if (get_gen_reg (cPP, &index_reg_number))
- {
- int size_bits;
-
- /* Indexed with assign mode: "[rN+rM.S]". */
- prefixp->kind = PREFIX_BIAP;
- prefixp->opcode
- = (BIAP_OPCODE + (index_reg_number << 12)
- + prefixp->base_reg_number /* << 0 */);
-
- if (! get_bwd_size_modifier (cPP, &size_bits))
- /* Size missing, this isn't a match. */
- return 0;
- else
- {
- /* Size found, break out to check the
- final ']'. */
- prefixp->opcode |= size_bits << 4;
- break;
- }
- }
- /* Not a register. Then this must be "[rN+I]". */
- else if (cris_get_expression (cPP, &prefixp->expr))
+ {
+ int size_bits;
+
+ /* Indexed with assign mode: "[rN+rM.S]". */
+ prefixp->kind = PREFIX_BIAP;
+ prefixp->opcode
+ = (BIAP_OPCODE + (index_reg_number << 12)
+ + prefixp->base_reg_number /* << 0 */);
+
+ if (! get_bwd_size_modifier (cPP, &size_bits))
+ /* Size missing, this isn't a match. */
+ return 0;
+ else
{
- /* We've got offset with assign mode. Fill
- in the blanks and break out to match the
+ /* Size found, break out to check the
final ']'. */
- prefixp->kind = PREFIX_BDAP_IMM;
+ prefixp->opcode |= size_bits << 4;
break;
}
- else
- /* Neither register nor expression found, so
- this can't be a match. */
- return 0;
+ }
+ /* Not a register. Then this must be "[rN+I]". */
+ else if (cris_get_expression (cPP, &prefixp->expr))
+ {
+ /* We've got offset with assign mode. Fill
+ in the blanks and break out to match the
+ final ']'. */
+ prefixp->kind = PREFIX_BDAP_IMM;
+ break;
+ }
+ else
+ /* Neither register nor expression found, so
+ this can't be a match. */
+ return 0;
}
- /* Not "[rN+" but perhaps "[rN-"? */
+ /* Not "[rN+" but perhaps "[rN-"? */
else if (**cPP == '-')
- {
- /* We must have an offset with assign mode. */
- if (! cris_get_expression (cPP, &prefixp->expr))
- /* No expression, no match. */
- return 0;
- else
- {
- /* We've got offset with assign mode. Fill
- in the blanks and break out to match the
- final ']'. */
- prefixp->kind = PREFIX_BDAP_IMM;
- break;
- }
- }
- else
- /* Neither '+' nor '-' after "[rN=rM". Lose. */
- return 0;
+ {
+ /* We must have an offset with assign mode. */
+ if (! cris_get_expression (cPP, &prefixp->expr))
+ /* No expression, no match. */
+ return 0;
+ else
+ {
+ /* We've got offset with assign mode. Fill
+ in the blanks and break out to match the
+ final ']'. */
+ prefixp->kind = PREFIX_BDAP_IMM;
+ break;
+ }
+ }
+ else
+ /* Neither '+' nor '-' after "[rN=rM". Lose. */
+ return 0;
}
default:
/* Neither ']' nor '+' nor '=' after "[rN". Lose. */
@@ -1835,22 +1812,21 @@ get_autoinc_prefix_or_indir_op (cPP, prefixp, is_autoincp, src_regnop,
return 1;
}
}
- /* No indirection. Perhaps a constant? */
+ /* No indirection. Perhaps a constant? */
else if (cris_get_expression (cPP, imm_exprP))
- {
- /* Expression found, this is immediate mode. */
- prefixp->kind = PREFIX_NONE;
- *is_autoincp = 1;
- *src_regnop = REG_PC;
- *imm_foundp = 1;
- return 1;
- }
+ {
+ /* Expression found, this is immediate mode. */
+ prefixp->kind = PREFIX_NONE;
+ *is_autoincp = 1;
+ *src_regnop = REG_PC;
+ *imm_foundp = 1;
+ return 1;
+ }
/* No luck today. */
return 0;
}
-
/* This function gets an indirect operand in a three-address operand
combination from the string pointed out by *cPP. The pointer *cPP is
advanced to the character following the indirect operand on success, or
@@ -1875,179 +1851,178 @@ get_3op_or_dip_prefix_op (cPP, prefixp)
/* We must have a '[' or it's a clean failure. */
return 0;
- /* Eat the first '['. */
+ /* Eat the first '['. */
+ (*cPP)++;
+
+ if (**cPP == '[')
+ {
+ /* A second '[', so this must be double-indirect mode. */
(*cPP)++;
+ prefixp->kind = PREFIX_DIP;
+ prefixp->opcode = DIP_OPCODE;
- if (**cPP == '[')
+ /* Get the register or fail entirely. */
+ if (! get_gen_reg (cPP, &reg_number))
+ return 0;
+ else
{
- /* A second '[', so this must be double-indirect mode. */
+ prefixp->opcode |= reg_number /* << 0 */ ;
+ if (**cPP == '+')
+ {
+ /* Since we found a '+', this must be double-indirect
+ autoincrement mode. */
+ (*cPP)++;
+ prefixp->opcode |= AUTOINCR_BIT << 8;
+ }
+
+ /* There's nothing particular to do, if this was a
+ double-indirect *without* autoincrement. */
+ }
+
+ /* Check the first ']'. The second one is checked at the end. */
+ if (**cPP != ']')
+ return 0;
+
+ /* Eat the first ']', so we'll be looking at a second ']'. */
+ (*cPP)++;
+ }
+ /* No second '['. Then we should have a register here, making
+ it "[rN". */
+ else if (get_gen_reg (cPP, &prefixp->base_reg_number))
+ {
+ /* This must be indexed or offset mode: "[rN+I]" or
+ "[rN+rM.S]" or "[rN+[rM].S]" or "[rN+[rM+].S]". */
+ if (**cPP == '+')
+ {
+ /* Not the first alternative, must be one of the last
+ three. */
+ int index_reg_number;
+
(*cPP)++;
- prefixp->kind = PREFIX_DIP;
- prefixp->opcode = DIP_OPCODE;
- /* Get the register or fail entirely. */
- if (! get_gen_reg (cPP, &reg_number))
- return 0;
- else
+ if (**cPP == '[')
{
- prefixp->opcode |= reg_number /* << 0 */ ;
+ /* This is "[rx+["... Expect a register next. */
+ int size_bits;
+ (*cPP)++;
+
+ if (!get_gen_reg (cPP, &index_reg_number))
+ return 0;
+
+ prefixp->kind = PREFIX_BDAP;
+ prefixp->opcode
+ = (BDAP_INDIR_OPCODE
+ + (prefixp->base_reg_number << 12)
+ + index_reg_number);
+
+ /* We've seen "[rx+[ry", so check if this is
+ autoincrement. */
if (**cPP == '+')
{
- /* Since we found a '+', this must be double-indirect
- autoincrement mode. */
+ /* Yep, now at "[rx+[ry+". */
(*cPP)++;
prefixp->opcode |= AUTOINCR_BIT << 8;
}
+ /* If it wasn't autoincrement, we don't need to
+ add anything. */
- /* There's nothing particular to do, if this was a
- double-indirect *without* autoincrement. */
- }
+ /* Check a first closing ']': "[rx+[ry]" or
+ "[rx+[ry+]". */
+ if (**cPP != ']')
+ return 0;
+ (*cPP)++;
- /* Check the first ']'. The second one is checked at the end. */
- if (**cPP != ']')
- return 0;
+ /* Now expect a size modifier ".S". */
+ if (! get_bwd_size_modifier (cPP, &size_bits))
+ return 0;
- /* Eat the first ']', so we'll be looking at a second ']'. */
- (*cPP)++;
- }
- /* No second '['. Then we should have a register here, making
- it "[rN". */
- else if (get_gen_reg (cPP, &prefixp->base_reg_number))
- {
- /* This must be indexed or offset mode: "[rN+I]" or
- "[rN+rM.S]" or "[rN+[rM].S]" or "[rN+[rM+].S]". */
- if (**cPP == '+')
- {
- /* Not the first alternative, must be one of the last
- three. */
- int index_reg_number;
-
- (*cPP)++;
-
- if (**cPP == '[')
- {
- /* This is "[rx+["... Expect a register next. */
- int size_bits;
- (*cPP)++;
-
- if (!get_gen_reg (cPP, &index_reg_number))
- return 0;
-
- prefixp->kind = PREFIX_BDAP;
- prefixp->opcode
- = (BDAP_INDIR_OPCODE
- + (prefixp->base_reg_number << 12)
- + index_reg_number);
-
- /* We've seen "[rx+[ry", so check if this is
- autoincrement. */
- if (**cPP == '+')
- {
- /* Yep, now at "[rx+[ry+". */
- (*cPP)++;
- prefixp->opcode |= AUTOINCR_BIT << 8;
- }
- /* If it wasn't autoincrement, we don't need to
- add anything. */
-
- /* Check a first closing ']': "[rx+[ry]" or
- "[rx+[ry+]". */
- if (**cPP != ']')
- return 0;
- (*cPP)++;
-
- /* Now expect a size modifier ".S". */
- if (! get_bwd_size_modifier (cPP, &size_bits))
- return 0;
-
- prefixp->opcode |= size_bits << 4;
-
- /* Ok, all interesting stuff has been seen:
- "[rx+[ry+].S" or "[rx+[ry].S". We only need to
- expect a final ']', which we'll do in a common
- closing session. */
- }
- /* Seen "[rN+", but not a '[', so check if we have a
- register. */
- else if (get_gen_reg (cPP, &index_reg_number))
- {
- /* This is indexed mode: "[rN+rM.S]" or
- "[rN+rM.S+]". */
- int size_bits;
- prefixp->kind = PREFIX_BIAP;
- prefixp->opcode
- = (BIAP_OPCODE
- | prefixp->base_reg_number /* << 0 */
- | (index_reg_number << 12));
-
- /* */
- if (! get_bwd_size_modifier (cPP, &size_bits))
- /* Missing size, so fail. */
- return 0;
- else
- /* Size found. Add that piece and drop down to
- the common checking of the closing ']'. */
- prefixp->opcode |= size_bits << 4;
- }
- /* Seen "[rN+", but not a '[' or a register, so then
- it must be a constant "I". */
- else if (cris_get_expression (cPP, &prefixp->expr))
- {
- /* Expression found, so fill in the bits of offset
- mode and drop down to check the closing ']'. */
- prefixp->kind = PREFIX_BDAP_IMM;
- }
- else
- /* Nothing valid here: lose. */
- return 0;
- }
- /* Seen "[rN" but no '+', so check if it's a '-'. */
- else if (**cPP == '-')
- {
- /* Yep, we must have offset mode. */
- if (! cris_get_expression (cPP, &prefixp->expr))
- /* No expression, so we lose. */
- return 0;
- else
- {
- /* Expression found to make this offset mode, so
- fill those bits and drop down to check the
- closing ']'. */
- prefixp->kind = PREFIX_BDAP_IMM;
- }
- }
+ prefixp->opcode |= size_bits << 4;
+
+ /* Ok, all interesting stuff has been seen:
+ "[rx+[ry+].S" or "[rx+[ry].S". We only need to
+ expect a final ']', which we'll do in a common
+ closing session. */
+ }
+ /* Seen "[rN+", but not a '[', so check if we have a
+ register. */
+ else if (get_gen_reg (cPP, &index_reg_number))
+ {
+ /* This is indexed mode: "[rN+rM.S]" or
+ "[rN+rM.S+]". */
+ int size_bits;
+ prefixp->kind = PREFIX_BIAP;
+ prefixp->opcode
+ = (BIAP_OPCODE
+ | prefixp->base_reg_number /* << 0 */
+ | (index_reg_number << 12));
+
+ /* */
+ if (! get_bwd_size_modifier (cPP, &size_bits))
+ /* Missing size, so fail. */
+ return 0;
else
- {
- /* We've seen "[rN", but not '+' or '-'; rather a ']'.
- Hmm. Normally this is a simple indirect mode that we
- shouldn't match, but if we expect ']', then we have a
- zero offset, so it can be a three-address-operand,
- like "[rN],rO,rP", thus offset mode.
-
- Don't eat the ']', that will be done in the closing
- ceremony. */
- prefixp->expr.X_op = O_constant;
- prefixp->expr.X_add_number = 0;
- prefixp->expr.X_add_symbol = NULL;
- prefixp->expr.X_op_symbol = NULL;
- prefixp->kind = PREFIX_BDAP_IMM;
- }
- }
- /* A '[', but no second '[', and no register. Check if we
- have an expression, making this "[I]" for a double-indirect
- prefix. */
- else if (cris_get_expression (cPP, &prefixp->expr))
- {
- /* Expression found, the so called absolute mode for a
- double-indirect prefix on PC. */
- prefixp->kind = PREFIX_DIP;
- prefixp->opcode
- = DIP_OPCODE | (AUTOINCR_BIT << 8) | REG_PC;
- prefixp->reloc = BFD_RELOC_32;
- }
- else
- /* Neither '[' nor register nor expression. We lose. */
- return 0;
+ /* Size found. Add that piece and drop down to
+ the common checking of the closing ']'. */
+ prefixp->opcode |= size_bits << 4;
+ }
+ /* Seen "[rN+", but not a '[' or a register, so then
+ it must be a constant "I". */
+ else if (cris_get_expression (cPP, &prefixp->expr))
+ {
+ /* Expression found, so fill in the bits of offset
+ mode and drop down to check the closing ']'. */
+ prefixp->kind = PREFIX_BDAP_IMM;
+ }
+ else
+ /* Nothing valid here: lose. */
+ return 0;
+ }
+ /* Seen "[rN" but no '+', so check if it's a '-'. */
+ else if (**cPP == '-')
+ {
+ /* Yep, we must have offset mode. */
+ if (! cris_get_expression (cPP, &prefixp->expr))
+ /* No expression, so we lose. */
+ return 0;
+ else
+ {
+ /* Expression found to make this offset mode, so
+ fill those bits and drop down to check the
+ closing ']'. */
+ prefixp->kind = PREFIX_BDAP_IMM;
+ }
+ }
+ else
+ {
+ /* We've seen "[rN", but not '+' or '-'; rather a ']'.
+ Hmm. Normally this is a simple indirect mode that we
+ shouldn't match, but if we expect ']', then we have a
+ zero offset, so it can be a three-address-operand,
+ like "[rN],rO,rP", thus offset mode.
+
+ Don't eat the ']', that will be done in the closing
+ ceremony. */
+ prefixp->expr.X_op = O_constant;
+ prefixp->expr.X_add_number = 0;
+ prefixp->expr.X_add_symbol = NULL;
+ prefixp->expr.X_op_symbol = NULL;
+ prefixp->kind = PREFIX_BDAP_IMM;
+ }
+ }
+ /* A '[', but no second '[', and no register. Check if we
+ have an expression, making this "[I]" for a double-indirect
+ prefix. */
+ else if (cris_get_expression (cPP, &prefixp->expr))
+ {
+ /* Expression found, the so called absolute mode for a
+ double-indirect prefix on PC. */
+ prefixp->kind = PREFIX_DIP;
+ prefixp->opcode = DIP_OPCODE | (AUTOINCR_BIT << 8) | REG_PC;
+ prefixp->reloc = BFD_RELOC_32;
+ }
+ else
+ /* Neither '[' nor register nor expression. We lose. */
+ return 0;
/* We get here as a closing ceremony to a successful match. We just
need to check the closing ']'. */
@@ -2060,7 +2035,6 @@ get_3op_or_dip_prefix_op (cPP, prefixp)
return 1;
}
-
/* Get an expression from the string pointed out by *cPP.
The pointer *cPP is advanced to the character following the expression
on a success, or retains its original value otherwise.
@@ -2069,12 +2043,12 @@ get_3op_or_dip_prefix_op (cPP, prefixp)
exprP Pointer to structure containing the expression.
- Return 1 iff a correct expression is found. */
+ Return 1 iff a correct expression is found. */
static int
cris_get_expression (cPP, exprP)
- char **cPP;
- expressionS *exprP;
+ char **cPP;
+ expressionS *exprP;
{
char *saved_input_line_pointer;
segT exp;
@@ -2099,7 +2073,6 @@ cris_get_expression (cPP, exprP)
return 1;
}
-
/* Get a sequence of flag characters from *spp. The pointer *cPP is
advanced to the character following the expression. The flag
characters are consecutive, no commas or spaces.
@@ -2165,7 +2138,7 @@ get_flags (cPP, flagsp)
default:
/* We consider this successful if we stop at a comma or
- whitespace. Anything else, and we consider it a failure. */
+ whitespace. Anything else, and we consider it a failure. */
if (**cPP != ','
&& **cPP != 0
&& ! isspace (**cPP))
@@ -2179,7 +2152,6 @@ get_flags (cPP, flagsp)
}
}
-
/* Generate code and fixes for a BDAP prefix.
base_regno Int containing the base register number.
@@ -2188,8 +2160,8 @@ get_flags (cPP, flagsp)
static void
gen_bdap (base_regno, exprP)
- int base_regno;
- expressionS *exprP;
+ int base_regno;
+ expressionS *exprP;
{
unsigned int opcode;
char *opcodep;
@@ -2202,7 +2174,7 @@ gen_bdap (base_regno, exprP)
if (exprP->X_op == O_constant)
{
/* We have an absolute expression that we know the size of right
- now. */
+ now. */
long int value;
int size;
@@ -2211,7 +2183,7 @@ gen_bdap (base_regno, exprP)
/* Outside range for a "word", make it a dword. */
size = 2;
else
- /* Assume "word" size. */
+ /* Assume "word" size. */
size = 1;
/* If this is a signed-byte value, we can fit it into the prefix
@@ -2234,12 +2206,11 @@ gen_bdap (base_regno, exprP)
else
/* The expression is not defined yet but may become absolute. We make
it a relocation to be relaxed. */
- frag_var (rs_machine_dependent, 4, 0,
- ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_UNDF),
- exprP->X_add_symbol, exprP->X_add_number, opcodep);
+ frag_var (rs_machine_dependent, 4, 0,
+ ENCODE_RELAX (STATE_BASE_PLUS_DISP_PREFIX, STATE_UNDF),
+ exprP->X_add_symbol, exprP->X_add_number, opcodep);
}
-
/* Encode a branch displacement in the range -256..254 into the form used
by CRIS conditional branch instructions.
@@ -2259,7 +2230,6 @@ branch_disp (offset)
return disp;
}
-
/* Generate code and fixes for a 32-bit conditional branch instruction
created by "extending" an existing 8-bit branch instruction.
@@ -2301,7 +2271,7 @@ gen_cond_branch_32 (opcodep, writep, fragP, add_symP, sub_symP, add_num)
it's not the optimal extended construct, but we should get this
rarely enough that it shouldn't matter. */
- writep[8] = branch_disp (-2-6);
+ writep[8] = branch_disp (-2 - 6);
writep[9] = opcodep[1];
/* Then, we change the branch to an unconditional branch over the
@@ -2330,7 +2300,7 @@ gen_cond_branch_32 (opcodep, writep, fragP, add_symP, sub_symP, add_num)
md_number_to_chars (writep + 4, add_num, 4);
else
{
- /* Not absolute, we have to make it a frag for later evaluation. */
+ /* Not absolute, we have to make it a frag for later evaluation. */
know (sub_symP == 0);
fix_new (fragP, writep + 4 - fragP->fr_literal, 4, add_symP,
@@ -2338,12 +2308,11 @@ gen_cond_branch_32 (opcodep, writep, fragP, add_symP, sub_symP, add_num)
}
}
-
/* This *could* be:
- Turn a string in input_line_pointer into a floating point constant of
- type type, and store the appropriate bytes in *litp. The number of
- LITTLENUMS emitted is stored in *sizep.
+ Turn a string in input_line_pointer into a floating point constant
+ of type TYPE, and store the appropriate bytes in *LITP. The number
+ of LITTLENUMS emitted is stored in *SIZEP.
type A character from FLTCHARS that describes what kind of
floating-point number is wanted.
@@ -2363,14 +2332,13 @@ char *
md_atof (type, litp, sizep)
char type ATTRIBUTE_UNUSED;
char *litp ATTRIBUTE_UNUSED;
- int *sizep ATTRIBUTE_UNUSED;
+ int *sizep ATTRIBUTE_UNUSED;
{
/* FIXME: Is this function mentioned in the internals.texi manual? If
not, add it. */
return _("Bad call to md_atof () - floating point formats are not supported");
}
-
/* Turn a number as a fixS * into a series of bytes that represents the
number on the target machine. The purpose of this procedure is the
same as that of md_number_to_chars but this procedure is supposed to
@@ -2382,7 +2350,7 @@ md_atof (type, litp, sizep)
n The number of bytes in "val" that should be stored.
- fixP The fix to be applied to the bit field starting at bufp. */
+ fixP The fix to be applied to the bit field starting at bufp. */
static void
cris_number_to_imm (bufp, val, n, fixP)
@@ -2480,7 +2448,7 @@ cris_number_to_imm (bufp, val, n, fixP)
case BFD_RELOC_NONE:
/* May actually happen automatically. For example at broken
words, if the word turns out not to be broken.
- FIXME: When? Which testcase? */
+ FIXME: When? Which testcase? */
if (! fixP->fx_addsy)
md_number_to_chars (bufp, val, n);
break;
@@ -2503,10 +2471,10 @@ cris_number_to_imm (bufp, val, n, fixP)
}
}
-
/* Processes machine-dependent command line options. Called once for
each option on the command line that the machine-independent part of
GAS does not understand. */
+
int
md_parse_option (arg, argp)
int arg;
@@ -2517,7 +2485,8 @@ md_parse_option (arg, argp)
case 'H':
case 'h':
md_show_usage (stdout);
- exit (0); /* Don't continue */
+ /* Don't continue. */
+ exit (0);
case 'N':
warn_for_branch_expansion = 1;
@@ -2525,7 +2494,7 @@ md_parse_option (arg, argp)
default:
return 0;
- }
+ }
}
/* Round up a section size to the appropriate boundary. */
@@ -2558,7 +2527,6 @@ md_section_align (segment, size)
return size;
}
-
/* Generate a machine-dependent relocation. */
arelent *
tc_gen_reloc (section, fixP)
@@ -2590,10 +2558,10 @@ tc_gen_reloc (section, fixP)
relP->address = fixP->fx_frag->fr_address + fixP->fx_where;
if (fixP->fx_pcrel)
- /* FIXME: Is this correct? */
+ /* FIXME: Is this correct? */
relP->addend = fixP->fx_addnumber;
else
- /* At least *this one* is correct. */
+ /* At least *this one* is correct. */
relP->addend = fixP->fx_offset;
/* This is the standard place for KLUDGEs to work around bugs in
@@ -2621,9 +2589,9 @@ tc_gen_reloc (section, fixP)
if (OUTPUT_FLAVOR == bfd_target_aout_flavour
&& fixP->fx_addsy && S_IS_WEAK (fixP->fx_addsy)
&& ! bfd_is_und_section (S_GET_SEGMENT (fixP->fx_addsy)))
- {
- relP->addend -= S_GET_VALUE (fixP->fx_addsy);
- }
+ {
+ relP->addend -= S_GET_VALUE (fixP->fx_addsy);
+ }
relP->howto = bfd_reloc_type_lookup (stdoutput, code);
if (! relP->howto)
@@ -2640,8 +2608,8 @@ tc_gen_reloc (section, fixP)
return relP;
}
-
/* Machine-dependent usage-output. */
+
void
md_show_usage (stream)
FILE *stream;
@@ -2664,9 +2632,8 @@ md_show_usage (stream)
fprintf (stream, _("Description : Assembler for the CRIS processor.\n"));
}
-
/* Apply a fixS (fixup of an instruction or data that we didn't have
- enough info to complete immediately) to the data in a frag. */
+ enough info to complete immediately) to the data in a frag. */
int
md_apply_fix (fixP, valP)
@@ -2686,28 +2653,27 @@ md_apply_fix (fixP, valP)
fixP->fx_done = 1;
}
else
- {
- /* I took this from tc-arc.c, since we used to not support
- fx_subsy != NULL. I'm not totally sure it's TRT. */
- if (fixP->fx_subsy != (symbolS *) NULL)
- {
- if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
- val -= S_GET_VALUE (fixP->fx_subsy);
- else
- {
- /* We can't actually support subtracting a symbol. */
- as_bad_where (fixP->fx_file, fixP->fx_line,
- _("expression too complex"));
- }
- }
-
- cris_number_to_imm (buf, val, fixP->fx_size, fixP);
- }
+ {
+ /* I took this from tc-arc.c, since we used to not support
+ fx_subsy != NULL. I'm not totally sure it's TRT. */
+ if (fixP->fx_subsy != (symbolS *) NULL)
+ {
+ if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
+ val -= S_GET_VALUE (fixP->fx_subsy);
+ else
+ {
+ /* We can't actually support subtracting a symbol. */
+ as_bad_where (fixP->fx_file, fixP->fx_line,
+ _("expression too complex"));
+ }
+ }
+
+ cris_number_to_imm (buf, val, fixP->fx_size, fixP);
+ }
return 1;
}
-
/* All relocations are relative to the location just after the fixup;
the address of the fixup plus its size. */
@@ -2727,8 +2693,7 @@ md_pcrel_from (fixP)
return fixP->fx_size + addr;
}
-
-/* We have no need to give defaults for symbol-values. */
+/* We have no need to give defaults for symbol-values. */
symbolS *
md_undefined_symbol (name)
char *name ATTRIBUTE_UNUSED;
@@ -2736,7 +2701,6 @@ md_undefined_symbol (name)
return 0;
}
-
/* Definition of TC_FORCE_RELOCATION.
FIXME: Unsure of this. Can we omit it? Just copied from tc-i386.c
when doing multi-object format with ELF, since it's the only other
@@ -2761,7 +2725,7 @@ tc_cris_check_adjusted_broken_word (new_offset, brokwP)
struct broken_word *brokwP;
{
if (new_offset > 32767 || new_offset < -32768)
- /* We really want a genuine error, not a warning, so make it one. */
+ /* We really want a genuine error, not a warning, so make it one. */
as_bad_where (brokwP->frag->fr_file, brokwP->frag->fr_line,
_("Adjusted signed .word (%ld) overflows: `switch'-statement too large."),
(long) new_offset);
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index eebd49f..4324e28 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -1,6 +1,6 @@
/* i386.c -- Assemble code for the Intel 80386
Copyright (C) 1989, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
- Free Software Foundation.
+ Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -19,12 +19,10 @@
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-/*
- Intel 80386 machine specific gas.
- Written by Eliot Dresselhaus (eliot@mgm.mit.edu).
- Bugs & suggestions are completely welcome. This is free software.
- Please help us make it better.
- */
+/* Intel 80386 machine specific gas.
+ Written by Eliot Dresselhaus (eliot@mgm.mit.edu).
+ Bugs & suggestions are completely welcome. This is free software.
+ Please help us make it better. */
#include <ctype.h>
@@ -60,7 +58,7 @@ static int smallest_imm_type PARAMS ((offsetT));
static offsetT offset_in_range PARAMS ((offsetT, int));
static int add_prefix PARAMS ((unsigned int));
static void set_16bit_code_flag PARAMS ((int));
-static void set_16bit_gcc_code_flag PARAMS((int));
+static void set_16bit_gcc_code_flag PARAMS ((int));
static void set_intel_syntax PARAMS ((int));
static void set_cpu_arch PARAMS ((int));
@@ -70,7 +68,7 @@ static bfd_reloc_code_real_type reloc
#endif
/* 'md_assemble ()' gathers together information and puts it into a
- i386_insn. */
+ i386_insn. */
union i386_op
{
@@ -81,19 +79,19 @@ union i386_op
struct _i386_insn
{
- /* TM holds the template for the insn were currently assembling. */
+ /* TM holds the template for the insn were currently assembling. */
template tm;
/* SUFFIX holds the instruction mnemonic suffix if given.
(e.g. 'l' for 'movl') */
char suffix;
- /* OPERANDS gives the number of given operands. */
+ /* OPERANDS gives the number of given operands. */
unsigned int operands;
/* REG_OPERANDS, DISP_OPERANDS, MEM_OPERANDS, IMM_OPERANDS give the number
of given register, displacement, memory operands and immediate
- operands. */
+ operands. */
unsigned int reg_operands, disp_operands, mem_operands, imm_operands;
/* TYPES [i] is the type (see above #defines) which tells us how to
@@ -118,7 +116,7 @@ struct _i386_insn
unsigned int log2_scale_factor;
/* SEG gives the seg_entries of this insn. They are zero unless
- explicit segment overrides are given. */
+ explicit segment overrides are given. */
const seg_entry *seg[2]; /* segments for memory operands (if given) */
/* PREFIX holds all the given prefix opcodes (usually null).
@@ -160,7 +158,7 @@ const char comment_chars[] = "#";
.line and .file directives will appear in the pre-processed output */
/* Note that input_file.c hand checks for '#' at the beginning of the
first line of the input file. This is because the compiler outputs
- #NO_APP at the beginning of its output. */
+ #NO_APP at the beginning of its output. */
/* Also note that comments started like this one will always work if
'/' isn't otherwise defined. */
#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && ! defined (TE_LINUX) && !defined(TE_FreeBSD))
@@ -200,7 +198,7 @@ static char operand_special_chars[] = "%$-+(,)*._~/<>|&^!:[@]";
/* md_assemble() always leaves the strings it's passed unaltered. To
effect this we maintain a stack of saved characters that we've smashed
with '\0's (indicating end of strings for various sub-fields of the
- assembler instruction). */
+ assembler instruction). */
static char save_stack[32];
static char *save_stack_p; /* stack pointer */
#define END_STRING_AND_SAVE(s) \
@@ -208,34 +206,42 @@ static char *save_stack_p; /* stack pointer */
#define RESTORE_END_STRING(s) \
do { *(s) = *--save_stack_p; } while (0)
-/* The instruction we're assembling. */
+/* The instruction we're assembling. */
static i386_insn i;
/* Possible templates for current insn. */
static const templates *current_templates;
-/* Per instruction expressionS buffers: 2 displacements & 2 immediate max. */
+/* Per instruction expressionS buffers: 2 displacements & 2 immediate max. */
static expressionS disp_expressions[2], im_expressions[2];
-static int this_operand; /* Current operand we are working on. */
+/* Current operand we are working on. */
+static int this_operand;
-static int flag_16bit_code; /* 1 if we're writing 16-bit code,
- 0 if 32-bit. */
+/* 1 if we're writing 16-bit code,
+ 0 if 32-bit. */
+static int flag_16bit_code;
-static int intel_syntax = 0; /* 1 for intel syntax, 0 if att syntax. */
+/* 1 for intel syntax,
+ 0 if att syntax. */
+static int intel_syntax = 0;
-static int allow_naked_reg = 0; /* 1 if register prefix % not required */
+/* 1 if register prefix % not required. */
+static int allow_naked_reg = 0;
-static char stackop_size = '\0'; /* Used in 16 bit gcc mode to add an l
- suffix to call, ret, enter, leave, push,
- and pop instructions so that gcc has the
- same stack frame as in 32 bit mode. */
+/* Used in 16 bit gcc mode to add an l suffix to call, ret, enter,
+ leave, push, and pop instructions so that gcc has the same stack
+ frame as in 32 bit mode. */
+static char stackop_size = '\0';
-static int quiet_warnings = 0; /* Non-zero to quieten some warnings. */
+/* Non-zero to quieten some warnings. */
+static int quiet_warnings = 0;
-static const char *cpu_arch_name = NULL; /* cpu name */
+/* CPU name. */
+static const char *cpu_arch_name = NULL;
-static unsigned int cpu_arch_flags = 0; /* cpu feature flags */
+/* CPU feature flags. */
+static unsigned int cpu_arch_flags = 0;
/* Interface to relax_segment.
There are 2 relax states for 386 jump insns: one for conditional &
@@ -243,10 +249,10 @@ static unsigned int cpu_arch_flags = 0; /* cpu feature flags */
jumps add different sizes to frags when we're figuring out what
sort of jump to choose to reach a given label. */
-/* types */
-#define COND_JUMP 1 /* conditional jump */
-#define UNCOND_JUMP 2 /* unconditional jump */
-/* sizes */
+/* Types. */
+#define COND_JUMP 1 /* Conditional jump. */
+#define UNCOND_JUMP 2 /* Unconditional jump. */
+/* Sizes. */
#define CODE16 1
#define SMALL 0
#define SMALL16 (SMALL|CODE16)
@@ -322,14 +328,13 @@ static const arch_entry cpu_arch[] = {
{NULL, 0 }
};
-
void
i386_align_code (fragP, count)
fragS *fragP;
int count;
{
/* Various efficient no-op patterns for aligning code labels. */
- /* Note: Don't try to assemble the instructions in the comments. */
+ /* Note: Don't try to assemble the instructions in the comments. */
/* 0L and 0w are not legal */
static const char f32_1[] =
{0x90}; /* nop */
@@ -399,14 +404,15 @@ i386_align_code (fragP, count)
{
if (flag_16bit_code)
{
- memcpy(fragP->fr_literal + fragP->fr_fix,
- f16_patt[count - 1], count);
- if (count > 8) /* adjust jump offset */
+ memcpy (fragP->fr_literal + fragP->fr_fix,
+ f16_patt[count - 1], count);
+ if (count > 8)
+ /* Adjust jump offset. */
fragP->fr_literal[fragP->fr_fix + 1] = count - 2;
}
else
- memcpy(fragP->fr_literal + fragP->fr_fix,
- f32_patt[count - 1], count);
+ memcpy (fragP->fr_literal + fragP->fr_fix,
+ f32_patt[count - 1], count);
fragP->fr_var = count;
}
}
@@ -427,7 +433,7 @@ static INLINE unsigned int
mode_from_disp_size (t)
unsigned int t;
{
- return (t & Disp8) ? 1 : (t & (Disp16|Disp32)) ? 2 : 0;
+ return (t & Disp8) ? 1 : (t & (Disp16 | Disp32)) ? 2 : 0;
}
static INLINE int
@@ -435,35 +441,35 @@ fits_in_signed_byte (num)
offsetT num;
{
return (num >= -128) && (num <= 127);
-} /* fits_in_signed_byte() */
+}
static INLINE int
fits_in_unsigned_byte (num)
offsetT num;
{
return (num & 0xff) == num;
-} /* fits_in_unsigned_byte() */
+}
static INLINE int
fits_in_unsigned_word (num)
offsetT num;
{
return (num & 0xffff) == num;
-} /* fits_in_unsigned_word() */
+}
static INLINE int
fits_in_signed_word (num)
offsetT num;
{
return (-32768 <= num) && (num <= 32767);
-} /* fits_in_signed_word() */
+}
static int
smallest_imm_type (num)
offsetT num;
{
if (cpu_arch_flags != 0
- && cpu_arch_flags != (Cpu086|Cpu186|Cpu286|Cpu386|Cpu486))
+ && cpu_arch_flags != (Cpu086 | Cpu186 | Cpu286 | Cpu386 | Cpu486))
{
/* This code is disabled on the 486 because all the Imm1 forms
in the opcode table are slower on the i486. They're the
@@ -480,7 +486,7 @@ smallest_imm_type (num)
: (fits_in_signed_word (num) || fits_in_unsigned_word (num))
? (Imm16 | Imm32)
: (Imm32));
-} /* smallest_imm_type() */
+}
static offsetT
offset_in_range (val, size)
@@ -494,14 +500,14 @@ offset_in_range (val, size)
case 1: mask = ((addressT) 1 << 8) - 1; break;
case 2: mask = ((addressT) 1 << 16) - 1; break;
case 4: mask = ((addressT) 2 << 31) - 1; break;
- default: abort();
+ default: abort ();
}
/* If BFD64, sign extend val. */
- if ((val & ~ (((addressT) 2 << 31) - 1)) == 0)
+ if ((val & ~(((addressT) 2 << 31) - 1)) == 0)
val = (val ^ ((addressT) 1 << 31)) - ((addressT) 1 << 31);
- if ((val & ~ mask) != 0 && (val & ~ mask) != ~ mask)
+ if ((val & ~mask) != 0 && (val & ~mask) != ~mask)
{
char buf1[40], buf2[40];
@@ -597,9 +603,9 @@ set_intel_syntax (syntax_flag)
char *string = input_line_pointer;
int e = get_symbol_end ();
- if (strcmp(string, "prefix") == 0)
+ if (strcmp (string, "prefix") == 0)
ask_naked_reg = 1;
- else if (strcmp(string, "noprefix") == 0)
+ else if (strcmp (string, "noprefix") == 0)
ask_naked_reg = -1;
else
as_bad (_("bad argument to syntax directive."));
@@ -615,7 +621,8 @@ set_intel_syntax (syntax_flag)
allow_naked_reg = (intel_syntax
&& (bfd_get_symbol_leading_char (stdoutput) != '\0'));
#else
- allow_naked_reg = 0; /* conservative default */
+ /* Conservative default. */
+ allow_naked_reg = 0;
#endif
}
else
@@ -624,9 +631,9 @@ set_intel_syntax (syntax_flag)
static void
set_cpu_arch (dummy)
- int dummy ATTRIBUTE_UNUSED;
+ int dummy ATTRIBUTE_UNUSED;
{
- SKIP_WHITESPACE();
+ SKIP_WHITESPACE ();
if (! is_end_of_line[(unsigned char) *input_line_pointer])
{
@@ -679,28 +686,29 @@ const pseudo_typeS md_pseudo_table[] =
{0, 0, 0}
};
-/* for interface with expression () */
+/* For interface with expression (). */
extern char *input_line_pointer;
-/* hash table for instruction mnemonic lookup */
+/* Hash table for instruction mnemonic lookup. */
static struct hash_control *op_hash;
-/* hash table for register lookup */
+
+/* Hash table for register lookup. */
static struct hash_control *reg_hash;
-
void
md_begin ()
{
const char *hash_err;
- /* initialize op_hash hash table */
+ /* Initialize op_hash hash table. */
op_hash = hash_new ();
{
register const template *optab;
register templates *core_optab;
- optab = i386_optab; /* setup for loop */
+ /* Setup for loop. */
+ optab = i386_optab;
core_optab = (templates *) xmalloc (sizeof (templates));
core_optab->start = optab;
@@ -711,7 +719,7 @@ md_begin ()
|| strcmp (optab->name, (optab - 1)->name) != 0)
{
/* different name --> ship out current template list;
- add to hash table; & begin anew */
+ add to hash table; & begin anew. */
core_optab->end = optab;
hash_err = hash_insert (op_hash,
(optab - 1)->name,
@@ -731,7 +739,7 @@ md_begin ()
}
}
- /* initialize reg_hash hash table */
+ /* Initialize reg_hash hash table. */
reg_hash = hash_new ();
{
register const reg_entry *regtab;
@@ -746,7 +754,7 @@ md_begin ()
}
}
- /* fill in lexical tables: mnemonic_chars, operand_chars. */
+ /* Fill in lexical tables: mnemonic_chars, operand_chars. */
{
register int c;
register char *p;
@@ -811,7 +819,6 @@ i386_print_statistics (file)
hash_print_statistics (file, "i386 register", reg_hash);
}
-
#ifdef DEBUG386
/* debugging routines for md_assemble */
@@ -856,8 +863,7 @@ pte (t)
{
int i;
fprintf (stdout, " %d operands ", t->operands);
- fprintf (stdout, "opcode %x ",
- t->base_opcode);
+ fprintf (stdout, "opcode %x ", t->base_opcode);
if (t->extension_opcode != None)
fprintf (stdout, "ext %x ", t->extension_opcode);
if (t->opcode_modifier & D)
@@ -987,7 +993,8 @@ reloc (size, pcrel, other)
int pcrel;
bfd_reloc_code_real_type other;
{
- if (other != NO_RELOC) return other;
+ if (other != NO_RELOC)
+ return other;
if (pcrel)
{
@@ -1013,15 +1020,14 @@ reloc (size, pcrel, other)
return BFD_RELOC_NONE;
}
-/*
- * Here we decide which fixups can be adjusted to make them relative to
- * the beginning of the section instead of the symbol. Basically we need
- * to make sure that the dynamic relocations are done correctly, so in
- * some cases we force the original symbol to be used.
- */
+/* Here we decide which fixups can be adjusted to make them relative to
+ the beginning of the section instead of the symbol. Basically we need
+ to make sure that the dynamic relocations are done correctly, so in
+ some cases we force the original symbol to be used. */
+
int
tc_i386_fix_adjustable (fixP)
- fixS * fixP;
+ fixS *fixP;
{
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
/* Prevent all adjustments to global symbols, or else dynamic
@@ -1050,14 +1056,13 @@ tc_i386_fix_adjustable (fixP)
#define BFD_RELOC_386_GOTOFF 0
#endif
-static int
-intel_float_operand PARAMS ((char *mnemonic));
+static int intel_float_operand PARAMS ((char *mnemonic));
static int
intel_float_operand (mnemonic)
char *mnemonic;
{
- if (mnemonic[0] == 'f' && mnemonic[1] =='i')
+ if (mnemonic[0] == 'f' && mnemonic[1] == 'i')
return 2;
if (mnemonic[0] == 'f')
@@ -1074,7 +1079,7 @@ void
md_assemble (line)
char *line;
{
- /* Points to template once we've found it. */
+ /* Points to template once we've found it. */
const template *t;
/* Count the size of the instruction generated. */
@@ -1084,7 +1089,7 @@ md_assemble (line)
char mnemonic[MAX_MNEM_SIZE];
- /* Initialize globals. */
+ /* Initialize globals. */
memset (&i, '\0', sizeof (i));
for (j = 0; j < MAX_OPERANDS; j++)
i.disp_reloc[j] = NO_RELOC;
@@ -1094,13 +1099,13 @@ md_assemble (line)
/* First parse an instruction mnemonic & call i386_operand for the operands.
We assume that the scrubber has arranged it so that line[0] is the valid
- start of a (possibly prefixed) mnemonic. */
+ start of a (possibly prefixed) mnemonic. */
{
char *l = line;
char *token_start = l;
char *mnem_p;
- /* Non-zero if we found a prefix only acceptable with string insns. */
+ /* Non-zero if we found a prefix only acceptable with string insns. */
const char *expecting_string_instruction = NULL;
while (1)
@@ -1157,8 +1162,7 @@ md_assemble (line)
case 0:
return;
case 2:
- expecting_string_instruction =
- current_templates->start->name;
+ expecting_string_instruction = current_templates->start->name;
break;
}
/* Skip past PREFIX_SEPARATOR and reset token_start. */
@@ -1202,12 +1206,12 @@ md_assemble (line)
/* Check if instruction is supported on specified architecture. */
if (cpu_arch_flags != 0)
{
- if (current_templates->start->cpu_flags & ~ cpu_arch_flags)
+ if (current_templates->start->cpu_flags & ~cpu_arch_flags)
{
as_warn (_("`%s' is not supported on `%s'"),
current_templates->start->name, cpu_arch_name);
}
- else if ((Cpu386 & ~ cpu_arch_flags) && !flag_16bit_code)
+ else if ((Cpu386 & ~cpu_arch_flags) && !flag_16bit_code)
{
as_warn (_("use .code16 to ensure correct addressing mode"));
}
@@ -1222,15 +1226,15 @@ md_assemble (line)
return;
}
- /* There may be operands to parse. */
+ /* There may be operands to parse. */
if (*l != END_OF_INSN)
{
/* parse operands */
- /* 1 if operand is pending after ','. */
+ /* 1 if operand is pending after ','. */
unsigned int expecting_operand = 0;
- /* Non-zero if operand parens not balanced. */
+ /* Non-zero if operand parens not balanced. */
unsigned int paren_not_balanced;
do
@@ -1288,7 +1292,7 @@ md_assemble (line)
l++;
}
if (l != token_start)
- { /* yes, we've read in another operand */
+ { /* Yes, we've read in another operand. */
unsigned int operand_ok;
this_operand = i.operands++;
if (i.operands > MAX_OPERANDS)
@@ -1297,11 +1301,13 @@ md_assemble (line)
MAX_OPERANDS);
return;
}
- /* now parse operand adding info to 'i' as we go along */
+ /* Now parse operand adding info to 'i' as we go along. */
END_STRING_AND_SAVE (l);
if (intel_syntax)
- operand_ok = i386_intel_operand (token_start, intel_float_operand (mnemonic));
+ operand_ok =
+ i386_intel_operand (token_start,
+ intel_float_operand (mnemonic));
else
operand_ok = i386_operand (token_start);
@@ -1343,7 +1349,7 @@ md_assemble (line)
Next, we find a template that matches the given insn,
making sure the overlap of the given operands types is consistent
- with the template operand types. */
+ with the template operand types. */
#define MATCH(overlap, given, template) \
((overlap & ~JumpAbsolute) \
@@ -1419,7 +1425,7 @@ md_assemble (line)
We can't do this properly yet, ie. excluding InOutPortReg,
but the following works for instructions with immediates.
In any case, we can't set i.suffix yet. */
- for (op = i.operands; --op >= 0; )
+ for (op = i.operands; --op >= 0;)
if (i.types[op] & Reg)
{
if (i.types[op] & Reg8)
@@ -1432,7 +1438,7 @@ md_assemble (line)
else if (flag_16bit_code ^ (i.prefix[DATA_PREFIX] != 0))
guess_suffix = WORD_MNEM_SUFFIX;
- for (op = i.operands; --op >= 0; )
+ for (op = i.operands; --op >= 0;)
if ((i.types[op] & Imm)
&& i.op[op].imms->X_op == O_constant)
{
@@ -1466,7 +1472,7 @@ md_assemble (line)
/* Try to use the smallest displacement type too. */
int op;
- for (op = i.operands; --op >= 0; )
+ for (op = i.operands; --op >= 0;)
if ((i.types[op] & Disp)
&& i.op[op].imms->X_op == O_constant)
{
@@ -1478,7 +1484,7 @@ md_assemble (line)
convert to a signed 16 bit number before trying
to see whether it will fit in an even smaller
size. */
-
+
disp = (((disp & 0xffff) ^ 0x8000) - 0x8000);
}
if (fits_in_signed_byte (disp))
@@ -1506,7 +1512,7 @@ md_assemble (line)
t < current_templates->end;
t++)
{
- /* Must have right number of operands. */
+ /* Must have right number of operands. */
if (i.operands != t->operands)
continue;
@@ -1519,7 +1525,8 @@ md_assemble (line)
continue;
else if (!t->operands)
- break; /* 0 operands always matches */
+ /* 0 operands always matches. */
+ break;
overlap0 = i.types[0] & t->operand_types[0];
switch (t->operands)
@@ -1538,12 +1545,11 @@ md_assemble (line)
overlap1, i.types[1],
t->operand_types[1]))
{
-
- /* check if other direction is valid ... */
+ /* Check if other direction is valid ... */
if ((t->opcode_modifier & (D|FloatD)) == 0)
continue;
- /* try reversing direction of operands */
+ /* Try reversing direction of operands. */
overlap0 = i.types[0] & t->operand_types[1];
overlap1 = i.types[1] & t->operand_types[0];
if (!MATCH (overlap0, i.types[0], t->operand_types[1])
@@ -1553,7 +1559,7 @@ md_assemble (line)
overlap1, i.types[1],
t->operand_types[0]))
{
- /* does not match either direction */
+ /* Does not match either direction. */
continue;
}
/* found_reverse_match holds which of D or FloatDR
@@ -1561,7 +1567,7 @@ md_assemble (line)
found_reverse_match = t->opcode_modifier & (D|FloatDR);
break;
}
- /* found a forward 2 operand match here */
+ /* Found a forward 2 operand match here. */
if (t->operands == 3)
{
/* Here we make use of the fact that there are no
@@ -1577,13 +1583,15 @@ md_assemble (line)
continue;
}
- /* found either forward/reverse 2 or 3 operand match here:
+ /* Found either forward/reverse 2 or 3 operand match here:
slip through to break */
}
- break; /* we've found a match; break out of loop */
- } /* for (t = ... */
+ /* We've found a match; break out of loop. */
+ break;
+ } /* for (t = ... */
if (t == current_templates->end)
- { /* we found no match */
+ {
+ /* We found no match. */
as_bad (_("suffix or operands invalid for `%s'"),
current_templates->start->name);
return;
@@ -1674,14 +1682,14 @@ md_assemble (line)
else if (i.reg_operands)
{
/* If there's no instruction mnemonic suffix we try to invent one
- based on register operands. */
+ based on register operands. */
if (!i.suffix)
{
/* We take i.suffix from the last register operand specified,
Destination register type is more significant than source
register type. */
int op;
- for (op = i.operands; --op >= 0; )
+ for (op = i.operands; --op >= 0;)
if ((i.types[op] & Reg)
&& !(i.tm.operand_types[op] & InOutPortReg))
{
@@ -1694,15 +1702,15 @@ md_assemble (line)
else if (i.suffix == BYTE_MNEM_SUFFIX)
{
int op;
- for (op = i.operands; --op >= 0; )
+ for (op = i.operands; --op >= 0;)
{
/* If this is an eight bit register, it's OK. If it's
the 16 or 32 bit version of an eight bit register,
- we will just use the low portion, and that's OK too. */
+ we will just use the low portion, and that's OK too. */
if (i.types[op] & Reg8)
continue;
- /* movzx and movsx should not generate this warning. */
+ /* movzx and movsx should not generate this warning. */
if (intel_syntax
&& (i.tm.base_opcode == 0xfb7
|| i.tm.base_opcode == 0xfb6
@@ -1746,11 +1754,12 @@ md_assemble (line)
else if (i.suffix == LONG_MNEM_SUFFIX)
{
int op;
- for (op = i.operands; --op >= 0; )
+
+ for (op = i.operands; --op >= 0;)
/* Reject eight bit registers, except where the template
requires them. (eg. movzb) */
if ((i.types[op] & Reg8) != 0
- && (i.tm.operand_types[op] & (Reg16|Reg32|Acc)) != 0)
+ && (i.tm.operand_types[op] & (Reg16 | Reg32 | Acc)) != 0)
{
as_bad (_("`%%%s' not allowed with `%s%c'"),
i.op[op].regs->reg_name,
@@ -1774,7 +1783,7 @@ md_assemble (line)
else if (i.suffix == WORD_MNEM_SUFFIX)
{
int op;
- for (op = i.operands; --op >= 0; )
+ for (op = i.operands; --op >= 0;)
/* Reject eight bit registers, except where the template
requires them. (eg. movzb) */
if ((i.types[op] & Reg8) != 0
@@ -1800,7 +1809,7 @@ md_assemble (line)
#endif
}
else
- abort();
+ abort ();
}
else if ((i.tm.opcode_modifier & DefaultSize) && !i.suffix)
{
@@ -1928,7 +1937,7 @@ md_assemble (line)
expressionS *exp;
- assert(i.imm_operands == 0 && i.operands <= 2 && 2 < MAX_OPERANDS);
+ assert (i.imm_operands == 0 && i.operands <= 2 && 2 < MAX_OPERANDS);
exp = &im_expressions[i.imm_operands++];
i.op[i.operands].imms = exp;
@@ -1938,7 +1947,7 @@ md_assemble (line)
i.tm.extension_opcode = None;
}
- /* For insns with operands there are more diddles to do to the opcode. */
+ /* For insns with operands there are more diddles to do to the opcode. */
if (i.operands)
{
/* Default segment register this instruction will use
@@ -1952,18 +1961,18 @@ md_assemble (line)
if (i.tm.opcode_modifier & regKludge)
{
unsigned int first_reg_op = (i.types[0] & Reg) ? 0 : 1;
- /* Pretend we saw the extra register operand. */
- assert (i.op[first_reg_op+1].regs == 0);
- i.op[first_reg_op+1].regs = i.op[first_reg_op].regs;
- i.types[first_reg_op+1] = i.types[first_reg_op];
+ /* Pretend we saw the extra register operand. */
+ assert (i.op[first_reg_op + 1].regs == 0);
+ i.op[first_reg_op + 1].regs = i.op[first_reg_op].regs;
+ i.types[first_reg_op + 1] = i.types[first_reg_op];
i.reg_operands = 2;
}
if (i.tm.opcode_modifier & ShortForm)
{
- /* The register or float register operand is in operand 0 or 1. */
+ /* The register or float register operand is in operand 0 or 1. */
unsigned int op = (i.types[0] & (Reg | FloatReg)) ? 0 : 1;
- /* Register goes in low 3 bits of opcode. */
+ /* Register goes in low 3 bits of opcode. */
i.tm.base_opcode |= i.op[op].regs->reg_num;
if (!quiet_warnings && (i.tm.opcode_modifier & Ugh) != 0)
{
@@ -1971,14 +1980,14 @@ md_assemble (line)
The first case can be generated by gcc (<= 2.8.1). */
if (i.operands == 2)
{
- /* reversed arguments on faddp, fsubp, etc. */
+ /* Reversed arguments on faddp, fsubp, etc. */
as_warn (_("translating to `%s %%%s,%%%s'"), i.tm.name,
i.op[1].regs->reg_name,
i.op[0].regs->reg_name);
}
else
{
- /* extraneous `l' suffix on fp insn */
+ /* Extraneous `l' suffix on fp insn. */
as_warn (_("translating to `%s %%%s'"), i.tm.name,
i.op[0].regs->reg_name);
}
@@ -1989,10 +1998,10 @@ md_assemble (line)
/* The opcode is completed (modulo i.tm.extension_opcode which
must be put into the modrm byte).
Now, we make the modrm & index base bytes based on all the
- info we've collected. */
+ info we've collected. */
/* i.reg_operands MUST be the number of real register operands;
- implicit registers do not count. */
+ implicit registers do not count. */
if (i.reg_operands == 2)
{
unsigned int source, dest;
@@ -2023,7 +2032,7 @@ md_assemble (line)
}
}
else
- { /* if it's not 2 reg operands... */
+ { /* If it's not 2 reg operands... */
if (i.mem_operands)
{
unsigned int fake_zero_displacement = 0;
@@ -2040,7 +2049,7 @@ md_assemble (line)
fake_zero_displacement = 1;
if (! i.index_reg)
{
- /* Operand is just <disp> */
+ /* Operand is just <disp> */
if (flag_16bit_code ^ (i.prefix[ADDR_PREFIX] != 0))
{
i.rm.regmem = NO_BASE_REGISTER_16;
@@ -2054,47 +2063,47 @@ md_assemble (line)
i.types[op] |= Disp32;
}
}
- else /* ! i.base_reg && i.index_reg */
+ else /* ! i.base_reg && i.index_reg */
{
i.sib.index = i.index_reg->reg_num;
i.sib.base = NO_BASE_REGISTER;
i.sib.scale = i.log2_scale_factor;
i.rm.regmem = ESCAPE_TO_TWO_BYTE_ADDRESSING;
i.types[op] &= ~Disp;
- i.types[op] |= Disp32; /* Must be 32 bit */
+ i.types[op] |= Disp32; /* Must be 32 bit. */
}
}
else if (i.base_reg->reg_type & Reg16)
{
switch (i.base_reg->reg_num)
{
- case 3: /* (%bx) */
+ case 3: /* (%bx) */
if (! i.index_reg)
i.rm.regmem = 7;
- else /* (%bx,%si) -> 0, or (%bx,%di) -> 1 */
+ else /* (%bx,%si) -> 0, or (%bx,%di) -> 1 */
i.rm.regmem = i.index_reg->reg_num - 6;
break;
- case 5: /* (%bp) */
+ case 5: /* (%bp) */
default_seg = &ss;
if (! i.index_reg)
{
i.rm.regmem = 6;
if ((i.types[op] & Disp) == 0)
{
- /* fake (%bp) into 0(%bp) */
+ /* fake (%bp) into 0(%bp) */
i.types[op] |= Disp8;
fake_zero_displacement = 1;
}
}
- else /* (%bp,%si) -> 2, or (%bp,%di) -> 3 */
+ else /* (%bp,%si) -> 2, or (%bp,%di) -> 3 */
i.rm.regmem = i.index_reg->reg_num - 6 + 2;
break;
- default: /* (%si) -> 4 or (%di) -> 5 */
+ default: /* (%si) -> 4 or (%di) -> 5 */
i.rm.regmem = i.base_reg->reg_num - 6 + 4;
}
i.rm.mode = mode_from_disp_size (i.types[op]);
}
- else /* i.base_reg and 32 bit mode */
+ else /* i.base_reg and 32 bit mode */
{
i.rm.regmem = i.base_reg->reg_num;
i.sib.base = i.base_reg->reg_num;
@@ -2139,7 +2148,7 @@ md_assemble (line)
if (fake_zero_displacement)
{
/* Fakes a zero displacement assuming that i.types[op]
- holds the correct displacement size. */
+ holds the correct displacement size. */
expressionS *exp;
assert (i.op[op].disps == 0);
@@ -2156,7 +2165,7 @@ md_assemble (line)
operand (if any) based on i.tm.extension_opcode.
Again, we must be careful to make sure that
segment/control/debug/test/MMX registers are coded
- into the i.rm.reg field. */
+ into the i.rm.reg field. */
if (i.reg_operands)
{
unsigned int op =
@@ -2172,7 +2181,7 @@ md_assemble (line)
? 1
: 2));
/* If there is an extension opcode to put here, the
- register number must be put into the regmem field. */
+ register number must be put into the regmem field. */
if (i.tm.extension_opcode != None)
i.rm.regmem = i.op[op].regs->reg_num;
else
@@ -2185,14 +2194,15 @@ md_assemble (line)
i.rm.mode = 3;
}
- /* Fill in i.rm.reg field with extension opcode (if any). */
+ /* Fill in i.rm.reg field with extension opcode (if any). */
if (i.tm.extension_opcode != None)
i.rm.reg = i.tm.extension_opcode;
}
}
else if (i.tm.opcode_modifier & (Seg2ShortForm | Seg3ShortForm))
{
- if (i.tm.base_opcode == POP_SEG_SHORT && i.op[0].regs->reg_num == 1)
+ if (i.tm.base_opcode == POP_SEG_SHORT
+ && i.op[0].regs->reg_num == 1)
{
as_bad (_("you can't `pop %%cs'"));
return;
@@ -2229,7 +2239,7 @@ md_assemble (line)
}
}
- /* Handle conversion of 'int $3' --> special int3 insn. */
+ /* Handle conversion of 'int $3' --> special int3 insn. */
if (i.tm.base_opcode == INT_OPCODE && i.op[0].imms->X_add_number == 3)
{
i.tm.base_opcode = INT3_OPCODE;
@@ -2246,11 +2256,11 @@ md_assemble (line)
i.op[0].disps->X_op = O_symbol;
}
- /* We are ready to output the insn. */
+ /* We are ready to output the insn. */
{
register char *p;
- /* Output jumps. */
+ /* Output jumps. */
if (i.tm.opcode_modifier & Jump)
{
int size;
@@ -2346,7 +2356,7 @@ md_assemble (line)
}
else
{
- /* opcode can be at most two bytes */
+ /* Opcode can be at most two bytes. */
insn_size += 2 + size;
p = frag_more (2 + size);
*p++ = (i.tm.base_opcode >> 8) & 0xff;
@@ -2381,7 +2391,8 @@ md_assemble (line)
if (i.prefixes != 0 && !intel_syntax)
as_warn (_("skipping prefixes on this instruction"));
- insn_size += prefix + 1 + 2 + size; /* 1 opcode; 2 segment; offset */
+ /* 1 opcode; 2 segment; offset */
+ insn_size += prefix + 1 + 2 + size;
p = frag_more (prefix + 1 + 2 + size);
if (prefix)
*p++ = DATA_PREFIX_OPCODE;
@@ -2409,10 +2420,10 @@ md_assemble (line)
}
else
{
- /* Output normal instructions here. */
+ /* Output normal instructions here. */
unsigned char *q;
- /* The prefix bytes. */
+ /* The prefix bytes. */
for (q = i.prefix;
q < i.prefix + sizeof (i.prefix) / sizeof (i.prefix[0]);
q++)
@@ -2425,7 +2436,7 @@ md_assemble (line)
}
}
- /* Now the opcode; be careful about word order here! */
+ /* Now the opcode; be careful about word order here! */
if (fits_in_unsigned_byte (i.tm.base_opcode))
{
insn_size += 1;
@@ -2435,12 +2446,12 @@ md_assemble (line)
{
insn_size += 2;
p = frag_more (2);
- /* put out high byte first: can't use md_number_to_chars! */
+ /* Put out high byte first: can't use md_number_to_chars! */
*p++ = (i.tm.base_opcode >> 8) & 0xff;
*p = i.tm.base_opcode & 0xff;
}
else
- { /* opcode is either 3 or 4 bytes */
+ { /* Opcode is either 3 or 4 bytes. */
if (i.tm.base_opcode & 0xff000000)
{
insn_size += 4;
@@ -2526,9 +2537,9 @@ md_assemble (line)
}
}
}
- } /* end displacement output */
+ } /* End displacement output. */
- /* output immediate */
+ /* Output immediate. */
if (i.imm_operands)
{
register unsigned int n;
@@ -2556,10 +2567,10 @@ md_assemble (line)
md_number_to_chars (p, val, size);
}
else
- { /* not absolute_section */
+ { /* Not absolute_section. */
/* Need a 32-bit fixup (don't support 8bit
non-absolute imms). Try to support other
- sizes ... */
+ sizes ... */
#ifdef BFD_ASSEMBLER
enum bfd_reloc_code_real reloc_type;
#else
@@ -2594,7 +2605,7 @@ md_assemble (line)
}
}
}
- } /* end immediate output */
+ } /* end immediate output */
}
#ifdef DEBUG386
@@ -2602,7 +2613,7 @@ md_assemble (line)
{
pi (line, &i);
}
-#endif /* DEBUG386 */
+#endif /* DEBUG386 */
}
}
@@ -2614,7 +2625,7 @@ i386_immediate (imm_start)
{
char *save_input_line_pointer;
segT exp_seg = 0;
- expressionS * exp;
+ expressionS *exp;
if (i.imm_operands == MAX_IMMEDIATE_OPERANDS)
{
@@ -2633,12 +2644,10 @@ i386_immediate (imm_start)
#ifndef LEX_AT
{
- /*
- * We can have operands of the form
- * <symbol>@GOTOFF+<nnn>
- * Take the easy way out here and copy everything
- * into a temporary buffer...
- */
+ /* We can have operands of the form
+ <symbol>@GOTOFF+<nnn>
+ Take the easy way out here and copy everything
+ into a temporary buffer... */
register char *cp;
cp = strchr (input_line_pointer, '@');
@@ -2648,7 +2657,7 @@ i386_immediate (imm_start)
int len = 0;
int first;
- /* GOT relocations are not supported in 16 bit mode */
+ /* GOT relocations are not supported in 16 bit mode. */
if (flag_16bit_code)
as_bad (_("GOT relocations not supported in 16 bit mode"));
@@ -2676,7 +2685,7 @@ i386_immediate (imm_start)
/* Replace the relocation token with ' ', so that errors like
foo@GOTOFF1 will be detected. */
first = cp - input_line_pointer;
- tmpbuf = (char *) alloca (strlen(input_line_pointer));
+ tmpbuf = (char *) alloca (strlen (input_line_pointer));
memcpy (tmpbuf, input_line_pointer, first);
tmpbuf[first] = ' ';
strcpy (tmpbuf + first + 1, cp + 1 + len);
@@ -2695,7 +2704,7 @@ i386_immediate (imm_start)
if (exp->X_op == O_absent || exp->X_op == O_big)
{
- /* missing or bad expr becomes absolute 0 */
+ /* Missing or bad expr becomes absolute 0. */
as_bad (_("missing or invalid immediate expression `%s' taken as 0"),
imm_start);
exp->X_op = O_constant;
@@ -2706,14 +2715,15 @@ i386_immediate (imm_start)
if (exp->X_op == O_constant)
{
- i.types[this_operand] |= Imm32; /* Size it properly later. */
+ /* Size it properly later. */
+ i.types[this_operand] |= Imm32;
}
#if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT))
- else if (
+ else if (1
#ifdef BFD_ASSEMBLER
- OUTPUT_FLAVOR == bfd_target_aout_flavour &&
+ && OUTPUT_FLAVOR == bfd_target_aout_flavour
#endif
- exp_seg != text_section
+ && exp_seg != text_section
&& exp_seg != data_section
&& exp_seg != bss_section
&& exp_seg != undefined_section
@@ -2846,20 +2856,17 @@ i386_displacement (disp_start, disp_end)
rorl $16,%edx
#NO_APP
- So here we provide the missing zero.
- */
+ So here we provide the missing zero. */
*displacement_string_end = '0';
}
#endif
#ifndef LEX_AT
{
- /*
- * We can have operands of the form
- * <symbol>@GOTOFF+<nnn>
- * Take the easy way out here and copy everything
- * into a temporary buffer...
- */
+ /* We can have operands of the form
+ <symbol>@GOTOFF+<nnn>
+ Take the easy way out here and copy everything
+ into a temporary buffer... */
register char *cp;
cp = strchr (input_line_pointer, '@');
@@ -2869,7 +2876,7 @@ i386_displacement (disp_start, disp_end)
int len = 0;
int first;
- /* GOT relocations are not supported in 16 bit mode */
+ /* GOT relocations are not supported in 16 bit mode. */
if (flag_16bit_code)
as_bad (_("GOT relocations not supported in 16 bit mode"));
@@ -2897,7 +2904,7 @@ i386_displacement (disp_start, disp_end)
/* Replace the relocation token with ' ', so that errors like
foo@GOTOFF1 will be detected. */
first = cp - input_line_pointer;
- tmpbuf = (char *) alloca (strlen(input_line_pointer));
+ tmpbuf = (char *) alloca (strlen (input_line_pointer));
memcpy (tmpbuf, input_line_pointer, first);
tmpbuf[first] = ' ';
strcpy (tmpbuf + first + 1, cp + 1 + len);
@@ -2911,7 +2918,7 @@ i386_displacement (disp_start, disp_end)
#ifdef BFD_ASSEMBLER
/* We do this to make sure that the section symbol is in
the symbol table. We will ultimately change the relocation
- to be relative to the beginning of the section */
+ to be relative to the beginning of the section. */
if (i.disp_reloc[this_operand] == BFD_RELOC_386_GOTOFF)
{
if (S_IS_LOCAL(exp->X_add_symbol)
@@ -2936,7 +2943,7 @@ i386_displacement (disp_start, disp_end)
if (exp->X_op == O_absent || exp->X_op == O_big)
{
- /* missing or bad expr becomes absolute 0 */
+ /* Missing or bad expr becomes absolute 0. */
as_bad (_("missing or invalid displacement expression `%s' taken as 0"),
disp_start);
exp->X_op = O_constant;
@@ -2982,7 +2989,7 @@ i386_operand_modifier (op_string, got_a_float)
}
else if (!strncasecmp (*op_string, "WORD PTR", 8))
{
- if (got_a_float == 2) /* "fi..." */
+ if (got_a_float == 2) /* "fi..." */
i.suffix = SHORT_MNEM_SUFFIX;
else
i.suffix = WORD_MNEM_SUFFIX;
@@ -2992,7 +2999,7 @@ i386_operand_modifier (op_string, got_a_float)
else if (!strncasecmp (*op_string, "DWORD PTR", 9))
{
- if (got_a_float == 1) /* "f..." */
+ if (got_a_float == 1) /* "f..." */
i.suffix = SHORT_MNEM_SUFFIX;
else
i.suffix = LONG_MNEM_SUFFIX;
@@ -3055,7 +3062,7 @@ build_displacement_string (initial_disp, op_string)
return temp_string;
}
- /* Build the whole displacement string */
+ /* Build the whole displacement string. */
if (initial_disp)
{
strncpy (temp_string, op_string, end_of_operand_string - op_string);
@@ -3076,7 +3083,7 @@ build_displacement_string (initial_disp, op_string)
if (is_space_char (*temp_disp))
temp_disp++;
- /* Don't consider registers */
+ /* Don't consider registers. */
if ( !((*temp_disp == REGISTER_PREFIX || allow_naked_reg)
&& parse_register (temp_disp, &end_op)) )
{
@@ -3116,7 +3123,7 @@ i386_parse_seg (op_string)
if (is_space_char (*op_string))
++op_string;
- /* Should be one of es, cs, ss, ds fs or gs */
+ /* Should be one of es, cs, ss, ds fs or gs. */
switch (*op_string++)
{
case 'e':
@@ -3164,8 +3171,8 @@ i386_parse_seg (op_string)
static int i386_index_check PARAMS((const char *));
/* Make sure the memory operand we've been dealt is valid.
- Returns 1 on success, 0 on a failure.
-*/
+ Return 1 on success, 0 on a failure. */
+
static int
i386_index_check (operand_string)
const char *operand_string;
@@ -3176,7 +3183,7 @@ i386_index_check (operand_string)
tryprefix:
#endif
if (flag_16bit_code ^ (i.prefix[ADDR_PREFIX] != 0)
- /* 16 bit mode checks */
+ /* 16 bit mode checks. */
? ((i.base_reg
&& ((i.base_reg->reg_type & (Reg16|BaseIndex))
!= (Reg16|BaseIndex)))
@@ -3187,7 +3194,7 @@ i386_index_check (operand_string)
&& i.base_reg->reg_num < 6
&& i.index_reg->reg_num >= 6
&& i.log2_scale_factor == 0))))
- /* 32 bit mode checks */
+ /* 32 bit mode checks. */
: ((i.base_reg
&& (i.base_reg->reg_type & Reg32) == 0)
|| (i.index_reg
@@ -3203,8 +3210,7 @@ i386_index_check (operand_string)
Disp16 or Disp32 is set.
FIXME. There doesn't seem to be any real need for separate
Disp16 and Disp32 flags. The same goes for Imm16 and Imm32.
- Removing them would probably clean up the code quite a lot.
- */
+ Removing them would probably clean up the code quite a lot. */
if (i.types[this_operand] & (Disp16|Disp32))
i.types[this_operand] ^= (Disp16|Disp32);
fudged = 1;
@@ -3255,7 +3261,7 @@ i386_intel_memory_operand (operand_string)
}
}
- /* Look for displacement preceding open bracket */
+ /* Look for displacement preceding open bracket. */
if (*op_string != '[')
{
char *temp_string;
@@ -3384,7 +3390,7 @@ i386_intel_operand (operand_string, got_a_float)
char *operand_string;
int got_a_float;
{
- const reg_entry * r;
+ const reg_entry *r;
char *end_op;
char *op_string = operand_string;
@@ -3470,7 +3476,7 @@ i386_intel_operand (operand_string, got_a_float)
}
/* Parse OPERAND_STRING into the i386_insn structure I. Returns non-zero
- on error. */
+ on error. */
static int
i386_operand (operand_string)
@@ -3484,7 +3490,7 @@ i386_operand (operand_string)
++op_string;
/* We check for an absolute prefix (differentiating,
- for example, 'jmp pc_relative_label' from 'jmp *absolute_label'. */
+ for example, 'jmp pc_relative_label' from 'jmp *absolute_label'. */
if (*op_string == ABSOLUTE_PREFIX)
{
++op_string;
@@ -3493,7 +3499,7 @@ i386_operand (operand_string)
i.types[this_operand] |= JumpAbsolute;
}
- /* Check if operand is a register. */
+ /* Check if operand is a register. */
if ((*op_string == REGISTER_PREFIX || allow_naked_reg)
&& (r = parse_register (op_string, &end_op)) != NULL)
{
@@ -3539,7 +3545,7 @@ i386_operand (operand_string)
as_bad (_("bad memory operand `%s'"), op_string);
return 0;
}
- /* Handle case of %es:*foo. */
+ /* Handle case of %es:*foo. */
if (*op_string == ABSOLUTE_PREFIX)
{
++op_string;
@@ -3564,7 +3570,7 @@ i386_operand (operand_string)
return 0;
}
else if (*op_string == IMMEDIATE_PREFIX)
- { /* ... or an immediate */
+ { /* ... or an immediate */
++op_string;
if (i.types[this_operand] & JumpAbsolute)
{
@@ -3578,10 +3584,10 @@ i386_operand (operand_string)
|| is_identifier_char (*op_string)
|| *op_string == '(' )
{
- /* This is a memory reference of some sort. */
+ /* This is a memory reference of some sort. */
char *base_string;
- /* Start and end of displacement string expression (if found). */
+ /* Start and end of displacement string expression (if found). */
char *displacement_string_start;
char *displacement_string_end;
@@ -3605,7 +3611,7 @@ i386_operand (operand_string)
if (is_space_char (*base_string))
--base_string;
- /* If we only have a displacement, set-up for it to be parsed later. */
+ /* If we only have a displacement, set-up for it to be parsed later. */
displacement_string_start = op_string;
displacement_string_end = base_string + 1;
@@ -3614,7 +3620,7 @@ i386_operand (operand_string)
char *temp_string;
unsigned int parens_balanced = 1;
/* We've already checked that the number of left & right ()'s are
- equal, so this loop will not be infinite. */
+ equal, so this loop will not be infinite. */
do
{
base_string--;
@@ -3679,7 +3685,7 @@ i386_operand (operand_string)
return 0;
}
- /* Check for scale factor. */
+ /* Check for scale factor. */
if (isdigit ((unsigned char) *base_string))
{
if (!i386_scale (base_string))
@@ -3743,14 +3749,14 @@ i386_operand (operand_string)
i.mem_operands++;
}
else
- { /* it's not a memory operand; argh! */
+ { /* It's not a memory operand; argh! */
as_bad (_("invalid char %s beginning operand %d `%s'"),
output_invalid (*op_string),
this_operand + 1,
op_string);
return 0;
}
- return 1; /* normal return */
+ return 1; /* Normal return. */
}
/* md_estimate_size_before_relax()
@@ -3805,8 +3811,10 @@ md_estimate_size_before_relax (fragP, segment)
switch (opcode[0])
{
- case JUMP_PC_RELATIVE: /* make jmp (0xeb) a dword displacement jump */
- opcode[0] = 0xe9; /* dword disp jmp */
+ case JUMP_PC_RELATIVE:
+ /* Make jmp (0xeb) a dword displacement jump. */
+ /* dword disp jmp */
+ opcode[0] = 0xe9;
fragP->fr_fix += size;
fix_new (fragP, old_fr_fix, size,
fragP->fr_symbol,
@@ -3819,7 +3827,8 @@ md_estimate_size_before_relax (fragP, segment)
to the dword-displacement jump 0x0f,0x8N. */
opcode[1] = opcode[0] + 0x10;
opcode[0] = TWO_BYTE_OPCODE_ESCAPE;
- fragP->fr_fix += 1 + size; /* we've added an opcode byte */
+ /* We've added an opcode byte. */
+ fragP->fr_fix += 1 + size;
fix_new (fragP, old_fr_fix + 1, size,
fragP->fr_symbol,
fragP->fr_offset, 1,
@@ -3829,20 +3838,19 @@ md_estimate_size_before_relax (fragP, segment)
frag_wane (fragP);
return fragP->fr_fix - old_fr_fix;
}
- return 1; /* Guess a short jump. */
+ /* Guess a short jump. */
+ return 1;
}
-/*
- * md_convert_frag();
- *
- * Called after relax() is finished.
- * In: Address of frag.
- * fr_type == rs_machine_dependent.
- * fr_subtype is what the address relaxed to.
- *
- * Out: Any fixSs and constants are set up.
- * Caller will turn frag into a ".space 0".
- */
+/* Called after relax() is finished.
+
+ In: Address of frag.
+ fr_type == rs_machine_dependent.
+ fr_subtype is what the address relaxed to.
+
+ Out: Any fixSs and constants are set up.
+ Caller will turn frag into a ".space 0". */
+
#ifndef BFD_ASSEMBLER
void
md_convert_frag (headers, sec, fragP)
@@ -3866,16 +3874,17 @@ md_convert_frag (abfd, sec, fragP)
opcode = (unsigned char *) fragP->fr_opcode;
- /* Address we want to reach in file space. */
+ /* Address we want to reach in file space. */
target_address = S_GET_VALUE (fragP->fr_symbol) + fragP->fr_offset;
-#ifdef BFD_ASSEMBLER /* not needed otherwise? */
+#ifdef BFD_ASSEMBLER
+ /* Not needed otherwise? */
target_address += symbol_get_frag (fragP->fr_symbol)->fr_address;
#endif
- /* Address opcode resides at in file space. */
+ /* Address opcode resides at in file space. */
opcode_address = fragP->fr_address + fragP->fr_fix;
- /* Displacement from opcode start to fill into instruction. */
+ /* Displacement from opcode start to fill into instruction. */
displacement_from_opcode_start = target_address - opcode_address;
switch (fragP->fr_subtype)
@@ -3884,33 +3893,33 @@ md_convert_frag (abfd, sec, fragP)
case ENCODE_RELAX_STATE (COND_JUMP, SMALL16):
case ENCODE_RELAX_STATE (UNCOND_JUMP, SMALL):
case ENCODE_RELAX_STATE (UNCOND_JUMP, SMALL16):
- /* don't have to change opcode */
- extension = 1; /* 1 opcode + 1 displacement */
+ /* Don't have to change opcode. */
+ extension = 1; /* 1 opcode + 1 displacement */
where_to_put_displacement = &opcode[1];
break;
case ENCODE_RELAX_STATE (COND_JUMP, BIG):
- extension = 5; /* 2 opcode + 4 displacement */
+ extension = 5; /* 2 opcode + 4 displacement */
opcode[1] = opcode[0] + 0x10;
opcode[0] = TWO_BYTE_OPCODE_ESCAPE;
where_to_put_displacement = &opcode[2];
break;
case ENCODE_RELAX_STATE (UNCOND_JUMP, BIG):
- extension = 4; /* 1 opcode + 4 displacement */
+ extension = 4; /* 1 opcode + 4 displacement */
opcode[0] = 0xe9;
where_to_put_displacement = &opcode[1];
break;
case ENCODE_RELAX_STATE (COND_JUMP, BIG16):
- extension = 3; /* 2 opcode + 2 displacement */
+ extension = 3; /* 2 opcode + 2 displacement */
opcode[1] = opcode[0] + 0x10;
opcode[0] = TWO_BYTE_OPCODE_ESCAPE;
where_to_put_displacement = &opcode[2];
break;
case ENCODE_RELAX_STATE (UNCOND_JUMP, BIG16):
- extension = 2; /* 1 opcode + 2 displacement */
+ extension = 2; /* 1 opcode + 2 displacement */
opcode[0] = 0xe9;
where_to_put_displacement = &opcode[1];
break;
@@ -3919,17 +3928,21 @@ md_convert_frag (abfd, sec, fragP)
BAD_CASE (fragP->fr_subtype);
break;
}
- /* now put displacement after opcode */
+ /* Now put displacement after opcode. */
md_number_to_chars ((char *) where_to_put_displacement,
(valueT) (displacement_from_opcode_start - extension),
SIZE_FROM_RELAX_STATE (fragP->fr_subtype));
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;
-int md_short_jump_size = 2; /* size of byte displacement jmp */
-int md_long_jump_size = 5; /* size of dword displacement jmp */
-const int md_reloc_size = 8; /* Size of relocation record */
+/* Size of relocation record. */
+const int md_reloc_size = 8;
void
md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol)
@@ -3941,7 +3954,8 @@ md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol)
offsetT offset;
offset = to_addr - (from_addr + 2);
- md_number_to_chars (ptr, (valueT) 0xeb, 1); /* opcode for byte-disp jump */
+ /* Opcode for byte-disp jump. */
+ md_number_to_chars (ptr, (valueT) 0xeb, 1);
md_number_to_chars (ptr + 1, (valueT) offset, 1);
}
@@ -3968,9 +3982,14 @@ md_create_long_jump (ptr, from_addr, to_addr, frag, to_symbol)
int
md_apply_fix3 (fixP, valp, seg)
- fixS *fixP; /* The fix we're to put in. */
- valueT *valp; /* Pointer to the value of the bits. */
- segT seg ATTRIBUTE_UNUSED; /* Segment fix is from. */
+ /* The fix we're to put in. */
+ fixS *fixP;
+
+ /* Pointer to the value of the bits. */
+ valueT *valp;
+
+ /* Segment fix is from. */
+ segT seg ATTRIBUTE_UNUSED;
{
register char *p = fixP->fx_where + fixP->fx_frag->fr_literal;
valueT value = *valp;
@@ -4042,19 +4061,20 @@ md_apply_fix3 (fixP, valp, seg)
}
/* Fix a few things - the dynamic linker expects certain values here,
- and we must not dissappoint it. */
+ and we must not dissappoint it. */
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
if (OUTPUT_FLAVOR == bfd_target_elf_flavour
&& fixP->fx_addsy)
- switch (fixP->fx_r_type) {
- case BFD_RELOC_386_PLT32:
- /* Make the jump instruction point to the address of the operand. At
- runtime we merely add the offset to the actual PLT entry. */
- value = -4;
- break;
- case BFD_RELOC_386_GOTPC:
-/*
- * This is tough to explain. We end up with this one if we have
+ switch (fixP->fx_r_type)
+ {
+ case BFD_RELOC_386_PLT32:
+ /* Make the jump instruction point to the address of the operand. At
+ runtime we merely add the offset to the actual PLT entry. */
+ value = -4;
+ break;
+ case BFD_RELOC_386_GOTPC:
+
+/* This is tough to explain. We end up with this one if we have
* operands that look like "_GLOBAL_OFFSET_TABLE_+[.-.L284]". The goal
* here is to obtain the absolute address of the GOT, and it is strongly
* preferable from a performance point of view to avoid using a runtime
@@ -4089,38 +4109,40 @@ md_apply_fix3 (fixP, valp, seg)
* explicitly mentioned, and I wonder whether it would simplify matters
* to do it this way. Who knows. In earlier versions of the PIC patches,
* the pcrel_adjust field was used to store the correction, but since the
- * expression is not pcrel, I felt it would be confusing to do it this way.
- */
- value -= 1;
- break;
- case BFD_RELOC_386_GOT32:
- value = 0; /* Fully resolved at runtime. No addend. */
- break;
- case BFD_RELOC_386_GOTOFF:
- break;
-
- case BFD_RELOC_VTABLE_INHERIT:
- case BFD_RELOC_VTABLE_ENTRY:
- fixP->fx_done = 0;
- return 1;
-
- default:
- break;
- }
-#endif /* defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) */
+ * expression is not pcrel, I felt it would be confusing to do it this
+ * way. */
+
+ value -= 1;
+ break;
+ case BFD_RELOC_386_GOT32:
+ value = 0; /* Fully resolved at runtime. No addend. */
+ break;
+ case BFD_RELOC_386_GOTOFF:
+ break;
+
+ case BFD_RELOC_VTABLE_INHERIT:
+ case BFD_RELOC_VTABLE_ENTRY:
+ fixP->fx_done = 0;
+ return 1;
+
+ default:
+ break;
+ }
+#endif /* defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) */
*valp = value;
-#endif /* defined (BFD_ASSEMBLER) && !defined (TE_Mach) */
+#endif /* defined (BFD_ASSEMBLER) && !defined (TE_Mach) */
md_number_to_chars (p, value, fixP->fx_size);
return 1;
}
-
#define MAX_LITTLENUMS 6
-/* Turn the string pointed to by litP into a floating point constant of type
- type, and emit the appropriate bytes. The number of LITTLENUMS emitted
- is stored in *sizeP . An error message is returned, or NULL on OK. */
+/* Turn the string pointed to by litP into a floating point constant
+ of type TYPE, and emit the appropriate bytes. The number of
+ LITTLENUMS emitted is stored in *SIZEP. An error message is
+ returned, or NULL on OK. */
+
char *
md_atof (type, litP, sizeP)
int type;
@@ -4181,7 +4203,6 @@ output_invalid (c)
return output_invalid_buf;
}
-
/* REG_STRING starts *before* REGISTER_PREFIX. */
static const reg_entry *
@@ -4214,7 +4235,7 @@ parse_register (reg_string, end_op)
r = (const reg_entry *) hash_find (reg_hash, reg_name_given);
/* Handle floating point regs, allowing spaces in the (i) part. */
- if (r == i386_regtab /* %st is first entry of table */)
+ if (r == i386_regtab /* %st is first entry of table */)
{
if (is_space_char (*s))
++s;
@@ -4235,7 +4256,7 @@ parse_register (reg_string, end_op)
return r;
}
}
- /* We have "%st(" then garbage */
+ /* We have "%st(" then garbage. */
return (const reg_entry *) NULL;
}
}
@@ -4315,14 +4336,14 @@ md_show_usage (stream)
/* Pick the target format to use. */
-const char *
+const char *
i386_target_format ()
{
switch (OUTPUT_FLAVOR)
{
#ifdef OBJ_MAYBE_AOUT
case bfd_target_aout_flavour:
- return AOUT_TARGET_FORMAT;
+ return AOUT_TARGET_FORMAT;
#endif
#ifdef OBJ_MAYBE_COFF
case bfd_target_coff_flavour:
@@ -4338,8 +4359,8 @@ i386_target_format ()
}
}
-#endif /* OBJ_MAYBE_ more than one */
-#endif /* BFD_ASSEMBLER */
+#endif /* OBJ_MAYBE_ more than one */
+#endif /* BFD_ASSEMBLER */
symbolS *
md_undefined_symbol (name)
@@ -4363,6 +4384,7 @@ md_undefined_symbol (name)
}
/* Round up a section size to the appropriate boundary. */
+
valueT
md_section_align (segment, size)
segT segment ATTRIBUTE_UNUSED;
@@ -4414,7 +4436,6 @@ s_bss (ignore)
#endif
-
#ifdef BFD_ASSEMBLER
void
@@ -4512,7 +4533,7 @@ tc_gen_reloc (section, fixp)
return rel;
}
-#else /* ! BFD_ASSEMBLER */
+#else /* ! BFD_ASSEMBLER */
#if (defined(OBJ_AOUT) | defined(OBJ_BOUT))
void
@@ -4521,12 +4542,10 @@ tc_aout_fix_to_chars (where, fixP, segment_address_in_file)
fixS *fixP;
relax_addressT segment_address_in_file;
{
- /*
- * In: length of relocation (or of address) in chars: 1, 2 or 4.
- * Out: GNU LD relocation length code: 0, 1, or 2.
- */
+ /* In: length of relocation (or of address) in chars: 1, 2 or 4.
+ Out: GNU LD relocation length code: 0, 1, or 2. */
- static const unsigned char nbytes_r_length[] = {42, 0, 1, 42, 2};
+ static const unsigned char nbytes_r_length[] = { 42, 0, 1, 42, 2 };
long r_symbolnum;
know (fixP->fx_addsy != NULL);
@@ -4548,7 +4567,7 @@ tc_aout_fix_to_chars (where, fixP, segment_address_in_file)
| (((fixP->fx_pcrel << 0) & 0x01) & 0x0f));
}
-#endif /* OBJ_AOUT or OBJ_BOUT */
+#endif /* OBJ_AOUT or OBJ_BOUT. */
#if defined (I386COFF)
@@ -4578,8 +4597,6 @@ tc_coff_sizemachdep (frag)
return 0;
}
-#endif /* I386COFF */
+#endif /* I386COFF */
-#endif /* ! BFD_ASSEMBLER */
-
-/* end of tc-i386.c */
+#endif /* ! BFD_ASSEMBLER */
diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c
index 80d938b..1984f54 100644
--- a/gas/config/tc-sparc.c
+++ b/gas/config/tc-sparc.c
@@ -1420,10 +1420,12 @@ sparc_ip (str, pinsn)
goto error;
}
kmask |= mask;
- while (*s == ' ') { ++s; continue; }
+ while (*s == ' ')
+ ++s;
if (*s == '|' || *s == '+')
++s;
- while (*s == ' ') { ++s; continue; }
+ while (*s == ' ')
+ ++s;
}
}
else