wingo pushed a commit to branch lightning
in repository guile.
commit 1cb0e18c7b217066d42ba48d956b5ba64d65725a
Author: Paulo Andrade <[email protected]>
Date: Sun Dec 21 20:59:27 2014 -0200
ARM: Flush cache page by page
* lib/jit_arm.c: Call __clear_cache for every page.
This should only be required for older boards or
toolchain setup, but has been reported to be required
for lightning at some point.
---
ChangeLog | 7 +++++++
lib/jit_arm.c | 9 +++++----
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d10780a..b063de2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2014-12-21 Paulo Andrade <[email protected]>
+ * lib/jit_arm.c: Call __clear_cache for every page.
+ This should only be required for older boards or
+ toolchain setup, but has been reported to be required
+ for lightning at some point.
+
+2014-12-21 Paulo Andrade <[email protected]>
+
* lib/jit_arm.c: Correct check to guard overflow of index
of constants from program counter.
diff --git a/lib/jit_arm.c b/lib/jit_arm.c
index d65d248..3393f85 100644
--- a/lib/jit_arm.c
+++ b/lib/jit_arm.c
@@ -1606,12 +1606,13 @@ void
jit_flush(void *fptr, void *tptr)
{
#if defined(__GNUC__)
- jit_word_t f, t, s;
+ jit_uword_t i, f, t, s;
s = sysconf(_SC_PAGE_SIZE);
- f = (jit_word_t)fptr & -s;
- t = (((jit_word_t)tptr) + s - 1) & -s;
- __clear_cache((void *)f, (void *)t);
+ f = (jit_uword_t)fptr & -s;
+ t = (((jit_uword_t)tptr) + s - 1) & -s;
+ for (i = f; i < t; i += s)
+ __clear_cache((void *)i, (void *)(i + s));
#endif
}