diff options
Diffstat (limited to 'include/asm-arm26')
-rw-r--r-- | include/asm-arm26/checksum.h | 63 | ||||
-rw-r--r-- | include/asm-arm26/device.h | 7 | ||||
-rw-r--r-- | include/asm-arm26/pgalloc.h | 2 | ||||
-rw-r--r-- | include/asm-arm26/setup.h | 4 | ||||
-rw-r--r-- | include/asm-arm26/unistd.h | 133 |
5 files changed, 39 insertions, 170 deletions
diff --git a/include/asm-arm26/checksum.h b/include/asm-arm26/checksum.h index d4256d5f3a7c..f2b4b0a403bd 100644 --- a/include/asm-arm26/checksum.h +++ b/include/asm-arm26/checksum.h | |||
@@ -23,7 +23,7 @@ | |||
23 | * | 23 | * |
24 | * it's best to have buff aligned on a 32-bit boundary | 24 | * it's best to have buff aligned on a 32-bit boundary |
25 | */ | 25 | */ |
26 | unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum); | 26 | __wsum csum_partial(const void *buff, int len, __wsum sum); |
27 | 27 | ||
28 | /* | 28 | /* |
29 | * the same as csum_partial, but copies from src while it | 29 | * the same as csum_partial, but copies from src while it |
@@ -33,26 +33,18 @@ unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum) | |||
33 | * better 64-bit) boundary | 33 | * better 64-bit) boundary |
34 | */ | 34 | */ |
35 | 35 | ||
36 | unsigned int | 36 | __wsum |
37 | csum_partial_copy_nocheck(const char *src, char *dst, int len, int sum); | 37 | csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum); |
38 | 38 | ||
39 | unsigned int | 39 | __wsum |
40 | csum_partial_copy_from_user(const char __user *src, char *dst, int len, int sum, int *err_ptr); | 40 | csum_partial_copy_from_user(const void __user *src, void *dst, int len, __wsum sum, int *err_ptr); |
41 | |||
42 | /* | ||
43 | * This is the old (and unsafe) way of doing checksums, a warning message will | ||
44 | * be printed if it is used and an exception occurs. | ||
45 | * | ||
46 | * this functions should go away after some time. | ||
47 | */ | ||
48 | #define csum_partial_copy(src,dst,len,sum) csum_partial_copy_nocheck(src,dst,len,sum) | ||
49 | 41 | ||
50 | /* | 42 | /* |
51 | * This is a version of ip_compute_csum() optimized for IP headers, | 43 | * This is a version of ip_compute_csum() optimized for IP headers, |
52 | * which always checksum on 4 octet boundaries. | 44 | * which always checksum on 4 octet boundaries. |
53 | */ | 45 | */ |
54 | static inline unsigned short | 46 | static inline __sum16 |
55 | ip_fast_csum(unsigned char * iph, unsigned int ihl) | 47 | ip_fast_csum(const void *iph, unsigned int ihl) |
56 | { | 48 | { |
57 | unsigned int sum, tmp1; | 49 | unsigned int sum, tmp1; |
58 | 50 | ||
@@ -78,14 +70,13 @@ ip_fast_csum(unsigned char * iph, unsigned int ihl) | |||
78 | : "=r" (sum), "=r" (iph), "=r" (ihl), "=r" (tmp1) | 70 | : "=r" (sum), "=r" (iph), "=r" (ihl), "=r" (tmp1) |
79 | : "1" (iph), "2" (ihl) | 71 | : "1" (iph), "2" (ihl) |
80 | : "cc"); | 72 | : "cc"); |
81 | return sum; | 73 | return (__force __sum16)sum; |
82 | } | 74 | } |
83 | 75 | ||
84 | /* | 76 | /* |
85 | * Fold a partial checksum without adding pseudo headers | 77 | * Fold a partial checksum without adding pseudo headers |
86 | */ | 78 | */ |
87 | static inline unsigned int | 79 | static inline __sum16 csum_fold(__wsum sum) |
88 | csum_fold(unsigned int sum) | ||
89 | { | 80 | { |
90 | __asm__( | 81 | __asm__( |
91 | "adds %0, %1, %1, lsl #16 @ csum_fold \n\ | 82 | "adds %0, %1, %1, lsl #16 @ csum_fold \n\ |
@@ -93,12 +84,12 @@ csum_fold(unsigned int sum) | |||
93 | : "=r" (sum) | 84 | : "=r" (sum) |
94 | : "r" (sum) | 85 | : "r" (sum) |
95 | : "cc"); | 86 | : "cc"); |
96 | return (~sum) >> 16; | 87 | return (__force __sum16)(~(__force u32)sum >> 16); |
97 | } | 88 | } |
98 | 89 | ||
99 | static inline unsigned int | 90 | static inline __wsum |
100 | csum_tcpudp_nofold(unsigned long saddr, unsigned long daddr, unsigned short len, | 91 | csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len, |
101 | unsigned int proto, unsigned int sum) | 92 | unsigned short proto, __wsum sum) |
102 | { | 93 | { |
103 | __asm__( | 94 | __asm__( |
104 | "adds %0, %1, %2 @ csum_tcpudp_nofold \n\ | 95 | "adds %0, %1, %2 @ csum_tcpudp_nofold \n\ |
@@ -107,7 +98,7 @@ csum_tcpudp_nofold(unsigned long saddr, unsigned long daddr, unsigned short len, | |||
107 | adcs %0, %0, %5 \n\ | 98 | adcs %0, %0, %5 \n\ |
108 | adc %0, %0, #0" | 99 | adc %0, %0, #0" |
109 | : "=&r"(sum) | 100 | : "=&r"(sum) |
110 | : "r" (sum), "r" (daddr), "r" (saddr), "r" (ntohs(len)), "Ir" (ntohs(proto)) | 101 | : "r" (sum), "r" (daddr), "r" (saddr), "r" (htons(len)), "Ir" (htons(proto)) |
111 | : "cc"); | 102 | : "cc"); |
112 | return sum; | 103 | return sum; |
113 | } | 104 | } |
@@ -115,9 +106,9 @@ csum_tcpudp_nofold(unsigned long saddr, unsigned long daddr, unsigned short len, | |||
115 | * computes the checksum of the TCP/UDP pseudo-header | 106 | * computes the checksum of the TCP/UDP pseudo-header |
116 | * returns a 16-bit checksum, already complemented | 107 | * returns a 16-bit checksum, already complemented |
117 | */ | 108 | */ |
118 | static inline unsigned short int | 109 | static inline __sum16 |
119 | csum_tcpudp_magic(unsigned long saddr, unsigned long daddr, unsigned short len, | 110 | csum_tcpudp_magic(__be32 saddr, __be32 daddr, unsigned short len, |
120 | unsigned int proto, unsigned int sum) | 111 | unsigned short proto, __wsum sum) |
121 | { | 112 | { |
122 | __asm__( | 113 | __asm__( |
123 | "adds %0, %1, %2 @ csum_tcpudp_magic \n\ | 114 | "adds %0, %1, %2 @ csum_tcpudp_magic \n\ |
@@ -129,9 +120,9 @@ csum_tcpudp_magic(unsigned long saddr, unsigned long daddr, unsigned short len, | |||
129 | addcs %0, %0, #0x10000 \n\ | 120 | addcs %0, %0, #0x10000 \n\ |
130 | mvn %0, %0" | 121 | mvn %0, %0" |
131 | : "=&r"(sum) | 122 | : "=&r"(sum) |
132 | : "r" (sum), "r" (daddr), "r" (saddr), "r" (ntohs(len)), "Ir" (ntohs(proto)) | 123 | : "r" (sum), "r" (daddr), "r" (saddr), "r" (htons(len)), "Ir" (htons(proto)) |
133 | : "cc"); | 124 | : "cc"); |
134 | return sum >> 16; | 125 | return (__force __sum16)((__force u32)sum >> 16); |
135 | } | 126 | } |
136 | 127 | ||
137 | 128 | ||
@@ -139,20 +130,20 @@ csum_tcpudp_magic(unsigned long saddr, unsigned long daddr, unsigned short len, | |||
139 | * this routine is used for miscellaneous IP-like checksums, mainly | 130 | * this routine is used for miscellaneous IP-like checksums, mainly |
140 | * in icmp.c | 131 | * in icmp.c |
141 | */ | 132 | */ |
142 | static inline unsigned short | 133 | static inline __sum16 |
143 | ip_compute_csum(unsigned char * buff, int len) | 134 | ip_compute_csum(const void *buff, int len) |
144 | { | 135 | { |
145 | return csum_fold(csum_partial(buff, len, 0)); | 136 | return csum_fold(csum_partial(buff, len, 0)); |
146 | } | 137 | } |
147 | 138 | ||
148 | #define _HAVE_ARCH_IPV6_CSUM | 139 | #define _HAVE_ARCH_IPV6_CSUM |
149 | extern unsigned long | 140 | extern __wsum |
150 | __csum_ipv6_magic(struct in6_addr *saddr, struct in6_addr *daddr, __u32 len, | 141 | __csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __be32 len, |
151 | __u32 proto, unsigned int sum); | 142 | __be32 proto, __wsum sum); |
152 | 143 | ||
153 | static inline unsigned short int | 144 | static inline __sum16 |
154 | csum_ipv6_magic(struct in6_addr *saddr, struct in6_addr *daddr, __u32 len, | 145 | csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __u32 len, |
155 | unsigned short proto, unsigned int sum) | 146 | unsigned short proto, __wsum sum) |
156 | { | 147 | { |
157 | return csum_fold(__csum_ipv6_magic(saddr, daddr, htonl(len), | 148 | return csum_fold(__csum_ipv6_magic(saddr, daddr, htonl(len), |
158 | htonl(proto), sum)); | 149 | htonl(proto), sum)); |
diff --git a/include/asm-arm26/device.h b/include/asm-arm26/device.h new file mode 100644 index 000000000000..d8f9872b0e2d --- /dev/null +++ b/include/asm-arm26/device.h | |||
@@ -0,0 +1,7 @@ | |||
1 | /* | ||
2 | * Arch specific extensions to struct device | ||
3 | * | ||
4 | * This file is released under the GPLv2 | ||
5 | */ | ||
6 | #include <asm-generic/device.h> | ||
7 | |||
diff --git a/include/asm-arm26/pgalloc.h b/include/asm-arm26/pgalloc.h index 6437167b1ffe..7725af3ddb4d 100644 --- a/include/asm-arm26/pgalloc.h +++ b/include/asm-arm26/pgalloc.h | |||
@@ -15,7 +15,7 @@ | |||
15 | #include <asm/tlbflush.h> | 15 | #include <asm/tlbflush.h> |
16 | #include <linux/slab.h> | 16 | #include <linux/slab.h> |
17 | 17 | ||
18 | extern kmem_cache_t *pte_cache; | 18 | extern struct kmem_cache *pte_cache; |
19 | 19 | ||
20 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr){ | 20 | static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr){ |
21 | return kmem_cache_alloc(pte_cache, GFP_KERNEL); | 21 | return kmem_cache_alloc(pte_cache, GFP_KERNEL); |
diff --git a/include/asm-arm26/setup.h b/include/asm-arm26/setup.h index 6348931be65d..1a867b4e8d53 100644 --- a/include/asm-arm26/setup.h +++ b/include/asm-arm26/setup.h | |||
@@ -16,6 +16,8 @@ | |||
16 | 16 | ||
17 | #define COMMAND_LINE_SIZE 1024 | 17 | #define COMMAND_LINE_SIZE 1024 |
18 | 18 | ||
19 | #ifdef __KERNEL__ | ||
20 | |||
19 | /* The list ends with an ATAG_NONE node. */ | 21 | /* The list ends with an ATAG_NONE node. */ |
20 | #define ATAG_NONE 0x00000000 | 22 | #define ATAG_NONE 0x00000000 |
21 | 23 | ||
@@ -202,4 +204,6 @@ struct meminfo { | |||
202 | 204 | ||
203 | extern struct meminfo meminfo; | 205 | extern struct meminfo meminfo; |
204 | 206 | ||
207 | #endif /* __KERNEL__ */ | ||
208 | |||
205 | #endif | 209 | #endif |
diff --git a/include/asm-arm26/unistd.h b/include/asm-arm26/unistd.h index 25a5eead85be..4c3b919177e5 100644 --- a/include/asm-arm26/unistd.h +++ b/include/asm-arm26/unistd.h | |||
@@ -311,139 +311,6 @@ | |||
311 | #define __ARM_NR_usr26 (__ARM_NR_BASE+3) | 311 | #define __ARM_NR_usr26 (__ARM_NR_BASE+3) |
312 | 312 | ||
313 | #ifdef __KERNEL__ | 313 | #ifdef __KERNEL__ |
314 | #include <linux/err.h> | ||
315 | #include <linux/linkage.h> | ||
316 | |||
317 | #define __sys2(x) #x | ||
318 | #define __sys1(x) __sys2(x) | ||
319 | |||
320 | #ifndef __syscall | ||
321 | #define __syscall(name) "swi\t" __sys1(__NR_##name) "" | ||
322 | #endif | ||
323 | |||
324 | #define __syscall_return(type, res) \ | ||
325 | do { \ | ||
326 | if ((unsigned long)(res) >= (unsigned long)-MAX_ERRNO) { \ | ||
327 | errno = -(res); \ | ||
328 | res = -1; \ | ||
329 | } \ | ||
330 | return (type) (res); \ | ||
331 | } while (0) | ||
332 | |||
333 | #define _syscall0(type,name) \ | ||
334 | type name(void) { \ | ||
335 | register long __res_r0 __asm__("r0"); \ | ||
336 | long __res; \ | ||
337 | __asm__ __volatile__ ( \ | ||
338 | __syscall(name) \ | ||
339 | : "=r" (__res_r0) \ | ||
340 | : \ | ||
341 | : "lr"); \ | ||
342 | __res = __res_r0; \ | ||
343 | __syscall_return(type,__res); \ | ||
344 | } | ||
345 | |||
346 | #define _syscall1(type,name,type1,arg1) \ | ||
347 | type name(type1 arg1) { \ | ||
348 | register long __r0 __asm__("r0") = (long)arg1; \ | ||
349 | register long __res_r0 __asm__("r0"); \ | ||
350 | long __res; \ | ||
351 | __asm__ __volatile__ ( \ | ||
352 | __syscall(name) \ | ||
353 | : "=r" (__res_r0) \ | ||
354 | : "r" (__r0) \ | ||
355 | : "lr"); \ | ||
356 | __res = __res_r0; \ | ||
357 | __syscall_return(type,__res); \ | ||
358 | } | ||
359 | |||
360 | #define _syscall2(type,name,type1,arg1,type2,arg2) \ | ||
361 | type name(type1 arg1,type2 arg2) { \ | ||
362 | register long __r0 __asm__("r0") = (long)arg1; \ | ||
363 | register long __r1 __asm__("r1") = (long)arg2; \ | ||
364 | register long __res_r0 __asm__("r0"); \ | ||
365 | long __res; \ | ||
366 | __asm__ __volatile__ ( \ | ||
367 | __syscall(name) \ | ||
368 | : "=r" (__res_r0) \ | ||
369 | : "r" (__r0),"r" (__r1) \ | ||
370 | : "lr"); \ | ||
371 | __res = __res_r0; \ | ||
372 | __syscall_return(type,__res); \ | ||
373 | } | ||
374 | |||
375 | |||
376 | #define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ | ||
377 | type name(type1 arg1,type2 arg2,type3 arg3) { \ | ||
378 | register long __r0 __asm__("r0") = (long)arg1; \ | ||
379 | register long __r1 __asm__("r1") = (long)arg2; \ | ||
380 | register long __r2 __asm__("r2") = (long)arg3; \ | ||
381 | register long __res_r0 __asm__("r0"); \ | ||
382 | long __res; \ | ||
383 | __asm__ __volatile__ ( \ | ||
384 | __syscall(name) \ | ||
385 | : "=r" (__res_r0) \ | ||
386 | : "r" (__r0),"r" (__r1),"r" (__r2) \ | ||
387 | : "lr"); \ | ||
388 | __res = __res_r0; \ | ||
389 | __syscall_return(type,__res); \ | ||
390 | } | ||
391 | |||
392 | |||
393 | #define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4)\ | ||
394 | type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \ | ||
395 | register long __r0 __asm__("r0") = (long)arg1; \ | ||
396 | register long __r1 __asm__("r1") = (long)arg2; \ | ||
397 | register long __r2 __asm__("r2") = (long)arg3; \ | ||
398 | register long __r3 __asm__("r3") = (long)arg4; \ | ||
399 | register long __res_r0 __asm__("r0"); \ | ||
400 | long __res; \ | ||
401 | __asm__ __volatile__ ( \ | ||
402 | __syscall(name) \ | ||
403 | : "=r" (__res_r0) \ | ||
404 | : "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3) \ | ||
405 | : "lr"); \ | ||
406 | __res = __res_r0; \ | ||
407 | __syscall_return(type,__res); \ | ||
408 | } | ||
409 | |||
410 | |||
411 | #define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \ | ||
412 | type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \ | ||
413 | register long __r0 __asm__("r0") = (long)arg1; \ | ||
414 | register long __r1 __asm__("r1") = (long)arg2; \ | ||
415 | register long __r2 __asm__("r2") = (long)arg3; \ | ||
416 | register long __r3 __asm__("r3") = (long)arg4; \ | ||
417 | register long __r4 __asm__("r4") = (long)arg5; \ | ||
418 | register long __res_r0 __asm__("r0"); \ | ||
419 | long __res; \ | ||
420 | __asm__ __volatile__ ( \ | ||
421 | __syscall(name) \ | ||
422 | : "=r" (__res_r0) \ | ||
423 | : "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3),"r" (__r4) \ | ||
424 | : "lr"); \ | ||
425 | __res = __res_r0; \ | ||
426 | __syscall_return(type,__res); \ | ||
427 | } | ||
428 | |||
429 | #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) \ | ||
430 | type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) { \ | ||
431 | register long __r0 __asm__("r0") = (long)arg1; \ | ||
432 | register long __r1 __asm__("r1") = (long)arg2; \ | ||
433 | register long __r2 __asm__("r2") = (long)arg3; \ | ||
434 | register long __r3 __asm__("r3") = (long)arg4; \ | ||
435 | register long __r4 __asm__("r4") = (long)arg5; \ | ||
436 | register long __r5 __asm__("r5") = (long)arg6; \ | ||
437 | register long __res_r0 __asm__("r0"); \ | ||
438 | long __res; \ | ||
439 | __asm__ __volatile__ ( \ | ||
440 | __syscall(name) \ | ||
441 | : "=r" (__res_r0) \ | ||
442 | : "r" (__r0),"r" (__r1),"r" (__r2),"r" (__r3), "r" (__r4),"r" (__r5) \ | ||
443 | : "lr"); \ | ||
444 | __res = __res_r0; \ | ||
445 | __syscall_return(type,__res); \ | ||
446 | } | ||
447 | 314 | ||
448 | #define __ARCH_WANT_IPC_PARSE_VERSION | 315 | #define __ARCH_WANT_IPC_PARSE_VERSION |
449 | #define __ARCH_WANT_OLD_READDIR | 316 | #define __ARCH_WANT_OLD_READDIR |