arm64: Support more ID register field types
Add MRS_EXACT_IF_DIFFERENT, MRS_HIGHER_OR_ZERO, and MRS_HIGHER.
These will be used to handle the cache CTR_EL0 register, and make some
ID register values safer.
They are:
- MRS_EXACT_IF_DIFFERENT: If the field is the same on all CPUs then use this value, otherwise use the safe value.
- MRS_HIGHER_OR_ZERO: Use the highest value, or zero if seen,
- MRS_HIGHER: Use the highest value.
Reviewed by: imp
Sponsored by: Arm Ltd
Differential Revision: https://reviews.freebsd.org/D47122