Utilize ASIDs to reduce both the direct and indirect costs of context switching. The indirect costs being unnecessary TLB misses that are incurred when ASIDs are not used.
Mark all user-space ("ttbr0") page table entries with the non-global flag so that they are cached in the TLB under their ASID.
Correct an error in pmap_pinit0(). In the pmap for process 0, the pointer to the root of the page table was being initialized to the root of the kernel-space page table rather than a user-space page table. As long as ASIDs weren't being used, this was harmless, except that it led to some unnecessary page table switches in pmap_switch().
Implement a workaround for Cavium erratum 27456 affecting ThunderX machines.
Address integer overflow in the definition of TCR_ASID_16.
Setup TCR according to the PARange and ASIDBits fields from ID_AA64MMFR0_EL1. Previously, TCR_ASID_16 was unconditionally set.
Eliminate some unused code.