From: Rhys Weatherley Date: Mon, 7 Jun 2004 22:07:11 +0000 (+0000) Subject: Fix ROUND_END_PTR so that it adds the size after casting to jit_nuint. X-Git-Tag: r.0.0.4~42 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=23620262cb35e10f36fbe8993c79bb44db374fe2;p=francis%2Flibjit.git Fix ROUND_END_PTR so that it adds the size after casting to jit_nuint. --- diff --git a/ChangeLog b/ChangeLog index 89f81b3..9aa0daa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,9 @@ +2004-06-08 Miroslaw Dobrzanski-Neumann + + * jit/jit-alloc.c: fix ROUND_END_PTR so that it adds the size + after casting to jit_nuint. + 2004-06-07 Thong Nguyen * configure.in, jit/jit-insn.c: add "_setjmp" to the list of diff --git a/jit/jit-alloc.c b/jit/jit-alloc.c index 35867b1..cd3ea47 100644 --- a/jit/jit-alloc.c +++ b/jit/jit-alloc.c @@ -158,8 +158,8 @@ void jit_flush_exec(void *ptr, unsigned int size) #define ROUND_BEG_PTR(p) \ ((void *)((((jit_nuint)(p)) / CLSIZE) * CLSIZE)) -#define ROUND_END_PTR(p) \ - ((void *)(((((jit_nuint)(p)) + CLSIZE - 1)/CLSIZE)*CLSIZE)) +#define ROUND_END_PTR(p,s) \ + ((void *)(((((jit_nuint)(p)) + (s) + CLSIZE - 1)/CLSIZE)*CLSIZE)) #if defined(__GNUC__) #if defined(PPC) @@ -171,7 +171,7 @@ void jit_flush_exec(void *ptr, unsigned int size) /* Flush the data out of the data cache */ p = ROUND_BEG_PTR (ptr); - end = ROUND_END_PTR (p + size); + end = ROUND_END_PTR (p, size); while (p < end) { __asm__ __volatile__ ("dcbst 0,%0" :: "r"(p)); @@ -194,7 +194,7 @@ void jit_flush_exec(void *ptr, unsigned int size) /* Flush the CPU cache on sparc platforms */ register unsigned char *p = ROUND_BEG_PTR (ptr); - register unsigned char *end = ROUND_END_PTR (p + size); + register unsigned char *end = ROUND_END_PTR (p, size); __asm__ __volatile__ ("stbar"); while (p < end) { @@ -221,7 +221,7 @@ void jit_flush_exec(void *ptr, unsigned int size) #elif (defined(__ia64) || defined(__ia64__)) && defined(linux) #define CLSIZE 32 register unsigned char *p = ROUND_BEG_PTR (ptr); - register unsigned char *end = ROUND_END_PTR (p + size); + register unsigned char *end = ROUND_END_PTR (p, size); while(p < end) { asm volatile("fc %0" :: "r"(p));