Takes advantage of linux's ID register emulation. The msr instruction is manually assembled to support older compilers and those that disallow reading e.g. SVE ID registers if unsupported by the target, even though they RAZ if unsupported.
This defines a wine-specific SMBIOS table format ontop of the standard additional processor information block to pass ID registers to wineboot. The index of each table within the SMBIOS directly maps to the core it corresponds to and registers are passed using their numerical IDs to match Windows' registry format and avoid needing to map between names and IDs on both ends (the unix side needs to manually encode the msr's anyway).
Question: would it be reasonable to add a wine/smbios.h header? I'm unsure if the duplication here is for a good reason.
-- v2: wineboot: Populate ARM64 ID register registry keys using SMBIOS info. ntdll: Populate the SMBIOS with ARM64 ID register values.