aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-27 21:54:08 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-27 21:54:08 -0500
commit5e6ddf9aaa0f2b16fc503626c70bb19832b22b8b (patch)
tree87d6b6e2d3e5a8787874aa76cefeee5c06605eb0
parent7749c902592f610dc448830210174ab922f54be9 (diff)
parentc37a33035720a0faf1f609dc7c2c07080ed83629 (diff)
Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev
* 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev: m32r: Update sys_rt_sigsuspend m32r: Ignore warnings for unused syscalls m32r: Add missing syscalls
-rw-r--r--arch/m32r/kernel/signal.c17
-rw-r--r--arch/m32r/kernel/syscall_table.S40
-rw-r--r--include/asm-m32r/thread_info.h11
-rw-r--r--include/asm-m32r/unistd.h66
4 files changed, 120 insertions, 14 deletions
diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c
index a753d79c4e8..18124542a6e 100644
--- a/arch/m32r/kernel/signal.c
+++ b/arch/m32r/kernel/signal.c
@@ -36,7 +36,7 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize,
36 unsigned long r2, unsigned long r3, unsigned long r4, 36 unsigned long r2, unsigned long r3, unsigned long r4,
37 unsigned long r5, unsigned long r6, struct pt_regs *regs) 37 unsigned long r5, unsigned long r6, struct pt_regs *regs)
38{ 38{
39 sigset_t saveset, newset; 39 sigset_t newset;
40 40
41 /* XXX: Don't preclude handling different sized sigset_t's. */ 41 /* XXX: Don't preclude handling different sized sigset_t's. */
42 if (sigsetsize != sizeof(sigset_t)) 42 if (sigsetsize != sizeof(sigset_t))
@@ -44,21 +44,18 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize,
44 44
45 if (copy_from_user(&newset, unewset, sizeof(newset))) 45 if (copy_from_user(&newset, unewset, sizeof(newset)))
46 return -EFAULT; 46 return -EFAULT;
47 sigdelsetmask(&newset, ~_BLOCKABLE); 47 sigdelsetmask(&newset, sigmask(SIGKILL)|sigmask(SIGSTOP));
48 48
49 spin_lock_irq(&current->sighand->siglock); 49 spin_lock_irq(&current->sighand->siglock);
50 saveset = current->blocked; 50 current->saved_sigmask = current->blocked;
51 current->blocked = newset; 51 current->blocked = newset;
52 recalc_sigpending(); 52 recalc_sigpending();
53 spin_unlock_irq(&current->sighand->siglock); 53 spin_unlock_irq(&current->sighand->siglock);
54 54
55 regs->r0 = -EINTR; 55 current->state = TASK_INTERRUPTIBLE;
56 while (1) { 56 schedule();
57 current->state = TASK_INTERRUPTIBLE; 57 set_thread_flag(TIF_RESTORE_SIGMASK);
58 schedule(); 58 return -ERESTARTNOHAND;
59 if (do_signal(regs, &saveset))
60 return regs->r0;
61 }
62} 59}
63 60
64asmlinkage int 61asmlinkage int
diff --git a/arch/m32r/kernel/syscall_table.S b/arch/m32r/kernel/syscall_table.S
index 751ac2a3d12..95aa7987484 100644
--- a/arch/m32r/kernel/syscall_table.S
+++ b/arch/m32r/kernel/syscall_table.S
@@ -284,3 +284,43 @@ ENTRY(sys_call_table)
284 .long sys_mq_getsetattr 284 .long sys_mq_getsetattr
285 .long sys_ni_syscall /* reserved for kexec */ 285 .long sys_ni_syscall /* reserved for kexec */
286 .long sys_waitid 286 .long sys_waitid
287 .long sys_ni_syscall /* 285 */ /* available */
288 .long sys_add_key
289 .long sys_request_key
290 .long sys_keyctl
291 .long sys_ioprio_set
292 .long sys_ioprio_get /* 290 */
293 .long sys_inotify_init
294 .long sys_inotify_add_watch
295 .long sys_inotify_rm_watch
296 .long sys_migrate_pages
297 .long sys_openat /* 295 */
298 .long sys_mkdirat
299 .long sys_mknodat
300 .long sys_fchownat
301 .long sys_futimesat
302 .long sys_fstatat64 /* 300 */
303 .long sys_unlinkat
304 .long sys_renameat
305 .long sys_linkat
306 .long sys_symlinkat
307 .long sys_readlinkat /* 305 */
308 .long sys_fchmodat
309 .long sys_faccessat
310 .long sys_pselect6
311 .long sys_ppoll
312 .long sys_unshare /* 310 */
313 .long sys_set_robust_list
314 .long sys_get_robust_list
315 .long sys_splice
316 .long sys_sync_file_range
317 .long sys_tee /* 315 */
318 .long sys_vmsplice
319 .long sys_move_pages
320 .long sys_getcpu
321 .long sys_epoll_pwait
322 .long sys_utimensat /* 320 */
323 .long sys_signalfd
324 .long sys_timerfd
325 .long sys_eventfd
326 .long sys_fallocate
diff --git a/include/asm-m32r/thread_info.h b/include/asm-m32r/thread_info.h
index c039820dba7..1effcd0f5e6 100644
--- a/include/asm-m32r/thread_info.h
+++ b/include/asm-m32r/thread_info.h
@@ -149,16 +149,21 @@ static inline unsigned int get_thread_fault_code(void)
149#define TIF_NEED_RESCHED 2 /* rescheduling necessary */ 149#define TIF_NEED_RESCHED 2 /* rescheduling necessary */
150#define TIF_SINGLESTEP 3 /* restore singlestep on return to user mode */ 150#define TIF_SINGLESTEP 3 /* restore singlestep on return to user mode */
151#define TIF_IRET 4 /* return with iret */ 151#define TIF_IRET 4 /* return with iret */
152#define TIF_POLLING_NRFLAG 16 /* true if poll_idle() is polling TIF_NEED_RESCHED */ 152#define TIF_RESTORE_SIGMASK 8 /* restore signal mask in do_signal() */
153 /* 31..28 fault code */ 153#define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */
154#define TIF_MEMDIE 17 154#define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling TIF_NEED_RESCHED */
155#define TIF_MEMDIE 18 /* OOM killer killed process */
156#define TIF_FREEZE 19 /* is freezing for suspend */
155 157
156#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) 158#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
157#define _TIF_SIGPENDING (1<<TIF_SIGPENDING) 159#define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
158#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) 160#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
159#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP) 161#define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP)
160#define _TIF_IRET (1<<TIF_IRET) 162#define _TIF_IRET (1<<TIF_IRET)
163#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
164#define _TIF_USEDFPU (1<<TIF_USEDFPU)
161#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) 165#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
166#define _TIF_FREEZE (1<<TIF_FREEZE)
162 167
163#define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ 168#define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */
164#define _TIF_ALLWORK_MASK 0x0000FFFF /* work to do on any return to u-space */ 169#define _TIF_ALLWORK_MASK 0x0000FFFF /* work to do on any return to u-space */
diff --git a/include/asm-m32r/unistd.h b/include/asm-m32r/unistd.h
index cbbd53762ea..f467eac9ba7 100644
--- a/include/asm-m32r/unistd.h
+++ b/include/asm-m32r/unistd.h
@@ -290,10 +290,50 @@
290#define __NR_mq_getsetattr (__NR_mq_open+5) 290#define __NR_mq_getsetattr (__NR_mq_open+5)
291#define __NR_kexec_load 283 291#define __NR_kexec_load 283
292#define __NR_waitid 284 292#define __NR_waitid 284
293/* 285 is unused */
294#define __NR_add_key 286
295#define __NR_request_key 287
296#define __NR_keyctl 288
297#define __NR_ioprio_set 289
298#define __NR_ioprio_get 290
299#define __NR_inotify_init 291
300#define __NR_inotify_add_watch 292
301#define __NR_inotify_rm_watch 293
302#define __NR_migrate_pages 294
303#define __NR_openat 295
304#define __NR_mkdirat 296
305#define __NR_mknodat 297
306#define __NR_fchownat 298
307#define __NR_futimesat 299
308#define __NR_fstatat64 300
309#define __NR_unlinkat 301
310#define __NR_renameat 302
311#define __NR_linkat 303
312#define __NR_symlinkat 304
313#define __NR_readlinkat 305
314#define __NR_fchmodat 306
315#define __NR_faccessat 307
316#define __NR_pselect6 308
317#define __NR_ppoll 309
318#define __NR_unshare 310
319#define __NR_set_robust_list 311
320#define __NR_get_robust_list 312
321#define __NR_splice 313
322#define __NR_sync_file_range 314
323#define __NR_tee 315
324#define __NR_vmsplice 316
325#define __NR_move_pages 317
326#define __NR_getcpu 318
327#define __NR_epoll_pwait 319
328#define __NR_utimensat 320
329#define __NR_signalfd 321
330#define __NR_timerfd 322
331#define __NR_eventfd 323
332#define __NR_fallocate 324
293 333
294#ifdef __KERNEL__ 334#ifdef __KERNEL__
295 335
296#define NR_syscalls 285 336#define NR_syscalls 325
297 337
298#define __ARCH_WANT_IPC_PARSE_VERSION 338#define __ARCH_WANT_IPC_PARSE_VERSION
299#define __ARCH_WANT_STAT64 339#define __ARCH_WANT_STAT64
@@ -311,6 +351,30 @@
311#define __ARCH_WANT_SYS_OLDUMOUNT 351#define __ARCH_WANT_SYS_OLDUMOUNT
312#define __ARCH_WANT_SYS_RT_SIGACTION 352#define __ARCH_WANT_SYS_RT_SIGACTION
313 353
354#define __IGNORE_lchown
355#define __IGNORE_setuid
356#define __IGNORE_getuid
357#define __IGNORE_setgid
358#define __IGNORE_getgid
359#define __IGNORE_geteuid
360#define __IGNORE_getegid
361#define __IGNORE_fcntl
362#define __IGNORE_setreuid
363#define __IGNORE_setregid
364#define __IGNORE_getrlimit
365#define __IGNORE_getgroups
366#define __IGNORE_setgroups
367#define __IGNORE_select
368#define __IGNORE_mmap
369#define __IGNORE_fchown
370#define __IGNORE_setfsuid
371#define __IGNORE_setfsgid
372#define __IGNORE_setresuid
373#define __IGNORE_getresuid
374#define __IGNORE_setresgid
375#define __IGNORE_getresgid
376#define __IGNORE_chown
377
314/* 378/*
315 * "Conditional" syscalls 379 * "Conditional" syscalls
316 * 380 *