MultiArchUefiPkg
MultiArchUefiPkg copied to clipboard
Multi-Architecture UEFI Environment Driver
Catch/filter SetMemoryAttributes to ignore any attempts to change attributes for the emulated image itself, as on architectures that use no-exec protection, this would lead to a crash. Also, technically would...
There ought to be I/O perf tests (separate apps) to exercise the kinds of drivers that could be run using MultiArchUefiPkg. This includes block I/O tests, network perf tests, and...
Even with working MMU-based trapping for seamless native->emulated calls, native wrappers around GOP/SNP/Block protocols may make sense as there will be less overhead involved. The trap based mechanism involves: -...
An emulated binary using SetJump/LongJump will not work correctly, because the backing native state (CpuRunCtx) is not unwound.
Technically these should only be needed if the previous context was interrupted. If the last context was in a native call, we should be able to get away with saving/restoring...
Today all sorts of debug info is printed for debug builds, but it's completely non-selective, rendering it useless for situations where you need extra logging. Make logging levels/options per image...
Validate that one emulated binary (e.g. x64 app) can call an interface provided by another emulated binary with a different ISA (e.g. AArch64 driver). This is primarily test application /...
Allocate two pages, load code crossing page boundary. Invoke. Relies on correct handling of AllocatePool/AllocatePages (https://github.com/intel/MultiArchUefiPkg/issues/5)
CopyMem/SetMem needs an EFI wrapper to handle modifications to executable memory.
- Allocate pool of type BootServiceCode - Copy code into pool allocation - Run copied code - ??? - Profit! (when https://github.com/intel/MultiArchUefiPkg/issues/5 is fixed)