/* Functions called by parser. */
/* ARM instructions. */
-static void do_arit PARAMS ((char *, unsigned long));
-static void do_cmp PARAMS ((char *, unsigned long));
-static void do_mov PARAMS ((char *, unsigned long));
-static void do_ldst PARAMS ((char *, unsigned long));
-static void do_ldstt PARAMS ((char *, unsigned long));
-static void do_ldmstm PARAMS ((char *, unsigned long));
-static void do_branch PARAMS ((char *, unsigned long));
-static void do_swi PARAMS ((char *, unsigned long));
+static void do_arit PARAMS ((char *));
+static void do_cmp PARAMS ((char *));
+static void do_mov PARAMS ((char *));
+static void do_ldst PARAMS ((char *));
+static void do_ldstt PARAMS ((char *));
+static void do_ldmstm PARAMS ((char *));
+static void do_branch PARAMS ((char *));
+static void do_swi PARAMS ((char *));
/* Pseudo Op codes. */
-static void do_adr PARAMS ((char *, unsigned long));
-static void do_adrl PARAMS ((char *, unsigned long));
-static void do_empty PARAMS ((char *, unsigned long));
+static void do_adr PARAMS ((char *));
+static void do_adrl PARAMS ((char *));
+static void do_empty PARAMS ((char *));
/* ARM v2. */
-static void do_mul PARAMS ((char *, unsigned long));
-static void do_mla PARAMS ((char *, unsigned long));
+static void do_mul PARAMS ((char *));
+static void do_mla PARAMS ((char *));
/* ARM v2S. */
-static void do_swap PARAMS ((char *, unsigned long));
+static void do_swap PARAMS ((char *));
/* ARM v3. */
-static void do_msr PARAMS ((char *, unsigned long));
-static void do_mrs PARAMS ((char *, unsigned long));
+static void do_msr PARAMS ((char *));
+static void do_mrs PARAMS ((char *));
/* ARM v3M. */
-static void do_mull PARAMS ((char *, unsigned long));
+static void do_mull PARAMS ((char *));
/* ARM v4. */
-static void do_ldstv4 PARAMS ((char *, unsigned long));
+static void do_ldstv4 PARAMS ((char *));
/* ARM v4T. */
-static void do_bx PARAMS ((char *, unsigned long));
+static void do_bx PARAMS ((char *));
/* ARM v5. */
-static void do_blx PARAMS ((char *, unsigned long));
-static void do_bkpt PARAMS ((char *, unsigned long));
-static void do_clz PARAMS ((char *, unsigned long));
-static void do_lstc2 PARAMS ((char *, unsigned long));
-static void do_cdp2 PARAMS ((char *, unsigned long));
-static void do_co_reg2 PARAMS ((char *, unsigned long));
+static void do_blx PARAMS ((char *));
+static void do_bkpt PARAMS ((char *));
+static void do_clz PARAMS ((char *));
+static void do_lstc2 PARAMS ((char *));
+static void do_cdp2 PARAMS ((char *));
+static void do_co_reg2 PARAMS ((char *));
/* ARM v5ExP. */
-static void do_smla PARAMS ((char *, unsigned long));
-static void do_smlal PARAMS ((char *, unsigned long));
-static void do_smul PARAMS ((char *, unsigned long));
-static void do_qadd PARAMS ((char *, unsigned long));
+static void do_smla PARAMS ((char *));
+static void do_smlal PARAMS ((char *));
+static void do_smul PARAMS ((char *));
+static void do_qadd PARAMS ((char *));
/* ARM v5E. */
-static void do_pld PARAMS ((char *, unsigned long));
-static void do_ldrd PARAMS ((char *, unsigned long));
-static void do_co_reg2c PARAMS ((char *, unsigned long));
+static void do_pld PARAMS ((char *));
+static void do_ldrd PARAMS ((char *));
+static void do_co_reg2c PARAMS ((char *));
/* Coprocessor Instructions. */
-static void do_cdp PARAMS ((char *, unsigned long));
-static void do_lstc PARAMS ((char *, unsigned long));
-static void do_co_reg PARAMS ((char *, unsigned long));
+static void do_cdp PARAMS ((char *));
+static void do_lstc PARAMS ((char *));
+static void do_co_reg PARAMS ((char *));
/* FPA instructions. */
-static void do_fpa_ctrl PARAMS ((char *, unsigned long));
-static void do_fpa_ldst PARAMS ((char *, unsigned long));
-static void do_fpa_ldmstm PARAMS ((char *, unsigned long));
-static void do_fpa_dyadic PARAMS ((char *, unsigned long));
-static void do_fpa_monadic PARAMS ((char *, unsigned long));
-static void do_fpa_cmp PARAMS ((char *, unsigned long));
-static void do_fpa_from_reg PARAMS ((char *, unsigned long));
-static void do_fpa_to_reg PARAMS ((char *, unsigned long));
+static void do_fpa_ctrl PARAMS ((char *));
+static void do_fpa_ldst PARAMS ((char *));
+static void do_fpa_ldmstm PARAMS ((char *));
+static void do_fpa_dyadic PARAMS ((char *));
+static void do_fpa_monadic PARAMS ((char *));
+static void do_fpa_cmp PARAMS ((char *));
+static void do_fpa_from_reg PARAMS ((char *));
+static void do_fpa_to_reg PARAMS ((char *));
/* XScale. */
-static void do_mia PARAMS ((char *, unsigned long));
-static void do_mar PARAMS ((char *, unsigned long));
-static void do_mra PARAMS ((char *, unsigned long));
-
-/* ARM_EXT_MAVERICK. */
-static void do_c_binops PARAMS ((char *, unsigned long, int));
-static void do_c_binops_1 PARAMS ((char *, unsigned long));
-static void do_c_binops_2 PARAMS ((char *, unsigned long));
-static void do_c_binops_3 PARAMS ((char *, unsigned long));
-static void do_c_triple PARAMS ((char *, unsigned long, int));
-static void do_c_triple_4 PARAMS ((char *, unsigned long));
-static void do_c_triple_5 PARAMS ((char *, unsigned long));
-static void do_c_quad PARAMS ((char *, unsigned long, int));
-static void do_c_quad_6 PARAMS ((char *, unsigned long));
-static void do_c_dspsc PARAMS ((char *, unsigned long, int));
-static void do_c_dspsc_1 PARAMS ((char *, unsigned long));
-static void do_c_dspsc_2 PARAMS ((char *, unsigned long));
-static void do_c_shift PARAMS ((char *, unsigned long, int));
-static void do_c_shift_1 PARAMS ((char *, unsigned long));
-static void do_c_shift_2 PARAMS ((char *, unsigned long));
-static void do_c_ldst PARAMS ((char *, unsigned long, int));
-static void do_c_ldst_1 PARAMS ((char *, unsigned long));
-static void do_c_ldst_2 PARAMS ((char *, unsigned long));
-static void do_c_ldst_3 PARAMS ((char *, unsigned long));
-static void do_c_ldst_4 PARAMS ((char *, unsigned long));
+static void do_mia PARAMS ((char *));
+static void do_mar PARAMS ((char *));
+static void do_mra PARAMS ((char *));
+
+/* Maverick. */
+static void do_c_binops PARAMS ((char *, int));
+static void do_c_binops_1 PARAMS ((char *));
+static void do_c_binops_2 PARAMS ((char *));
+static void do_c_binops_3 PARAMS ((char *));
+static void do_c_triple PARAMS ((char *, int));
+static void do_c_triple_4 PARAMS ((char *));
+static void do_c_triple_5 PARAMS ((char *));
+static void do_c_quad PARAMS ((char *, int));
+static void do_c_quad_6 PARAMS ((char *));
+static void do_c_dspsc PARAMS ((char *, int));
+static void do_c_dspsc_1 PARAMS ((char *));
+static void do_c_dspsc_2 PARAMS ((char *));
+static void do_c_shift PARAMS ((char *, int));
+static void do_c_shift_1 PARAMS ((char *));
+static void do_c_shift_2 PARAMS ((char *));
+static void do_c_ldst PARAMS ((char *, int));
+static void do_c_ldst_1 PARAMS ((char *));
+static void do_c_ldst_2 PARAMS ((char *));
+static void do_c_ldst_3 PARAMS ((char *));
+static void do_c_ldst_4 PARAMS ((char *));
static int cirrus_reg_required_here PARAMS ((char **, int,
enum cirrus_regtype));
static int cirrus_valid_reg PARAMS ((int, enum cirrus_regtype));
static void insert_reg PARAMS ((int));
static void thumb_shift PARAMS ((char *, int));
static void thumb_mov_compare PARAMS ((char *, int));
+static void build_arm_ops_hsh PARAMS ((void));
static void set_constant_flonums PARAMS ((void));
static valueT md_chars_to_number PARAMS ((char *, int));
static void insert_reg_alias PARAMS ((char *, int));
static void output_inst PARAMS ((void));
static int accum0_required_here PARAMS ((char **));
static int ld_mode_required_here PARAMS ((char **));
-static void do_branch25 PARAMS ((char *, unsigned long));
+static void do_branch25 PARAMS ((char *));
static symbolS * find_real_start PARAMS ((symbolS *));
#ifdef OBJ_ELF
static bfd_reloc_code_real_type arm_parse_reloc PARAMS ((void));
unsigned long variant;
/* Function to call to parse args. */
- void (* parms) PARAMS ((char *, unsigned long));
+ void (* parms) PARAMS ((char *));
};
static const struct asm_opcode insns[] =
NickC: but this is wrong because the bits 16 through 19 are
handled by the PSR_xxx defines above. */
- /* ARM 7M long multiplies - need signed/unsigned flags! */
+ /* ARM 7M long multiplies. */
{"smull", 0xe0c00090, 5, ARM_EXT_V3M, do_mull},
{"smulls", 0xe0d00090, 5, ARM_EXT_V3M, do_mull},
{"umull", 0xe0800090, 5, ARM_EXT_V3M, do_mull},
#define BAD_ARGS _("Bad arguments to instruction")
#define BAD_PC _("r15 not allowed here")
-#define BAD_FLAGS _("Instruction should not have flags")
#define BAD_COND _("Instruction is not conditional")
#define ERR_NO_ACCUM _("acc0 expected")
}
static void
-do_empty (str, flags)
+do_empty (str)
char * str;
- unsigned long flags;
{
/* Do nothing really. */
- inst.instruction |= flags; /* This is pointless. */
end_of_line (str);
return;
}
static void
-do_mrs (str, flags)
+do_mrs (str)
char *str;
- unsigned long flags;
{
int skip = 0;
inst.instruction |= SPSR_BIT;
str += skip;
- inst.instruction |= flags;
end_of_line (str);
}
"{C|S}PSR_f, #expression". */
static void
-do_msr (str, flags)
+do_msr (str)
char * str;
- unsigned long flags;
{
skip_whitespace (str);
if (reg_required_here (& str, 0) != FAIL)
{
inst.error = NULL;
- inst.instruction |= flags;
end_of_line (str);
return;
}
}
#endif
- flags |= INST_IMMEDIATE;
+ inst.instruction |= INST_IMMEDIATE;
if (inst.reloc.exp.X_add_symbol)
{
}
inst.error = NULL;
- inst.instruction |= flags;
end_of_line (str);
}
SMLAL RdLo, RdHi, Rm, Rs. */
static void
-do_mull (str, flags)
+do_mull (str)
char * str;
- unsigned long flags;
{
int rdlo, rdhi, rm, rs;
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
static void
-do_mul (str, flags)
+do_mul (str)
char * str;
- unsigned long flags;
{
int rd, rm;
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
static void
-do_mla (str, flags)
+do_mla (str)
char * str;
- unsigned long flags;
{
int rd, rm;
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
Error if any register is R15. */
static void
-do_smla (str, flags)
+do_smla (str)
char * str;
- unsigned long flags;
{
int rd, rm, rs, rn;
else if (rd == REG_PC || rm == REG_PC || rs == REG_PC || rn == REG_PC)
inst.error = BAD_PC;
- else if (flags)
- inst.error = BAD_FLAGS;
-
else
end_of_line (str);
}
Warning if Rdlo == Rdhi. */
static void
-do_smlal (str, flags)
+do_smlal (str)
char * str;
- unsigned long flags;
{
int rdlo, rdhi, rm, rs;
if (rdlo == rdhi)
as_tsktsk (_("rdhi and rdlo must be different"));
- if (flags)
- inst.error = BAD_FLAGS;
- else
- end_of_line (str);
+ end_of_line (str);
}
/* ARM V5E (El Segundo) signed-multiply (argument parse)
Error if any register is R15. */
static void
-do_smul (str, flags)
+do_smul (str)
char * str;
- unsigned long flags;
{
int rd, rm, rs;
else if (rd == REG_PC || rm == REG_PC || rs == REG_PC)
inst.error = BAD_PC;
- else if (flags)
- inst.error = BAD_FLAGS;
-
else
end_of_line (str);
}
Error if any register is R15. */
static void
-do_qadd (str, flags)
+do_qadd (str)
char * str;
- unsigned long flags;
{
int rd, rm, rn;
else if (rd == REG_PC || rm == REG_PC || rn == REG_PC)
inst.error = BAD_PC;
- else if (flags)
- inst.error = BAD_FLAGS;
-
else
end_of_line (str);
}
Result unpredicatable if Rd or Rn is R15. */
static void
-do_co_reg2c (str, flags)
+do_co_reg2c (str)
char * str;
- unsigned long flags;
{
int rd, rn;
return;
}
- if (flags)
- inst.error = BAD_COND;
-
end_of_line (str);
}
Error if Rd or Rm are R15. */
static void
-do_clz (str, flags)
+do_clz (str)
char * str;
- unsigned long flags;
{
int rd, rm;
- if (flags)
- {
- as_bad (BAD_FLAGS);
- return;
- }
-
skip_whitespace (str);
if (((rd = reg_required_here (& str, 12)) == FAIL)
Otherwise, it's the same as LDC/STC. */
static void
-do_lstc2 (str, flags)
+do_lstc2 (str)
char * str;
- unsigned long flags;
{
- if (flags)
- inst.error = BAD_COND;
-
skip_whitespace (str);
if (co_proc_number (& str) == FAIL)
Otherwise, it's the same as CDP. */
static void
-do_cdp2 (str, flags)
+do_cdp2 (str)
char * str;
- unsigned long flags;
{
skip_whitespace (str);
}
}
- if (flags)
- inst.error = BAD_FLAGS;
-
end_of_line (str);
}
Otherwise, it's the same as MCR/MRC. */
static void
-do_co_reg2 (str, flags)
+do_co_reg2 (str)
char * str;
- unsigned long flags;
{
skip_whitespace (str);
}
}
- if (flags)
- inst.error = BAD_COND;
-
end_of_line (str);
}
new one that can cope with setting one extra bit (the H bit). */
static void
-do_branch25 (str, flags)
+do_branch25 (str)
char * str;
- unsigned long flags ATTRIBUTE_UNUSED;
{
if (my_get_expression (& inst.reloc.exp, & str))
return;
Also, the <target_addr> can be 25 bits, hence has its own reloc. */
static void
-do_blx (str, flags)
+do_blx (str)
char * str;
- unsigned long flags;
{
char * mystr = str;
int rm;
- if (flags)
- {
- as_bad (BAD_FLAGS);
- return;
- }
-
skip_whitespace (mystr);
rm = reg_required_here (& mystr, 0);
Use the condition code our caller put in inst.instruction.
Pass ourselves off as a BX with a funny opcode. */
inst.instruction |= 0x012fff30;
- do_bx (str, flags);
+ do_bx (str);
}
else
{
/* Process like a B/BL, but with a different reloc.
Note that B/BL expecte fffffe, not 0, offset in the opcode table. */
- do_branch25 (str, flags);
+ do_branch25 (str);
}
}
BKPT <16 bit unsigned immediate>
Instruction is not conditional.
The bit pattern given in insns[] has the COND_ALWAYS condition,
- and it is an error if the caller tried to override that.
- Note "flags" is nonzero if a flag was supplied (which is an error). */
+ and it is an error if the caller tried to override that. */
static void
-do_bkpt (str, flags)
+do_bkpt (str)
char * str;
- unsigned long flags;
{
expressionS expr;
unsigned long number;
inst.instruction |= number & 0xf;
end_of_line (str);
-
- if (flags)
- inst.error = BAD_FLAGS;
}
/* Xscale multiply-accumulate (argument parse)
MIAxycc acc0,Rm,Rs. */
static void
-do_mia (str, flags)
+do_mia (str)
char * str;
- unsigned long flags;
{
int rs;
int rm;
- if (flags)
- as_bad (BAD_FLAGS);
-
- else if (accum0_required_here (& str) == FAIL)
+ if (accum0_required_here (& str) == FAIL)
inst.error = ERR_NO_ACCUM;
else if (skip_past_comma (& str) == FAIL
MARcc acc0,RdLo,RdHi. */
static void
-do_mar (str, flags)
+do_mar (str)
char * str;
- unsigned long flags;
{
int rdlo, rdhi;
- if (flags)
- as_bad (BAD_FLAGS);
-
- else if (accum0_required_here (& str) == FAIL)
+ if (accum0_required_here (& str) == FAIL)
inst.error = ERR_NO_ACCUM;
else if (skip_past_comma (& str) == FAIL
MRAcc RdLo,RdHi,acc0. */
static void
-do_mra (str, flags)
+do_mra (str)
char * str;
- unsigned long flags;
{
int rdlo;
int rdhi;
- if (flags)
- {
- as_bad (BAD_FLAGS);
- return;
- }
-
skip_whitespace (str);
if ((rdlo = reg_required_here (& str, 12)) == FAIL)
Syntactically, like LDR with B=1, W=0, L=1. */
static void
-do_pld (str, flags)
+do_pld (str)
char * str;
- unsigned long flags;
{
int rd;
- if (flags)
- {
- as_bad (BAD_FLAGS);
- return;
- }
-
skip_whitespace (str);
if (* str != '[')
STRccD R, mode. */
static void
-do_ldrd (str, flags)
+do_ldrd (str)
char * str;
- unsigned long flags;
{
int rd;
int rn;
if (rd == REG_LR)
{
- inst.error = _("r12 or r14 not allowed here");
+ inst.error = _("r14 not allowed here");
return;
}
}
static void
-do_arit (str, flags)
+do_arit (str)
char * str;
- unsigned long flags;
{
skip_whitespace (str);
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
static void
-do_adr (str, flags)
+do_adr (str)
char * str;
- unsigned long flags;
{
/* This is a pseudo-op of the form "adr rd, label" to be converted
into a relative address of the form "add rd, pc, #label-.-8". */
}
static void
-do_adrl (str, flags)
+do_adrl (str)
char * str;
- unsigned long flags;
{
/* This is a pseudo-op of the form "adrl rd, label" to be converted
into a relative address of the form:
}
static void
-do_cmp (str, flags)
+do_cmp (str)
char * str;
- unsigned long flags;
{
skip_whitespace (str);
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
static void
-do_mov (str, flags)
+do_mov (str)
char * str;
- unsigned long flags;
{
skip_whitespace (str);
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
}
static void
-do_ldst (str, flags)
+do_ldst (str)
char * str;
- unsigned long flags;
{
int pre_inc = 0;
int conflict_reg;
return;
}
- flags = 0;
-
if (*str == '[')
{
int reg;
}
static void
-do_ldstt (str, flags)
+do_ldstt (str)
char * str;
- unsigned long flags;
{
int conflict_reg;
/* Halfword and signed-byte load/store operations. */
static void
-do_ldstv4 (str, flags)
+do_ldstv4 (str)
char * str;
- unsigned long flags;
{
int pre_inc = 0;
int conflict_reg;
}
static void
-do_ldmstm (str, flags)
+do_ldmstm (str)
char * str;
- unsigned long flags;
{
int base_reg;
long range;
inst.instruction |= LDM_TYPE_2_OR_3;
}
- inst.instruction |= flags | range;
+ inst.instruction |= range;
end_of_line (str);
return;
}
static void
-do_swi (str, flags)
+do_swi (str)
char * str;
- unsigned long flags;
{
skip_whitespace (str);
inst.reloc.type = BFD_RELOC_ARM_SWI;
inst.reloc.pc_rel = 0;
- inst.instruction |= flags;
-
end_of_line (str);
return;
}
static void
-do_swap (str, flags)
+do_swap (str)
char * str;
- unsigned long flags;
{
int reg;
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
static void
-do_branch (str, flags)
+do_branch (str)
char * str;
- unsigned long flags ATTRIBUTE_UNUSED;
{
if (my_get_expression (&inst.reloc.exp, &str))
return;
}
static void
-do_bx (str, flags)
+do_bx (str)
char * str;
- unsigned long flags ATTRIBUTE_UNUSED;
{
int reg;
}
static void
-do_cdp (str, flags)
+do_cdp (str)
char * str;
- unsigned long flags ATTRIBUTE_UNUSED;
{
/* Co-processor data operation.
Format: CDP{cond} CP#,<expr>,CRd,CRn,CRm{,<expr>} */
}
static void
-do_lstc (str, flags)
+do_lstc (str)
char * str;
- unsigned long flags;
{
/* Co-processor register load/store.
Format: <LDC|STC{cond}[L] CP#,CRd,<address> */
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
static void
-do_co_reg (str, flags)
+do_co_reg (str)
char * str;
- unsigned long flags;
{
/* Co-processor register transfer.
Format: <MCR|MRC>{cond} CP#,<expr1>,Rd,CRn,CRm{,<expr2>} */
return;
}
}
- if (flags)
- {
- inst.error = BAD_COND;
- }
end_of_line (str);
return;
}
static void
-do_fpa_ctrl (str, flags)
+do_fpa_ctrl (str)
char * str;
- unsigned long flags ATTRIBUTE_UNUSED;
{
/* FP control registers.
Format: <WFS|RFS|WFC|RFC>{cond} Rn */
}
static void
-do_fpa_ldst (str, flags)
+do_fpa_ldst (str)
char * str;
- unsigned long flags ATTRIBUTE_UNUSED;
{
skip_whitespace (str);
}
static void
-do_fpa_ldmstm (str, flags)
+do_fpa_ldmstm (str)
char * str;
- unsigned long flags;
{
int num_regs;
}
}
- inst.instruction |= flags | offset;
+ inst.instruction |= offset;
}
else if (skip_past_comma (&str) == FAIL
|| cp_address_required_here (&str) == FAIL)
}
static void
-do_fpa_dyadic (str, flags)
+do_fpa_dyadic (str)
char * str;
- unsigned long flags;
{
skip_whitespace (str);
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
static void
-do_fpa_monadic (str, flags)
+do_fpa_monadic (str)
char * str;
- unsigned long flags;
{
skip_whitespace (str);
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
static void
-do_fpa_cmp (str, flags)
+do_fpa_cmp (str)
char * str;
- unsigned long flags;
{
skip_whitespace (str);
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
static void
-do_fpa_from_reg (str, flags)
+do_fpa_from_reg (str)
char * str;
- unsigned long flags;
{
skip_whitespace (str);
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
static void
-do_fpa_to_reg (str, flags)
+do_fpa_to_reg (str)
char * str;
- unsigned long flags;
{
skip_whitespace (str);
return;
}
- inst.instruction |= flags;
end_of_line (str);
return;
}
/* Wrapper functions. */
static void
-do_c_binops_1 (str, flags)
+do_c_binops_1 (str)
char * str;
- unsigned long flags;
{
- do_c_binops (str, flags, CIRRUS_MODE1);
+ do_c_binops (str, CIRRUS_MODE1);
}
static void
-do_c_binops_2 (str, flags)
+do_c_binops_2 (str)
char * str;
- unsigned long flags;
{
- do_c_binops (str, flags, CIRRUS_MODE2);
+ do_c_binops (str, CIRRUS_MODE2);
}
static void
-do_c_binops_3 (str, flags)
+do_c_binops_3 (str)
char * str;
- unsigned long flags;
{
- do_c_binops (str, flags, CIRRUS_MODE3);
+ do_c_binops (str, CIRRUS_MODE3);
}
static void
-do_c_triple_4 (str, flags)
+do_c_triple_4 (str)
char * str;
- unsigned long flags;
{
- do_c_triple (str, flags, CIRRUS_MODE4);
+ do_c_triple (str, CIRRUS_MODE4);
}
static void
-do_c_triple_5 (str, flags)
+do_c_triple_5 (str)
char * str;
- unsigned long flags;
{
- do_c_triple (str, flags, CIRRUS_MODE5);
+ do_c_triple (str, CIRRUS_MODE5);
}
static void
-do_c_quad_6 (str, flags)
+do_c_quad_6 (str)
char * str;
- unsigned long flags;
{
- do_c_quad (str, flags, CIRRUS_MODE6);
+ do_c_quad (str, CIRRUS_MODE6);
}
static void
-do_c_dspsc_1 (str, flags)
+do_c_dspsc_1 (str)
char * str;
- unsigned long flags;
{
- do_c_dspsc (str, flags, CIRRUS_MODE1);
+ do_c_dspsc (str, CIRRUS_MODE1);
}
static void
-do_c_dspsc_2 (str, flags)
+do_c_dspsc_2 (str)
char * str;
- unsigned long flags;
{
- do_c_dspsc (str, flags, CIRRUS_MODE2);
+ do_c_dspsc (str, CIRRUS_MODE2);
}
static void
-do_c_shift_1 (str, flags)
+do_c_shift_1 (str)
char * str;
- unsigned long flags;
{
- do_c_shift (str, flags, CIRRUS_MODE1);
+ do_c_shift (str, CIRRUS_MODE1);
}
static void
-do_c_shift_2 (str, flags)
+do_c_shift_2 (str)
char * str;
- unsigned long flags;
{
- do_c_shift (str, flags, CIRRUS_MODE2);
+ do_c_shift (str, CIRRUS_MODE2);
}
static void
-do_c_ldst_1 (str, flags)
+do_c_ldst_1 (str)
char * str;
- unsigned long flags;
{
- do_c_ldst (str, flags, CIRRUS_MODE1);
+ do_c_ldst (str, CIRRUS_MODE1);
}
static void
-do_c_ldst_2 (str, flags)
+do_c_ldst_2 (str)
char * str;
- unsigned long flags;
{
- do_c_ldst (str, flags, CIRRUS_MODE2);
+ do_c_ldst (str, CIRRUS_MODE2);
}
static void
-do_c_ldst_3 (str, flags)
+do_c_ldst_3 (str)
char * str;
- unsigned long flags;
{
- do_c_ldst (str, flags, CIRRUS_MODE3);
+ do_c_ldst (str, CIRRUS_MODE3);
}
static void
-do_c_ldst_4 (str, flags)
+do_c_ldst_4 (str)
char * str;
- unsigned long flags;
{
- do_c_ldst (str, flags, CIRRUS_MODE4);
+ do_c_ldst (str, CIRRUS_MODE4);
}
/* Isnsn like "foo X,Y". */
static void
-do_c_binops (str, flags, mode)
+do_c_binops (str, mode)
char * str;
- unsigned long flags;
int mode;
{
int shift1, shift2;
}
else
end_of_line (str);
-
- inst.instruction |= flags;
- return;
}
/* Isnsn like "foo X,Y,Z". */
static void
-do_c_triple (str, flags, mode)
+do_c_triple (str, mode)
char * str;
- unsigned long flags;
int mode;
{
int shift1, shift2, shift3;
}
else
end_of_line (str);
-
- inst.instruction |= flags;
- return;
}
/* Isnsn like "foo W,X,Y,Z".
where W=MVAX[0:3] and X,Y,Z=MVFX[0:15]. */
static void
-do_c_quad (str, flags, mode)
+do_c_quad (str, mode)
char * str;
- unsigned long flags;
int mode;
{
int shift1, shift2, shift3, shift4;
}
else
end_of_line (str);
-
- inst.instruction |= flags;
- return;
}
/* cfmvsc32<cond> DSPSC,MVFX[15:0].
cfmv32sc<cond> MVFX[15:0],DSPSC. */
static void
-do_c_dspsc (str, flags, mode)
+do_c_dspsc (str, mode)
char * str;
- unsigned long flags;
int mode;
{
int error;
}
else
{
- inst.instruction |= flags;
end_of_line (str);
}
-
- return;
}
/* Cirrus shift immediate instructions.
cfsh64<cond> MVDX[15:0],MVDX[15:0],Shift[6:0]. */
static void
-do_c_shift (str, flags, mode)
+do_c_shift (str, mode)
char * str;
- unsigned long flags;
int mode;
{
int error;
imm = (imm & 0xf) | ((imm & 0x70) << 1);
inst.instruction |= imm;
- inst.instruction |= flags;
-
end_of_line (str);
-
- return;
}
static int
<insn><cond> CRd,[Rn],<offset>. */
static void
-do_c_ldst (str, flags, mode)
+do_c_ldst (str, mode)
char * str;
- unsigned long flags;
int mode;
{
int offset, negative;
inst.instruction |= CP_T_UD; /* Postive, so set bit U. */
inst.instruction |= offset >> 2;
- inst.instruction |= flags;
-
end_of_line (str);
return;
inst.instruction = opcode->value;
inst.size = INSN_SIZE;
- (*opcode->parms) (p, 0);
+ (*opcode->parms) (p);
output_inst ();
return;
}