Arm: Backport hlt to all architectures.
authorTamar Christina <tamar.christina@arm.com>
Thu, 7 Feb 2019 17:12:23 +0000 (17:12 +0000)
committerTamar Christina <tamar.christina@arm.com>
Thu, 7 Feb 2019 17:20:41 +0000 (17:20 +0000)
commitf7dd2fb2e2b750f0fb9dedaf885c17bc6beef1f7
treee94bcaf98363e67b9cf0785d0d96d7d6c9f41658
parentbd756351a6d3dcff9915c88c26dc0a5811907f90
Arm: Backport hlt to all architectures.

The software trap instruction HLT that was introduced in Armv8-a is used
as the semihosting trap instruction in AArch64.  In order to allow systems
configured to run AArch64 code to also run AArch32 with semihosting it was
decided that AArch32 should also use HLT in the case of the "mixed mode"
environment.  This requires that HLT also be backported to all earlier
architectures.  The instruction is in the undefined encoding space earlier
architectures but must trigger a semihosting trap [3].

The Arm Architectural Reference Manual [1] doesn't explicitly mention this
however this is an explicit requirement in the Semihosting-v2 protocol [2].

[1] https://developer.arm.com/docs/ddi0487/latest/arm-architecture-reference-manual-armv8-for-armv8-a-architecture-profile
[2] https://developer.arm.com/docs/100863/latest/the-semihosting-interface
[3] https://github.com/qemu/qemu/commit/19a6e31c9d2701ef648b70ddcfc3bf64cec8c37e

gas/ChangeLog:

* config/tc-arm.c (insns): Redefine THUMB_VARIANT and ARM_VARIANT for
hlt to armv1.
* testsuite/gas/arm/armv8a-automatic-hlt.d: Update TAGs
* testsuite/gas/arm/hlt.d: New test.
* testsuite/gas/arm/hlt.s: New test.

opcodes/ChangeLog:

* arm-dis.c (arm_opcodes): Redefine hlt to armv1.
gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/gas/arm/armv8a-automatic-hlt.d
gas/testsuite/gas/arm/hlt.d [new file with mode: 0644]
gas/testsuite/gas/arm/hlt.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/arm-dis.c