/** ****************************************************************************** * Xenia : Xbox 360 Emulator Research Project * ****************************************************************************** * Copyright 2013 Ben Vanik. All rights reserved. * * Released under the BSD license - see LICENSE in the root for more details. * ****************************************************************************** */ #ifndef XENIA_BACKEND_BACKEND_H_ #define XENIA_BACKEND_BACKEND_H_ #include #include "xenia/cpu/backend/machine_info.h" namespace xe { namespace cpu { class Processor; } // namespace cpu } // namespace xe namespace xe { namespace cpu { namespace backend { class Assembler; class CodeCache; class Backend { public: Backend(Processor* processor); virtual ~Backend(); Processor* processor() const { return processor_; } const MachineInfo* machine_info() const { return &machine_info_; } CodeCache* code_cache() const { return code_cache_; } virtual bool Initialize(); virtual void* AllocThreadData(); virtual void FreeThreadData(void* thread_data); virtual void CommitExecutableRange(uint32_t guest_low, uint32_t guest_high) = 0; virtual std::unique_ptr CreateAssembler() = 0; protected: Processor* processor_; MachineInfo machine_info_; CodeCache* code_cache_; }; } // namespace backend } // namespace cpu } // namespace xe #endif // XENIA_BACKEND_BACKEND_H_