put_unaligned — put value to a possibly mis-aligned location
value to place
pointer to location
This macro should be used for placing values larger in size than single bytes at locations that are expected to be improperly aligned, e.g. writing a u16 value to a location not u16-aligned.
Note that unaligned accesses can be very expensive on some architectures.