diff --git a/driver/others/memory.c b/driver/others/memory.c index 689aba942..1f66ef9e9 100644 --- a/driver/others/memory.c +++ b/driver/others/memory.c @@ -76,8 +76,10 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef likely #ifdef __GNUC__ #define likely(x) __builtin_expect(!!(x), 1) +#define unlikely(x) __builtin_expect(!!(x), 0) #else #define likely(x) (x) +#define unlikely(x) (x) #endif #endif @@ -3097,7 +3099,7 @@ void blas_memory_free(void *free_area){ if (memory[position].addr != free_area) goto error; printf(" Position : %d\n", position); #endif - if (memory_overflowed) { + if (unlikely(memory_overflowed && position >= NUM_BUFFERS)) { while ((position < NUM_BUFFERS+512) && (newmemory[position-NUM_BUFFERS].addr != free_area)) position++; // arm: ensure all writes are finished before other thread takes this memory