diff options
| author | degasus <wickmarkus@web.de> | 2016-05-07 09:35:40 +0200 |
|---|---|---|
| committer | degasus <wickmarkus@web.de> | 2016-09-17 16:47:12 +0200 |
| commit | 258f48572deda4bedd776dd7e11584e9c252c61d (patch) | |
| tree | e785be4317e058c123433d2d2458d3e4ba3aeca0 /Source/Core/VideoCommon/VertexLoaderARM64.cpp | |
| parent | 22b5d89bf15e22de63264771c1f373519ea5cc25 (diff) | |
VertexLoaderJit: Fix out-of-bounds access for zfreeze.
This fixes a GCC6.1 warning.
Diffstat (limited to 'Source/Core/VideoCommon/VertexLoaderARM64.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/VertexLoaderARM64.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/Source/Core/VideoCommon/VertexLoaderARM64.cpp b/Source/Core/VideoCommon/VertexLoaderARM64.cpp index cf0fd576f4..87ac4c6722 100644 --- a/Source/Core/VideoCommon/VertexLoaderARM64.cpp +++ b/Source/Core/VideoCommon/VertexLoaderARM64.cpp @@ -194,7 +194,7 @@ int VertexLoaderARM64::ReadVertex(u64 attribute, int format, int count_in, int c { CMP(count_reg, 3); FixupBranch dont_store = B(CC_GT); - MOVI2R(EncodeRegTo64(scratch2_reg), (u64)VertexLoaderManager::position_cache); + MOVP2R(EncodeRegTo64(scratch2_reg), VertexLoaderManager::position_cache); ADD(EncodeRegTo64(scratch1_reg), EncodeRegTo64(scratch2_reg), EncodeRegTo64(count_reg), ArithOption(EncodeRegTo64(count_reg), ST_LSL, 4)); m_float_emit.STUR(write_size, coords, EncodeRegTo64(scratch1_reg), -16); @@ -392,11 +392,11 @@ void VertexLoaderARM64::GenerateVertexLoader() MOV(skipped_reg, WZR); MOV(saved_count, count_reg); - MOVI2R(stride_reg, (u64)&g_main_cp_state.array_strides); - MOVI2R(arraybase_reg, (u64)&VertexLoaderManager::cached_arraybases); + MOVP2R(stride_reg, g_main_cp_state.array_strides); + MOVP2R(arraybase_reg, VertexLoaderManager::cached_arraybases); if (need_scale) - MOVI2R(scale_reg, (u64)&scale_factors); + MOVP2R(scale_reg, scale_factors); const u8* loop_start = GetCodePtr(); @@ -409,8 +409,7 @@ void VertexLoaderARM64::GenerateVertexLoader() // Z-Freeze CMP(count_reg, 3); FixupBranch dont_store = B(CC_GT); - MOVI2R(EncodeRegTo64(scratch2_reg), - (u64)VertexLoaderManager::position_matrix_index - sizeof(u32)); + MOVP2R(EncodeRegTo64(scratch2_reg), VertexLoaderManager::position_matrix_index); STR(INDEX_UNSIGNED, scratch1_reg, EncodeRegTo64(scratch2_reg), 0); SetJumpTarget(dont_store); |
