61a62,67
> 
> /* MAO - ARV6 ISA cannot handle long literals */
> #ifdef CONFIG_ARMV6
> #define __NR_clone3_base 300
> #define __NR_clone3_add (__NR_clone3 - 300)
> 
79c85,86
< 		"mov r7, #"__stringify(__NR_clone3)"		\n"	\
---
> 		"mov r7, #"__stringify(__NR_clone3_base)"	\n"	\
> 		"add r7, #"__stringify(__NR_clone3_add)"	\n"	\
102a110,150
> #else
> #define RUN_CLONE3_RESTORE_FN(ret, clone_args, size, args,		\
> 			      clone_restore_fn)				\
> 	asm volatile(							\
> 		"clone3_emul:					\n"	\
> 	/* Load thread stack pointer */					\
> 		"ldr r1, [%3]					\n"	\
> 	/* Load thread stack size */					\
> 		"mov r2, %4					\n"	\
> 	/* Goto to the end of stack */					\
> 		"add r1, r1, r2					\n"	\
> 	/* Load thread function and arguments and push on stack */	\
> 		"mov r2, %6		/* args */		\n"	\
> 		"str r2, [r1, #4]	/* args */		\n"	\
> 		"mov r2, %5		/* function */		\n"	\
> 		"str r2, [r1]		/* function */		\n"	\
> 		"mov r0, %1		/* clone_args */	\n"	\
> 		"mov r1, %2		/* size */		\n"	\
> 		"mov r7, #"__stringify(__NR_clone3)"		\n"	\
> 		"svc #0						\n"	\
> 									\
> 		"cmp r0, #0					\n"	\
> 		"beq thread3_run				\n"	\
> 									\
> 		"mov %0, r0					\n"	\
> 		"b   clone3_end					\n"	\
> 									\
> 		"thread3_run:					\n"	\
> 		"pop { r1 }					\n"	\
> 		"pop { r0 }					\n"	\
> 		"bx  r1						\n"	\
> 									\
> 		"clone3_end:					\n"	\
> 			: "=r"(ret)					\
> 			: "r"(&clone_args),				\
> 			  "r"(size),					\
> 			  "r"(&clone_args.stack),			\
> 			  "r"(clone_args.stack_size),			\
> 			  "r"(clone_restore_fn),			\
> 			  "r"(args)					\
> 			: "r0", "r1", "r2", "r7", "memory")
111c159
< 
---
> #endif /* CONFIG_ARMV6 */
