Registers x16 and 17 are defined as linker temporaries, which are used
for purposes such as veneers. However, in some cases these may be used
for other purposes in certain contexts, for example to hold special
variables within the kernel.
We would like to use these registers to hold the per-CPU pointer in Fuchsia
kernel. This change adds support for reserving these registers both to
frontend and backend to make these registers usable for such purpose.
We could imagine dying default reserved-x16 or reserved-x17 to -mcmodel=kernel (as we do with TIPIDR_EL1 e.g.) but that's probably not worthwhile since we want the flexibility to change what we're using in the kernel.