target aarch64: rework memory read/write to use 8/16/32 bit operations
authorBas Vermeulen <bas@daedalean.ai>
Sun, 26 Nov 2017 21:31:55 +0000 (22:31 +0100)
committerPaul Fertser <fercerpav@gmail.com>
Thu, 4 Jan 2018 09:09:46 +0000 (09:09 +0000)
commitada631cc5ff09e20a245fdca1afd4064be5eaa3d
tree9c80e42baafd2afb4d11c614eaba34115e74392c
parentbb976e3c387bc82e20ab7304f0cfac3e5eede3a1
target aarch64: rework memory read/write to use 8/16/32 bit operations

The existing code only used Memory Access mode to read memory,
which uses 32 bit operations only.
Rework the code to check the alignment/size of the read/write operation,
and use the Memory Access mode to read aligned 32 bit memory.
When using unaligned access, or 8 or 16 bit reads, use LDR{BHW} and STR{BHW}
instead.

The exception handling is still the same as it was before (meaning it breaks
when things go wrong), but I can now read an 8 bit register correctly.

Change-Id: I739a5ee825c0226ed4a89c32895cc2a047b8dc15
Signed-off-by: Bas Vermeulen <bas@daedalean.ai>
Reviewed-on: http://openocd.zylin.com/4301
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
src/target/aarch64.c
src/target/armv8_opcodes.c
src/target/armv8_opcodes.h