From 1cb0e18c7b217066d42ba48d956b5ba64d65725a Mon Sep 17 00:00:00 2001 From: Paulo Andrade Date: Sun, 21 Dec 2014 20:59:27 -0200 Subject: [PATCH] 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 d10780ab3..b063de2ed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2014-12-21 Paulo Andrade + + * 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 * lib/jit_arm.c: Correct check to guard overflow of index diff --git a/lib/jit_arm.c b/lib/jit_arm.c index d65d248e4..3393f8590 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 }