/* * 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