target-arm: A64: Implement MRS/MSR/SYS/SYSL
commitfea505221eaf87889000378d4d33ad0dfd5f4d9d
authorPeter Maydell <peter.maydell@linaro.org>
Sat, 4 Jan 2014 22:15:45 +0000 (4 22:15 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 7 Jan 2014 19:17:58 +0000 (7 19:17 +0000)
tree271ae1accb206a132ee172ab0c408a9527f767d8
parent60322b399dc62da7cc1ccd42fbd19b017f8a5e38
target-arm: A64: Implement MRS/MSR/SYS/SYSL

The AArch64 equivalent of the traditional AArch32
cp15 coprocessor registers is the set of instructions
MRS/MSR/SYS/SYSL, which cover between them both true
system registers and the "operations with side effects"
such as cache maintenance which in AArch32 are mixed
in with other cp15 registers. Implement these instructions
to look in the cpregs hashtable for the register or
operation.

Since we don't yet populate the cpregs hashtable with
any registers with the "AA64" bit set, everything will
still UNDEF at this point.

MSR/MRS is the first user of is_jmp = DISAS_UPDATE, so
fix an infelicity in its handling where the main loop
was requiring the caller to do the update of PC rather
than just doing it itself.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
target-arm/translate-a64.c