break;
}
case EC_DATAABORT: {
- bool isv = syndrome & ARM_EL_ISV;
- bool iswrite = (syndrome >> 6) & 1;
- bool s1ptw = (syndrome >> 7) & 1;
- bool sse = (syndrome >> 21) & 1;
- uint32_t sas = (syndrome >> 22) & 3;
+ bool isv = FIELD_EX32(syndrome, DABORT_ISS, ISV);
+ bool iswrite = FIELD_EX32(syndrome, DABORT_ISS, WNR);
+ bool s1ptw = FIELD_EX32(syndrome, DABORT_ISS, S1PTW);
+ bool sse = FIELD_EX32(syndrome, DABORT_ISS, SSE);
+ uint32_t sas = FIELD_EX32(syndrome, DABORT_ISS, SAS);
uint32_t len = 1 << sas;
- uint32_t srt = (syndrome >> 16) & 0x1f;
- uint32_t cm = (syndrome >> 8) & 0x1;
+ uint32_t srt = FIELD_EX32(syndrome, DABORT_ISS, SRT);
+ uint32_t cm = FIELD_EX32(syndrome, DABORT_ISS, CM);
uint64_t val = 0;
uint64_t ipa = excp->physical_address;
AddressSpace *as = cpu_get_address_space(cpu, ARMASIdx_NS);