learn more formally arm 32 bit CP registers, fix QEMU baremetal run with cli args

This commit is contained in:
Ciro Santilli 六四事件 法轮功
2020-06-16 02:00:01 +00:00
parent 7d32b26fde
commit da40e84075
4 changed files with 66 additions and 1 deletions

View File

@@ -21486,6 +21486,35 @@ Guaranteed undefined! Therefore raise illegal instruction signal. Used by GCC `_
Why GNU GAS 2.29 does not have a mnemonic for it in A64 because it is very recent: shows in <<armarm8-db>> but not `ca`.
==== ARM system register instructions
Examples of using them can be found at: <<dump-regs>>
aarch64 only uses exactly 2 instructions:
* MRS: reads a system register to a regular register
* MSR: writes to the system register
aarch32 is a bit more messy due to older setups, we have both:
* MRS and MSR which are much like in aarch64
* coprocessor accesses:
** MRC: reads a system register, C means coprocessor, which is how system registers were previously known as
** MCR: write to the system register
** MRRC: like MRC, but used for the system registers that are marked as 64-bit, and reads to two general purpose regis
** MCRR: write version of MCRR
<<armarm8-fa>> G1.19.4 "Background to the System register interface" says that only CP14 and CP15 are specified by the ISA:
____
The interface to the System registers was originally defined as part of a generic coprocessor interface, that gave access to 15 coprocessors, CP0 - CP15. Of these, CP8 - CP15 were reserved for use by Arm, while CP0 - CP7 were available for IMPLEMENTATION DEFINED coprocessors.
____
and the actual coprocessor registers are specified at:
* CP14: Table G7-1 "Mapping of (coproc ==0b1110) MCR, MRC, and MRRC instruction arguments to System registers"
* CP15: Table G7-3 "VMSAv8-32 (coproc==0b1111) register summary, in MCR/MRC parameter order."
=== ARM SIMD
Parent section: xref:simd-assembly[xrefstyle=full]
@@ -21909,6 +21938,11 @@ ISA quick references can be found in some places:
https://static.docs.arm.com/ddi0487/db/DDI0487D_b_armv8_arm.pdf
[[armarm8-fa]]
===== ARMv8 architecture reference manual db
https://static.docs.arm.com/ddi0487/fa/DDI0487F_a_armv8_arm.pdf
[[armv8-programmers-guide]]
===== Programmer's Guide for ARMv8-A