NdisMAllocateSharedMemory maps memory as non cacheable on Arm Windows,
Given that Windows on Arm does not support unaligned accesses on uncached memory,
this behavior does result in crashes.
As such, use MmAllocateContiguousMemorySpecifyCache for the Arm64 architecture.
This choice is safe.
It's also to be noted that NdisMAllocateSharedMemory
ignores the isCached attribute anyway, and always
maps as cached on amd64.
This also allows us to remove the need for the Rx bounce buffer.
With this fix, networking w/ netkvm for Windows on Arm works fine.
(tested with QEMU emulator version 5.0.50 (v5.0.0-1065-g9f1f264edb))
Signed-off-by: Mohamed Mediouni <[email protected]>