diff --git a/arch/arm/mcount.S b/arch/arm/mcount.S
index bbfc597..eb28831 100644
--- a/arch/arm/mcount.S
+++ b/arch/arm/mcount.S
@@ -60,6 +60,26 @@ GLOBAL(__gnu_mcount_nc)
 	bx	ip
 END(__gnu_mcount_nc)
 
+/* for clang */
+GLOBAL(mcount)
+	push 	{r0-r3, lr}
+	ands	r3, lr, #1  /* check lr for ARM/THUMB detection */
+	add	r0, fp, #4  /* r0 points to pushed LR  */
+	bne	1f
+	ldr	r1, [fp]    /* fp (=r11) might point to return address on ARM */
+	ldr	r2, [r0]
+	cmp	r1, r2
+	moveq	r0, lr
+1:
+	mov 	r1, lr      /* child ip */
+	mov	r2, sp      /* mcount_args */
+
+	bl 	mcount_entry
+
+	pop 	{r0-r3, lr}
+	bx	lr
+END(mcount)
+
 
 ENTRY(mcount_return)
 	push 	{r0-r3, lr, pc}  /* ensure 8-byte alignment */