Fix improper getting arguments from stack

Also fix PrimitivePointerParam conversion error
This commit is contained in:
Dr. Chat 2015-07-24 23:08:55 -05:00
parent cf37fa7d71
commit c536053dec
1 changed files with 4 additions and 2 deletions

View File

@ -113,7 +113,7 @@ class Param {
*out_value = V(init.ppc_context->r[3 + ordinal_]); *out_value = V(init.ppc_context->r[3 + ordinal_]);
} else { } else {
uint32_t stack_ptr = uint32_t stack_ptr =
uint32_t(init.ppc_context->r[1]) + 0x54 + (ordinal_ - 7) * 8; uint32_t(init.ppc_context->r[1]) + 0x54 + (ordinal_ - 8) * 8;
*out_value = *out_value =
xe::load_and_swap<V>(init.ppc_context->virtual_membase + stack_ptr); xe::load_and_swap<V>(init.ppc_context->virtual_membase + stack_ptr);
} }
@ -190,7 +190,9 @@ class PrimitivePointerParam : public ParamBase<uint32_t> {
init.ppc_context->virtual_membase + value_) init.ppc_context->virtual_membase + value_)
: nullptr; : nullptr;
} }
PrimitivePointerParam(T* host_ptr) : ParamBase(), host_ptr_(host_ptr) {} PrimitivePointerParam(T* host_ptr) : ParamBase() {
host_ptr_ = reinterpret_cast<xe::be<T>*>(host_ptr);
}
PrimitivePointerParam& operator=(const T*& other) { PrimitivePointerParam& operator=(const T*& other) {
host_ptr_ = other; host_ptr_ = other;
return *this; return *this;