| @@ -37,6 +37,7 @@ | |||||
| /*********************************************************************/ | /*********************************************************************/ | ||||
| #include <stdio.h> | #include <stdio.h> | ||||
| #include <assert.h> | |||||
| #include "common.h" | #include "common.h" | ||||
| #include "l1param.h" | #include "l1param.h" | ||||
| #ifdef FUNCTION_PROFILE | #ifdef FUNCTION_PROFILE | ||||
| @@ -224,13 +225,17 @@ void CNAME(enum CBLAS_ORDER order, | |||||
| #ifdef ALIGNED_ACCESS | #ifdef ALIGNED_ACCESS | ||||
| stack_alloc_size += 3; | stack_alloc_size += 3; | ||||
| #endif | #endif | ||||
| if(stack_alloc_size < 128) | |||||
| // if(stack_alloc_size < 128) | |||||
| //dgemv_n.S require a 128 bytes buffer | //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)) | if(stack_alloc_size > MAX_STACK_ALLOC / sizeof(FLOAT)) | ||||
| stack_alloc_size = 0; | stack_alloc_size = 0; | ||||
| // stack overflow check | |||||
| volatile double stack_check = 3.14159265358979323846; | |||||
| FLOAT stack_buffer[stack_alloc_size]; | FLOAT stack_buffer[stack_alloc_size]; | ||||
| buffer = stack_alloc_size ? stack_buffer : (FLOAT *)blas_memory_alloc(1); | buffer = stack_alloc_size ? stack_buffer : (FLOAT *)blas_memory_alloc(1); | ||||
| // printf("stack_alloc_size=%d\n", stack_alloc_size); | // printf("stack_alloc_size=%d\n", stack_alloc_size); | ||||
| @@ -265,6 +270,8 @@ void CNAME(enum CBLAS_ORDER order, | |||||
| } | } | ||||
| #endif | #endif | ||||
| // stack overflow check | |||||
| assert(stack_check==3.14159265358979323846); | |||||
| #ifdef MAX_STACK_ALLOC | #ifdef MAX_STACK_ALLOC | ||||
| if(!stack_alloc_size){ | if(!stack_alloc_size){ | ||||