+
+ /* Architecture specific utility includes: */
+ #if defined(__DOXYGEN__)
+ /** Type define for an unsigned integer the same width as the selected architecture's machine register. */
+ typedef MACHINE_REG_t uint_reg_t;
+ #elif (ARCH == ARCH_AVR8)
+ #include <avr/io.h>
+ #include <avr/interrupt.h>
+ #include <avr/pgmspace.h>
+ #include <avr/eeprom.h>
+ #include <avr/boot.h>
+ #include <util/atomic.h>
+ #include <util/delay.h>
+
+ typedef uint8_t uint_reg_t;
+
+ #define ARCH_LITTLE_ENDIAN
+ #include "Endianness.h"
+ #elif (ARCH == ARCH_UC3)
+ #include <avr32/io.h>
+
+ // === TODO: Find abstracted way to handle these ===
+ #define ISR(Name) void Name (void) __attribute__((__interrupt__)); void Name (void)
+ #define PROGMEM const
+ #define ATOMIC_BLOCK(x) if (1)
+ #define ATOMIC_RESTORESTATE
+ #define pgm_read_byte(x) *x
+ #define _delay_ms(x)
+ #define memcmp_P(...) memcmp(__VA_ARGS__)
+ #define memcpy_P(...) memcpy(__VA_ARGS__)
+ #define USE_RAM_DESCRIPTORS
+ // ==================================================
+
+ typedef uint32_t uint_reg_t;
+
+ #define ARCH_BIG_ENDIAN
+ #include "Endianness.h"
+ #else
+ #error Unknown device architecture specified.
+ #endif