diff options
Diffstat (limited to 'arch/parisc/include/asm')
| -rw-r--r-- | arch/parisc/include/asm/atomic.h | 14 | ||||
| -rw-r--r-- | arch/parisc/include/asm/dma.h | 3 | ||||
| -rw-r--r-- | arch/parisc/include/asm/perf_counter.h | 7 | ||||
| -rw-r--r-- | arch/parisc/include/asm/processor.h | 3 | ||||
| -rw-r--r-- | arch/parisc/include/asm/system.h | 4 | ||||
| -rw-r--r-- | arch/parisc/include/asm/tlbflush.h | 14 | ||||
| -rw-r--r-- | arch/parisc/include/asm/unistd.h | 6 |
7 files changed, 34 insertions, 17 deletions
diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h index 7eeaff944360..8bc9e96699b2 100644 --- a/arch/parisc/include/asm/atomic.h +++ b/arch/parisc/include/asm/atomic.h | |||
| @@ -222,13 +222,13 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u) | |||
| 222 | 222 | ||
| 223 | #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) | 223 | #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) |
| 224 | 224 | ||
| 225 | #define atomic_add(i,v) ((void)(__atomic_add_return( ((int)(i)),(v)))) | 225 | #define atomic_add(i,v) ((void)(__atomic_add_return( (i),(v)))) |
| 226 | #define atomic_sub(i,v) ((void)(__atomic_add_return(-((int)(i)),(v)))) | 226 | #define atomic_sub(i,v) ((void)(__atomic_add_return(-(i),(v)))) |
| 227 | #define atomic_inc(v) ((void)(__atomic_add_return( 1,(v)))) | 227 | #define atomic_inc(v) ((void)(__atomic_add_return( 1,(v)))) |
| 228 | #define atomic_dec(v) ((void)(__atomic_add_return( -1,(v)))) | 228 | #define atomic_dec(v) ((void)(__atomic_add_return( -1,(v)))) |
| 229 | 229 | ||
| 230 | #define atomic_add_return(i,v) (__atomic_add_return( ((int)(i)),(v))) | 230 | #define atomic_add_return(i,v) (__atomic_add_return( (i),(v))) |
| 231 | #define atomic_sub_return(i,v) (__atomic_add_return(-((int)(i)),(v))) | 231 | #define atomic_sub_return(i,v) (__atomic_add_return(-(i),(v))) |
| 232 | #define atomic_inc_return(v) (__atomic_add_return( 1,(v))) | 232 | #define atomic_inc_return(v) (__atomic_add_return( 1,(v))) |
| 233 | #define atomic_dec_return(v) (__atomic_add_return( -1,(v))) | 233 | #define atomic_dec_return(v) (__atomic_add_return( -1,(v))) |
| 234 | 234 | ||
| @@ -336,7 +336,11 @@ static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u) | |||
| 336 | 336 | ||
| 337 | #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) | 337 | #define atomic64_inc_not_zero(v) atomic64_add_unless((v), 1, 0) |
| 338 | 338 | ||
| 339 | #endif /* CONFIG_64BIT */ | 339 | #else /* CONFIG_64BIT */ |
| 340 | |||
| 341 | #include <asm-generic/atomic64.h> | ||
| 342 | |||
| 343 | #endif /* !CONFIG_64BIT */ | ||
| 340 | 344 | ||
| 341 | #include <asm-generic/atomic-long.h> | 345 | #include <asm-generic/atomic-long.h> |
| 342 | 346 | ||
diff --git a/arch/parisc/include/asm/dma.h b/arch/parisc/include/asm/dma.h index 31ad0f05af3d..f7a18f968703 100644 --- a/arch/parisc/include/asm/dma.h +++ b/arch/parisc/include/asm/dma.h | |||
| @@ -1,5 +1,4 @@ | |||
| 1 | /* $Id: dma.h,v 1.2 1999/04/27 00:46:18 deller Exp $ | 1 | /* asm/dma.h: Defines for using and allocating dma channels. |
| 2 | * linux/include/asm/dma.h: Defines for using and allocating dma channels. | ||
| 3 | * Written by Hennus Bergman, 1992. | 2 | * Written by Hennus Bergman, 1992. |
| 4 | * High DMA channel support & info by Hannu Savolainen | 3 | * High DMA channel support & info by Hannu Savolainen |
| 5 | * and John Boyd, Nov. 1992. | 4 | * and John Boyd, Nov. 1992. |
diff --git a/arch/parisc/include/asm/perf_counter.h b/arch/parisc/include/asm/perf_counter.h new file mode 100644 index 000000000000..dc9e829f7013 --- /dev/null +++ b/arch/parisc/include/asm/perf_counter.h | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | #ifndef __ASM_PARISC_PERF_COUNTER_H | ||
| 2 | #define __ASM_PARISC_PERF_COUNTER_H | ||
| 3 | |||
| 4 | /* parisc only supports software counters through this interface. */ | ||
| 5 | static inline void set_perf_counter_pending(void) { } | ||
| 6 | |||
| 7 | #endif /* __ASM_PARISC_PERF_COUNTER_H */ | ||
diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h index 9d64df8754ba..9ce66e9d1c2b 100644 --- a/arch/parisc/include/asm/processor.h +++ b/arch/parisc/include/asm/processor.h | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include <asm/types.h> | 18 | #include <asm/types.h> |
| 19 | #include <asm/system.h> | 19 | #include <asm/system.h> |
| 20 | #include <asm/percpu.h> | 20 | #include <asm/percpu.h> |
| 21 | |||
| 21 | #endif /* __ASSEMBLY__ */ | 22 | #endif /* __ASSEMBLY__ */ |
| 22 | 23 | ||
| 23 | #define KERNEL_STACK_SIZE (4*PAGE_SIZE) | 24 | #define KERNEL_STACK_SIZE (4*PAGE_SIZE) |
| @@ -127,6 +128,8 @@ struct thread_struct { | |||
| 127 | unsigned long flags; | 128 | unsigned long flags; |
| 128 | }; | 129 | }; |
| 129 | 130 | ||
| 131 | #define task_pt_regs(tsk) ((struct pt_regs *)&((tsk)->thread.regs)) | ||
| 132 | |||
| 130 | /* Thread struct flags. */ | 133 | /* Thread struct flags. */ |
| 131 | #define PARISC_UAC_NOPRINT (1UL << 0) /* see prctl and unaligned.c */ | 134 | #define PARISC_UAC_NOPRINT (1UL << 0) /* see prctl and unaligned.c */ |
| 132 | #define PARISC_UAC_SIGBUS (1UL << 1) | 135 | #define PARISC_UAC_SIGBUS (1UL << 1) |
diff --git a/arch/parisc/include/asm/system.h b/arch/parisc/include/asm/system.h index ee80c920b464..d91357bca5b4 100644 --- a/arch/parisc/include/asm/system.h +++ b/arch/parisc/include/asm/system.h | |||
| @@ -168,8 +168,8 @@ static inline void set_eiem(unsigned long val) | |||
| 168 | /* LDCW, the only atomic read-write operation PA-RISC has. *sigh*. */ | 168 | /* LDCW, the only atomic read-write operation PA-RISC has. *sigh*. */ |
| 169 | #define __ldcw(a) ({ \ | 169 | #define __ldcw(a) ({ \ |
| 170 | unsigned __ret; \ | 170 | unsigned __ret; \ |
| 171 | __asm__ __volatile__(__LDCW " 0(%1),%0" \ | 171 | __asm__ __volatile__(__LDCW " 0(%2),%0" \ |
| 172 | : "=r" (__ret) : "r" (a)); \ | 172 | : "=r" (__ret), "+m" (*(a)) : "r" (a)); \ |
| 173 | __ret; \ | 173 | __ret; \ |
| 174 | }) | 174 | }) |
| 175 | 175 | ||
diff --git a/arch/parisc/include/asm/tlbflush.h b/arch/parisc/include/asm/tlbflush.h index 1f6fd4fc05b9..8f1a8100bf2d 100644 --- a/arch/parisc/include/asm/tlbflush.h +++ b/arch/parisc/include/asm/tlbflush.h | |||
| @@ -12,14 +12,12 @@ | |||
| 12 | * N class systems, only one PxTLB inter processor broadcast can be | 12 | * N class systems, only one PxTLB inter processor broadcast can be |
| 13 | * active at any one time on the Merced bus. This tlb purge | 13 | * active at any one time on the Merced bus. This tlb purge |
| 14 | * synchronisation is fairly lightweight and harmless so we activate | 14 | * synchronisation is fairly lightweight and harmless so we activate |
| 15 | * it on all SMP systems not just the N class. We also need to have | 15 | * it on all systems not just the N class. |
| 16 | * preemption disabled on uniprocessor machines, and spin_lock does that | ||
| 17 | * nicely. | ||
| 18 | */ | 16 | */ |
| 19 | extern spinlock_t pa_tlb_lock; | 17 | extern spinlock_t pa_tlb_lock; |
| 20 | 18 | ||
| 21 | #define purge_tlb_start(x) spin_lock(&pa_tlb_lock) | 19 | #define purge_tlb_start(flags) spin_lock_irqsave(&pa_tlb_lock, flags) |
| 22 | #define purge_tlb_end(x) spin_unlock(&pa_tlb_lock) | 20 | #define purge_tlb_end(flags) spin_unlock_irqrestore(&pa_tlb_lock, flags) |
| 23 | 21 | ||
| 24 | extern void flush_tlb_all(void); | 22 | extern void flush_tlb_all(void); |
| 25 | extern void flush_tlb_all_local(void *); | 23 | extern void flush_tlb_all_local(void *); |
| @@ -63,14 +61,16 @@ static inline void flush_tlb_mm(struct mm_struct *mm) | |||
| 63 | static inline void flush_tlb_page(struct vm_area_struct *vma, | 61 | static inline void flush_tlb_page(struct vm_area_struct *vma, |
| 64 | unsigned long addr) | 62 | unsigned long addr) |
| 65 | { | 63 | { |
| 64 | unsigned long flags; | ||
| 65 | |||
| 66 | /* For one page, it's not worth testing the split_tlb variable */ | 66 | /* For one page, it's not worth testing the split_tlb variable */ |
| 67 | 67 | ||
| 68 | mb(); | 68 | mb(); |
| 69 | mtsp(vma->vm_mm->context,1); | 69 | mtsp(vma->vm_mm->context,1); |
| 70 | purge_tlb_start(); | 70 | purge_tlb_start(flags); |
| 71 | pdtlb(addr); | 71 | pdtlb(addr); |
| 72 | pitlb(addr); | 72 | pitlb(addr); |
| 73 | purge_tlb_end(); | 73 | purge_tlb_end(flags); |
| 74 | } | 74 | } |
| 75 | 75 | ||
| 76 | void __flush_tlb_range(unsigned long sid, | 76 | void __flush_tlb_range(unsigned long sid, |
diff --git a/arch/parisc/include/asm/unistd.h b/arch/parisc/include/asm/unistd.h index ef26b009dc5d..f3d3b8b012c4 100644 --- a/arch/parisc/include/asm/unistd.h +++ b/arch/parisc/include/asm/unistd.h | |||
| @@ -807,8 +807,12 @@ | |||
| 807 | #define __NR_dup3 (__NR_Linux + 312) | 807 | #define __NR_dup3 (__NR_Linux + 312) |
| 808 | #define __NR_pipe2 (__NR_Linux + 313) | 808 | #define __NR_pipe2 (__NR_Linux + 313) |
| 809 | #define __NR_inotify_init1 (__NR_Linux + 314) | 809 | #define __NR_inotify_init1 (__NR_Linux + 314) |
| 810 | #define __NR_preadv (__NR_Linux + 315) | ||
| 811 | #define __NR_pwritev (__NR_Linux + 316) | ||
| 812 | #define __NR_rt_tgsigqueueinfo (__NR_Linux + 317) | ||
| 813 | #define __NR_perf_counter_open (__NR_Linux + 318) | ||
| 810 | 814 | ||
| 811 | #define __NR_Linux_syscalls (__NR_inotify_init1 + 1) | 815 | #define __NR_Linux_syscalls (__NR_perf_counter_open + 1) |
| 812 | 816 | ||
| 813 | 817 | ||
| 814 | #define __IGNORE_select /* newselect */ | 818 | #define __IGNORE_select /* newselect */ |
