/** ****************************************************************************** * 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_CPU_PPC_PPC_FRONTEND_H_ #define XENIA_CPU_PPC_PPC_FRONTEND_H_ #include #include "xenia/base/type_pool.h" #include "xenia/cpu/function.h" #include "xenia/memory.h" namespace xe { namespace cpu { class Processor; } // namespace cpu } // namespace xe namespace xe { namespace cpu { namespace ppc { class PPCTranslator; struct PPCBuiltins { int32_t global_lock_count; Function* check_global_lock; Function* enter_global_lock; Function* leave_global_lock; }; class PPCFrontend { public: explicit PPCFrontend(Processor* processor); ~PPCFrontend(); bool Initialize(); Processor* processor() const { return processor_; } Memory* memory() const; PPCBuiltins* builtins() { return &builtins_; } bool DeclareFunction(GuestFunction* function); bool DefineFunction(GuestFunction* function, uint32_t debug_info_flags); private: Processor* processor_; PPCBuiltins builtins_ = {0}; TypePool translator_pool_; }; } // namespace ppc } // namespace cpu } // namespace xe #endif // XENIA_CPU_PPC_PPC_FRONTEND_H_