|
@@ -49,6 +49,7 @@ ENTRY(_get_core_lock)
|
|
jump .Lretry_corelock
|
|
jump .Lretry_corelock
|
|
.Ldone_corelock:
|
|
.Ldone_corelock:
|
|
p0 = r1;
|
|
p0 = r1;
|
|
|
|
+ /* flush core internal write buffer before invalidate dcache */
|
|
CSYNC(r2);
|
|
CSYNC(r2);
|
|
flushinv[p0];
|
|
flushinv[p0];
|
|
SSYNC(r2);
|
|
SSYNC(r2);
|
|
@@ -685,6 +686,8 @@ ENTRY(___raw_atomic_test_asm)
|
|
r1 = -L1_CACHE_BYTES;
|
|
r1 = -L1_CACHE_BYTES;
|
|
r1 = r0 & r1;
|
|
r1 = r0 & r1;
|
|
p0 = r1;
|
|
p0 = r1;
|
|
|
|
+ /* flush core internal write buffer before invalidate dcache */
|
|
|
|
+ CSYNC(r2);
|
|
flushinv[p0];
|
|
flushinv[p0];
|
|
SSYNC(r2);
|
|
SSYNC(r2);
|
|
r0 = [p1];
|
|
r0 = [p1];
|
|
@@ -907,6 +910,8 @@ ENTRY(___raw_uncached_fetch_asm)
|
|
r1 = -L1_CACHE_BYTES;
|
|
r1 = -L1_CACHE_BYTES;
|
|
r1 = r0 & r1;
|
|
r1 = r0 & r1;
|
|
p0 = r1;
|
|
p0 = r1;
|
|
|
|
+ /* flush core internal write buffer before invalidate dcache */
|
|
|
|
+ CSYNC(r2);
|
|
flushinv[p0];
|
|
flushinv[p0];
|
|
SSYNC(r2);
|
|
SSYNC(r2);
|
|
r0 = [p1];
|
|
r0 = [p1];
|