Fix em_write_pci_cfg() and em_read_pci_cfg() to avoid unaligned access, and make em_write_pci_cfg() do a proper read/modify/write cycle, to avoid changing the neighbouring 16 bits.  Also remove the comment in em_pci_set_mwi() and em_pci_clear_mwi(); writting 0 to the status bits in the command/status word is the right thing to do.  Fixes a panic on sparc64 and other strict alignment architectures.
Fix em_write_pci_cfg() and em_read_pci_cfg() to avoid unaligned access, and
make em_write_pci_cfg() do a proper read/modify/write cycle, to avoid changing
the neighbouring 16 bits.  Also remove the comment in em_pci_set_mwi() and
em_pci_clear_mwi(); writting 0 to the status bits in the command/status word
is the right thing to do.  Fixes a panic on sparc64 and other strict alignment
architectures.

ok deraadt@

orumin/openbsd-efivars,orumin/openbsd-efivars,orumin/openbsd-efivars,orumin/openbsd-efivars