Currently, the KZM platform is the only ARMv6 platform that we support and supporting it requires a few work-arounds. In particular, to support thread-local identifiers (such as a TLS_BASE and the IPC buffer address) the kernel maps a common page into all address spaces in which it stores the values of these virtual registers.
It would be useful to know who is currently using this platform and how much interest there is in ongoing support for this platform.
Internally at Data61 we have discussed this before, and decided to keep the kzm/ARMv6 port around until it became a maintenance burden. I think we’ve hit this point. Most of our projects are using ARMv7 or ARMv8 and AFAIK there haven’t been any requests for ARMv6 support.
From the verification side, ARMv7 is now the main platform. ARMv6/KZM is still very close and could be resurrected quickly, but is not actually supported right now. Dropping it would not have any major impact on verification (until somebody suddenly wants it again, of course ;-)).
My understanding is that older versions of ARMv6 that do not support process identifiers via co-processor registers (ARMv6 & ARMv6T2) are the main issue as they require the GLOBALS_FRAME to, in some part account for this.
That said, we could continue to support these architectures by reserving the general purpose platform register (r9) as a process identifier with the RFC-3 change (in a similar manner to RISC-V).
We could just require that code is compiled with -ffixed-r9 and use r9 for TLS. This would obviate the need for the GLOBALS_FRAME whilst maintaining support for ARMv6.
Versions of ARMv6 after ARMv6k are not a problem, it’s only the ARMv6 platforms without thread ID registers in CP15. This only includes the first two versions.