[v1 2/4] RISC-V: Hypervisor ext: support Privileged Spec 1.12

Vineet Gupta vineetg@rivosinc.com
Tue Jan 4 18:10:57 GMT 2022


+CC Anup

On 1/4/22 12:09 AM, Jan Beulich wrote:
>> --- a/opcodes/riscv-opc.c
>> +++ b/opcodes/riscv-opc.c
>> @@ -1729,8 +1729,30 @@ const struct riscv_opcode riscv_opcodes[] =
>>   {"sinval.vma",      0, INSN_CLASS_SVINVAL, "s,t", MATCH_SINVAL_VMA, MASK_SINVAL_VMA, match_opcode, 0 },
>>   {"sfence.w.inval",  0, INSN_CLASS_SVINVAL, "",    MATCH_SFENCE_W_INVAL, MASK_SFENCE_W_INVAL, match_opcode, 0 },
>>   {"sfence.inval.ir", 0, INSN_CLASS_SVINVAL, "",    MATCH_SFENCE_INVAL_IR, MASK_SFENCE_INVAL_IR, match_opcode, 0 },
>> -{"hinval.vvma",     0, INSN_CLASS_SVINVAL, "s,t", MATCH_HINVAL_VVMA, MASK_HINVAL_VVMA, match_opcode, 0 },
>> -{"hinval.gvma",     0, INSN_CLASS_SVINVAL, "s,t", MATCH_HINVAL_GVMA, MASK_HINVAL_GVMA, match_opcode, 0 },
>> +
>> +/* Svinval instructions + Hypervisor Ext v1.0.  */
>> +{"hinval.vvma",     0, INSN_CLASS_SVINVAL_AND_H, "s,t", MATCH_HINVAL_VVMA, MASK_HINVAL_VVMA, match_opcode, 0 },
>> +{"hinval.gvma",     0, INSN_CLASS_SVINVAL_AND_H, "s,t", MATCH_HINVAL_GVMA, MASK_HINVAL_GVMA, match_opcode, 0 },
>> +{"hfence.vvma",     0, INSN_CLASS_SVINVAL_AND_H, "s,t", MATCH_HFENCE_VVMA, MASK_HFENCE_VVMA, match_opcode, 0 },
>> +{"hfence.gvma",     0, INSN_CLASS_SVINVAL_AND_H, "",    MATCH_HFENCE_GVMA, MASK_HFENCE_GVMA|MASK_RS1|MASK_RS2, match_opcode, 0 },
>> +{"hfence.gvma",     0, INSN_CLASS_SVINVAL_AND_H, "s",   MATCH_HFENCE_GVMA, MASK_HFENCE_GVMA|MASK_RS2, match_opcode, 0 },
>> +{"hfence.gvma",     0, INSN_CLASS_SVINVAL_AND_H, "s,t", MATCH_HFENCE_GVMA, MASK_HFENCE_GVMA, match_opcode, 0 },
> I've not been able to spot pseudos with zero or one operands in the spec.
> Did I miss anything? Same actually appears to apply to the pre-existing
> sfence.vma ...

Some of that information is there but scattered. e.g. last but one 
paragraph 8.3.2

       "HFENCE.GVMA with rs1=x0 (and rs2 set to either x0 or the VMID)"

When I did the RFC, I was pointed to a post from Anup from lkml [1] 
where the additional encodings were specified.

Perhaps there needs to be a pull request to priv spec to explicit'ify it.

[1] https://sourceware.org/pipermail/binutils/2021-December/118944.html


More information about the Binutils mailing list