The current code assumes we can loop for a fixed timer per-usec. As
this depends on the CPU frequency and micro-architecture of the CPU
it is invalid in the general case.
On arm64 we can assume the virtual timer is available, so use this to
calculate how long to wait for.
Sponsored by: Arm Ltd