MIPS: Clean up RDHWR handling
No preprocessor definitions are used in the handling of the registers accessible with the RDHWR instruction, nor the corresponding bits in the CP0 HWREna register. Add definitions for both the register numbers (MIPS_HWR_*) and HWREna bits (MIPS_HWRENA_*) in asm/mipsregs.h and make use of them in the initialisation of HWREna and emulation of the RDHWR instruction. Signed-off-by: James Hogan <james.hogan@imgtec.com> Acked-by: Ralf Baechle <ralf@linux-mips.org> Cc: David Daney <david.daney@cavium.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Radim Krčmář <rkrcmar@redhat.com> Cc: linux-mips@linux-mips.org Cc: kvm@vger.kernel.org Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:

committed by
Paolo Bonzini

parent
e57759306c
commit
aff565aab9
@@ -2296,17 +2296,17 @@ enum emulation_result kvm_mips_handle_ri(u32 cause, u32 *opc,
|
||||
goto emulate_ri;
|
||||
}
|
||||
switch (rd) {
|
||||
case 0: /* CPU number */
|
||||
case MIPS_HWR_CPUNUM: /* CPU number */
|
||||
arch->gprs[rt] = 0;
|
||||
break;
|
||||
case 1: /* SYNCI length */
|
||||
case MIPS_HWR_SYNCISTEP: /* SYNCI length */
|
||||
arch->gprs[rt] = min(current_cpu_data.dcache.linesz,
|
||||
current_cpu_data.icache.linesz);
|
||||
break;
|
||||
case 2: /* Read count register */
|
||||
case MIPS_HWR_CC: /* Read count register */
|
||||
arch->gprs[rt] = kvm_mips_read_count(vcpu);
|
||||
break;
|
||||
case 3: /* Count register resolution */
|
||||
case MIPS_HWR_CCRES: /* Count register resolution */
|
||||
switch (current_cpu_data.cputype) {
|
||||
case CPU_20KC:
|
||||
case CPU_25KF:
|
||||
@@ -2316,7 +2316,7 @@ enum emulation_result kvm_mips_handle_ri(u32 cause, u32 *opc,
|
||||
arch->gprs[rt] = 2;
|
||||
}
|
||||
break;
|
||||
case 29:
|
||||
case MIPS_HWR_ULR: /* Read UserLocal register */
|
||||
arch->gprs[rt] = kvm_read_c0_guest_userlocal(cop0);
|
||||
break;
|
||||
|
||||
|
Reference in New Issue
Block a user