diff options
Diffstat (limited to 'arch/parisc')
-rw-r--r-- | arch/parisc/include/asm/Kbuild | 32 | ||||
-rw-r--r-- | arch/parisc/include/asm/page.h | 11 | ||||
-rw-r--r-- | arch/parisc/include/asm/spinlock.h | 4 | ||||
-rw-r--r-- | arch/parisc/include/uapi/asm/unistd.h | 4 | ||||
-rw-r--r-- | arch/parisc/kernel/cache.c | 64 | ||||
-rw-r--r-- | arch/parisc/kernel/irq.c | 2 | ||||
-rw-r--r-- | arch/parisc/kernel/syscall_table.S | 1 |
7 files changed, 30 insertions, 88 deletions
diff --git a/arch/parisc/include/asm/Kbuild b/arch/parisc/include/asm/Kbuild index 752c981bc3c7..ecf25e6678ad 100644 --- a/arch/parisc/include/asm/Kbuild +++ b/arch/parisc/include/asm/Kbuild | |||
@@ -1,9 +1,29 @@ | |||
1 | 1 | ||
2 | generic-y += auxvec.h | ||
2 | generic-y += barrier.h | 3 | generic-y += barrier.h |
3 | generic-y += word-at-a-time.h auxvec.h user.h cputime.h emergency-restart.h \ | 4 | generic-y += clkdev.h |
4 | segment.h topology.h vga.h device.h percpu.h hw_irq.h mutex.h \ | 5 | generic-y += cputime.h |
5 | div64.h irq_regs.h kdebug.h kvm_para.h local64.h local.h param.h \ | 6 | generic-y += device.h |
6 | poll.h xor.h clkdev.h exec.h | 7 | generic-y += div64.h |
7 | generic-y += trace_clock.h | 8 | generic-y += emergency-restart.h |
8 | generic-y += preempt.h | 9 | generic-y += exec.h |
9 | generic-y += hash.h | 10 | generic-y += hash.h |
11 | generic-y += hw_irq.h | ||
12 | generic-y += irq_regs.h | ||
13 | generic-y += kdebug.h | ||
14 | generic-y += kvm_para.h | ||
15 | generic-y += local.h | ||
16 | generic-y += local64.h | ||
17 | generic-y += mcs_spinlock.h | ||
18 | generic-y += mutex.h | ||
19 | generic-y += param.h | ||
20 | generic-y += percpu.h | ||
21 | generic-y += poll.h | ||
22 | generic-y += preempt.h | ||
23 | generic-y += segment.h | ||
24 | generic-y += topology.h | ||
25 | generic-y += trace_clock.h | ||
26 | generic-y += user.h | ||
27 | generic-y += vga.h | ||
28 | generic-y += word-at-a-time.h | ||
29 | generic-y += xor.h | ||
diff --git a/arch/parisc/include/asm/page.h b/arch/parisc/include/asm/page.h index 637fe031aa84..60d5d174dfe4 100644 --- a/arch/parisc/include/asm/page.h +++ b/arch/parisc/include/asm/page.h | |||
@@ -32,17 +32,6 @@ void copy_page_asm(void *to, void *from); | |||
32 | void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, | 32 | void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, |
33 | struct page *pg); | 33 | struct page *pg); |
34 | 34 | ||
35 | /* #define CONFIG_PARISC_TMPALIAS */ | ||
36 | |||
37 | #ifdef CONFIG_PARISC_TMPALIAS | ||
38 | void clear_user_highpage(struct page *page, unsigned long vaddr); | ||
39 | #define clear_user_highpage clear_user_highpage | ||
40 | struct vm_area_struct; | ||
41 | void copy_user_highpage(struct page *to, struct page *from, | ||
42 | unsigned long vaddr, struct vm_area_struct *vma); | ||
43 | #define __HAVE_ARCH_COPY_USER_HIGHPAGE | ||
44 | #endif | ||
45 | |||
46 | /* | 35 | /* |
47 | * These are used to make use of C type-checking.. | 36 | * These are used to make use of C type-checking.. |
48 | */ | 37 | */ |
diff --git a/arch/parisc/include/asm/spinlock.h b/arch/parisc/include/asm/spinlock.h index 3516e0b27044..64f2992e439f 100644 --- a/arch/parisc/include/asm/spinlock.h +++ b/arch/parisc/include/asm/spinlock.h | |||
@@ -191,8 +191,4 @@ static __inline__ int arch_write_can_lock(arch_rwlock_t *rw) | |||
191 | #define arch_read_lock_flags(lock, flags) arch_read_lock(lock) | 191 | #define arch_read_lock_flags(lock, flags) arch_read_lock(lock) |
192 | #define arch_write_lock_flags(lock, flags) arch_write_lock(lock) | 192 | #define arch_write_lock_flags(lock, flags) arch_write_lock(lock) |
193 | 193 | ||
194 | #define arch_spin_relax(lock) cpu_relax() | ||
195 | #define arch_read_relax(lock) cpu_relax() | ||
196 | #define arch_write_relax(lock) cpu_relax() | ||
197 | |||
198 | #endif /* __ASM_SPINLOCK_H */ | 194 | #endif /* __ASM_SPINLOCK_H */ |
diff --git a/arch/parisc/include/uapi/asm/unistd.h b/arch/parisc/include/uapi/asm/unistd.h index 42706794a36f..265ae5190b0a 100644 --- a/arch/parisc/include/uapi/asm/unistd.h +++ b/arch/parisc/include/uapi/asm/unistd.h | |||
@@ -828,13 +828,13 @@ | |||
828 | #define __NR_finit_module (__NR_Linux + 333) | 828 | #define __NR_finit_module (__NR_Linux + 333) |
829 | #define __NR_sched_setattr (__NR_Linux + 334) | 829 | #define __NR_sched_setattr (__NR_Linux + 334) |
830 | #define __NR_sched_getattr (__NR_Linux + 335) | 830 | #define __NR_sched_getattr (__NR_Linux + 335) |
831 | #define __NR_utimes (__NR_Linux + 336) | ||
831 | 832 | ||
832 | #define __NR_Linux_syscalls (__NR_sched_getattr + 1) | 833 | #define __NR_Linux_syscalls (__NR_utimes + 1) |
833 | 834 | ||
834 | 835 | ||
835 | #define __IGNORE_select /* newselect */ | 836 | #define __IGNORE_select /* newselect */ |
836 | #define __IGNORE_fadvise64 /* fadvise64_64 */ | 837 | #define __IGNORE_fadvise64 /* fadvise64_64 */ |
837 | #define __IGNORE_utimes /* utime */ | ||
838 | 838 | ||
839 | 839 | ||
840 | #define HPUX_GATEWAY_ADDR 0xC0000004 | 840 | #define HPUX_GATEWAY_ADDR 0xC0000004 |
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c index ac87a40502e6..a6ffc775a9f8 100644 --- a/arch/parisc/kernel/cache.c +++ b/arch/parisc/kernel/cache.c | |||
@@ -581,67 +581,3 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long | |||
581 | __flush_cache_page(vma, vmaddr, PFN_PHYS(pfn)); | 581 | __flush_cache_page(vma, vmaddr, PFN_PHYS(pfn)); |
582 | } | 582 | } |
583 | } | 583 | } |
584 | |||
585 | #ifdef CONFIG_PARISC_TMPALIAS | ||
586 | |||
587 | void clear_user_highpage(struct page *page, unsigned long vaddr) | ||
588 | { | ||
589 | void *vto; | ||
590 | unsigned long flags; | ||
591 | |||
592 | /* Clear using TMPALIAS region. The page doesn't need to | ||
593 | be flushed but the kernel mapping needs to be purged. */ | ||
594 | |||
595 | vto = kmap_atomic(page); | ||
596 | |||
597 | /* The PA-RISC 2.0 Architecture book states on page F-6: | ||
598 | "Before a write-capable translation is enabled, *all* | ||
599 | non-equivalently-aliased translations must be removed | ||
600 | from the page table and purged from the TLB. (Note | ||
601 | that the caches are not required to be flushed at this | ||
602 | time.) Before any non-equivalent aliased translation | ||
603 | is re-enabled, the virtual address range for the writeable | ||
604 | page (the entire page) must be flushed from the cache, | ||
605 | and the write-capable translation removed from the page | ||
606 | table and purged from the TLB." */ | ||
607 | |||
608 | purge_kernel_dcache_page_asm((unsigned long)vto); | ||
609 | purge_tlb_start(flags); | ||
610 | pdtlb_kernel(vto); | ||
611 | purge_tlb_end(flags); | ||
612 | preempt_disable(); | ||
613 | clear_user_page_asm(vto, vaddr); | ||
614 | preempt_enable(); | ||
615 | |||
616 | pagefault_enable(); /* kunmap_atomic(addr, KM_USER0); */ | ||
617 | } | ||
618 | |||
619 | void copy_user_highpage(struct page *to, struct page *from, | ||
620 | unsigned long vaddr, struct vm_area_struct *vma) | ||
621 | { | ||
622 | void *vfrom, *vto; | ||
623 | unsigned long flags; | ||
624 | |||
625 | /* Copy using TMPALIAS region. This has the advantage | ||
626 | that the `from' page doesn't need to be flushed. However, | ||
627 | the `to' page must be flushed in copy_user_page_asm since | ||
628 | it can be used to bring in executable code. */ | ||
629 | |||
630 | vfrom = kmap_atomic(from); | ||
631 | vto = kmap_atomic(to); | ||
632 | |||
633 | purge_kernel_dcache_page_asm((unsigned long)vto); | ||
634 | purge_tlb_start(flags); | ||
635 | pdtlb_kernel(vto); | ||
636 | pdtlb_kernel(vfrom); | ||
637 | purge_tlb_end(flags); | ||
638 | preempt_disable(); | ||
639 | copy_user_page_asm(vto, vfrom, vaddr); | ||
640 | flush_dcache_page_asm(__pa(vto), vaddr); | ||
641 | preempt_enable(); | ||
642 | |||
643 | pagefault_enable(); /* kunmap_atomic(addr, KM_USER1); */ | ||
644 | pagefault_enable(); /* kunmap_atomic(addr, KM_USER0); */ | ||
645 | } | ||
646 | |||
647 | #endif /* CONFIG_PARISC_TMPALIAS */ | ||
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c index 8ceac4785609..cfe056fe7f5c 100644 --- a/arch/parisc/kernel/irq.c +++ b/arch/parisc/kernel/irq.c | |||
@@ -117,7 +117,7 @@ int cpu_check_affinity(struct irq_data *d, const struct cpumask *dest) | |||
117 | return -EINVAL; | 117 | return -EINVAL; |
118 | 118 | ||
119 | /* whatever mask they set, we just allow one CPU */ | 119 | /* whatever mask they set, we just allow one CPU */ |
120 | cpu_dest = first_cpu(*dest); | 120 | cpu_dest = cpumask_first_and(dest, cpu_online_mask); |
121 | 121 | ||
122 | return cpu_dest; | 122 | return cpu_dest; |
123 | } | 123 | } |
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S index 8fa3fbb3e4d3..80e5dd248934 100644 --- a/arch/parisc/kernel/syscall_table.S +++ b/arch/parisc/kernel/syscall_table.S | |||
@@ -431,6 +431,7 @@ | |||
431 | ENTRY_SAME(finit_module) | 431 | ENTRY_SAME(finit_module) |
432 | ENTRY_SAME(sched_setattr) | 432 | ENTRY_SAME(sched_setattr) |
433 | ENTRY_SAME(sched_getattr) /* 335 */ | 433 | ENTRY_SAME(sched_getattr) /* 335 */ |
434 | ENTRY_COMP(utimes) | ||
434 | 435 | ||
435 | /* Nothing yet */ | 436 | /* Nothing yet */ |
436 | 437 | ||