diff options
Diffstat (limited to 'arch/parisc/kernel')
-rw-r--r-- | arch/parisc/kernel/cache.c | 5 | ||||
-rw-r--r-- | arch/parisc/kernel/parisc_ksyms.c | 2 | ||||
-rw-r--r-- | arch/parisc/kernel/process.c | 22 | ||||
-rw-r--r-- | arch/parisc/kernel/smp.c | 2 | ||||
-rw-r--r-- | arch/parisc/kernel/sys_parisc32.c | 41 | ||||
-rw-r--r-- | arch/parisc/kernel/syscall_table.S | 8 | ||||
-rw-r--r-- | arch/parisc/kernel/traps.c | 10 |
7 files changed, 10 insertions, 80 deletions
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c index 4b12890642eb..83ded26cad06 100644 --- a/arch/parisc/kernel/cache.c +++ b/arch/parisc/kernel/cache.c | |||
@@ -421,14 +421,11 @@ void purge_tlb_entries(struct mm_struct *mm, unsigned long addr) | |||
421 | /* Note: purge_tlb_entries can be called at startup with | 421 | /* Note: purge_tlb_entries can be called at startup with |
422 | no context. */ | 422 | no context. */ |
423 | 423 | ||
424 | /* Disable preemption while we play with %sr1. */ | ||
425 | preempt_disable(); | ||
426 | mtsp(mm->context, 1); | ||
427 | purge_tlb_start(flags); | 424 | purge_tlb_start(flags); |
425 | mtsp(mm->context, 1); | ||
428 | pdtlb(addr); | 426 | pdtlb(addr); |
429 | pitlb(addr); | 427 | pitlb(addr); |
430 | purge_tlb_end(flags); | 428 | purge_tlb_end(flags); |
431 | preempt_enable(); | ||
432 | } | 429 | } |
433 | EXPORT_SYMBOL(purge_tlb_entries); | 430 | EXPORT_SYMBOL(purge_tlb_entries); |
434 | 431 | ||
diff --git a/arch/parisc/kernel/parisc_ksyms.c b/arch/parisc/kernel/parisc_ksyms.c index 6795dc6c995f..568b2c61ea02 100644 --- a/arch/parisc/kernel/parisc_ksyms.c +++ b/arch/parisc/kernel/parisc_ksyms.c | |||
@@ -120,11 +120,13 @@ extern void __ashrdi3(void); | |||
120 | extern void __ashldi3(void); | 120 | extern void __ashldi3(void); |
121 | extern void __lshrdi3(void); | 121 | extern void __lshrdi3(void); |
122 | extern void __muldi3(void); | 122 | extern void __muldi3(void); |
123 | extern void __ucmpdi2(void); | ||
123 | 124 | ||
124 | EXPORT_SYMBOL(__ashrdi3); | 125 | EXPORT_SYMBOL(__ashrdi3); |
125 | EXPORT_SYMBOL(__ashldi3); | 126 | EXPORT_SYMBOL(__ashldi3); |
126 | EXPORT_SYMBOL(__lshrdi3); | 127 | EXPORT_SYMBOL(__lshrdi3); |
127 | EXPORT_SYMBOL(__muldi3); | 128 | EXPORT_SYMBOL(__muldi3); |
129 | EXPORT_SYMBOL(__ucmpdi2); | ||
128 | 130 | ||
129 | asmlinkage void * __canonicalize_funcptr_for_compare(void *); | 131 | asmlinkage void * __canonicalize_funcptr_for_compare(void *); |
130 | EXPORT_SYMBOL(__canonicalize_funcptr_for_compare); | 132 | EXPORT_SYMBOL(__canonicalize_funcptr_for_compare); |
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index d13507246c5d..55f92b614182 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c | |||
@@ -59,28 +59,6 @@ | |||
59 | #include <asm/unwind.h> | 59 | #include <asm/unwind.h> |
60 | #include <asm/sections.h> | 60 | #include <asm/sections.h> |
61 | 61 | ||
62 | /* | ||
63 | * The idle thread. There's no useful work to be | ||
64 | * done, so just try to conserve power and have a | ||
65 | * low exit latency (ie sit in a loop waiting for | ||
66 | * somebody to say that they'd like to reschedule) | ||
67 | */ | ||
68 | void cpu_idle(void) | ||
69 | { | ||
70 | set_thread_flag(TIF_POLLING_NRFLAG); | ||
71 | |||
72 | /* endless idle loop with no priority at all */ | ||
73 | while (1) { | ||
74 | rcu_idle_enter(); | ||
75 | while (!need_resched()) | ||
76 | barrier(); | ||
77 | rcu_idle_exit(); | ||
78 | schedule_preempt_disabled(); | ||
79 | check_pgt_cache(); | ||
80 | } | ||
81 | } | ||
82 | |||
83 | |||
84 | #define COMMAND_GLOBAL F_EXTEND(0xfffe0030) | 62 | #define COMMAND_GLOBAL F_EXTEND(0xfffe0030) |
85 | #define CMD_RESET 5 /* reset any module */ | 63 | #define CMD_RESET 5 /* reset any module */ |
86 | 64 | ||
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index 6266730efd61..fd1bb1519c2b 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
@@ -329,7 +329,7 @@ void __init smp_callin(void) | |||
329 | 329 | ||
330 | local_irq_enable(); /* Interrupts have been off until now */ | 330 | local_irq_enable(); /* Interrupts have been off until now */ |
331 | 331 | ||
332 | cpu_idle(); /* Wait for timer to schedule some work */ | 332 | cpu_startup_entry(CPUHP_ONLINE); |
333 | 333 | ||
334 | /* NOTREACHED */ | 334 | /* NOTREACHED */ |
335 | panic("smp_callin() AAAAaaaaahhhh....\n"); | 335 | panic("smp_callin() AAAAaaaaahhhh....\n"); |
diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c index 051c8b90231f..f517e08e7f0d 100644 --- a/arch/parisc/kernel/sys_parisc32.c +++ b/arch/parisc/kernel/sys_parisc32.c | |||
@@ -60,47 +60,6 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23, | |||
60 | return -ENOSYS; | 60 | return -ENOSYS; |
61 | } | 61 | } |
62 | 62 | ||
63 | /* Note: it is necessary to treat out_fd and in_fd as unsigned ints, with the | ||
64 | * corresponding cast to a signed int to insure that the proper conversion | ||
65 | * (sign extension) between the register representation of a signed int (msr in | ||
66 | * 32-bit mode) and the register representation of a signed int (msr in 64-bit | ||
67 | * mode) is performed. | ||
68 | */ | ||
69 | asmlinkage long sys32_sendfile(u32 out_fd, u32 in_fd, | ||
70 | compat_off_t __user *offset, compat_size_t count) | ||
71 | { | ||
72 | return compat_sys_sendfile((int)out_fd, (int)in_fd, offset, count); | ||
73 | } | ||
74 | |||
75 | asmlinkage long sys32_sendfile64(u32 out_fd, u32 in_fd, | ||
76 | compat_loff_t __user *offset, compat_size_t count) | ||
77 | { | ||
78 | return sys_sendfile64((int)out_fd, (int)in_fd, | ||
79 | (loff_t __user *)offset, count); | ||
80 | } | ||
81 | |||
82 | asmlinkage long sys32_semctl(int semid, int semnum, int cmd, union semun arg) | ||
83 | { | ||
84 | union semun u; | ||
85 | |||
86 | if (cmd == SETVAL) { | ||
87 | /* Ugh. arg is a union of int,ptr,ptr,ptr, so is 8 bytes. | ||
88 | * The int should be in the first 4, but our argument | ||
89 | * frobbing has left it in the last 4. | ||
90 | */ | ||
91 | u.val = *((int *)&arg + 1); | ||
92 | return sys_semctl (semid, semnum, cmd, u); | ||
93 | } | ||
94 | return sys_semctl (semid, semnum, cmd, arg); | ||
95 | } | ||
96 | |||
97 | long sys32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char __user *buf, | ||
98 | size_t len) | ||
99 | { | ||
100 | return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low, | ||
101 | buf, len); | ||
102 | } | ||
103 | |||
104 | asmlinkage long compat_sys_fanotify_mark(int fan_fd, int flags, u32 mask_hi, | 63 | asmlinkage long compat_sys_fanotify_mark(int fan_fd, int flags, u32 mask_hi, |
105 | u32 mask_lo, int fd, | 64 | u32 mask_lo, int fd, |
106 | const char __user *pathname) | 65 | const char __user *pathname) |
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S index f57dc137b8dd..0c9107285e66 100644 --- a/arch/parisc/kernel/syscall_table.S +++ b/arch/parisc/kernel/syscall_table.S | |||
@@ -198,7 +198,7 @@ | |||
198 | ENTRY_SAME(madvise) | 198 | ENTRY_SAME(madvise) |
199 | ENTRY_SAME(clone_wrapper) /* 120 */ | 199 | ENTRY_SAME(clone_wrapper) /* 120 */ |
200 | ENTRY_SAME(setdomainname) | 200 | ENTRY_SAME(setdomainname) |
201 | ENTRY_DIFF(sendfile) | 201 | ENTRY_COMP(sendfile) |
202 | /* struct sockaddr... */ | 202 | /* struct sockaddr... */ |
203 | ENTRY_SAME(recvfrom) | 203 | ENTRY_SAME(recvfrom) |
204 | /* struct timex contains longs */ | 204 | /* struct timex contains longs */ |
@@ -282,7 +282,7 @@ | |||
282 | ENTRY_COMP(recvmsg) | 282 | ENTRY_COMP(recvmsg) |
283 | ENTRY_SAME(semop) /* 185 */ | 283 | ENTRY_SAME(semop) /* 185 */ |
284 | ENTRY_SAME(semget) | 284 | ENTRY_SAME(semget) |
285 | ENTRY_DIFF(semctl) | 285 | ENTRY_COMP(semctl) |
286 | ENTRY_COMP(msgsnd) | 286 | ENTRY_COMP(msgsnd) |
287 | ENTRY_COMP(msgrcv) | 287 | ENTRY_COMP(msgrcv) |
288 | ENTRY_SAME(msgget) /* 190 */ | 288 | ENTRY_SAME(msgget) /* 190 */ |
@@ -304,7 +304,7 @@ | |||
304 | ENTRY_SAME(gettid) | 304 | ENTRY_SAME(gettid) |
305 | ENTRY_OURS(readahead) | 305 | ENTRY_OURS(readahead) |
306 | ENTRY_SAME(tkill) | 306 | ENTRY_SAME(tkill) |
307 | ENTRY_DIFF(sendfile64) | 307 | ENTRY_COMP(sendfile64) |
308 | ENTRY_COMP(futex) /* 210 */ | 308 | ENTRY_COMP(futex) /* 210 */ |
309 | ENTRY_COMP(sched_setaffinity) | 309 | ENTRY_COMP(sched_setaffinity) |
310 | ENTRY_COMP(sched_getaffinity) | 310 | ENTRY_COMP(sched_getaffinity) |
@@ -318,7 +318,7 @@ | |||
318 | ENTRY_SAME(alloc_hugepages) /* 220 */ | 318 | ENTRY_SAME(alloc_hugepages) /* 220 */ |
319 | ENTRY_SAME(free_hugepages) | 319 | ENTRY_SAME(free_hugepages) |
320 | ENTRY_SAME(exit_group) | 320 | ENTRY_SAME(exit_group) |
321 | ENTRY_DIFF(lookup_dcookie) | 321 | ENTRY_COMP(lookup_dcookie) |
322 | ENTRY_SAME(epoll_create) | 322 | ENTRY_SAME(epoll_create) |
323 | ENTRY_SAME(epoll_ctl) /* 225 */ | 323 | ENTRY_SAME(epoll_ctl) /* 225 */ |
324 | ENTRY_SAME(epoll_wait) | 324 | ENTRY_SAME(epoll_wait) |
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index aeb8f8f2c07a..f702bff0bed9 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c | |||
@@ -126,6 +126,8 @@ void show_regs(struct pt_regs *regs) | |||
126 | user = user_mode(regs); | 126 | user = user_mode(regs); |
127 | level = user ? KERN_DEBUG : KERN_CRIT; | 127 | level = user ? KERN_DEBUG : KERN_CRIT; |
128 | 128 | ||
129 | show_regs_print_info(level); | ||
130 | |||
129 | print_gr(level, regs); | 131 | print_gr(level, regs); |
130 | 132 | ||
131 | for (i = 0; i < 8; i += 4) | 133 | for (i = 0; i < 8; i += 4) |
@@ -158,14 +160,6 @@ void show_regs(struct pt_regs *regs) | |||
158 | } | 160 | } |
159 | } | 161 | } |
160 | 162 | ||
161 | |||
162 | void dump_stack(void) | ||
163 | { | ||
164 | show_stack(NULL, NULL); | ||
165 | } | ||
166 | |||
167 | EXPORT_SYMBOL(dump_stack); | ||
168 | |||
169 | static void do_show_stack(struct unwind_frame_info *info) | 163 | static void do_show_stack(struct unwind_frame_info *info) |
170 | { | 164 | { |
171 | int i = 1; | 165 | int i = 1; |