- /** Swaps the byte ordering of a 16-bit value at compile time. Do not use this macro for swapping byte orderings
- * of dynamic values computed at runtime, use \ref SwapEndian_16() instead. The result of this macro can be used
- * inside struct or other variable initializers outside of a function, something that is not possible with the
- * inline function variant.
- *
- * \param[in] x 16-bit value whose byte ordering is to be swapped.
- *
- * \return Input value with the byte ordering reversed.
- */
- #define SWAPENDIAN_16(x) ((((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8))
-
- /** Swaps the byte ordering of a 32-bit value at compile time. Do not use this macro for swapping byte orderings
- * of dynamic values computed at runtime- use \ref SwapEndian_32() instead. The result of this macro can be used
- * inside struct or other variable initializers outside of a function, something that is not possible with the
- * inline function variant.
- *
- * \param[in] x 32-bit value whose byte ordering is to be swapped.
- *
- * \return Input value with the byte ordering reversed.
- */
- #define SWAPENDIAN_32(x) ((((x) & 0xFF000000UL) >> 24UL) | (((x) & 0x00FF0000UL) >> 8UL) | \
- (((x) & 0x0000FF00UL) << 8UL) | (((x) & 0x000000FFUL) << 24UL))
+ #if !defined(ISR) || defined(__DOXYGEN__)
+ /** Macro for the definition of interrupt service routines, so that the compiler can insert the required
+ * prologue and epilogue code to properly manage the interrupt routine without affecting the main thread's
+ * state with unintentional side-effects.
+ *
+ * Interrupt handlers written using this macro may still need to be registered with the microcontroller's
+ * Interrupt Controller (if present) before they will properly handle incoming interrupt events.
+ *
+ * \note This macro is only supplied on some architectures, where the standard library does not include a valid
+ * definition. If an existing definition exists, the alternative definition here will be ignored.
+ *
+ * \ingroup Group_GlobalInt
+ *
+ * \param[in] Name Unique name of the interrupt service routine.
+ */
+ #define ISR(Name, ...) void Name (void) __attribute__((__interrupt__)) __VA_ARGS__; void Name (void)
+ #endif