diff options
Diffstat (limited to 'arch/mn10300/kernel')
-rw-r--r-- | arch/mn10300/kernel/mn10300-serial.c | 20 | ||||
-rw-r--r-- | arch/mn10300/kernel/process.c | 7 | ||||
-rw-r--r-- | arch/mn10300/kernel/signal.c | 60 |
3 files changed, 12 insertions, 75 deletions
diff --git a/arch/mn10300/kernel/mn10300-serial.c b/arch/mn10300/kernel/mn10300-serial.c index 81d5cb9b6569..bf6e949a2f87 100644 --- a/arch/mn10300/kernel/mn10300-serial.c +++ b/arch/mn10300/kernel/mn10300-serial.c | |||
@@ -524,7 +524,7 @@ static int mask_test_and_clear(volatile u8 *ptr, u8 mask) | |||
524 | static void mn10300_serial_receive_interrupt(struct mn10300_serial_port *port) | 524 | static void mn10300_serial_receive_interrupt(struct mn10300_serial_port *port) |
525 | { | 525 | { |
526 | struct uart_icount *icount = &port->uart.icount; | 526 | struct uart_icount *icount = &port->uart.icount; |
527 | struct tty_struct *tty = port->uart.state->port.tty; | 527 | struct tty_port *tport = &port->uart.state->port; |
528 | unsigned ix; | 528 | unsigned ix; |
529 | int count; | 529 | int count; |
530 | u8 st, ch, push, status, overrun; | 530 | u8 st, ch, push, status, overrun; |
@@ -534,10 +534,10 @@ static void mn10300_serial_receive_interrupt(struct mn10300_serial_port *port) | |||
534 | push = 0; | 534 | push = 0; |
535 | 535 | ||
536 | count = CIRC_CNT(port->rx_inp, port->rx_outp, MNSC_BUFFER_SIZE); | 536 | count = CIRC_CNT(port->rx_inp, port->rx_outp, MNSC_BUFFER_SIZE); |
537 | count = tty_buffer_request_room(tty, count); | 537 | count = tty_buffer_request_room(tport, count); |
538 | if (count == 0) { | 538 | if (count == 0) { |
539 | if (!tty->low_latency) | 539 | if (!tport->low_latency) |
540 | tty_flip_buffer_push(tty); | 540 | tty_flip_buffer_push(tport); |
541 | return; | 541 | return; |
542 | } | 542 | } |
543 | 543 | ||
@@ -545,8 +545,8 @@ try_again: | |||
545 | /* pull chars out of the hat */ | 545 | /* pull chars out of the hat */ |
546 | ix = ACCESS_ONCE(port->rx_outp); | 546 | ix = ACCESS_ONCE(port->rx_outp); |
547 | if (CIRC_CNT(port->rx_inp, ix, MNSC_BUFFER_SIZE) == 0) { | 547 | if (CIRC_CNT(port->rx_inp, ix, MNSC_BUFFER_SIZE) == 0) { |
548 | if (push && !tty->low_latency) | 548 | if (push && !tport->low_latency) |
549 | tty_flip_buffer_push(tty); | 549 | tty_flip_buffer_push(tport); |
550 | return; | 550 | return; |
551 | } | 551 | } |
552 | 552 | ||
@@ -666,19 +666,19 @@ insert: | |||
666 | else | 666 | else |
667 | flag = TTY_NORMAL; | 667 | flag = TTY_NORMAL; |
668 | 668 | ||
669 | tty_insert_flip_char(tty, ch, flag); | 669 | tty_insert_flip_char(tport, ch, flag); |
670 | } | 670 | } |
671 | 671 | ||
672 | /* overrun is special, since it's reported immediately, and doesn't | 672 | /* overrun is special, since it's reported immediately, and doesn't |
673 | * affect the current character | 673 | * affect the current character |
674 | */ | 674 | */ |
675 | if (overrun) | 675 | if (overrun) |
676 | tty_insert_flip_char(tty, 0, TTY_OVERRUN); | 676 | tty_insert_flip_char(tport, 0, TTY_OVERRUN); |
677 | 677 | ||
678 | count--; | 678 | count--; |
679 | if (count <= 0) { | 679 | if (count <= 0) { |
680 | if (!tty->low_latency) | 680 | if (!tport->low_latency) |
681 | tty_flip_buffer_push(tty); | 681 | tty_flip_buffer_push(tport); |
682 | return; | 682 | return; |
683 | } | 683 | } |
684 | 684 | ||
diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c index eb09f5a552ff..84f4e97e3074 100644 --- a/arch/mn10300/kernel/process.c +++ b/arch/mn10300/kernel/process.c | |||
@@ -37,12 +37,6 @@ | |||
37 | #include "internal.h" | 37 | #include "internal.h" |
38 | 38 | ||
39 | /* | 39 | /* |
40 | * power management idle function, if any.. | ||
41 | */ | ||
42 | void (*pm_idle)(void); | ||
43 | EXPORT_SYMBOL(pm_idle); | ||
44 | |||
45 | /* | ||
46 | * return saved PC of a blocked thread. | 40 | * return saved PC of a blocked thread. |
47 | */ | 41 | */ |
48 | unsigned long thread_saved_pc(struct task_struct *tsk) | 42 | unsigned long thread_saved_pc(struct task_struct *tsk) |
@@ -113,7 +107,6 @@ void cpu_idle(void) | |||
113 | void (*idle)(void); | 107 | void (*idle)(void); |
114 | 108 | ||
115 | smp_rmb(); | 109 | smp_rmb(); |
116 | idle = pm_idle; | ||
117 | if (!idle) { | 110 | if (!idle) { |
118 | #if defined(CONFIG_SMP) && !defined(CONFIG_HOTPLUG_CPU) | 111 | #if defined(CONFIG_SMP) && !defined(CONFIG_HOTPLUG_CPU) |
119 | idle = poll_idle; | 112 | idle = poll_idle; |
diff --git a/arch/mn10300/kernel/signal.c b/arch/mn10300/kernel/signal.c index f570b3085ef9..9dfac5cd16e6 100644 --- a/arch/mn10300/kernel/signal.c +++ b/arch/mn10300/kernel/signal.c | |||
@@ -32,59 +32,6 @@ | |||
32 | #define DEBUG_SIG 0 | 32 | #define DEBUG_SIG 0 |
33 | 33 | ||
34 | /* | 34 | /* |
35 | * atomically swap in the new signal mask, and wait for a signal. | ||
36 | */ | ||
37 | asmlinkage long sys_sigsuspend(int history0, int history1, old_sigset_t mask) | ||
38 | { | ||
39 | sigset_t blocked; | ||
40 | siginitset(&blocked, mask); | ||
41 | return sigsuspend(&blocked); | ||
42 | } | ||
43 | |||
44 | /* | ||
45 | * set signal action syscall | ||
46 | */ | ||
47 | asmlinkage long sys_sigaction(int sig, | ||
48 | const struct old_sigaction __user *act, | ||
49 | struct old_sigaction __user *oact) | ||
50 | { | ||
51 | struct k_sigaction new_ka, old_ka; | ||
52 | int ret; | ||
53 | |||
54 | if (act) { | ||
55 | old_sigset_t mask; | ||
56 | if (verify_area(VERIFY_READ, act, sizeof(*act)) || | ||
57 | __get_user(new_ka.sa.sa_handler, &act->sa_handler) || | ||
58 | __get_user(new_ka.sa.sa_restorer, &act->sa_restorer) || | ||
59 | __get_user(new_ka.sa.sa_flags, &act->sa_flags) || | ||
60 | __get_user(mask, &act->sa_mask)) | ||
61 | return -EFAULT; | ||
62 | siginitset(&new_ka.sa.sa_mask, mask); | ||
63 | } | ||
64 | |||
65 | ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL); | ||
66 | |||
67 | if (!ret && oact) { | ||
68 | if (verify_area(VERIFY_WRITE, oact, sizeof(*oact)) || | ||
69 | __put_user(old_ka.sa.sa_handler, &oact->sa_handler) || | ||
70 | __put_user(old_ka.sa.sa_restorer, &oact->sa_restorer) || | ||
71 | __put_user(old_ka.sa.sa_flags, &oact->sa_flags) || | ||
72 | __put_user(old_ka.sa.sa_mask.sig[0], &oact->sa_mask)) | ||
73 | return -EFAULT; | ||
74 | } | ||
75 | |||
76 | return ret; | ||
77 | } | ||
78 | |||
79 | /* | ||
80 | * set alternate signal stack syscall | ||
81 | */ | ||
82 | asmlinkage long sys_sigaltstack(const stack_t __user *uss, stack_t *uoss) | ||
83 | { | ||
84 | return do_sigaltstack(uss, uoss, current_frame()->sp); | ||
85 | } | ||
86 | |||
87 | /* | ||
88 | * do a signal return; undo the signal stack. | 35 | * do a signal return; undo the signal stack. |
89 | */ | 36 | */ |
90 | static int restore_sigcontext(struct pt_regs *regs, | 37 | static int restore_sigcontext(struct pt_regs *regs, |
@@ -193,8 +140,7 @@ asmlinkage long sys_rt_sigreturn(void) | |||
193 | if (restore_sigcontext(current_frame(), &frame->uc.uc_mcontext, &d0)) | 140 | if (restore_sigcontext(current_frame(), &frame->uc.uc_mcontext, &d0)) |
194 | goto badframe; | 141 | goto badframe; |
195 | 142 | ||
196 | if (do_sigaltstack(&frame->uc.uc_stack, NULL, current_frame()->sp) == | 143 | if (restore_altstack(&frame->uc.uc_stack)) |
197 | -EFAULT) | ||
198 | goto badframe; | 144 | goto badframe; |
199 | 145 | ||
200 | return d0; | 146 | return d0; |
@@ -359,9 +305,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
359 | /* create the ucontext. */ | 305 | /* create the ucontext. */ |
360 | if (__put_user(0, &frame->uc.uc_flags) || | 306 | if (__put_user(0, &frame->uc.uc_flags) || |
361 | __put_user(0, &frame->uc.uc_link) || | 307 | __put_user(0, &frame->uc.uc_link) || |
362 | __put_user((void *)current->sas_ss_sp, &frame->uc.uc_stack.ss_sp) || | 308 | __save_altstack(&frame->uc.uc_stack, regs->sp) || |
363 | __put_user(sas_ss_flags(regs->sp), &frame->uc.uc_stack.ss_flags) || | ||
364 | __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size) || | ||
365 | setup_sigcontext(&frame->uc.uc_mcontext, | 309 | setup_sigcontext(&frame->uc.uc_mcontext, |
366 | &frame->fpuctx, regs, set->sig[0]) || | 310 | &frame->fpuctx, regs, set->sig[0]) || |
367 | __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set))) | 311 | __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set))) |