diff options
Diffstat (limited to 'arch/m68k/include')
-rw-r--r-- | arch/m68k/include/asm/atarikb.h | 2 | ||||
-rw-r--r-- | arch/m68k/include/asm/bitops_mm.h | 87 | ||||
-rw-r--r-- | arch/m68k/include/asm/unistd.h | 46 |
3 files changed, 81 insertions, 54 deletions
diff --git a/arch/m68k/include/asm/atarikb.h b/arch/m68k/include/asm/atarikb.h index 546e7da5804f..68f3622bf591 100644 --- a/arch/m68k/include/asm/atarikb.h +++ b/arch/m68k/include/asm/atarikb.h | |||
@@ -34,8 +34,6 @@ void ikbd_joystick_disable(void); | |||
34 | 34 | ||
35 | /* Hook for MIDI serial driver */ | 35 | /* Hook for MIDI serial driver */ |
36 | extern void (*atari_MIDI_interrupt_hook) (void); | 36 | extern void (*atari_MIDI_interrupt_hook) (void); |
37 | /* Hook for mouse driver */ | ||
38 | extern void (*atari_mouse_interrupt_hook) (char *); | ||
39 | /* Hook for keyboard inputdev driver */ | 37 | /* Hook for keyboard inputdev driver */ |
40 | extern void (*atari_input_keyboard_interrupt_hook) (unsigned char, char); | 38 | extern void (*atari_input_keyboard_interrupt_hook) (unsigned char, char); |
41 | /* Hook for mouse inputdev driver */ | 39 | /* Hook for mouse inputdev driver */ |
diff --git a/arch/m68k/include/asm/bitops_mm.h b/arch/m68k/include/asm/bitops_mm.h index 9d69f6e62365..e9020f88a748 100644 --- a/arch/m68k/include/asm/bitops_mm.h +++ b/arch/m68k/include/asm/bitops_mm.h | |||
@@ -181,14 +181,15 @@ static inline int find_first_zero_bit(const unsigned long *vaddr, | |||
181 | { | 181 | { |
182 | const unsigned long *p = vaddr; | 182 | const unsigned long *p = vaddr; |
183 | int res = 32; | 183 | int res = 32; |
184 | unsigned int words; | ||
184 | unsigned long num; | 185 | unsigned long num; |
185 | 186 | ||
186 | if (!size) | 187 | if (!size) |
187 | return 0; | 188 | return 0; |
188 | 189 | ||
189 | size = (size + 31) >> 5; | 190 | words = (size + 31) >> 5; |
190 | while (!(num = ~*p++)) { | 191 | while (!(num = ~*p++)) { |
191 | if (!--size) | 192 | if (!--words) |
192 | goto out; | 193 | goto out; |
193 | } | 194 | } |
194 | 195 | ||
@@ -196,7 +197,8 @@ static inline int find_first_zero_bit(const unsigned long *vaddr, | |||
196 | : "=d" (res) : "d" (num & -num)); | 197 | : "=d" (res) : "d" (num & -num)); |
197 | res ^= 31; | 198 | res ^= 31; |
198 | out: | 199 | out: |
199 | return ((long)p - (long)vaddr - 4) * 8 + res; | 200 | res += ((long)p - (long)vaddr - 4) * 8; |
201 | return res < size ? res : size; | ||
200 | } | 202 | } |
201 | 203 | ||
202 | static inline int find_next_zero_bit(const unsigned long *vaddr, int size, | 204 | static inline int find_next_zero_bit(const unsigned long *vaddr, int size, |
@@ -215,27 +217,32 @@ static inline int find_next_zero_bit(const unsigned long *vaddr, int size, | |||
215 | /* Look for zero in first longword */ | 217 | /* Look for zero in first longword */ |
216 | __asm__ __volatile__ ("bfffo %1{#0,#0},%0" | 218 | __asm__ __volatile__ ("bfffo %1{#0,#0},%0" |
217 | : "=d" (res) : "d" (num & -num)); | 219 | : "=d" (res) : "d" (num & -num)); |
218 | if (res < 32) | 220 | if (res < 32) { |
219 | return offset + (res ^ 31); | 221 | offset += res ^ 31; |
222 | return offset < size ? offset : size; | ||
223 | } | ||
220 | offset += 32; | 224 | offset += 32; |
225 | |||
226 | if (offset >= size) | ||
227 | return size; | ||
221 | } | 228 | } |
222 | /* No zero yet, search remaining full bytes for a zero */ | 229 | /* No zero yet, search remaining full bytes for a zero */ |
223 | res = find_first_zero_bit(p, size - ((long)p - (long)vaddr) * 8); | 230 | return offset + find_first_zero_bit(p, size - offset); |
224 | return offset + res; | ||
225 | } | 231 | } |
226 | 232 | ||
227 | static inline int find_first_bit(const unsigned long *vaddr, unsigned size) | 233 | static inline int find_first_bit(const unsigned long *vaddr, unsigned size) |
228 | { | 234 | { |
229 | const unsigned long *p = vaddr; | 235 | const unsigned long *p = vaddr; |
230 | int res = 32; | 236 | int res = 32; |
237 | unsigned int words; | ||
231 | unsigned long num; | 238 | unsigned long num; |
232 | 239 | ||
233 | if (!size) | 240 | if (!size) |
234 | return 0; | 241 | return 0; |
235 | 242 | ||
236 | size = (size + 31) >> 5; | 243 | words = (size + 31) >> 5; |
237 | while (!(num = *p++)) { | 244 | while (!(num = *p++)) { |
238 | if (!--size) | 245 | if (!--words) |
239 | goto out; | 246 | goto out; |
240 | } | 247 | } |
241 | 248 | ||
@@ -243,7 +250,8 @@ static inline int find_first_bit(const unsigned long *vaddr, unsigned size) | |||
243 | : "=d" (res) : "d" (num & -num)); | 250 | : "=d" (res) : "d" (num & -num)); |
244 | res ^= 31; | 251 | res ^= 31; |
245 | out: | 252 | out: |
246 | return ((long)p - (long)vaddr - 4) * 8 + res; | 253 | res += ((long)p - (long)vaddr - 4) * 8; |
254 | return res < size ? res : size; | ||
247 | } | 255 | } |
248 | 256 | ||
249 | static inline int find_next_bit(const unsigned long *vaddr, int size, | 257 | static inline int find_next_bit(const unsigned long *vaddr, int size, |
@@ -262,13 +270,17 @@ static inline int find_next_bit(const unsigned long *vaddr, int size, | |||
262 | /* Look for one in first longword */ | 270 | /* Look for one in first longword */ |
263 | __asm__ __volatile__ ("bfffo %1{#0,#0},%0" | 271 | __asm__ __volatile__ ("bfffo %1{#0,#0},%0" |
264 | : "=d" (res) : "d" (num & -num)); | 272 | : "=d" (res) : "d" (num & -num)); |
265 | if (res < 32) | 273 | if (res < 32) { |
266 | return offset + (res ^ 31); | 274 | offset += res ^ 31; |
275 | return offset < size ? offset : size; | ||
276 | } | ||
267 | offset += 32; | 277 | offset += 32; |
278 | |||
279 | if (offset >= size) | ||
280 | return size; | ||
268 | } | 281 | } |
269 | /* No one yet, search remaining full bytes for a one */ | 282 | /* No one yet, search remaining full bytes for a one */ |
270 | res = find_first_bit(p, size - ((long)p - (long)vaddr) * 8); | 283 | return offset + find_first_bit(p, size - offset); |
271 | return offset + res; | ||
272 | } | 284 | } |
273 | 285 | ||
274 | /* | 286 | /* |
@@ -366,23 +378,25 @@ static inline int test_bit_le(int nr, const void *vaddr) | |||
366 | static inline int find_first_zero_bit_le(const void *vaddr, unsigned size) | 378 | static inline int find_first_zero_bit_le(const void *vaddr, unsigned size) |
367 | { | 379 | { |
368 | const unsigned long *p = vaddr, *addr = vaddr; | 380 | const unsigned long *p = vaddr, *addr = vaddr; |
369 | int res; | 381 | int res = 0; |
382 | unsigned int words; | ||
370 | 383 | ||
371 | if (!size) | 384 | if (!size) |
372 | return 0; | 385 | return 0; |
373 | 386 | ||
374 | size = (size >> 5) + ((size & 31) > 0); | 387 | words = (size >> 5) + ((size & 31) > 0); |
375 | while (*p++ == ~0UL) | 388 | while (*p++ == ~0UL) { |
376 | { | 389 | if (--words == 0) |
377 | if (--size == 0) | 390 | goto out; |
378 | return (p - addr) << 5; | ||
379 | } | 391 | } |
380 | 392 | ||
381 | --p; | 393 | --p; |
382 | for (res = 0; res < 32; res++) | 394 | for (res = 0; res < 32; res++) |
383 | if (!test_bit_le(res, p)) | 395 | if (!test_bit_le(res, p)) |
384 | break; | 396 | break; |
385 | return (p - addr) * 32 + res; | 397 | out: |
398 | res += (p - addr) * 32; | ||
399 | return res < size ? res : size; | ||
386 | } | 400 | } |
387 | 401 | ||
388 | static inline unsigned long find_next_zero_bit_le(const void *addr, | 402 | static inline unsigned long find_next_zero_bit_le(const void *addr, |
@@ -400,10 +414,15 @@ static inline unsigned long find_next_zero_bit_le(const void *addr, | |||
400 | offset -= bit; | 414 | offset -= bit; |
401 | /* Look for zero in first longword */ | 415 | /* Look for zero in first longword */ |
402 | for (res = bit; res < 32; res++) | 416 | for (res = bit; res < 32; res++) |
403 | if (!test_bit_le(res, p)) | 417 | if (!test_bit_le(res, p)) { |
404 | return offset + res; | 418 | offset += res; |
419 | return offset < size ? offset : size; | ||
420 | } | ||
405 | p++; | 421 | p++; |
406 | offset += 32; | 422 | offset += 32; |
423 | |||
424 | if (offset >= size) | ||
425 | return size; | ||
407 | } | 426 | } |
408 | /* No zero yet, search remaining full bytes for a zero */ | 427 | /* No zero yet, search remaining full bytes for a zero */ |
409 | return offset + find_first_zero_bit_le(p, size - offset); | 428 | return offset + find_first_zero_bit_le(p, size - offset); |
@@ -412,22 +431,25 @@ static inline unsigned long find_next_zero_bit_le(const void *addr, | |||
412 | static inline int find_first_bit_le(const void *vaddr, unsigned size) | 431 | static inline int find_first_bit_le(const void *vaddr, unsigned size) |
413 | { | 432 | { |
414 | const unsigned long *p = vaddr, *addr = vaddr; | 433 | const unsigned long *p = vaddr, *addr = vaddr; |
415 | int res; | 434 | int res = 0; |
435 | unsigned int words; | ||
416 | 436 | ||
417 | if (!size) | 437 | if (!size) |
418 | return 0; | 438 | return 0; |
419 | 439 | ||
420 | size = (size >> 5) + ((size & 31) > 0); | 440 | words = (size >> 5) + ((size & 31) > 0); |
421 | while (*p++ == 0UL) { | 441 | while (*p++ == 0UL) { |
422 | if (--size == 0) | 442 | if (--words == 0) |
423 | return (p - addr) << 5; | 443 | goto out; |
424 | } | 444 | } |
425 | 445 | ||
426 | --p; | 446 | --p; |
427 | for (res = 0; res < 32; res++) | 447 | for (res = 0; res < 32; res++) |
428 | if (test_bit_le(res, p)) | 448 | if (test_bit_le(res, p)) |
429 | break; | 449 | break; |
430 | return (p - addr) * 32 + res; | 450 | out: |
451 | res += (p - addr) * 32; | ||
452 | return res < size ? res : size; | ||
431 | } | 453 | } |
432 | 454 | ||
433 | static inline unsigned long find_next_bit_le(const void *addr, | 455 | static inline unsigned long find_next_bit_le(const void *addr, |
@@ -445,10 +467,15 @@ static inline unsigned long find_next_bit_le(const void *addr, | |||
445 | offset -= bit; | 467 | offset -= bit; |
446 | /* Look for one in first longword */ | 468 | /* Look for one in first longword */ |
447 | for (res = bit; res < 32; res++) | 469 | for (res = bit; res < 32; res++) |
448 | if (test_bit_le(res, p)) | 470 | if (test_bit_le(res, p)) { |
449 | return offset + res; | 471 | offset += res; |
472 | return offset < size ? offset : size; | ||
473 | } | ||
450 | p++; | 474 | p++; |
451 | offset += 32; | 475 | offset += 32; |
476 | |||
477 | if (offset >= size) | ||
478 | return size; | ||
452 | } | 479 | } |
453 | /* No set bit yet, search remaining full bytes for a set bit */ | 480 | /* No set bit yet, search remaining full bytes for a set bit */ |
454 | return offset + find_first_bit_le(p, size - offset); | 481 | return offset + find_first_bit_le(p, size - offset); |
diff --git a/arch/m68k/include/asm/unistd.h b/arch/m68k/include/asm/unistd.h index 29e17907d9f2..f3b649de2a1b 100644 --- a/arch/m68k/include/asm/unistd.h +++ b/arch/m68k/include/asm/unistd.h | |||
@@ -22,7 +22,7 @@ | |||
22 | #define __NR_mknod 14 | 22 | #define __NR_mknod 14 |
23 | #define __NR_chmod 15 | 23 | #define __NR_chmod 15 |
24 | #define __NR_chown 16 | 24 | #define __NR_chown 16 |
25 | #define __NR_break 17 | 25 | /*#define __NR_break 17*/ |
26 | #define __NR_oldstat 18 | 26 | #define __NR_oldstat 18 |
27 | #define __NR_lseek 19 | 27 | #define __NR_lseek 19 |
28 | #define __NR_getpid 20 | 28 | #define __NR_getpid 20 |
@@ -36,11 +36,11 @@ | |||
36 | #define __NR_oldfstat 28 | 36 | #define __NR_oldfstat 28 |
37 | #define __NR_pause 29 | 37 | #define __NR_pause 29 |
38 | #define __NR_utime 30 | 38 | #define __NR_utime 30 |
39 | #define __NR_stty 31 | 39 | /*#define __NR_stty 31*/ |
40 | #define __NR_gtty 32 | 40 | /*#define __NR_gtty 32*/ |
41 | #define __NR_access 33 | 41 | #define __NR_access 33 |
42 | #define __NR_nice 34 | 42 | #define __NR_nice 34 |
43 | #define __NR_ftime 35 | 43 | /*#define __NR_ftime 35*/ |
44 | #define __NR_sync 36 | 44 | #define __NR_sync 36 |
45 | #define __NR_kill 37 | 45 | #define __NR_kill 37 |
46 | #define __NR_rename 38 | 46 | #define __NR_rename 38 |
@@ -49,7 +49,7 @@ | |||
49 | #define __NR_dup 41 | 49 | #define __NR_dup 41 |
50 | #define __NR_pipe 42 | 50 | #define __NR_pipe 42 |
51 | #define __NR_times 43 | 51 | #define __NR_times 43 |
52 | #define __NR_prof 44 | 52 | /*#define __NR_prof 44*/ |
53 | #define __NR_brk 45 | 53 | #define __NR_brk 45 |
54 | #define __NR_setgid 46 | 54 | #define __NR_setgid 46 |
55 | #define __NR_getgid 47 | 55 | #define __NR_getgid 47 |
@@ -58,13 +58,13 @@ | |||
58 | #define __NR_getegid 50 | 58 | #define __NR_getegid 50 |
59 | #define __NR_acct 51 | 59 | #define __NR_acct 51 |
60 | #define __NR_umount2 52 | 60 | #define __NR_umount2 52 |
61 | #define __NR_lock 53 | 61 | /*#define __NR_lock 53*/ |
62 | #define __NR_ioctl 54 | 62 | #define __NR_ioctl 54 |
63 | #define __NR_fcntl 55 | 63 | #define __NR_fcntl 55 |
64 | #define __NR_mpx 56 | 64 | /*#define __NR_mpx 56*/ |
65 | #define __NR_setpgid 57 | 65 | #define __NR_setpgid 57 |
66 | #define __NR_ulimit 58 | 66 | /*#define __NR_ulimit 58*/ |
67 | #define __NR_oldolduname 59 | 67 | /*#define __NR_oldolduname 59*/ |
68 | #define __NR_umask 60 | 68 | #define __NR_umask 60 |
69 | #define __NR_chroot 61 | 69 | #define __NR_chroot 61 |
70 | #define __NR_ustat 62 | 70 | #define __NR_ustat 62 |
@@ -103,10 +103,10 @@ | |||
103 | #define __NR_fchown 95 | 103 | #define __NR_fchown 95 |
104 | #define __NR_getpriority 96 | 104 | #define __NR_getpriority 96 |
105 | #define __NR_setpriority 97 | 105 | #define __NR_setpriority 97 |
106 | #define __NR_profil 98 | 106 | /*#define __NR_profil 98*/ |
107 | #define __NR_statfs 99 | 107 | #define __NR_statfs 99 |
108 | #define __NR_fstatfs 100 | 108 | #define __NR_fstatfs 100 |
109 | #define __NR_ioperm 101 | 109 | /*#define __NR_ioperm 101*/ |
110 | #define __NR_socketcall 102 | 110 | #define __NR_socketcall 102 |
111 | #define __NR_syslog 103 | 111 | #define __NR_syslog 103 |
112 | #define __NR_setitimer 104 | 112 | #define __NR_setitimer 104 |
@@ -114,11 +114,11 @@ | |||
114 | #define __NR_stat 106 | 114 | #define __NR_stat 106 |
115 | #define __NR_lstat 107 | 115 | #define __NR_lstat 107 |
116 | #define __NR_fstat 108 | 116 | #define __NR_fstat 108 |
117 | #define __NR_olduname 109 | 117 | /*#define __NR_olduname 109*/ |
118 | #define __NR_iopl /* 110 */ not supported | 118 | /*#define __NR_iopl 110*/ /* not supported */ |
119 | #define __NR_vhangup 111 | 119 | #define __NR_vhangup 111 |
120 | #define __NR_idle /* 112 */ Obsolete | 120 | /*#define __NR_idle 112*/ /* Obsolete */ |
121 | #define __NR_vm86 /* 113 */ not supported | 121 | /*#define __NR_vm86 113*/ /* not supported */ |
122 | #define __NR_wait4 114 | 122 | #define __NR_wait4 114 |
123 | #define __NR_swapoff 115 | 123 | #define __NR_swapoff 115 |
124 | #define __NR_sysinfo 116 | 124 | #define __NR_sysinfo 116 |
@@ -132,17 +132,17 @@ | |||
132 | #define __NR_adjtimex 124 | 132 | #define __NR_adjtimex 124 |
133 | #define __NR_mprotect 125 | 133 | #define __NR_mprotect 125 |
134 | #define __NR_sigprocmask 126 | 134 | #define __NR_sigprocmask 126 |
135 | #define __NR_create_module 127 | 135 | /*#define __NR_create_module 127*/ |
136 | #define __NR_init_module 128 | 136 | #define __NR_init_module 128 |
137 | #define __NR_delete_module 129 | 137 | #define __NR_delete_module 129 |
138 | #define __NR_get_kernel_syms 130 | 138 | /*#define __NR_get_kernel_syms 130*/ |
139 | #define __NR_quotactl 131 | 139 | #define __NR_quotactl 131 |
140 | #define __NR_getpgid 132 | 140 | #define __NR_getpgid 132 |
141 | #define __NR_fchdir 133 | 141 | #define __NR_fchdir 133 |
142 | #define __NR_bdflush 134 | 142 | #define __NR_bdflush 134 |
143 | #define __NR_sysfs 135 | 143 | #define __NR_sysfs 135 |
144 | #define __NR_personality 136 | 144 | #define __NR_personality 136 |
145 | #define __NR_afs_syscall 137 /* Syscall for Andrew File System */ | 145 | /*#define __NR_afs_syscall 137*/ /* Syscall for Andrew File System */ |
146 | #define __NR_setfsuid 138 | 146 | #define __NR_setfsuid 138 |
147 | #define __NR_setfsgid 139 | 147 | #define __NR_setfsgid 139 |
148 | #define __NR__llseek 140 | 148 | #define __NR__llseek 140 |
@@ -172,7 +172,7 @@ | |||
172 | #define __NR_setresuid 164 | 172 | #define __NR_setresuid 164 |
173 | #define __NR_getresuid 165 | 173 | #define __NR_getresuid 165 |
174 | #define __NR_getpagesize 166 | 174 | #define __NR_getpagesize 166 |
175 | #define __NR_query_module 167 | 175 | /*#define __NR_query_module 167*/ |
176 | #define __NR_poll 168 | 176 | #define __NR_poll 168 |
177 | #define __NR_nfsservctl 169 | 177 | #define __NR_nfsservctl 169 |
178 | #define __NR_setresgid 170 | 178 | #define __NR_setresgid 170 |
@@ -193,8 +193,8 @@ | |||
193 | #define __NR_capset 185 | 193 | #define __NR_capset 185 |
194 | #define __NR_sigaltstack 186 | 194 | #define __NR_sigaltstack 186 |
195 | #define __NR_sendfile 187 | 195 | #define __NR_sendfile 187 |
196 | #define __NR_getpmsg 188 /* some people actually want streams */ | 196 | /*#define __NR_getpmsg 188*/ /* some people actually want streams */ |
197 | #define __NR_putpmsg 189 /* some people actually want streams */ | 197 | /*#define __NR_putpmsg 189*/ /* some people actually want streams */ |
198 | #define __NR_vfork 190 | 198 | #define __NR_vfork 190 |
199 | #define __NR_ugetrlimit 191 | 199 | #define __NR_ugetrlimit 191 |
200 | #define __NR_mmap2 192 | 200 | #define __NR_mmap2 192 |
@@ -223,6 +223,8 @@ | |||
223 | #define __NR_setfsuid32 215 | 223 | #define __NR_setfsuid32 215 |
224 | #define __NR_setfsgid32 216 | 224 | #define __NR_setfsgid32 216 |
225 | #define __NR_pivot_root 217 | 225 | #define __NR_pivot_root 217 |
226 | /* 218*/ | ||
227 | /* 219*/ | ||
226 | #define __NR_getdents64 220 | 228 | #define __NR_getdents64 220 |
227 | #define __NR_gettid 221 | 229 | #define __NR_gettid 221 |
228 | #define __NR_tkill 222 | 230 | #define __NR_tkill 222 |
@@ -281,7 +283,7 @@ | |||
281 | #define __NR_mq_notify 275 | 283 | #define __NR_mq_notify 275 |
282 | #define __NR_mq_getsetattr 276 | 284 | #define __NR_mq_getsetattr 276 |
283 | #define __NR_waitid 277 | 285 | #define __NR_waitid 277 |
284 | #define __NR_vserver 278 | 286 | /*#define __NR_vserver 278*/ |
285 | #define __NR_add_key 279 | 287 | #define __NR_add_key 279 |
286 | #define __NR_request_key 280 | 288 | #define __NR_request_key 280 |
287 | #define __NR_keyctl 281 | 289 | #define __NR_keyctl 281 |