On 25.02.2016 20:41, Peter Maydell wrote:
On 19 February 2016 at 20:04, Edgar E. Iglesias
<edgar.igles...@gmail.com> wrote:
From: "Edgar E. Iglesias" <edgar.igles...@xilinx.com>
Add the following flags to the data abort syndrome generator:
* isv - Instruction syndrome valid
* sas - Syndrome access size
* sse - Syndrome sign extend
* srt - Syndrome register transfer
* sf - Sixty-Four bit register width
* ar - Acquire/Release
These flags are not yet used, so this patch has no functional change.
Signed-off-by: Edgar E. Iglesias <edgar.igles...@xilinx.com>
---
target-arm/internals.h | 20 ++++++++++++++++++--
target-arm/op_helper.c | 8 ++++++--
2 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/target-arm/internals.h b/target-arm/internals.h
index 34e2688..4e9d9f5 100644
--- a/target-arm/internals.h
+++ b/target-arm/internals.h
@@ -383,13 +383,29 @@ static inline uint32_t syn_insn_abort(int same_el, int
ea, int s1ptw, int fsc)
| (ea << 9) | (s1ptw << 7) | fsc;
}
-static inline uint32_t syn_data_abort(int same_el, int ea, int cm, int s1ptw,
+static inline uint32_t syn_data_abort(int same_el, int isv,
+ int sas, int sse, int srt,
+ int sf, int ar,
+ int ea, int cm, int s1ptw,
int wnr, int fsc,
bool is_16bit)
Everywhere we call this (both now and once the full patchset has
been applied) isv is a constant (either 0 or 1). I think it might
be cleaner to define both a syn_data_abort_with_isv() and a
syn_data_abort_no_isv(). Then the no_isv version doesn't need all
the arguments that are zeroes.
Alternatively, we could define a function similar to
LSInstructionSyndrome from ARMv8 ARM pseudocode, but which will pack the
instruction syndrome from its components into a value of ISS<24:14>.
Best regards,
Sergey