projects
/
bertos.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sam3 pmc: add functions to handle peripheral clock enable/disable;
[bertos.git]
/
bertos
/
cfg
/
compiler.h
diff --git
a/bertos/cfg/compiler.h
b/bertos/cfg/compiler.h
index 843af838c502621f473713c8dff6a945357b28e6..ac60848f5da9eec2b3877e62d8ace28e1ac3847e 100644
(file)
--- a/
bertos/cfg/compiler.h
+++ b/
bertos/cfg/compiler.h
@@
-209,6
+209,7
@@
#define RESTRICT __restrict__
#define MUST_CHECK __attribute__((warn_unused_result))
#define PACKED __attribute__((packed))
#define RESTRICT __restrict__
#define MUST_CHECK __attribute__((warn_unused_result))
#define PACKED __attribute__((packed))
+ #define ALIGNED(x) __attribute__ ((__aligned__(x)))
#if CPU_ARM | CPU_CM3
#define NAKED __attribute__((naked))
#else
#if CPU_ARM | CPU_CM3
#define NAKED __attribute__((naked))
#else
@@
-360,6
+361,9
@@
#ifndef PACKED
#define PACKED /* nothing */
#endif
#ifndef PACKED
#define PACKED /* nothing */
#endif
+#ifndef ALIGNED
+#define ALIGNED /* nothing */
+#endif
#ifndef MEMORY_BARRIER
#define MEMORY_BARRIER /* nothing */
#warning No memory barrier defined for select compiler. If you use the kernel check it.
#ifndef MEMORY_BARRIER
#define MEMORY_BARRIER /* nothing */
#warning No memory barrier defined for select compiler. If you use the kernel check it.
@@
-455,6
+459,14
@@
typedef const void * const_iptr_t;
typedef unsigned char sigbit_t; /**< Type for signal bits. */
typedef unsigned char sigmask_t; /**< Type for signal masks. */
typedef unsigned char sigbit_t; /**< Type for signal bits. */
typedef unsigned char sigmask_t; /**< Type for signal masks. */
+/**
+ * Signal structure
+ */
+typedef struct Signal
+{
+ sigmask_t wait; /**< Signals the process is waiting for */
+ sigmask_t recv; /**< Received signals */
+} Signal;
/**
* \name Standard type definitions.
/**
* \name Standard type definitions.
@@
-599,4
+611,11
@@
typedef unsigned char sigmask_t; /**< Type for signal masks. */
do { (void)(&(var) == (type *)0); } while(0)
#endif
do { (void)(&(var) == (type *)0); } while(0)
#endif
+/**
+ * Prevent the compiler from optimizing access to the variable \a x, enforcing
+ * a refetch from memory. This also forbid from reordering successing instances
+ * of ACCESS_SAFE().
+ */
+#define ACCESS_SAFE(x) (*(volatile typeof(x) *)&(x))
+
#endif /* BERTOS_COMPILER_H */
#endif /* BERTOS_COMPILER_H */