diff --git a/Utilities/GNU.h b/Utilities/GNU.h index 5836d1b636..6bf8c7c886 100644 --- a/Utilities/GNU.h +++ b/Utilities/GNU.h @@ -35,10 +35,6 @@ #include #include -#ifndef __APPLE__ -#include -#endif - #define _fpclass(x) std::fpclassify(x) #define INFINITE 0xFFFFFFFF diff --git a/rpcs3/Crypto/unself.cpp b/rpcs3/Crypto/unself.cpp index a45f289f82..c31d4af460 100644 --- a/rpcs3/Crypto/unself.cpp +++ b/rpcs3/Crypto/unself.cpp @@ -942,9 +942,9 @@ bool SELFDecrypter::DecryptNPDRM(u8 *metadata, u32 metadata_size) bool SELFDecrypter::LoadMetadata() { aes_context aes; - u32 metadata_info_size = sizeof32(meta_info); + u32 metadata_info_size = SIZE_32(meta_info); u8 *metadata_info = (u8 *)malloc(metadata_info_size); - u32 metadata_headers_size = sce_hdr.se_hsize - (sizeof32(sce_hdr) + sce_hdr.se_meta + sizeof32(meta_info)); + u32 metadata_headers_size = sce_hdr.se_hsize - (SIZE_32(sce_hdr) + sce_hdr.se_meta + SIZE_32(meta_info)); u8 *metadata_headers = (u8 *)malloc(metadata_headers_size); // Locate and read the encrypted metadata info. diff --git a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp index 93e918482c..4d2f8f1bd1 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp +++ b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp @@ -643,7 +643,7 @@ s32 sceKernelGetEventFlagInfo(s32 evfId, vm::ptr pInfo) std::lock_guard lock(evf->mutex); - pInfo->size = sizeof32(SceKernelEventFlagInfo); + pInfo->size = SIZE_32(SceKernelEventFlagInfo); pInfo->evfId = evfId; strcpy_trunc(pInfo->name, evf->name); diff --git a/rpcs3/Emu/ARMv7/PSVFuncList.h b/rpcs3/Emu/ARMv7/PSVFuncList.h index 5233115fa3..f9a4977953 100644 --- a/rpcs3/Emu/ARMv7/PSVFuncList.h +++ b/rpcs3/Emu/ARMv7/PSVFuncList.h @@ -313,7 +313,7 @@ namespace psv_func_detail static const bool is_variadic = std::is_same, armv7_va_args_t>::value; static const bool is_general = !is_float && !is_vector && !is_context && !is_variadic; - static const u32 g_align = alignof32(T) > 4 ? alignof32(T) >> 2 : 1; + static const u32 g_align = ALIGN_32(T) > 4 ? ALIGN_32(T) >> 2 : 1; static const u32 g_value = is_general ? ((g_count + (g_align - 1)) & ~(g_align - 1)) + (g_align) : g_count; static const u32 f_value = f_count + is_float; static const u32 v_value = v_count + is_vector; diff --git a/rpcs3/Emu/Cell/PPUInterpreter.cpp b/rpcs3/Emu/Cell/PPUInterpreter.cpp index 0842b06ddb..ec051c8ab1 100644 --- a/rpcs3/Emu/Cell/PPUInterpreter.cpp +++ b/rpcs3/Emu/Cell/PPUInterpreter.cpp @@ -1778,7 +1778,7 @@ void ppu_interpreter::LWARX(PPUThread& CPU, ppu_opcode_t op) const u64 addr = op.ra ? CPU.GPR[op.ra] + CPU.GPR[op.rb] : CPU.GPR[op.rb]; be_t value; - vm::reservation_acquire(&value, VM_CAST(addr), sizeof32(value)); + vm::reservation_acquire(&value, VM_CAST(addr), SIZE_32(value)); CPU.GPR[op.rd] = value; } @@ -1949,7 +1949,7 @@ void ppu_interpreter::LDARX(PPUThread& CPU, ppu_opcode_t op) const u64 addr = op.ra ? CPU.GPR[op.ra] + CPU.GPR[op.rb] : CPU.GPR[op.rb]; be_t value; - vm::reservation_acquire(&value, VM_CAST(addr), sizeof32(value)); + vm::reservation_acquire(&value, VM_CAST(addr), SIZE_32(value)); CPU.GPR[op.rd] = value; } @@ -2079,7 +2079,7 @@ void ppu_interpreter::STWCX_(PPUThread& CPU, ppu_opcode_t op) const u64 addr = op.ra ? CPU.GPR[op.ra] + CPU.GPR[op.rb] : CPU.GPR[op.rb]; const be_t value = (u32)CPU.GPR[op.rs]; - CPU.SetCR_EQ(0, vm::reservation_update(VM_CAST(addr), &value, sizeof32(value))); + CPU.SetCR_EQ(0, vm::reservation_update(VM_CAST(addr), &value, SIZE_32(value))); } void ppu_interpreter::STWX(PPUThread& CPU, ppu_opcode_t op) @@ -2139,7 +2139,7 @@ void ppu_interpreter::STDCX_(PPUThread& CPU, ppu_opcode_t op) const u64 addr = op.ra ? CPU.GPR[op.ra] + CPU.GPR[op.rb] : CPU.GPR[op.rb]; const be_t value = CPU.GPR[op.rs]; - CPU.SetCR_EQ(0, vm::reservation_update(VM_CAST(addr), &value, sizeof32(value))); + CPU.SetCR_EQ(0, vm::reservation_update(VM_CAST(addr), &value, SIZE_32(value))); } void ppu_interpreter::STBX(PPUThread& CPU, ppu_opcode_t op) diff --git a/rpcs3/Emu/Cell/PPULLVMRecompilerCore.cpp b/rpcs3/Emu/Cell/PPULLVMRecompilerCore.cpp index c9a00773ab..3e36a47bf7 100644 --- a/rpcs3/Emu/Cell/PPULLVMRecompilerCore.cpp +++ b/rpcs3/Emu/Cell/PPULLVMRecompilerCore.cpp @@ -5097,33 +5097,33 @@ Value * Compiler::SetNibble(Value * val, u32 n, Value * b0, Value * b1, Value * } Value * Compiler::GetPc() { - auto pc_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, PC)); + auto pc_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, PC)); auto pc_i32_ptr = m_ir_builder->CreateBitCast(pc_i8_ptr, m_ir_builder->getInt32Ty()->getPointerTo()); return m_ir_builder->CreateAlignedLoad(pc_i32_ptr, 4); } void Compiler::SetPc(Value * val_ix) { - auto pc_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, PC)); + auto pc_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, PC)); auto pc_i32_ptr = m_ir_builder->CreateBitCast(pc_i8_ptr, m_ir_builder->getInt32Ty()->getPointerTo()); auto val_i32 = m_ir_builder->CreateZExtOrTrunc(val_ix, m_ir_builder->getInt32Ty()); m_ir_builder->CreateAlignedStore(val_i32, pc_i32_ptr, 4); } Value * Compiler::GetGpr(u32 r, u32 num_bits) { - auto r_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, GPR[r])); + auto r_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, GPR[r])); auto r_ix_ptr = m_ir_builder->CreateBitCast(r_i8_ptr, m_ir_builder->getIntNTy(num_bits)->getPointerTo()); return m_ir_builder->CreateAlignedLoad(r_ix_ptr, 8); } void Compiler::SetGpr(u32 r, Value * val_x64) { - auto r_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, GPR[r])); + auto r_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, GPR[r])); auto r_i64_ptr = m_ir_builder->CreateBitCast(r_i8_ptr, m_ir_builder->getInt64Ty()->getPointerTo()); auto val_i64 = m_ir_builder->CreateBitCast(val_x64, m_ir_builder->getInt64Ty()); m_ir_builder->CreateAlignedStore(val_i64, r_i64_ptr, 8); } Value * Compiler::GetCr() { - auto cr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, CR)); + auto cr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, CR)); auto cr_i32_ptr = m_ir_builder->CreateBitCast(cr_i8_ptr, m_ir_builder->getInt32Ty()->getPointerTo()); return m_ir_builder->CreateAlignedLoad(cr_i32_ptr, 4); } @@ -5134,7 +5134,7 @@ Value * Compiler::GetCrField(u32 n) { void Compiler::SetCr(Value * val_x32) { auto val_i32 = m_ir_builder->CreateBitCast(val_x32, m_ir_builder->getInt32Ty()); - auto cr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, CR)); + auto cr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, CR)); auto cr_i32_ptr = m_ir_builder->CreateBitCast(cr_i8_ptr, m_ir_builder->getInt32Ty()->getPointerTo()); m_ir_builder->CreateAlignedStore(val_i32, cr_i32_ptr, 4); } @@ -5176,33 +5176,33 @@ void Compiler::SetCr6AfterVectorCompare(u32 vr) { } Value * Compiler::GetLr() { - auto lr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, LR)); + auto lr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, LR)); auto lr_i64_ptr = m_ir_builder->CreateBitCast(lr_i8_ptr, m_ir_builder->getInt64Ty()->getPointerTo()); return m_ir_builder->CreateAlignedLoad(lr_i64_ptr, 8); } void Compiler::SetLr(Value * val_x64) { auto val_i64 = m_ir_builder->CreateBitCast(val_x64, m_ir_builder->getInt64Ty()); - auto lr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, LR)); + auto lr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, LR)); auto lr_i64_ptr = m_ir_builder->CreateBitCast(lr_i8_ptr, m_ir_builder->getInt64Ty()->getPointerTo()); m_ir_builder->CreateAlignedStore(val_i64, lr_i64_ptr, 8); } Value * Compiler::GetCtr() { - auto ctr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, CTR)); + auto ctr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, CTR)); auto ctr_i64_ptr = m_ir_builder->CreateBitCast(ctr_i8_ptr, m_ir_builder->getInt64Ty()->getPointerTo()); return m_ir_builder->CreateAlignedLoad(ctr_i64_ptr, 8); } void Compiler::SetCtr(Value * val_x64) { auto val_i64 = m_ir_builder->CreateBitCast(val_x64, m_ir_builder->getInt64Ty()); - auto ctr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, CTR)); + auto ctr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, CTR)); auto ctr_i64_ptr = m_ir_builder->CreateBitCast(ctr_i8_ptr, m_ir_builder->getInt64Ty()->getPointerTo()); m_ir_builder->CreateAlignedStore(val_i64, ctr_i64_ptr, 8); } Value * Compiler::GetXer() { - auto xer_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, XER)); + auto xer_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, XER)); auto xer_i64_ptr = m_ir_builder->CreateBitCast(xer_i8_ptr, m_ir_builder->getInt64Ty()->getPointerTo()); return m_ir_builder->CreateAlignedLoad(xer_i64_ptr, 8); } @@ -5217,7 +5217,7 @@ Value * Compiler::GetXerSo() { void Compiler::SetXer(Value * val_x64) { auto val_i64 = m_ir_builder->CreateBitCast(val_x64, m_ir_builder->getInt64Ty()); - auto xer_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, XER)); + auto xer_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, XER)); auto xer_i64_ptr = m_ir_builder->CreateBitCast(xer_i8_ptr, m_ir_builder->getInt64Ty()->getPointerTo()); m_ir_builder->CreateAlignedStore(val_i64, xer_i64_ptr, 8); } @@ -5235,7 +5235,7 @@ void Compiler::SetXerSo(Value * so) { } Value * Compiler::GetVrsave() { - auto vrsave_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, VRSAVE)); + auto vrsave_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, VRSAVE)); auto vrsave_i32_ptr = m_ir_builder->CreateBitCast(vrsave_i8_ptr, m_ir_builder->getInt32Ty()->getPointerTo()); auto val_i32 = m_ir_builder->CreateAlignedLoad(vrsave_i32_ptr, 4); return m_ir_builder->CreateZExtOrTrunc(val_i32, m_ir_builder->getInt64Ty()); @@ -5244,26 +5244,26 @@ Value * Compiler::GetVrsave() { void Compiler::SetVrsave(Value * val_x64) { auto val_i64 = m_ir_builder->CreateBitCast(val_x64, m_ir_builder->getInt64Ty()); auto val_i32 = m_ir_builder->CreateZExtOrTrunc(val_i64, m_ir_builder->getInt32Ty()); - auto vrsave_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, VRSAVE)); + auto vrsave_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, VRSAVE)); auto vrsave_i32_ptr = m_ir_builder->CreateBitCast(vrsave_i8_ptr, m_ir_builder->getInt32Ty()->getPointerTo()); m_ir_builder->CreateAlignedStore(val_i32, vrsave_i32_ptr, 8); } Value * Compiler::GetFpscr() { - auto fpscr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, FPSCR)); + auto fpscr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, FPSCR)); auto fpscr_i32_ptr = m_ir_builder->CreateBitCast(fpscr_i8_ptr, m_ir_builder->getInt32Ty()->getPointerTo()); return m_ir_builder->CreateAlignedLoad(fpscr_i32_ptr, 4); } void Compiler::SetFpscr(Value * val_x32) { auto val_i32 = m_ir_builder->CreateBitCast(val_x32, m_ir_builder->getInt32Ty()); - auto fpscr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, FPSCR)); + auto fpscr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, FPSCR)); auto fpscr_i32_ptr = m_ir_builder->CreateBitCast(fpscr_i8_ptr, m_ir_builder->getInt32Ty()->getPointerTo()); m_ir_builder->CreateAlignedStore(val_i32, fpscr_i32_ptr, 4); } Value * Compiler::GetFpr(u32 r, u32 bits, bool as_int) { - auto r_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, FPR[r])); + auto r_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, FPR[r])); if (!as_int) { auto r_f64_ptr = m_ir_builder->CreateBitCast(r_i8_ptr, m_ir_builder->getDoubleTy()->getPointerTo()); auto r_f64 = m_ir_builder->CreateAlignedLoad(r_f64_ptr, 8); @@ -5287,7 +5287,7 @@ Value * Compiler::GetFpr(u32 r, u32 bits, bool as_int) { } void Compiler::SetFpr(u32 r, Value * val) { - auto r_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, FPR[r])); + auto r_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, FPR[r])); auto r_f64_ptr = m_ir_builder->CreateBitCast(r_i8_ptr, m_ir_builder->getDoubleTy()->getPointerTo()); Value* val_f64; @@ -5306,47 +5306,47 @@ void Compiler::SetFpr(u32 r, Value * val) { } Value * Compiler::GetVscr() { - auto vscr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, VSCR)); + auto vscr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, VSCR)); auto vscr_i32_ptr = m_ir_builder->CreateBitCast(vscr_i8_ptr, m_ir_builder->getInt32Ty()->getPointerTo()); return m_ir_builder->CreateAlignedLoad(vscr_i32_ptr, 4); } void Compiler::SetVscr(Value * val_x32) { auto val_i32 = m_ir_builder->CreateBitCast(val_x32, m_ir_builder->getInt32Ty()); - auto vscr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, VSCR)); + auto vscr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, VSCR)); auto vscr_i32_ptr = m_ir_builder->CreateBitCast(vscr_i8_ptr, m_ir_builder->getInt32Ty()->getPointerTo()); m_ir_builder->CreateAlignedStore(val_i32, vscr_i32_ptr, 4); } Value * Compiler::GetVr(u32 vr) { - auto vr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, VPR[vr])); + auto vr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, VPR[vr])); auto vr_i128_ptr = m_ir_builder->CreateBitCast(vr_i8_ptr, m_ir_builder->getIntNTy(128)->getPointerTo()); return m_ir_builder->CreateAlignedLoad(vr_i128_ptr, 16); } Value * Compiler::GetVrAsIntVec(u32 vr, u32 vec_elt_num_bits) { - auto vr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, VPR[vr])); + auto vr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, VPR[vr])); auto vr_i128_ptr = m_ir_builder->CreateBitCast(vr_i8_ptr, m_ir_builder->getIntNTy(128)->getPointerTo()); auto vr_vec_ptr = m_ir_builder->CreateBitCast(vr_i128_ptr, VectorType::get(m_ir_builder->getIntNTy(vec_elt_num_bits), 128 / vec_elt_num_bits)->getPointerTo()); return m_ir_builder->CreateAlignedLoad(vr_vec_ptr, 16); } Value * Compiler::GetVrAsFloatVec(u32 vr) { - auto vr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, VPR[vr])); + auto vr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, VPR[vr])); auto vr_i128_ptr = m_ir_builder->CreateBitCast(vr_i8_ptr, m_ir_builder->getIntNTy(128)->getPointerTo()); auto vr_v4f32_ptr = m_ir_builder->CreateBitCast(vr_i128_ptr, VectorType::get(m_ir_builder->getFloatTy(), 4)->getPointerTo()); return m_ir_builder->CreateAlignedLoad(vr_v4f32_ptr, 16); } Value * Compiler::GetVrAsDoubleVec(u32 vr) { - auto vr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, VPR[vr])); + auto vr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, VPR[vr])); auto vr_i128_ptr = m_ir_builder->CreateBitCast(vr_i8_ptr, m_ir_builder->getIntNTy(128)->getPointerTo()); auto vr_v2f64_ptr = m_ir_builder->CreateBitCast(vr_i128_ptr, VectorType::get(m_ir_builder->getDoubleTy(), 2)->getPointerTo()); return m_ir_builder->CreateAlignedLoad(vr_v2f64_ptr, 16); } void Compiler::SetVr(u32 vr, Value * val_x128) { - auto vr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], (unsigned int)offsetof(PPUThread, VPR[vr])); + auto vr_i8_ptr = m_ir_builder->CreateConstGEP1_32(m_state.args[CompileTaskState::Args::State], OFFSET_32(PPUThread, VPR[vr])); auto vr_i128_ptr = m_ir_builder->CreateBitCast(vr_i8_ptr, m_ir_builder->getIntNTy(128)->getPointerTo()); auto val_i128 = m_ir_builder->CreateBitCast(val_x128, m_ir_builder->getIntNTy(128)); m_ir_builder->CreateAlignedStore(val_i128, vr_i128_ptr, 16); diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 8e93e4cf97..58be498031 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -349,9 +349,9 @@ cpu_thread& ppu_thread::args(std::initializer_list values) assert(argc == 0); - envp.set(vm::alloc(align(sizeof32(*envp), stack_align), vm::main)); + envp.set(vm::alloc(align(SIZE_32(*envp), stack_align), vm::main)); *envp = 0; - argv.set(vm::alloc(sizeof32(*argv) * (u32)values.size(), vm::main)); + argv.set(vm::alloc(SIZE_32(*argv) * (u32)values.size(), vm::main)); for (auto &arg : values) { diff --git a/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp b/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp index 851a951e35..1f5f43f9c4 100644 --- a/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPUASMJITRecompiler.cpp @@ -15,13 +15,11 @@ #include "asmjit.h" -#define OFFSET_OF(type, x) static_cast(reinterpret_cast(&(((type*)0)->x))) - -#define SPU_OFF_128(x) asmjit::host::oword_ptr(*cpu, OFFSET_OF(SPUThread, x)) -#define SPU_OFF_64(x) asmjit::host::qword_ptr(*cpu, OFFSET_OF(SPUThread, x)) -#define SPU_OFF_32(x) asmjit::host::dword_ptr(*cpu, OFFSET_OF(SPUThread, x)) -#define SPU_OFF_16(x) asmjit::host::word_ptr(*cpu, OFFSET_OF(SPUThread, x)) -#define SPU_OFF_8(x) asmjit::host::byte_ptr(*cpu, OFFSET_OF(SPUThread, x)) +#define SPU_OFF_128(x) asmjit::host::oword_ptr(*cpu, OFFSET_32(SPUThread, x)) +#define SPU_OFF_64(x) asmjit::host::qword_ptr(*cpu, OFFSET_32(SPUThread, x)) +#define SPU_OFF_32(x) asmjit::host::dword_ptr(*cpu, OFFSET_32(SPUThread, x)) +#define SPU_OFF_16(x) asmjit::host::word_ptr(*cpu, OFFSET_32(SPUThread, x)) +#define SPU_OFF_8(x) asmjit::host::byte_ptr(*cpu, OFFSET_32(SPUThread, x)) spu_recompiler::spu_recompiler() : m_jit(std::make_shared()) @@ -1083,7 +1081,7 @@ void spu_recompiler::CBX(spu_opcode_t op) const XmmLink& vr = XmmAlloc(); c->movdqa(vr, XmmConst(_mm_set_epi32(0x10111213, 0x14151617, 0x18191a1b, 0x1c1d1e1f))); c->movdqa(SPU_OFF_128(gpr[op.rt]), vr); - c->mov(asmjit::host::byte_ptr(*cpu, *addr, 0, OFFSET_OF(SPUThread, gpr[op.rt])), 0x03); + c->mov(asmjit::host::byte_ptr(*cpu, *addr, 0, OFFSET_32(SPUThread, gpr[op.rt])), 0x03); c->unuse(*addr); } @@ -1097,7 +1095,7 @@ void spu_recompiler::CHX(spu_opcode_t op) const XmmLink& vr = XmmAlloc(); c->movdqa(vr, XmmConst(_mm_set_epi32(0x10111213, 0x14151617, 0x18191a1b, 0x1c1d1e1f))); c->movdqa(SPU_OFF_128(gpr[op.rt]), vr); - c->mov(asmjit::host::word_ptr(*cpu, *addr, 0, OFFSET_OF(SPUThread, gpr[op.rt])), 0x0203); + c->mov(asmjit::host::word_ptr(*cpu, *addr, 0, OFFSET_32(SPUThread, gpr[op.rt])), 0x0203); c->unuse(*addr); } @@ -1111,7 +1109,7 @@ void spu_recompiler::CWX(spu_opcode_t op) const XmmLink& vr = XmmAlloc(); c->movdqa(vr, XmmConst(_mm_set_epi32(0x10111213, 0x14151617, 0x18191a1b, 0x1c1d1e1f))); c->movdqa(SPU_OFF_128(gpr[op.rt]), vr); - c->mov(asmjit::host::dword_ptr(*cpu, *addr, 0, OFFSET_OF(SPUThread, gpr[op.rt])), 0x00010203); + c->mov(asmjit::host::dword_ptr(*cpu, *addr, 0, OFFSET_32(SPUThread, gpr[op.rt])), 0x00010203); c->unuse(*addr); } @@ -1126,7 +1124,7 @@ void spu_recompiler::CDX(spu_opcode_t op) c->movdqa(vr, XmmConst(_mm_set_epi32(0x10111213, 0x14151617, 0x18191a1b, 0x1c1d1e1f))); c->movdqa(SPU_OFF_128(gpr[op.rt]), vr); c->mov(*qw0, asmjit::imm_u(0x0001020304050607)); - c->mov(asmjit::host::qword_ptr(*cpu, *addr, 0, OFFSET_OF(SPUThread, gpr[op.rt])), *qw0); + c->mov(asmjit::host::qword_ptr(*cpu, *addr, 0, OFFSET_32(SPUThread, gpr[op.rt])), *qw0); c->unuse(*addr); c->unuse(*qw0); } @@ -1254,7 +1252,7 @@ void spu_recompiler::CBD(spu_opcode_t op) const XmmLink& vr = XmmAlloc(); c->movdqa(vr, XmmConst(_mm_set_epi32(0x10111213, 0x14151617, 0x18191a1b, 0x1c1d1e1f))); c->movdqa(SPU_OFF_128(gpr[op.rt]), vr); - c->mov(asmjit::host::byte_ptr(*cpu, *addr, 0, OFFSET_OF(SPUThread, gpr[op.rt])), 0x03); + c->mov(asmjit::host::byte_ptr(*cpu, *addr, 0, OFFSET_32(SPUThread, gpr[op.rt])), 0x03); c->unuse(*addr); } @@ -1279,7 +1277,7 @@ void spu_recompiler::CHD(spu_opcode_t op) const XmmLink& vr = XmmAlloc(); c->movdqa(vr, XmmConst(_mm_set_epi32(0x10111213, 0x14151617, 0x18191a1b, 0x1c1d1e1f))); c->movdqa(SPU_OFF_128(gpr[op.rt]), vr); - c->mov(asmjit::host::word_ptr(*cpu, *addr, 0, OFFSET_OF(SPUThread, gpr[op.rt])), 0x0203); + c->mov(asmjit::host::word_ptr(*cpu, *addr, 0, OFFSET_32(SPUThread, gpr[op.rt])), 0x0203); c->unuse(*addr); } @@ -1304,7 +1302,7 @@ void spu_recompiler::CWD(spu_opcode_t op) const XmmLink& vr = XmmAlloc(); c->movdqa(vr, XmmConst(_mm_set_epi32(0x10111213, 0x14151617, 0x18191a1b, 0x1c1d1e1f))); c->movdqa(SPU_OFF_128(gpr[op.rt]), vr); - c->mov(asmjit::host::dword_ptr(*cpu, *addr, 0, OFFSET_OF(SPUThread, gpr[op.rt])), 0x00010203); + c->mov(asmjit::host::dword_ptr(*cpu, *addr, 0, OFFSET_32(SPUThread, gpr[op.rt])), 0x00010203); c->unuse(*addr); } @@ -1330,7 +1328,7 @@ void spu_recompiler::CDD(spu_opcode_t op) c->movdqa(vr, XmmConst(_mm_set_epi32(0x10111213, 0x14151617, 0x18191a1b, 0x1c1d1e1f))); c->movdqa(SPU_OFF_128(gpr[op.rt]), vr); c->mov(*qw0, asmjit::imm_u(0x0001020304050607)); - c->mov(asmjit::host::qword_ptr(*cpu, *addr, 0, OFFSET_OF(SPUThread, gpr[op.rt])), *qw0); + c->mov(asmjit::host::qword_ptr(*cpu, *addr, 0, OFFSET_32(SPUThread, gpr[op.rt])), *qw0); c->unuse(*addr); c->unuse(*qw0); } diff --git a/rpcs3/Emu/Memory/vm_ptr.h b/rpcs3/Emu/Memory/vm_ptr.h index ad31ef23b5..9b853b4302 100644 --- a/rpcs3/Emu/Memory/vm_ptr.h +++ b/rpcs3/Emu/Memory/vm_ptr.h @@ -46,7 +46,7 @@ namespace vm // get vm pointer to a struct member with array subscription template, typename = if_comparable_t> _ptr_base ptr(MT T2::*const mptr, u32 index) const { - return{ VM_CAST(m_addr) + get_offset(mptr) + sizeof32(ET) * index, vm::addr }; + return{ VM_CAST(m_addr) + get_offset(mptr) + SIZE_32(ET) * index, vm::addr }; } // get vm reference to a struct member @@ -58,7 +58,7 @@ namespace vm // get vm reference to a struct member with array subscription template, typename = if_comparable_t> _ref_base ref(MT T2::*const mptr, u32 index) const { - return{ VM_CAST(m_addr) + get_offset(mptr) + sizeof32(ET) * index, vm::addr }; + return{ VM_CAST(m_addr) + get_offset(mptr) + SIZE_32(ET) * index, vm::addr }; } // get vm reference @@ -98,7 +98,7 @@ namespace vm { static_assert(!std::is_void::value, "vm::_ptr_base<> error: operator[] is not available for void pointers"); - return *static_cast(vm::base(VM_CAST(m_addr) + sizeof32(T) * index)); + return *static_cast(vm::base(VM_CAST(m_addr) + SIZE_32(T) * index)); } // enable only the conversions which are originally possible between pointer types @@ -128,7 +128,7 @@ namespace vm { static_assert(!std::is_void::value, "vm::_ptr_base<> error: aligned() is not available for void pointers"); - return aligned(alignof32(T)); + return aligned(ALIGN_32(T)); } // Test address for arbitrary alignment: (addr & (align - 1)) != 0 @@ -143,7 +143,7 @@ namespace vm static_assert(!std::is_void::value, "vm::_ptr_base<> error: operator++ is not available for void pointers"); const addr_type result = m_addr; - m_addr = VM_CAST(m_addr) + sizeof32(T); + m_addr = VM_CAST(m_addr) + SIZE_32(T); return{ result, vm::addr }; } @@ -152,7 +152,7 @@ namespace vm { static_assert(!std::is_void::value, "vm::_ptr_base<> error: operator++ is not available for void pointers"); - m_addr = VM_CAST(m_addr) + sizeof32(T); + m_addr = VM_CAST(m_addr) + SIZE_32(T); return *this; } @@ -162,7 +162,7 @@ namespace vm static_assert(!std::is_void::value, "vm::_ptr_base<> error: operator-- is not available for void pointers"); const addr_type result = m_addr; - m_addr = VM_CAST(m_addr) - sizeof32(T); + m_addr = VM_CAST(m_addr) - SIZE_32(T); return{ result, vm::addr }; } @@ -171,7 +171,7 @@ namespace vm { static_assert(!std::is_void::value, "vm::_ptr_base<> error: operator-- is not available for void pointers"); - m_addr = VM_CAST(m_addr) - sizeof32(T); + m_addr = VM_CAST(m_addr) - SIZE_32(T); return *this; } @@ -179,7 +179,7 @@ namespace vm { static_assert(!std::is_void::value, "vm::_ptr_base<> error: operator+= is not available for void pointers"); - m_addr = VM_CAST(m_addr) + count * sizeof32(T); + m_addr = VM_CAST(m_addr) + count * SIZE_32(T); return *this; } @@ -187,7 +187,7 @@ namespace vm { static_assert(!std::is_void::value, "vm::_ptr_base<> error: operator-= is not available for void pointers"); - m_addr = VM_CAST(m_addr) - count * sizeof32(T); + m_addr = VM_CAST(m_addr) - count * SIZE_32(T); return *this; } }; @@ -350,13 +350,13 @@ namespace vm // Call wait_op() for specified vm pointer template inline auto wait_op(named_thread_t& thread, const _ptr_base& ptr, F pred, Args&&... args) -> decltype(static_cast(pred(args...))) { - return wait_op(thread, ptr.addr(), sizeof32(T), std::move(pred), std::forward(args)...); + return wait_op(thread, ptr.addr(), SIZE_32(T), std::move(pred), std::forward(args)...); } // Call notify_at() for specified vm pointer template inline void notify_at(const vm::_ptr_base& ptr) { - return notify_at(ptr.addr(), sizeof32(T)); + return notify_at(ptr.addr(), SIZE_32(T)); } } @@ -375,19 +375,19 @@ template inline std::enable_if_t::val // addition operator for vm::_ptr_base (pointer + integer) template inline std::enable_if_t::value, vm::_ptr_base> operator +(const vm::_ptr_base& ptr, u32 count) { - return{ VM_CAST(ptr.addr()) + count * sizeof32(T), vm::addr }; + return{ VM_CAST(ptr.addr()) + count * SIZE_32(T), vm::addr }; } // addition operator for vm::_ptr_base (integer + pointer) template inline std::enable_if_t::value, vm::_ptr_base> operator +(u32 count, const vm::_ptr_base& ptr) { - return{ VM_CAST(ptr.addr()) + count * sizeof32(T), vm::addr }; + return{ VM_CAST(ptr.addr()) + count * SIZE_32(T), vm::addr }; } // subtraction operator for vm::_ptr_base (pointer - integer) template inline std::enable_if_t::value, vm::_ptr_base> operator -(const vm::_ptr_base& ptr, u32 count) { - return{ VM_CAST(ptr.addr()) - count * sizeof32(T), vm::addr }; + return{ VM_CAST(ptr.addr()) - count * SIZE_32(T), vm::addr }; } // pointer difference operator for vm::_ptr_base @@ -397,7 +397,7 @@ template inline std::enabl std::is_same, std::remove_cv_t>::value, s32> operator -(const vm::_ptr_base& left, const vm::_ptr_base& right) { - return static_cast(VM_CAST(left.addr()) - VM_CAST(right.addr())) / sizeof32(T1); + return static_cast(VM_CAST(left.addr()) - VM_CAST(right.addr())) / SIZE_32(T1); } // comparison operator for vm::_ptr_base (pointer1 == pointer2) diff --git a/rpcs3/Emu/Memory/vm_var.h b/rpcs3/Emu/Memory/vm_var.h index 1c1a1a32a4..7cfa8e414e 100644 --- a/rpcs3/Emu/Memory/vm_var.h +++ b/rpcs3/Emu/Memory/vm_var.h @@ -103,7 +103,7 @@ namespace vm public: // Call the constructor with specified arguments template::value>> _var_base(Args&&... args) - : pointer(A::alloc(sizeof32(T), alignof32(T)), vm::addr) + : pointer(A::alloc(SIZE_32(T), ALIGN_32(T)), vm::addr) { #include "restore_new.h" new(pointer::get_ptr()) T(std::forward(args)...); @@ -118,7 +118,7 @@ namespace vm pointer::get_ptr()->~T(); // Deallocate memory - A::dealloc(pointer::addr(), sizeof32(T)); + A::dealloc(pointer::addr(), SIZE_32(T)); } // Remove operator [] @@ -135,7 +135,7 @@ namespace vm public: // Call the default constructor for each element _var_base(u32 count) - : pointer(A::alloc(sizeof32(T) * count, alignof32(T)), vm::addr) + : pointer(A::alloc(SIZE_32(T) * count, ALIGN_32(T)), vm::addr) , m_count(count) { #include "restore_new.h" @@ -145,7 +145,7 @@ namespace vm // Call the constructor for each element using [it, it + count) template _var_base(u32 count, T2 it) - : pointer(A::alloc(sizeof32(T) * count, alignof32(T)), vm::addr) + : pointer(A::alloc(SIZE_32(T) * count, ALIGN_32(T)), vm::addr) , m_count(count) { #include "restore_new.h" @@ -161,7 +161,7 @@ namespace vm for (u32 i = m_count - 1; ~i; i--) pointer::operator [](i).~T(); // Deallocate memory - A::dealloc(pointer::addr(), sizeof32(T) * m_count); + A::dealloc(pointer::addr(), SIZE_32(T) * m_count); } u32 get_count() const @@ -188,7 +188,7 @@ namespace vm public: // Call the default constructor for each element _var_base() - : pointer(A::alloc(sizeof32(T) * N, alignof32(T)), vm::addr) + : pointer(A::alloc(SIZE_32(T) * N, ALIGN_32(T)), vm::addr) { #include "restore_new.h" new(pointer::get_ptr()) T[N](); @@ -197,7 +197,7 @@ namespace vm // Call the constructor for each element using array template _var_base(const T2(&array)[N]) - : pointer(A::alloc(sizeof32(T) * N, alignof32(T)), vm::addr) + : pointer(A::alloc(SIZE_32(T) * N, ALIGN_32(T)), vm::addr) { #include "restore_new.h" for (u32 i = 0; i < N; i++) new(pointer::get_ptr() + i) T(array[i]); @@ -212,7 +212,7 @@ namespace vm for (u32 i = N - 1; ~i; i--) pointer::operator [](i).~T(); // Deallocate memory - A::dealloc(pointer::addr(), sizeof32(T) * N); + A::dealloc(pointer::addr(), SIZE_32(T) * N); } constexpr u32 get_count() const diff --git a/rpcs3/Emu/RSX/CgBinaryProgram.h b/rpcs3/Emu/RSX/CgBinaryProgram.h index c92da2a8fc..b907fc121a 100644 --- a/rpcs3/Emu/RSX/CgBinaryProgram.h +++ b/rpcs3/Emu/RSX/CgBinaryProgram.h @@ -309,7 +309,7 @@ public: m_arb_shader += fmt::format("#%d ", i) + param_type + param_name + param_semantic + param_const + "\n"; - offset += sizeof32(CgBinaryParameter); + offset += SIZE_32(CgBinaryParameter); } m_arb_shader += "\n"; @@ -366,7 +366,7 @@ public: m_arb_shader += fmt::format("#%d ", i) + param_type + param_name + param_semantic + param_const + "\n"; - offset += sizeof32(CgBinaryParameter); + offset += SIZE_32(CgBinaryParameter); } m_arb_shader += "\n"; diff --git a/rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp b/rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp index bbb022ed13..e4691a9047 100644 --- a/rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp +++ b/rpcs3/Emu/RSX/Common/FragmentProgramDecompiler.cpp @@ -114,7 +114,7 @@ std::string FragmentProgramDecompiler::AddConst() return name; } - auto data = vm::ps3::ptr::make(m_addr + m_size + 4 * sizeof32(u32)); + auto data = vm::ps3::ptr::make(m_addr + m_size + 4 * SIZE_32(u32)); m_offset = 2 * 4 * sizeof(u32); u32 x = GetData(data[0]); diff --git a/rpcs3/Emu/SysCalls/Modules/cellAdec.cpp b/rpcs3/Emu/SysCalls/Modules/cellAdec.cpp index e1d530c37d..3a1234f6ae 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellAdec.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellAdec.cpp @@ -813,7 +813,7 @@ s32 cellAdecGetPcmItem(u32 handle, vm::pptr pcmItem) } pcm->pcmHandle = 0; // ??? - pcm->pcmAttr.bsiInfo_addr = pcm.addr() + sizeof32(CellAdecPcmItem); + pcm->pcmAttr.bsiInfo_addr = pcm.addr() + SIZE_32(CellAdecPcmItem); pcm->startAddr = 0x00000312; // invalid address (no output) pcm->size = af.size; pcm->status = CELL_OK; @@ -825,10 +825,10 @@ s32 cellAdecGetPcmItem(u32 handle, vm::pptr pcmItem) if (adecIsAtracX(adec->type)) { - auto atx = vm::ptr::make(pcm.addr() + sizeof32(CellAdecPcmItem)); + auto atx = vm::ptr::make(pcm.addr() + SIZE_32(CellAdecPcmItem)); atx->samplingFreq = frame->sample_rate; - atx->nbytes = frame->nb_samples * sizeof32(float); + atx->nbytes = frame->nb_samples * SIZE_32(float); if (frame->channels == 1) { atx->channelConfigIndex = 1; @@ -853,7 +853,7 @@ s32 cellAdecGetPcmItem(u32 handle, vm::pptr pcmItem) } else if (adec->type == CELL_ADEC_TYPE_MP3) { - auto mp3 = vm::ptr::make(pcm.addr() + sizeof32(CellAdecPcmItem)); + auto mp3 = vm::ptr::make(pcm.addr() + SIZE_32(CellAdecPcmItem)); // TODO memset(mp3.get_ptr(), 0, sizeof(CellAdecMP3Info)); diff --git a/rpcs3/Emu/SysCalls/Modules/cellAudio.cpp b/rpcs3/Emu/SysCalls/Modules/cellAudio.cpp index fcc1961beb..bcd8928643 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellAudio.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellAudio.cpp @@ -44,11 +44,11 @@ s32 cellAudioInit() // alloc memory (only once until the emulator is stopped) g_audio.buffer = g_audio.buffer ? g_audio.buffer : vm::alloc(AUDIO_PORT_OFFSET * AUDIO_PORT_COUNT, vm::main); - g_audio.indexes = g_audio.indexes ? g_audio.indexes : vm::alloc(sizeof32(u64) * AUDIO_PORT_COUNT, vm::main); + g_audio.indexes = g_audio.indexes ? g_audio.indexes : vm::alloc(SIZE_32(u64) * AUDIO_PORT_COUNT, vm::main); // clear memory std::memset(vm::base(g_audio.buffer), 0, AUDIO_PORT_OFFSET * AUDIO_PORT_COUNT); - std::memset(vm::base(g_audio.indexes), 0, sizeof32(u64) * AUDIO_PORT_COUNT); + std::memset(vm::base(g_audio.indexes), 0, SIZE_32(u64) * AUDIO_PORT_COUNT); // start audio thread g_audio_thread = thread_ctrl::spawn(PURE_EXPR("Audio Thread"s), []() @@ -854,7 +854,7 @@ s32 cellAudioAddData(u32 portNum, vm::ptr src, u32 samples, float volume) const AudioPortConfig& port = g_audio.ports[portNum]; - const auto dst = vm::ptr::make(port.addr + u32(port.tag % port.block) * port.channel * 256 * sizeof32(float)); + const auto dst = vm::ptr::make(port.addr + u32(port.tag % port.block) * port.channel * 256 * SIZE_32(float)); for (u32 i = 0; i < samples * port.channel; i++) { @@ -887,7 +887,7 @@ s32 cellAudioAdd2chData(u32 portNum, vm::ptr src, u32 samples, float volu const AudioPortConfig& port = g_audio.ports[portNum]; - const auto dst = vm::ptr::make(port.addr + s32(port.tag % port.block) * port.channel * 256 * sizeof32(float)); + const auto dst = vm::ptr::make(port.addr + s32(port.tag % port.block) * port.channel * 256 * SIZE_32(float)); if (port.channel == 2) { @@ -943,7 +943,7 @@ s32 cellAudioAdd6chData(u32 portNum, vm::ptr src, float volume) const AudioPortConfig& port = g_audio.ports[portNum]; - const auto dst = vm::ptr::make(port.addr + s32(port.tag % port.block) * port.channel * 256 * sizeof32(float)); + const auto dst = vm::ptr::make(port.addr + s32(port.tag % port.block) * port.channel * 256 * SIZE_32(float)); if (port.channel == 2 || port.channel == 6) { diff --git a/rpcs3/Emu/SysCalls/Modules/cellDmux.cpp b/rpcs3/Emu/SysCalls/Modules/cellDmux.cpp index 425fd3122a..5a2cbf2135 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellDmux.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellDmux.cpp @@ -166,7 +166,7 @@ void ElementaryStream::push_au(u32 size, u64 dts, u64 pts, u64 userdata, bool ra info->reserved = 0; info->userData = userdata; - auto spec = vm::ptr::make(put + sizeof32(CellDmuxAuInfoEx)); + auto spec = vm::ptr::make(put + SIZE_32(CellDmuxAuInfoEx)); *spec = specific; auto inf = vm::ptr::make(put + 64); diff --git a/rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp b/rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp index 41049ae319..b8a9484ce2 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellGifDec.cpp @@ -72,7 +72,7 @@ s32 cellGifDecOpen(PMainHandle mainHandle, PPSubHandle subHandle, PSrc src, POpe } } - subHandle->set(vm::alloc(sizeof32(GifStream), vm::main)); + subHandle->set(vm::alloc(SIZE_32(GifStream), vm::main)); **subHandle = current_subHandle; diff --git a/rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp b/rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp index b44fdc0329..d94ffa27c0 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp @@ -1814,7 +1814,7 @@ s32 _spurs::trace_initialize(PPUThread& ppu, vm::ptr spurs, vm::ptr spurs, vm::ptrtraceDataSize = size - sizeof32(CellSpursTraceInfo); + spurs->traceDataSize = size - SIZE_32(CellSpursTraceInfo); for (u32 i = 0; i < 8; i++) { buffer->spuThread[i] = spurs->spus[i]; @@ -1836,7 +1836,7 @@ s32 _spurs::trace_initialize(PPUThread& ppu, vm::ptr spurs, vm::ptrtraceBuffer.set(buffer.addr() | (mode & CELL_SPURS_TRACE_MODE_FLAG_WRAP_BUFFER ? 1 : 0)); spurs->traceMode = mode; - u32 spuTraceDataCount = (u32)((spurs->traceDataSize / sizeof32(CellSpursTracePacket)) / spurs->nSpus); + u32 spuTraceDataCount = (u32)((spurs->traceDataSize / SIZE_32(CellSpursTracePacket)) / spurs->nSpus); for (u32 i = 0, j = 8; i < 6; i++) { spurs->traceStartIndex[i] = j; @@ -3330,7 +3330,7 @@ s32 cellSpursCreateTasksetWithAttribute(PPUThread& ppu, vm::ptr spurs auto rc = _spurs::create_taskset(ppu, spurs, taskset, attr->args, attr.ptr(&CellSpursTasksetAttribute::priority), attr->max_contention, attr->name, attr->taskset_size, attr->enable_clear_ls); - if (attr->taskset_size >= sizeof32(CellSpursTaskset2)) + if (attr->taskset_size >= SIZE_32(CellSpursTaskset2)) { // TODO: Implement this } @@ -3342,7 +3342,7 @@ s32 cellSpursCreateTaskset(PPUThread& ppu, vm::ptr spurs, vm::ptr taskset) @@ -3616,7 +3616,7 @@ s32 cellSpursTasksetAttributeSetTasksetSize(vm::ptr a return CELL_SPURS_TASK_ERROR_ALIGN; } - if (size != sizeof32(CellSpursTaskset) && size != sizeof32(CellSpursTaskset2)) + if (size != SIZE_32(CellSpursTaskset) && size != SIZE_32(CellSpursTaskset2)) { return CELL_SPURS_TASK_ERROR_INVAL; } @@ -3747,7 +3747,7 @@ s32 cellSpursCreateTaskset2(PPUThread& ppu, vm::ptr spurs, vm::ptrargs, attr.ptr(&CellSpursTasksetAttribute2::priority), attr->max_contention, attr->name, sizeof32(CellSpursTaskset2), attr->enable_clear_ls)) + if (s32 rc = _spurs::create_taskset(ppu, spurs, taskset, attr->args, attr.ptr(&CellSpursTasksetAttribute2::priority), attr->max_contention, attr->name, SIZE_32(CellSpursTaskset2), attr->enable_clear_ls)) { return rc; } diff --git a/rpcs3/Emu/SysCalls/Modules/cellSpursSpu.cpp b/rpcs3/Emu/SysCalls/Modules/cellSpursSpu.cpp index 60ea47e3a0..506eb4ba9a 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSpursSpu.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellSpursSpu.cpp @@ -705,7 +705,7 @@ void spursSysServiceMain(SPUThread & spu, u32 pollStatus) { vm::reservation_acquire(vm::base(spu.offset + 0x100), VM_CAST(ctxt->spurs.addr()), 128); - vm::reservation_op(VM_CAST(ctxt->spurs.addr() + offsetof(CellSpurs, wklState1)), 128, [&]() { + vm::reservation_op(ctxt->spurs.ptr(&CellSpurs::wklState1).addr(), 128, [&]() { auto spurs = ctxt->spurs.get_ptr_priv(); // Halt if already initialised @@ -862,7 +862,7 @@ void spursSysServiceActivateWorkload(SPUThread & spu, SpursKernelContext * ctxt) } } - vm::reservation_op(VM_CAST(ctxt->spurs.addr() + offsetof(CellSpurs, wklState1)), 128, [&]() { + vm::reservation_op(ctxt->spurs.ptr(&CellSpurs::wklState1).addr(), 128, [&]() { auto spurs = ctxt->spurs.get_ptr_priv(); for (u32 i = 0; i < CELL_SPURS_MAX_WORKLOAD; i++) { @@ -919,7 +919,7 @@ void spursSysServiceUpdateShutdownCompletionEvents(SPUThread & spu, SpursKernelC // workloads that have a shutdown completion hook registered u32 wklNotifyBitSet; u8 spuPort; - vm::reservation_op(VM_CAST(ctxt->spurs.addr() + offsetof(CellSpurs, wklState1)), 128, [&]() { + vm::reservation_op(ctxt->spurs.ptr(&CellSpurs::wklState1).addr(), 128, [&]() { auto spurs = ctxt->spurs.get_ptr_priv(); wklNotifyBitSet = 0; @@ -961,7 +961,7 @@ void spursSysServiceTraceUpdate(SPUThread & spu, SpursKernelContext * ctxt, u32 bool notify; u8 sysSrvMsgUpdateTrace; - vm::reservation_op(VM_CAST(ctxt->spurs.addr() + offsetof(CellSpurs, wklState1)), 128, [&]() { + vm::reservation_op(ctxt->spurs.ptr(&CellSpurs::wklState1).addr(), 128, [&]() { auto spurs = ctxt->spurs.get_ptr_priv(); auto& trace = spurs->sysSrvTrace.raw(); @@ -986,8 +986,8 @@ void spursSysServiceTraceUpdate(SPUThread & spu, SpursKernelContext * ctxt, u32 // Get trace parameters from CellSpurs and store them in the LS if (((sysSrvMsgUpdateTrace & (1 << ctxt->spuNum)) != 0) || (arg3 != 0)) { - vm::reservation_acquire(vm::base(spu.offset + 0x80), VM_CAST(ctxt->spurs.addr() + offsetof(CellSpurs, traceBuffer)), 128); - auto spurs = vm::_ptr(spu.offset + 0x80 - offsetof(CellSpurs, traceBuffer)); + vm::reservation_acquire(vm::base(spu.offset + 0x80), ctxt->spurs.ptr(&CellSpurs::traceBuffer).addr(), 128); + auto spurs = vm::_ptr(spu.offset + 0x80 - OFFSET_32(CellSpurs, traceBuffer)); if (ctxt->traceMsgCount != 0xFF || spurs->traceBuffer.addr() == 0) { spursSysServiceTraceSaveCount(spu, ctxt); @@ -1005,7 +1005,7 @@ void spursSysServiceTraceUpdate(SPUThread & spu, SpursKernelContext * ctxt, u32 } if (notify) { - auto spurs = vm::_ptr(spu.offset + 0x2D80 - offsetof(CellSpurs, wklState1)); + auto spurs = vm::_ptr(spu.offset + 0x2D80 - OFFSET_32(CellSpurs, wklState1)); sys_spu_thread_send_event(spu, spurs->spuPort, 2, 0); } } @@ -1016,7 +1016,7 @@ void spursSysServiceCleanupAfterSystemWorkload(SPUThread & spu, SpursKernelConte bool do_return = false; - vm::reservation_op(VM_CAST(ctxt->spurs.addr() + offsetof(CellSpurs, wklState1)), 128, [&]() { + vm::reservation_op(ctxt->spurs.ptr(&CellSpurs::wklState1).addr(), 128, [&]() { auto spurs = ctxt->spurs.get_ptr_priv(); if (spurs->sysSrvPreemptWklId[ctxt->spuNum] == 0xFF) { diff --git a/rpcs3/Emu/SysCalls/Modules/cellVdec.cpp b/rpcs3/Emu/SysCalls/Modules/cellVdec.cpp index 5332ae7cd1..34e06c726f 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellVdec.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellVdec.cpp @@ -828,11 +828,11 @@ s32 cellVdecGetPicItem(u32 handle, vm::pptr picItem) info->auUserData[1] = 0; info->status = CELL_OK; info->attr = CELL_VDEC_PICITEM_ATTR_NORMAL; - info->picInfo_addr = info.addr() + sizeof32(CellVdecPicItem); + info->picInfo_addr = info.addr() + SIZE_32(CellVdecPicItem); if (vdec->type == CELL_VDEC_CODEC_TYPE_AVC) { - const vm::ptr avc{ info.addr() + sizeof32(CellVdecPicItem), vm::addr }; + const vm::ptr avc{ info.addr() + SIZE_32(CellVdecPicItem), vm::addr }; avc->horizontalSize = frame.width; avc->verticalSize = frame.height; @@ -886,7 +886,7 @@ s32 cellVdecGetPicItem(u32 handle, vm::pptr picItem) } else if (vdec->type == CELL_VDEC_CODEC_TYPE_DIVX) { - auto dvx = vm::ptr::make(info.addr() + sizeof32(CellVdecPicItem)); + auto dvx = vm::ptr::make(info.addr() + SIZE_32(CellVdecPicItem)); switch (frame.pict_type) { @@ -920,7 +920,7 @@ s32 cellVdecGetPicItem(u32 handle, vm::pptr picItem) } else if (vdec->type == CELL_VDEC_CODEC_TYPE_MPEG2) { - auto mp2 = vm::ptr::make(info.addr() + sizeof32(CellVdecPicItem)); + auto mp2 = vm::ptr::make(info.addr() + SIZE_32(CellVdecPicItem)); throw EXCEPTION("MPEG2"); } diff --git a/rpcs3/Loader/ELF64.cpp b/rpcs3/Loader/ELF64.cpp index 3ee00982b3..288aeb61a5 100644 --- a/rpcs3/Loader/ELF64.cpp +++ b/rpcs3/Loader/ELF64.cpp @@ -649,7 +649,7 @@ namespace loader if (info.size < sizeof(process_param_t)) { - LOG_WARNING(LOADER, "Bad process_param size! [0x%x : 0x%x]", info.size, sizeof32(process_param_t)); + LOG_WARNING(LOADER, "Bad process_param size! [0x%x : 0x%x]", info.size, SIZE_32(process_param_t)); } if (info.magic != 0x13bcc5f6) { diff --git a/rpcs3/Loader/TROPUSR.cpp b/rpcs3/Loader/TROPUSR.cpp index 4867bbc313..00f8473846 100644 --- a/rpcs3/Loader/TROPUSR.cpp +++ b/rpcs3/Loader/TROPUSR.cpp @@ -171,8 +171,8 @@ bool TROPUSRLoader::Generate(const std::string& filepath, const std::string& con default: trophy_grade = 0; } - TROPUSREntry4 entry4 = { 4, sizeof32(TROPUSREntry4) - 0x10, (u32)m_table4.size(), 0, trophy_id, trophy_grade, 0xFFFFFFFF }; - TROPUSREntry6 entry6 = { 6, sizeof32(TROPUSREntry6) - 0x10, (u32)m_table6.size(), 0, trophy_id }; + TROPUSREntry4 entry4 = { 4, SIZE_32(TROPUSREntry4) - 0x10, (u32)m_table4.size(), 0, trophy_id, trophy_grade, 0xFFFFFFFF }; + TROPUSREntry6 entry6 = { 6, SIZE_32(TROPUSREntry6) - 0x10, (u32)m_table6.size(), 0, trophy_id }; m_table4.push_back(entry4); m_table6.push_back(entry6); @@ -180,9 +180,9 @@ bool TROPUSRLoader::Generate(const std::string& filepath, const std::string& con } u64 offset = sizeof(TROPUSRHeader) + 2 * sizeof(TROPUSRTableHeader); - TROPUSRTableHeader table4header = { 4, sizeof32(TROPUSREntry4) - 0x10, 1, (u32)m_table4.size(), offset }; + TROPUSRTableHeader table4header = { 4, SIZE_32(TROPUSREntry4) - 0x10, 1, (u32)m_table4.size(), offset }; offset += m_table4.size() * sizeof(TROPUSREntry4); - TROPUSRTableHeader table6header = { 6, sizeof32(TROPUSREntry6) - 0x10, 1, (u32)m_table6.size(), offset }; + TROPUSRTableHeader table6header = { 6, SIZE_32(TROPUSREntry6) - 0x10, 1, (u32)m_table6.size(), offset }; offset += m_table6.size() * sizeof(TROPUSREntry6); m_tableHeaders.clear(); diff --git a/rpcs3/stdafx.h b/rpcs3/stdafx.h index 372a5d94c6..438dec617b 100644 --- a/rpcs3/stdafx.h +++ b/rpcs3/stdafx.h @@ -155,10 +155,10 @@ struct triplet_t }; // return 32 bit sizeof() to avoid widening/narrowing conversions with size_t -#define sizeof32(type) static_cast(sizeof(type)) +#define SIZE_32(type) static_cast(sizeof(type)) // return 32 bit alignof() to avoid widening/narrowing conversions with size_t -#define alignof32(type) static_cast(alignof(type)) +#define ALIGN_32(type) static_cast(alignof(type)) // return 32 bit .size() for container template @@ -175,6 +175,9 @@ constexpr u32 size32(const T(&)[Size]) return Size >= 0 && Size <= UINT32_MAX ? static_cast(Size) : throw std::length_error(__FUNCTION__); } +// return 32 bit offsetof() +#define OFFSET_32(type, x) static_cast(reinterpret_cast(&(reinterpret_cast(0ull)->x))) + #define CONCATENATE_DETAIL(x, y) x ## y #define CONCATENATE(x, y) CONCATENATE_DETAIL(x, y)