for the option, or NULL. */
static const aarch64_sys_ins_reg *
-parse_sys_ins_reg (char **str, htab_t sys_ins_regs)
+parse_sys_ins_reg (char **str, htab_t sys_ins_regs, bool sysreg128_p)
{
char *p, *q;
char buf[AARCH64_MAX_SYSREG_NAME_LEN];
return NULL;
o = str_hash_find (sys_ins_regs, buf);
- if (!o)
+ if (!o || (sysreg128_p && !aarch64_sys_reg_128bit_p (o->flags)))
return NULL;
if (!aarch64_sys_ins_reg_supported_p (cpu_variant,
case AARCH64_OPND_SYSREG_IC:
inst.base.operands[i].sysins_op =
- parse_sys_ins_reg (&str, aarch64_sys_regs_ic_hsh);
+ parse_sys_ins_reg (&str, aarch64_sys_regs_ic_hsh, false);
goto sys_reg_ins;
case AARCH64_OPND_SYSREG_DC:
inst.base.operands[i].sysins_op =
- parse_sys_ins_reg (&str, aarch64_sys_regs_dc_hsh);
+ parse_sys_ins_reg (&str, aarch64_sys_regs_dc_hsh, false);
goto sys_reg_ins;
case AARCH64_OPND_SYSREG_AT:
inst.base.operands[i].sysins_op =
- parse_sys_ins_reg (&str, aarch64_sys_regs_at_hsh);
+ parse_sys_ins_reg (&str, aarch64_sys_regs_at_hsh, false);
goto sys_reg_ins;
case AARCH64_OPND_SYSREG_SR:
inst.base.operands[i].sysins_op =
- parse_sys_ins_reg (&str, aarch64_sys_regs_sr_hsh);
+ parse_sys_ins_reg (&str, aarch64_sys_regs_sr_hsh, false);
goto sys_reg_ins;
case AARCH64_OPND_SYSREG_TLBI:
+ inst.base.operands[i].sysins_op =
+ parse_sys_ins_reg (&str, aarch64_sys_regs_tlbi_hsh, false);
+ goto sys_reg_ins;
+
case AARCH64_OPND_SYSREG_TLBIP:
inst.base.operands[i].sysins_op =
- parse_sys_ins_reg (&str, aarch64_sys_regs_tlbi_hsh);
+ parse_sys_ins_reg (&str, aarch64_sys_regs_tlbi_hsh, true);
sys_reg_ins:
if (inst.base.operands[i].sysins_op == NULL)
{