diff options
Diffstat (limited to 'libc')
| -rw-r--r-- | libc/sysdeps/linux/arm/clone.S | 6 | ||||
| -rw-r--r-- | libc/sysdeps/linux/arm/vfork.S | 8 | 
2 files changed, 13 insertions, 1 deletions
diff --git a/libc/sysdeps/linux/arm/clone.S b/libc/sysdeps/linux/arm/clone.S index 6672c7d6e..98b1296c0 100644 --- a/libc/sysdeps/linux/arm/clone.S +++ b/libc/sysdeps/linux/arm/clone.S @@ -52,7 +52,11 @@ clone:  	DO_CALL (clone)  	movs	a1, a1  	blt	__error -	movne    pc, lr +#if defined(__THUMB_INTERWORK__) +	bxne	lr +#else +	movne	pc, lr +#endif  	@ pick the function arg and call address off the stack and execute  	ldr	r0, [sp, #4] diff --git a/libc/sysdeps/linux/arm/vfork.S b/libc/sysdeps/linux/arm/vfork.S index e13636940..486a7e8e4 100644 --- a/libc/sysdeps/linux/arm/vfork.S +++ b/libc/sysdeps/linux/arm/vfork.S @@ -26,7 +26,11 @@ __vfork:  #ifdef __NR_vfork  	DO_CALL (vfork)  	cmn	r0, #4096 +#if defined(__THUMB_INTERWORK__) +	bxcc	lr +#else  	movcc	pc, lr +#endif  	/* Check if vfork even exists.  */  	ldr     r1, =-ENOSYS @@ -39,7 +43,11 @@ __vfork:  	cmn     r0, #4096  	/* Syscall worked.  Return to child/parent */ +#if defined(__THUMB_INTERWORK__) +	bxcc	lr +#else  	movcc   pc, lr +#endif  __error:  	b	__syscall_error  | 
