[ ]+2:[ ]+00b50533[ ]+add[ ]+a0,a0,a1
[ ]+6:[ ]+00302573[ ]+frcsr[ ]+a0
[ ]+a:[ ]+952e[ ]+add[ ]+a0,a0,a1
-[ ]+c:[ ]+c8002573[ ]+.insn[ ]+4, 0xc8002573
+[ ]+c:[ ]+c8002573[ ]+rdcycleh[ ]+a0
#...
.option pop
.option arch, +m3p0, +d3p0, +xvendor32x3p0
add a0, a0, a1 # func-level, rv64i_m3p0_d3p0_c_xvendor32x3p0
-.option arch, rv32i2p1c2p0 # FIXME: maybe we should adjust xlen in dis-assembler according to mappin symbols?
-rdcycleh a0 # func-level, rv32i2p1_c2p0
+.option arch, rv32i2p1c2p0
+rdcycleh a0 # func-level, rv32i2p1_c2p0, won't affcet file-level attribute
0+000 <.text>:
[ ]+[0-9a-f]+:[ ]+0001[ ]+c\.addi[ ]+zero,0
[ ]+[0-9a-f]+:[ ]+00000013[ ]+addi[ ]+zero,zero,0
-[ ]+[0-9a-f]+:[ ]+6108[ ]+c\.ld[ ]+a0,0\(a0\)
+[ ]+[0-9a-f]+:[ ]+6108[ ]+c\.flw[ ]+fa0,0\(a0\)
[ ]+[0-9a-f]+:[ ]+00052507[ ]+flw[ ]+fa0,0\(a0\)
[ ]+[0-9a-f]+:[ ]+2108[ ]+c\.fld[ ]+fa0,0\(a0\)
[ ]+[0-9a-f]+:[ ]+00053507[ ]+fld[ ]+fa0,0\(a0\)
[ ]+[0-9a-f]+:[ ]+0001[ ]+c\.addi[ ]+zero,0
[ ]+[0-9a-f]+:[ ]+00000013[ ]+addi[ ]+zero,zero,0
-[ ]+[0-9a-f]+:[ ]+6108[ ]+c\.ld[ ]+a0,0\(a0\)
+[ ]+[0-9a-f]+:[ ]+6108[ ]+c\.flw[ ]+fa0,0\(a0\)
[ ]+[0-9a-f]+:[ ]+00052507[ ]+flw[ ]+fa0,0\(a0\)
[ ]+[0-9a-f]+:[ ]+2108[ ]+c\.fld[ ]+fa0,0\(a0\)
[ ]+[0-9a-f]+:[ ]+00053507[ ]+fld[ ]+fa0,0\(a0\)
case 'j':
if (((l & MASK_C_ADDI) == MATCH_C_ADDI) && rd != 0)
maybe_print_address (pd, rd, EXTRACT_CITYPE_IMM (l), 0);
- if (info->mach == bfd_mach_riscv64
+ if (pd->xlen == 64
&& ((l & MASK_C_ADDIW) == MATCH_C_ADDIW) && rd != 0)
maybe_print_address (pd, rd, EXTRACT_CITYPE_IMM (l), 1);
print (info->stream, dis_style_immediate, "%d",
if (((l & MASK_ADDI) == MATCH_ADDI && rs1 != 0)
|| (l & MASK_JALR) == MATCH_JALR)
maybe_print_address (pd, rs1, EXTRACT_ITYPE_IMM (l), 0);
- if (info->mach == bfd_mach_riscv64
+ if (pd->xlen == 64
&& ((l & MASK_ADDIW) == MATCH_ADDIW) && rs1 != 0)
maybe_print_address (pd, rs1, EXTRACT_ITYPE_IMM (l), 1);
print (info->stream, dis_style_immediate, "%d",
if (op != NULL)
{
/* If XLEN is not known, get its value from the ELF class. */
- if (info->mach == bfd_mach_riscv64)
+ if (pd->xlen != 0)
+ ;
+ else if (info->mach == bfd_mach_riscv64)
pd->xlen = 64;
else if (info->mach == bfd_mach_riscv32)
pd->xlen = 32;