Generate trampoline functions for GetProcAddressByOrdinal on kernel modules.

This commit is contained in:
Dr. Chat
2015-10-24 14:14:08 -05:00
parent 729f762c5d
commit 3547d31c3d
2 changed files with 83 additions and 5 deletions

View File

@@ -14,6 +14,10 @@
#include "xenia/kernel/xmodule.h"
namespace xe {
namespace cpu {
class RawModule;
} // namespace cpu
namespace kernel {
class KernelState;
@@ -30,6 +34,16 @@ class KernelModule : public XModule {
Emulator* emulator_;
Memory* memory_;
xe::cpu::ExportResolver* export_resolver_;
// Guest trampoline for GetProcAddress
static const uint32_t kTrampolineSize = 400 * 8;
uint32_t guest_trampoline_ = 0;
uint32_t guest_trampoline_next_ = 0; // Next free entry to be generated.
uint32_t guest_trampoline_size_ = 0;
cpu::RawModule* guest_trampoline_module_ = nullptr;
std::map<uint16_t, uint32_t> guest_trampoline_map_;
xe::global_critical_region global_critical_region_;
};
} // namespace kernel