diff --git a/interface/gemv.c b/interface/gemv.c index 0a222a645..97c68bf2d 100644 --- a/interface/gemv.c +++ b/interface/gemv.c @@ -37,6 +37,7 @@ /*********************************************************************/ #include +#include #include "common.h" #include "l1param.h" #ifdef FUNCTION_PROFILE @@ -224,13 +225,17 @@ void CNAME(enum CBLAS_ORDER order, #ifdef ALIGNED_ACCESS stack_alloc_size += 3; #endif - if(stack_alloc_size < 128) +// if(stack_alloc_size < 128) //dgemv_n.S require a 128 bytes buffer - stack_alloc_size = 128; +// increasing instead of capping 128 +// ABI STACK for windows 288 bytes + stack_alloc_size += 288 / sizeof(FLOAT) ; if(stack_alloc_size > MAX_STACK_ALLOC / sizeof(FLOAT)) stack_alloc_size = 0; +// stack overflow check + volatile double stack_check = 3.14159265358979323846; FLOAT stack_buffer[stack_alloc_size]; buffer = stack_alloc_size ? stack_buffer : (FLOAT *)blas_memory_alloc(1); // printf("stack_alloc_size=%d\n", stack_alloc_size); @@ -265,6 +270,8 @@ void CNAME(enum CBLAS_ORDER order, } #endif +// stack overflow check +assert(stack_check==3.14159265358979323846); #ifdef MAX_STACK_ALLOC if(!stack_alloc_size){