Rather than open coding a bunch of shifts and masks we can use the
syndrome definitions. While we are at it assert it really is a
EC_DATAABORT.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
target/arm/whpx/whpx-all.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/target/arm/whpx/whpx-all.c b/target/arm/whpx/whpx-all.c
index 513551bec1b..f5646e7127e 100644
--- a/target/arm/whpx/whpx-all.c
+++ b/target/arm/whpx/whpx-all.c
@@ -356,15 +356,16 @@ static int whpx_handle_mmio(CPUState *cpu, WHV_MEMORY_ACCESS_CONTEXT *ctx)
{
uint64_t syndrome = ctx->Syndrome;
- bool isv = syndrome & ARM_EL_ISV;
- bool iswrite = (syndrome >> 6) & 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 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;
+ assert(syn_get_ec(syndrome) == EC_DATAABORT);
assert(!cm);
assert(isv);
--
2.47.3