#if CPU_X86
/* 32bit or 64bit (32bit for _WIN64). */
typedef long ssize_t;
- #elif CPU_ARM
+ #elif CPU_ARM || CPU_CM3
typedef int ssize_t;
#elif CPU_AVR
/* 16bit (missing in avr-libc's sys/types.h). */
#define CPU_STACK_GROWS_UPWARD 0
#define CPU_SP_ON_EMPTY_SLOT 0
+#elif CPU_CM3
+
+ #define CPU_SAVED_REGS_CNT fixme
+ #define CPU_STACK_GROWS_UPWARD 0
+ #define CPU_SP_ON_EMPTY_SLOT 0
+
#elif CPU_PPC
#define CPU_SAVED_REGS_CNT 1
#define SIZEOF_CPUALIGNED_T SIZEOF_CPUSTACK_T
#endif
-#elif CPU_ARM
+#elif CPU_ARM || CPU_CM3
typedef uint32_t cpu_flags_t;
typedef uint32_t cpu_atomic_t;
typedef uint32_t cpu_stack_t;
- typedef uint64_t cpu_aligned_stack_t;
#define SIZEOF_CPUSTACK_T 4
- #define SIZEOF_CPUALIGNED_T 8
+
+ #if CPU_ARM
+ typedef uint64_t cpu_aligned_stack_t;
+ #define SIZEOF_CPUALIGNED_T 8
+ #elif CPU_CM3
+ typedef uint32_t cpu_aligned_stack_t;
+ #define SIZEOF_CPUALIGNED_T 4
+ #else
+ #error CPU configuration error
+ #endif
#elif CPU_PPC