blob: 0e73f68ed09ad2a1ba3ae940ddc4dbacdfab43ff [file] [log] [blame]
/*
* arch/arm/syscall.S
*
* System call common handling
*/
.type __syscall_common,#function
.globl __syscall_common
#ifndef __thumb__
/* ARM version - this is executed after the swi */
.align 4
__syscall_common:
cmn r0, #4096
rsbcs r2, r0, #0
ldrcs r3, 1f
mvncs r0, #0
strcs r2, [r3]
ldmfd sp!,{r4,r5,pc}
.align 4
1:
.word errno
#else
/* Thumb version - must still load r4 and r5 and run swi */
.thumb_func
.align 2
__syscall_common:
ldr r4, [sp #12]
ldr r5, [sp #16]
swi 0
ldr r1, 2f
cmp r0, r1
bcc 1f
ldr r1, 3f
neg r2, r0
mvn r0, #0
str r2, [r1]
1:
pop {r4,r5,r7,pc}
.align 4
2:
.word #-4095
3:
.word errno
#endif