Annotation of /trunk/mkinitrd-magellan/klibc/usr/klibc/arch/arm/vfork.S
Parent Directory | Revision Log
Revision 532 -
(hide annotations)
(download)
Sat Sep 1 22:45:15 2007 UTC (16 years, 8 months ago) by niro
File size: 702 byte(s)
Sat Sep 1 22:45:15 2007 UTC (16 years, 8 months ago) by niro
File size: 702 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd
1 | niro | 532 | /* |
2 | * arch/arm/vfork.S | ||
3 | * | ||
4 | * vfork - nasty system call which must not use the stack. | ||
5 | */ | ||
6 | |||
7 | #include <asm/unistd.h> | ||
8 | |||
9 | .type vfork,#function | ||
10 | .globl vfork | ||
11 | #ifndef __thumb__ | ||
12 | |||
13 | .balign 4 | ||
14 | vfork: | ||
15 | #ifdef __ARM_EABI__ | ||
16 | mov r3, r7 | ||
17 | mov r7, # __NR_vfork | ||
18 | swi 0 | ||
19 | mov r7, r3 | ||
20 | #else | ||
21 | swi # __NR_vfork | ||
22 | #endif | ||
23 | cmn r0, #4096 | ||
24 | rsbcs r2, r0, #0 | ||
25 | ldrcs r3, 1f | ||
26 | mvncs r0, #0 | ||
27 | strcs r2, [r3] | ||
28 | mov pc, lr | ||
29 | |||
30 | .balign 4 | ||
31 | 1: | ||
32 | .word errno | ||
33 | |||
34 | #else | ||
35 | |||
36 | .thumb_func | ||
37 | .balign 2 | ||
38 | vfork: | ||
39 | mov r3, r7 | ||
40 | mov r7, # __NR_vfork | ||
41 | swi 0 | ||
42 | mov r7, r3 | ||
43 | ldr r1, 2f | ||
44 | cmp r0, r1 | ||
45 | bcc 1f | ||
46 | ldr r1, 3f | ||
47 | neg r2, r0 | ||
48 | mov r0, #1 | ||
49 | str r2, [r1] | ||
50 | neg r0, r0 | ||
51 | 1: | ||
52 | mov pc, lr | ||
53 | |||
54 | .balign 4 | ||
55 | 2: | ||
56 | .word -4095 | ||
57 | 3: | ||
58 | .word errno | ||
59 | |||
60 | #endif |