summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAshok Bhat2014-06-19 05:03:32 -0500
committerAshok Bhat2014-06-19 06:29:19 -0500
commit410ae2fe8e5d78cbce7b20be87828c5595e76842 (patch)
tree4c9a47218762a86079214c57484f6ceb6a68e59c /libpixelflinger
parent46fbaf062fd94e3fecc7165f4b42d42145e0603d (diff)
downloadplatform-system-core-410ae2fe8e5d78cbce7b20be87828c5595e76842.tar.gz
platform-system-core-410ae2fe8e5d78cbce7b20be87828c5595e76842.tar.xz
platform-system-core-410ae2fe8e5d78cbce7b20be87828c5595e76842.zip
pixelflinger: Use pointer arithmetic to determine cache flush parameters
CodeCache casts base address to long and then adds size (of type ssize_t) to get end address. This can cause sign-extension problems. This patch instead uses simple pointer arithmetic. Change-Id: Ib71d515a6fd6a7f4762cf974d6cf4eba9a601fa8 Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Diffstat (limited to 'libpixelflinger')
-rw-r--r--libpixelflinger/codeflinger/CodeCache.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/libpixelflinger/codeflinger/CodeCache.cpp b/libpixelflinger/codeflinger/CodeCache.cpp
index 8afe0a994..cfd2b3709 100644
--- a/libpixelflinger/codeflinger/CodeCache.cpp
+++ b/libpixelflinger/codeflinger/CodeCache.cpp
@@ -201,9 +201,9 @@ int CodeCache::cache( const AssemblyKeyBase& keyBase,
201 mCacheInUse += assemblySize; 201 mCacheInUse += assemblySize;
202 mWhen++; 202 mWhen++;
203 // synchronize caches... 203 // synchronize caches...
204 const long base = long(assembly->base()); 204 void* base = assembly->base();
205 const long curr = base + long(assembly->size()); 205 void* curr = (uint8_t*)base + assembly->size();
206 __builtin___clear_cache((void*)base, (void*)curr); 206 __builtin___clear_cache(base, curr);
207 } 207 }
208 208
209 pthread_mutex_unlock(&mLock); 209 pthread_mutex_unlock(&mLock);