gint/include/gint/defs/attributes.h
Lephe 15558c8fb3
support data loading in ILRAM, XRAM and YRAM
This change adds support for three sections .ilram, .xram and .yram,
along with three macros GILRAM, GXRAM and GYRAM, that can be used to
statically load data to on-chip memory.
2019-09-15 19:29:47 +02:00

45 lines
1.5 KiB
C

//---
// gint:defs:attributes - Macros for compiler-specific attributes
//---
#ifndef GINT_DEFS_ATTRIBUTES
#define GINT_DEFS_ATTRIBUTES
/* Objects from specific sections */
#define GSECTION(x) __attribute__((section(x)))
/* Objects from the .gint.data and .gint.bss sections */
#define GDATA __attribute__((section(".gint.data")))
#define GBSS __attribute__((section(".gint.bss")))
/* Additional sections that are only needed on SH3 */
#define GDATA3 __attribute__((section(".gint.data.sh3")))
#define GBSS3 __attribute__((section(".gint.bss.sh3")))
/* Objects for the ILRAM, XRAM and YRAM regions */
#define GILRAM __attribute__((section(".ilram")))
#define GXRAM __attribute__((section(".xram")))
#define GYRAM __attribute__((section(".yram")))
/* Unused parameters or variables */
#define GUNUSED __attribute__((unused))
/* Functions that *must* be inlined */
#define GINLINE __attribute__((always_inline)) inline
/* Aligned variables */
#define GALIGNED(x) __attribute__((aligned(x)))
/* Packed structures. I require explicit alignment because if it's unspecified,
GCC cannot optimize access size, and reads to memory-mapped I/O with invalid
access sizes silently fail - honestly you don't want this to happen */
#define GPACKED(x) __attribute__((packed, aligned(x)))
/* Weak symbols */
#define GWEAK __attribute__((weak))
/* Constructors */
#define GCONSTRUCTOR __attribute__((constructor))
#define GDESTRUCTOR __attribute__((destructor))
/* Functions that do not return */
#define GNORETURN __attribute__((noreturn))
#endif /* GINT_DEFS_ATTRIBUTES */