return kvm_vcpu_get_hsr(vcpu) & ESR_ELx_FSC_TYPE;
 }
 
+static inline int kvm_vcpu_sys_get_rt(struct kvm_vcpu *vcpu)
+{
+       u32 esr = kvm_vcpu_get_hsr(vcpu);
+       return (esr & ESR_ELx_SYS64_ISS_RT_MASK) >> ESR_ELx_SYS64_ISS_RT_SHIFT;
+}
+
 static inline unsigned long kvm_vcpu_get_mpidr_aff(struct kvm_vcpu *vcpu)
 {
        return vcpu_sys_reg(vcpu, MPIDR_EL1) & MPIDR_HWID_BITMASK;
 
 {
        struct sys_reg_params params;
        u32 hsr = kvm_vcpu_get_hsr(vcpu);
-       int Rt = (hsr >> 5) & 0xf;
-       int Rt2 = (hsr >> 10) & 0xf;
+       int Rt = kvm_vcpu_sys_get_rt(vcpu);
+       int Rt2 = (hsr >> 10) & 0x1f;
 
        params.is_aarch32 = true;
        params.is_32bit = false;
 {
        struct sys_reg_params params;
        u32 hsr = kvm_vcpu_get_hsr(vcpu);
-       int Rt  = (hsr >> 5) & 0xf;
+       int Rt  = kvm_vcpu_sys_get_rt(vcpu);
 
        params.is_aarch32 = true;
        params.is_32bit = true;
 {
        struct sys_reg_params params;
        unsigned long esr = kvm_vcpu_get_hsr(vcpu);
-       int Rt = (esr >> 5) & 0x1f;
+       int Rt = kvm_vcpu_sys_get_rt(vcpu);
        int ret;
 
        trace_kvm_handle_sys_reg(esr);