| Index: src/arm64/cpu-arm64.cc
|
| diff --git a/src/arm64/cpu-arm64.cc b/src/arm64/cpu-arm64.cc
|
| index 712dbbd650b24bc4022c31bb06f190b7afbe385b..7c1084f62da7f853e5d3a4cb2a208b0583225f70 100644
|
| --- a/src/arm64/cpu-arm64.cc
|
| +++ b/src/arm64/cpu-arm64.cc
|
| @@ -58,14 +58,16 @@ void CpuFeatures::FlushICache(void* address, size_t length) {
|
| __asm__ __volatile__ ( // NOLINT
|
| // Clean every line of the D cache containing the target data.
|
| "0: \n\t"
|
| - // dc : Data Cache maintenance
|
| - // c : Clean
|
| - // va : by (Virtual) Address
|
| - // u : to the point of Unification
|
| - // The point of unification for a processor is the point by which the
|
| - // instruction and data caches are guaranteed to see the same copy of a
|
| - // memory location. See ARM DDI 0406B page B2-12 for more information.
|
| - "dc cvau, %[dline] \n\t"
|
| + // dc : Data Cache maintenance
|
| + // c : Clean
|
| + // i : Invalidate
|
| + // va : by (Virtual) Address
|
| + // c : to the point of Coherency
|
| + // See ARM DDI 0406B page B2-12 for more information.
|
| + // We would prefer to use "cvau" (clean to the point of unification) here
|
| + // but we use "civac" to work around Cortex-A53 errata 819472, 826319,
|
| + // 827319 and 824069.
|
| + "dc civac, %[dline] \n\t"
|
| "add %[dline], %[dline], %[dsize] \n\t"
|
| "cmp %[dline], %[end] \n\t"
|
| "b.lt 0b \n\t"
|
|
|