aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-csky.c
diff options
context:
space:
mode:
Diffstat (limited to 'gas/config/tc-csky.c')
-rw-r--r--gas/config/tc-csky.c133
1 files changed, 73 insertions, 60 deletions
diff --git a/gas/config/tc-csky.c b/gas/config/tc-csky.c
index 81f1b75..dc8ee74 100644
--- a/gas/config/tc-csky.c
+++ b/gas/config/tc-csky.c
@@ -632,102 +632,120 @@ struct csky_cpu_info
#define CSKY_FEATURES_DEF_NULL() \
- {{0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_e(isa_e) \
{FEATURE_DSP_EXT(isa_e), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_t(isa_t) \
{FEATURE_TRUST(isa_t), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_f(isa_f) \
{FEATURE_FLOAT(isa_f), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_v(isa_v) \
{FEATURE_VDSP(isa_v), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_ef(isa_e, isa_f) \
{FEATURE_DSP_EXT(isa_e), \
FEATURE_FLOAT(isa_f), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_jt(isa_j, isa_t) \
{FEATURE_JAVA(isa_j), \
FEATURE_TRUST(isa_t), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_efht(isa_e, isa_f, isa_h, isa_t) \
{FEATURE_DSP_EXT(isa_e), \
FEATURE_FLOAT(isa_f), \
FEATURE_SHIELD(isa_h), \
FEATURE_TRUST(isa_t), \
- {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_efv(isa_e, isa_f, isa_v) \
{FEATURE_DSP_EXT(isa_e), \
FEATURE_FLOAT(isa_f), \
FEATURE_VDSP(isa_v), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_eft(isa_e, isa_f, isa_t) \
{FEATURE_DSP_EXT(isa_e), \
FEATURE_FLOAT(isa_f), \
FEATURE_TRUST(isa_t), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_d(isa_d) \
- {FEATURE_DSP(isa_d), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {FEATURE_DSP(isa_d), \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_df(isa_d, isa_f) \
- {FEATURE_DSP(isa_d), \
- FEATURE_FLOAT(isa_f), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {FEATURE_DSP(isa_d), \
+ FEATURE_FLOAT(isa_f), \
+ {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_ft(isa_f, isa_t) \
{FEATURE_FLOAT(isa_f), \
FEATURE_TRUST(isa_t), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_tv(isa_t, isa_v) \
{FEATURE_TRUST(isa_t), \
FEATURE_VDSP(isa_v), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_fv(isa_f, isa_v) \
{FEATURE_FLOAT(isa_f), \
FEATURE_VDSP(isa_v), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
-
+ {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_dft(isa_d, isa_f, isa_t) \
{FEATURE_DSP(isa_d), \
FEATURE_FLOAT(isa_f), \
FEATURE_TRUST(isa_t), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_dfv(isa_d, isa_f, isa_v) \
{FEATURE_DSP(isa_d), \
FEATURE_FLOAT(isa_f), \
FEATURE_VDSP(isa_v), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_ftv(isa_f, isa_t, isa_v) \
{FEATURE_FLOAT(isa_f), \
FEATURE_TRUST(isa_t), \
FEATURE_VDSP(isa_v), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_FEATURES_DEF_eftv(isa_e, isa_f, isa_t, isa_v) \
{FEATURE_DSP_EXT(isa_e), \
FEATURE_FLOAT(isa_f), \
FEATURE_TRUST(isa_t), \
FEATURE_VDSP(isa_v), \
- {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_CPU_REVERISON_r0p0(isa) \
@@ -740,13 +758,15 @@ struct csky_cpu_info
{3, 0, isa}
#define CSKY_CPU_REVERISON_RESERVED() \
-{{0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
#define CSKY_CPU_REVERISON_R3(isa1, isa2, isa3) \
{CSKY_CPU_REVERISON_r1p0(isa1), \
CSKY_CPU_REVERISON_r2p0(isa2), \
CSKY_CPU_REVERISON_r3p0(isa3), \
- {0}, {0}, {0}, {0}, {0}, {0}, {0}}
+ {0,0,0}, {0,0,0}, \
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}
/* CSKY cpus table. */
const struct csky_cpu_info csky_cpus[] =
@@ -936,7 +956,11 @@ const struct csky_cpu_info csky_cpus[] =
/* Start of private CPUs. */
/* End of private CPUs. */
- {NULL},
+ {NULL,
+ 0,
+ 0,
+ CSKY_FEATURES_DEF_NULL(),
+ CSKY_CPU_REVERISON_RESERVED()}
};
int md_short_jump_size = 2;
@@ -1926,11 +1950,11 @@ mapping_state (map_state state)
{
struct frag * const frag_first = seg_info (now_seg)->frchainP->frch_root;
if (frag_now != frag_first || frag_now_fix () > 0)
- make_mapping_symbol (MAP_DATA, (valueT) 0, frag_first);
+ make_mapping_symbol (MAP_DATA, 0, frag_first);
}
seg_info (now_seg)->tc_segment_info_data.current_state = state;
- make_mapping_symbol (state, (valueT) frag_now_fix (), frag_now);
+ make_mapping_symbol (state, frag_now_fix (), frag_now);
}
/* Dump the literal pool. */
@@ -3386,10 +3410,8 @@ parse_opcode (char *str)
csky_insn.number = csky_count_operands (opcode_end);
/* Find hash by name in csky_macros_hash and csky_opcodes_hash. */
- csky_insn.macro = (struct csky_macro_info *) str_hash_find (csky_macros_hash,
- macro_name);
- csky_insn.opcode = (struct csky_opcode *) str_hash_find (csky_opcodes_hash,
- name);
+ csky_insn.macro = str_hash_find (csky_macros_hash, macro_name);
+ csky_insn.opcode = str_hash_find (csky_opcodes_hash, name);
if (csky_insn.macro == NULL && csky_insn.opcode == NULL)
return false;
@@ -3614,8 +3636,7 @@ get_operand_value (struct csky_opcode_info *op,
if (val <= 6)
{
const char *name = "movi";
- csky_insn.opcode = (struct csky_opcode *)
- str_hash_find (csky_opcodes_hash, name);
+ csky_insn.opcode = str_hash_find (csky_opcodes_hash, name);
csky_insn.val[csky_insn.idx - 1] = 1 << val;
}
return true;
@@ -3648,8 +3669,7 @@ get_operand_value (struct csky_opcode_info *op,
if (log <= 6)
{
const char *name = "movi";
- csky_insn.opcode = (struct csky_opcode *)
- str_hash_find (csky_opcodes_hash, name);
+ csky_insn.opcode = str_hash_find (csky_opcodes_hash, name);
as_warn (_("translating mgeni to movi"));
}
else
@@ -3686,8 +3706,7 @@ get_operand_value (struct csky_opcode_info *op,
if (mask_val > 0 && mask_val < 8)
{
const char *op_movi = "movi";
- csky_insn.opcode = (struct csky_opcode *)
- str_hash_find (csky_opcodes_hash, op_movi);
+ csky_insn.opcode = str_hash_find (csky_opcodes_hash, op_movi);
if (csky_insn.opcode == NULL)
return false;
csky_insn.val[csky_insn.idx - 1] = (1 << mask_val) - 1;
@@ -3747,8 +3766,7 @@ get_operand_value (struct csky_opcode_info *op,
if (mask_val > 0 && mask_val < 16)
{
const char *op_movi = "movi";
- csky_insn.opcode = (struct csky_opcode *)
- str_hash_find (csky_opcodes_hash, op_movi);
+ csky_insn.opcode = str_hash_find (csky_opcodes_hash, op_movi);
if (csky_insn.opcode == NULL)
return false;
csky_insn.val[csky_insn.idx - 1] = (1 << (mask_val + 1)) - 1;
@@ -5251,7 +5269,7 @@ md_pcrel_from_section (fixS * fixP, segT seg)
{
/* If the symbol is undefined or defined in another section
we leave the add number alone for the linker to fix it later. */
- if (fixP->fx_addsy != (symbolS *) NULL
+ if (fixP->fx_addsy != NULL
&& (! S_IS_DEFINED (fixP->fx_addsy)
|| S_GET_SEGMENT (fixP->fx_addsy) != seg))
return fixP->fx_size;
@@ -5302,7 +5320,7 @@ csky_cons_fix_new (fragS *frag,
reloc = BFD_RELOC_32;
break;
}
- fixP = fix_new_exp (frag, off, (int) len, exp, 0, reloc);
+ fixP = fix_new_exp (frag, off, len, exp, 0, reloc);
if (BFD_RELOC_CKCORE_TLS_IE32 == insn_reloc
|| BFD_RELOC_CKCORE_TLS_GD32 == insn_reloc
|| BFD_RELOC_CKCORE_TLS_LDM32 == insn_reloc)
@@ -5578,25 +5596,25 @@ md_apply_fix (fixS *fixP,
case BFD_RELOC_CKCORE_PCREL_IMM8BY4:
case BFD_RELOC_CKCORE_PCREL_IMM10BY4:
case BFD_RELOC_CKCORE_PCREL_IMM16BY4:
- max = (offsetT) howto->dst_mask;
+ max = howto->dst_mask;
min = 0;
break;
/* lrw16. */
case BFD_RELOC_CKCORE_PCREL_IMM7BY4:
if (do_extend_lrw)
- max = (offsetT)((1 << (howto->bitsize + 1)) - 2);
+ max = ((valueT) 1 << (howto->bitsize + 1)) - 2;
else
- max = (offsetT)((1 << howto->bitsize) - 1);
+ max = ((valueT) 1 << howto->bitsize) - 1;
min = 0;
break;
/* flrws, flrwd: the offset bits are divided in two parts. */
case BFD_RELOC_CKCORE_PCREL_FLRW_IMM8BY4:
- max = (offsetT)((1 << howto->bitsize) - 1);
+ max = ((valueT) 1 << howto->bitsize) - 1;
min = 0;
break;
/* Offset is signed. */
default:
- max = (offsetT)(howto->dst_mask >> 1);
+ max = howto->dst_mask >> 1;
min = - max - 1;
issigned = 1;
}
@@ -5612,7 +5630,7 @@ md_apply_fix (fixS *fixP,
if (do_extend_lrw && (opcode & 0xfc00) == CSKYV2_INST_LRW16)
val &= 0xff;
else
- val &= issigned ? (offsetT)(howto->dst_mask) : max;
+ val &= issigned ? (offsetT) howto->dst_mask : max;
if (fixP->fx_r_type == BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4)
val = (val & 0xf) << 12;
@@ -6475,8 +6493,7 @@ v1_work_jbsr (void)
{
/* Using jsri instruction. */
const char *name = "jsri";
- csky_insn.opcode = (struct csky_opcode *)
- str_hash_find (csky_opcodes_hash, name);
+ csky_insn.opcode = str_hash_find (csky_opcodes_hash, name);
csky_insn.opcode_idx = 0;
csky_insn.isize = 2;
@@ -6823,8 +6840,7 @@ bool
v2_work_rotlc (void)
{
const char *name = "addc";
- csky_insn.opcode
- = (struct csky_opcode *) str_hash_find (csky_opcodes_hash, name);
+ csky_insn.opcode = str_hash_find (csky_opcodes_hash, name);
csky_insn.opcode_idx = 0;
if (csky_insn.isize == 2)
{
@@ -6861,8 +6877,7 @@ v2_work_bgeni (void)
name = "movih";
val >>= 16;
}
- csky_insn.opcode
- = (struct csky_opcode *) str_hash_find (csky_opcodes_hash, name);
+ csky_insn.opcode = str_hash_find (csky_opcodes_hash, name);
csky_insn.opcode_idx = 0;
csky_insn.val[1] = val;
@@ -6879,8 +6894,7 @@ bool
v2_work_not (void)
{
const char *name = "nor";
- csky_insn.opcode
- = (struct csky_opcode *) str_hash_find (csky_opcodes_hash, name);
+ csky_insn.opcode = str_hash_find (csky_opcodes_hash, name);
csky_insn.opcode_idx = 0;
if (csky_insn.number == 1)
{
@@ -7675,7 +7689,7 @@ csky_cons (int nbytes)
howto->name, nbytes);
else
{
- register char *p = frag_more ((int) nbytes);
+ register char *p = frag_more (nbytes);
int offset = nbytes - size;
fix_new_exp (frag_now,
@@ -7684,7 +7698,7 @@ csky_cons (int nbytes)
}
}
else
- emit_expr (&exp, (unsigned int) nbytes);
+ emit_expr (&exp, nbytes);
if (now_seg == text_section)
poolspan += nbytes;
}
@@ -7847,8 +7861,7 @@ static void
csky_stack_size (int arg ATTRIBUTE_UNUSED)
{
expressionS exp;
- stack_size_entry *sse
- = (stack_size_entry *) xcalloc (1, sizeof (stack_size_entry));
+ stack_size_entry *sse = xcalloc (1, sizeof (stack_size_entry));
expression (&exp);
if (exp.X_op == O_symbol)