diff options
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/arch/amd64/conf/link.ld | 4 | ||||
| -rw-r--r-- | sys/inc/sys/cdefs.h | 6 | ||||
| -rw-r--r-- | sys/inc/sys/param.h | 5 |
3 files changed, 15 insertions, 0 deletions
diff --git a/sys/arch/amd64/conf/link.ld b/sys/arch/amd64/conf/link.ld index 9ae1a01..5b42aeb 100644 --- a/sys/arch/amd64/conf/link.ld +++ b/sys/arch/amd64/conf/link.ld @@ -33,6 +33,10 @@ SECTIONS *(.data) } :data + .cacheline_aligned : ALIGN(64) { + *(.cacheline_aligned) + } + .bss : { *(COMMON) *(.bss .bss.*) diff --git a/sys/inc/sys/cdefs.h b/sys/inc/sys/cdefs.h index 1da0392..43310f7 100644 --- a/sys/inc/sys/cdefs.h +++ b/sys/inc/sys/cdefs.h @@ -30,6 +30,8 @@ #ifndef _SYS_CDEFS_H_ #define _SYS_CDEFS_H_ 1 +#include <sys/param.h> + #define __asmv __asm__ __volatile__ #define __weak __attribute__((__weak__)) #define __strong __attribute__((__strong__)) @@ -48,4 +50,8 @@ #define __barrier() __asmv("" ::: "memory") #define __static_assert _Static_assert +#define __cacheline_aligned \ + __aligned(COHERENCY_UNIT) \ + __section(".cacheline_aligned") + #endif /* !_SYS_CDEFS_H_ */ diff --git a/sys/inc/sys/param.h b/sys/inc/sys/param.h index 96e270e..f8e939e 100644 --- a/sys/inc/sys/param.h +++ b/sys/inc/sys/param.h @@ -32,6 +32,11 @@ #include <sys/types.h> +/* XXX: Should be arch overridable */ +#if !defined(COHERENCY_UNIT) +#define COHERENCY_UNIT 64 +#endif /* !COHERENCY_UNIT */ + /* Bit related macros */ #define ISSET(v, f) ((v) & (f)) #define BIT(n) (1ULL << (n)) |
