NetBSD builds one kernel for all supported ARM64 devices, there is no reason why Linux can't do the same. The devicetree selected by the firmware provides the description of a particular board.
supported really is key in that sentence. Does NetBSD build one kernel to rule them all because they only support a limited number of very similar ARM64 devices, or is their kernel just more flexible in adjusting itself at runtime?
Also, ARM64 is only one ISA. 32-bit has at least v5, v7 and thumb in wide circulation (though I may be off-target on what's exactly referred to as an ISA on arm).
Also, ARM64 is only one ISA. 32-bit has at least v5, v7 and thumb in wide circulation (though I may be off-target on what's exactly referred to as an ISA on arm).