mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-03-17 15:27:00 +00:00
common.h: Introduce DEFINE_CACHE_ALIGN_BUFFER
This is the out-of-function-scope counterpart of ALLOC_CACHE_ALIGN_BUFFER. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Tom Rini <trini@ti.com> [ilya.yanok]: added missing <linux/compiler.h> include and {DEFINE,ALLOC}_ALIGN_BUFFER macros allowing explicit alignment specification. Signed-off-by: Ilya Yanok <ilya.yanok@cogentembedded.com>
This commit is contained in:
parent
eec3866e00
commit
de4d11355f
1 changed files with 19 additions and 4 deletions
|
@ -39,6 +39,7 @@ typedef volatile unsigned char vu_char;
|
|||
#include <linux/bitops.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <asm/ptrace.h>
|
||||
#include <stdarg.h>
|
||||
#if defined(CONFIG_PCI) && (defined(CONFIG_4xx) && !defined(CONFIG_AP1000))
|
||||
|
@ -944,11 +945,25 @@ int cpu_release(int nr, int argc, char * const argv[]);
|
|||
* of a function scoped static buffer. It can not be used to create a cache
|
||||
* line aligned global buffer.
|
||||
*/
|
||||
#define ALLOC_CACHE_ALIGN_BUFFER(type, name, size) \
|
||||
char __##name[ROUND(size * sizeof(type), ARCH_DMA_MINALIGN) + \
|
||||
ARCH_DMA_MINALIGN - 1]; \
|
||||
#define ALLOC_ALIGN_BUFFER(type, name, size, align) \
|
||||
char __##name[ROUND(size * sizeof(type), align) + (align - 1)]; \
|
||||
\
|
||||
type *name = (type *) ALIGN((uintptr_t)__##name, ARCH_DMA_MINALIGN)
|
||||
type *name = (type *) ALIGN((uintptr_t)__##name, align)
|
||||
#define ALLOC_CACHE_ALIGN_BUFFER(type, name, size) \
|
||||
ALLOC_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN)
|
||||
|
||||
/*
|
||||
* DEFINE_CACHE_ALIGN_BUFFER() is similar to ALLOC_CACHE_ALIGN_BUFFER, but it's
|
||||
* purpose is to allow allocating aligned buffers outside of function scope.
|
||||
* Usage of this macro shall be avoided or used with extreme care!
|
||||
*/
|
||||
#define DEFINE_ALIGN_BUFFER(type, name, size, align) \
|
||||
static char __##name[roundup(size * sizeof(type), align)] \
|
||||
__aligned(align); \
|
||||
\
|
||||
static type *name = (type *)__##name
|
||||
#define DEFINE_CACHE_ALIGN_BUFFER(type, name, size) \
|
||||
DEFINE_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN)
|
||||
|
||||
/* Pull in stuff for the build system */
|
||||
#ifdef DO_DEPS_ONLY
|
||||
|
|
Loading…
Add table
Reference in a new issue