@@ -2270,37 +2270,37 @@ int kvm_s390_store_status_unloaded(struct kvm_vcpu *vcpu, unsigned long gpa)
2270
2270
u64 clkcomp ;
2271
2271
int rc ;
2272
2272
2273
+ px = kvm_s390_get_prefix (vcpu );
2273
2274
if (gpa == KVM_S390_STORE_STATUS_NOADDR ) {
2274
2275
if (write_guest_abs (vcpu , 163 , & archmode , 1 ))
2275
2276
return - EFAULT ;
2276
- gpa = SAVE_AREA_BASE ;
2277
+ gpa = 0 ;
2277
2278
} else if (gpa == KVM_S390_STORE_STATUS_PREFIXED ) {
2278
2279
if (write_guest_real (vcpu , 163 , & archmode , 1 ))
2279
2280
return - EFAULT ;
2280
- gpa = kvm_s390_real_to_abs (vcpu , SAVE_AREA_BASE );
2281
- }
2282
- rc = write_guest_abs (vcpu , gpa + offsetof(struct save_area , fp_regs ),
2281
+ gpa = px ;
2282
+ } else
2283
+ gpa -= __LC_FPREGS_SAVE_AREA ;
2284
+ rc = write_guest_abs (vcpu , gpa + __LC_FPREGS_SAVE_AREA ,
2283
2285
vcpu -> arch .guest_fpregs .fprs , 128 );
2284
- rc |= write_guest_abs (vcpu , gpa + offsetof( struct save_area , gp_regs ) ,
2286
+ rc |= write_guest_abs (vcpu , gpa + __LC_GPREGS_SAVE_AREA ,
2285
2287
vcpu -> run -> s .regs .gprs , 128 );
2286
- rc |= write_guest_abs (vcpu , gpa + offsetof( struct save_area , psw ) ,
2288
+ rc |= write_guest_abs (vcpu , gpa + __LC_PSW_SAVE_AREA ,
2287
2289
& vcpu -> arch .sie_block -> gpsw , 16 );
2288
- px = kvm_s390_get_prefix (vcpu );
2289
- rc |= write_guest_abs (vcpu , gpa + offsetof(struct save_area , pref_reg ),
2290
+ rc |= write_guest_abs (vcpu , gpa + __LC_PREFIX_SAVE_AREA ,
2290
2291
& px , 4 );
2291
- rc |= write_guest_abs (vcpu ,
2292
- gpa + offsetof(struct save_area , fp_ctrl_reg ),
2292
+ rc |= write_guest_abs (vcpu , gpa + __LC_FP_CREG_SAVE_AREA ,
2293
2293
& vcpu -> arch .guest_fpregs .fpc , 4 );
2294
- rc |= write_guest_abs (vcpu , gpa + offsetof( struct save_area , tod_reg ) ,
2294
+ rc |= write_guest_abs (vcpu , gpa + __LC_TOD_PROGREG_SAVE_AREA ,
2295
2295
& vcpu -> arch .sie_block -> todpr , 4 );
2296
- rc |= write_guest_abs (vcpu , gpa + offsetof( struct save_area , timer ) ,
2296
+ rc |= write_guest_abs (vcpu , gpa + __LC_CPU_TIMER_SAVE_AREA ,
2297
2297
& vcpu -> arch .sie_block -> cputm , 8 );
2298
2298
clkcomp = vcpu -> arch .sie_block -> ckc >> 8 ;
2299
- rc |= write_guest_abs (vcpu , gpa + offsetof( struct save_area , clk_cmp ) ,
2299
+ rc |= write_guest_abs (vcpu , gpa + __LC_CLOCK_COMP_SAVE_AREA ,
2300
2300
& clkcomp , 8 );
2301
- rc |= write_guest_abs (vcpu , gpa + offsetof( struct save_area , acc_regs ) ,
2301
+ rc |= write_guest_abs (vcpu , gpa + __LC_AREGS_SAVE_AREA ,
2302
2302
& vcpu -> run -> s .regs .acrs , 64 );
2303
- rc |= write_guest_abs (vcpu , gpa + offsetof( struct save_area , ctrl_regs ) ,
2303
+ rc |= write_guest_abs (vcpu , gpa + __LC_CREGS_SAVE_AREA ,
2304
2304
& vcpu -> arch .sie_block -> gcr , 128 );
2305
2305
return rc ? - EFAULT : 0 ;
2306
2306
}
0 commit comments