Contents of /trunk/mkinitrd-magellan/klibc/usr/klibc/arch/arm/sysstub.ph
Parent Directory | Revision Log
Revision 1297 -
(show annotations)
(download)
Fri May 27 15:12:11 2011 UTC (12 years, 11 months ago) by niro
File size: 1473 byte(s)
Fri May 27 15:12:11 2011 UTC (12 years, 11 months ago) by niro
File size: 1473 byte(s)
-updated to klibc-1.5.22 with mntproc definitions patch included
1 | # -*- perl -*- |
2 | # |
3 | # arch/arm/sysstub.ph |
4 | # |
5 | # Script to generate system call stubs |
6 | # |
7 | |
8 | |
9 | sub make_sysstub($$$$$@) { |
10 | my($outputdir, $fname, $type, $sname, $stype, @args) = @_; |
11 | |
12 | open(OUT, '>', "${outputdir}/${fname}.S"); |
13 | print OUT "#include <asm/unistd.h>\n"; |
14 | print OUT "#include <klibc/asmmacros.h>\n"; |
15 | |
16 | print OUT " .text\n"; |
17 | print OUT " .type ${fname}, #function\n"; |
18 | print OUT " .globl ${fname}\n"; |
19 | |
20 | print OUT "#ifndef __thumb__\n"; |
21 | |
22 | print OUT "#ifndef __ARM_EABI__\n"; |
23 | |
24 | # ARM version first |
25 | print OUT " .balign 4\n"; |
26 | print OUT "${fname}:\n"; |
27 | print OUT " stmfd sp!,{r4,r5,lr}\n"; |
28 | print OUT " ldr r4,[sp,#12]\n"; |
29 | print OUT " ldr r5,[sp,#16]\n"; |
30 | print OUT " swi # __NR_${sname}\n"; |
31 | print OUT " b __syscall_common\n"; |
32 | |
33 | print OUT "#else /* __ARM_EABI__ */\n"; |
34 | |
35 | # ARM EABI version |
36 | print out " .balign 4\n"; |
37 | print OUT "${fname}:\n"; |
38 | print OUT " stmfd sp!,{r4,r5,r7,lr}\n"; |
39 | print OUT " bl __syscall_common\n"; |
40 | print OUT " .word __NR_${sname}\n"; |
41 | |
42 | print OUT "#endif /* __ARM_EABI__ */\n"; |
43 | print OUT "#else /* __thumb__ */\n"; |
44 | |
45 | # Thumb version |
46 | print OUT " .balign 8\n"; |
47 | print OUT " .thumb_func\n"; |
48 | print OUT "${fname}:\n"; |
49 | print OUT " push {r4,r5,r7,lr}\n"; |
50 | print OUT " bl __syscall_common\n"; |
51 | print OUT " .short __NR_${sname}\n"; |
52 | |
53 | print OUT "#endif /* __thumb__*/\n"; |
54 | |
55 | print OUT " .size ${fname},.-${fname}\n"; |
56 | } |
57 | |
58 | 1; |