Handle both arm and thumb in arm/crt0.S

diff --git a/arch/arm/crt0.S b/arch/arm/crt0.S
index adba415..b0791e5 100644
--- a/arch/arm/crt0.S
+++ b/arch/arm/crt0.S
@@ -11,16 +11,41 @@
 
 	.text
 	.align 4
-	.type _start,@function
+	.type _start,#function
 	.globl _start
-_start:
-	ldr	r0, [sp], #4
+
+#ifdef __thumb__
+
+/*
+ * Thumb version
+ */
+
+	.thumb_func
+_start:	pop	{r0}
 	mov	r1, sp
+	ldr	r3, =environ
+	lsl	r2, r0, #2
+	add	r2, r1, r2
+	add	r2, r2, #4
+	str	r2, [r3, #0]
+	bl	main
+	bl	exit
+
+#else
+
+/*
+ * ARM version 
+ */
+
+_start: ldr	r0, [sp], #4
+	mov	r1, sp
+	ldr	r3, =environ
 	add	r2, r1, r0, lsl #2
 	add	r2, r2, #4
-	ldr	r3, =environ
 	str	r2, [r3, #0]
 	bl	main
 	b	exit
 
+#endif
+
 	.size _start,.-_start
diff --git a/klibc/arch/arm/crt0.S b/klibc/arch/arm/crt0.S
index adba415..b0791e5 100644
--- a/klibc/arch/arm/crt0.S
+++ b/klibc/arch/arm/crt0.S
@@ -11,16 +11,41 @@
 
 	.text
 	.align 4
-	.type _start,@function
+	.type _start,#function
 	.globl _start
-_start:
-	ldr	r0, [sp], #4
+
+#ifdef __thumb__
+
+/*
+ * Thumb version
+ */
+
+	.thumb_func
+_start:	pop	{r0}
 	mov	r1, sp
+	ldr	r3, =environ
+	lsl	r2, r0, #2
+	add	r2, r1, r2
+	add	r2, r2, #4
+	str	r2, [r3, #0]
+	bl	main
+	bl	exit
+
+#else
+
+/*
+ * ARM version 
+ */
+
+_start: ldr	r0, [sp], #4
+	mov	r1, sp
+	ldr	r3, =environ
 	add	r2, r1, r0, lsl #2
 	add	r2, r2, #4
-	ldr	r3, =environ
 	str	r2, [r3, #0]
 	bl	main
 	b	exit
 
+#endif
+
 	.size _start,.-_start