diff options
Diffstat (limited to 'include/common.h')
| -rw-r--r-- | include/common.h | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/include/common.h b/include/common.h index 28aa4b9d6..84315a0b4 100644 --- a/include/common.h +++ b/include/common.h @@ -1011,10 +1011,17 @@ static inline phys_addr_t map_to_sysmem(void *ptr)   * of a function scoped static buffer.  It can not be used to create a cache   * line aligned global buffer.   */ -#define ALLOC_ALIGN_BUFFER(type, name, size, align)			\ -	char __##name[ROUND(size * sizeof(type), align) + (align - 1)];	\ +#define PAD_COUNT(s, pad) ((s - 1) / pad + 1) +#define PAD_SIZE(s, pad) (PAD_COUNT(s, pad) * pad) +#define ALLOC_ALIGN_BUFFER_PAD(type, name, size, align, pad)		\ +	char __##name[ROUND(PAD_SIZE(size * sizeof(type), pad), align)  \ +		      + (align - 1)];					\  									\  	type *name = (type *) ALIGN((uintptr_t)__##name, align) +#define ALLOC_ALIGN_BUFFER(type, name, size, align)		\ +	ALLOC_ALIGN_BUFFER_PAD(type, name, size, align, 1) +#define ALLOC_CACHE_ALIGN_BUFFER_PAD(type, name, size, pad)		\ +	ALLOC_ALIGN_BUFFER_PAD(type, name, size, ARCH_DMA_MINALIGN, pad)  #define ALLOC_CACHE_ALIGN_BUFFER(type, name, size)			\  	ALLOC_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN) |