diff options
author | H. Peter Anvin <hpa@zytor.com> | 2002-08-10 21:19:58 +0000 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2002-08-10 21:19:58 +0000 |
commit | a5fd632b6e7bb56ae765969bba2284564930bf74 (patch) | |
tree | ea8f108350935509495fa1fb3384c41f99009ebe | |
parent | bfaec8719e6de79949b8ba5b518f94d350d24435 (diff) | |
download | klibc-a5fd632b6e7bb56ae765969bba2284564930bf74.tar.gz |
Handle both arm and thumb in arm/crt0.Sklibc-0.13
-rw-r--r-- | arch/arm/crt0.S | 33 | ||||
-rw-r--r-- | klibc/arch/arm/crt0.S | 33 |
2 files changed, 58 insertions, 8 deletions
diff --git a/arch/arm/crt0.S b/arch/arm/crt0.S index adba415cc166f..b0791e51e12c0 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 - add r2, r1, r0, lsl #2 + 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 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 adba415cc166f..b0791e51e12c0 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 - add r2, r1, r0, lsl #2 + 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 str r2, [r3, #0] bl main b exit +#endif + .size _start,.-_start |