+ #define CPU_CREATE_NEW_STACK(stack, entry, exit) \
+ do { \
+ /* LR (asm proc_entry trampoline) */ \
+ CPU_PUSH_CALL_FRAME(stack, asm_proc_entry); \
+ /* R11 (Process entry point) DO NOT CHANGE: asm_proc_entry expects \
+ * to find the actual process entry point in R11 */ \
+ CPU_PUSH_CALL_FRAME(stack, entry); \
+ /* R10 */ \
+ CPU_PUSH_WORD(stack, 0x10101010); \
+ /* R9 */ \
+ CPU_PUSH_WORD(stack, 0x09090909); \
+ /* R8 */ \
+ CPU_PUSH_WORD(stack, 0x08080808); \
+ /* R7 */ \
+ CPU_PUSH_WORD(stack, 0x07070707); \
+ /* R6 */ \
+ CPU_PUSH_WORD(stack, 0x06060606); \
+ /* R5 */ \
+ CPU_PUSH_WORD(stack, 0x05050505); \
+ /* R4 */ \
+ CPU_PUSH_WORD(stack, 0x04040404); \
+ /* CPSR */ \
+ CPU_PUSH_WORD(stack, 0x00000013); \
+ } while (0)