diff options
Diffstat (limited to 'arch/avr32/include/asm')
| -rw-r--r-- | arch/avr32/include/asm/Kbuild | 40 | ||||
| -rw-r--r-- | arch/avr32/include/asm/atomic.h | 5 | ||||
| -rw-r--r-- | arch/avr32/include/asm/barrier.h | 17 | ||||
| -rw-r--r-- | arch/avr32/include/asm/bitops.h | 9 | ||||
| -rw-r--r-- | arch/avr32/include/asm/bugs.h | 2 | ||||
| -rw-r--r-- | arch/avr32/include/asm/io.h | 2 | ||||
| -rw-r--r-- | arch/avr32/include/asm/kprobes.h | 14 | ||||
| -rw-r--r-- | arch/avr32/include/asm/pgalloc.h | 5 | ||||
| -rw-r--r-- | arch/avr32/include/asm/processor.h | 7 | ||||
| -rw-r--r-- | arch/avr32/include/asm/thread_info.h | 2 | 
10 files changed, 51 insertions, 52 deletions
diff --git a/arch/avr32/include/asm/Kbuild b/arch/avr32/include/asm/Kbuild index fd798074389..00a0f3ccd6e 100644 --- a/arch/avr32/include/asm/Kbuild +++ b/arch/avr32/include/asm/Kbuild @@ -1,19 +1,23 @@ -generic-y	+= clkdev.h -generic-y       += cputime.h -generic-y       += delay.h -generic-y       += device.h -generic-y       += div64.h -generic-y       += emergency-restart.h -generic-y	+= exec.h -generic-y       += futex.h -generic-y       += irq_regs.h -generic-y	+= param.h -generic-y       += local.h -generic-y       += local64.h -generic-y       += percpu.h -generic-y       += scatterlist.h -generic-y       += sections.h -generic-y       += topology.h -generic-y	+= trace_clock.h -generic-y       += xor.h +generic-y += clkdev.h +generic-y += cputime.h +generic-y += delay.h +generic-y += device.h +generic-y += div64.h +generic-y += emergency-restart.h +generic-y += exec.h +generic-y += futex.h +generic-y += hash.h +generic-y += irq_regs.h +generic-y += local.h +generic-y += local64.h +generic-y += mcs_spinlock.h +generic-y += param.h +generic-y += percpu.h +generic-y += preempt.h +generic-y += scatterlist.h +generic-y += sections.h +generic-y += topology.h +generic-y += trace_clock.h +generic-y += vga.h +generic-y += xor.h diff --git a/arch/avr32/include/asm/atomic.h b/arch/avr32/include/asm/atomic.h index 61407279208..0780f3f2415 100644 --- a/arch/avr32/include/asm/atomic.h +++ b/arch/avr32/include/asm/atomic.h @@ -183,9 +183,4 @@ static inline int atomic_sub_if_positive(int i, atomic_t *v)  #define atomic_dec_if_positive(v) atomic_sub_if_positive(1, v) -#define smp_mb__before_atomic_dec()	barrier() -#define smp_mb__after_atomic_dec()	barrier() -#define smp_mb__before_atomic_inc()	barrier() -#define smp_mb__after_atomic_inc()	barrier() -  #endif /*  __ASM_AVR32_ATOMIC_H */ diff --git a/arch/avr32/include/asm/barrier.h b/arch/avr32/include/asm/barrier.h index 0961275373d..715100790fd 100644 --- a/arch/avr32/include/asm/barrier.h +++ b/arch/avr32/include/asm/barrier.h @@ -8,22 +8,15 @@  #ifndef __ASM_AVR32_BARRIER_H  #define __ASM_AVR32_BARRIER_H -#define nop()			asm volatile("nop") - -#define mb()			asm volatile("" : : : "memory") -#define rmb()			mb() -#define wmb()			asm volatile("sync 0" : : : "memory") -#define read_barrier_depends()  do { } while(0) -#define set_mb(var, value)      do { var = value; mb(); } while(0) +/* + * Weirdest thing ever.. no full barrier, but it has a write barrier! + */ +#define wmb()	asm volatile("sync 0" : : : "memory")  #ifdef CONFIG_SMP  # error "The AVR32 port does not support SMP" -#else -# define smp_mb()		barrier() -# define smp_rmb()		barrier() -# define smp_wmb()		barrier() -# define smp_read_barrier_depends() do { } while(0)  #endif +#include <asm-generic/barrier.h>  #endif /* __ASM_AVR32_BARRIER_H */ diff --git a/arch/avr32/include/asm/bitops.h b/arch/avr32/include/asm/bitops.h index ebe7ad3f490..910d5374ce5 100644 --- a/arch/avr32/include/asm/bitops.h +++ b/arch/avr32/include/asm/bitops.h @@ -13,12 +13,7 @@  #endif  #include <asm/byteorder.h> - -/* - * clear_bit() doesn't provide any barrier for the compiler - */ -#define smp_mb__before_clear_bit()	barrier() -#define smp_mb__after_clear_bit()	barrier() +#include <asm/barrier.h>  /*   * set_bit - Atomically set a bit in memory @@ -67,7 +62,7 @@ static inline void set_bit(int nr, volatile void * addr)   *   * clear_bit() is atomic and may not be reordered.  However, it does   * not contain a memory barrier, so if it is used for locking purposes, - * you should call smp_mb__before_clear_bit() and/or smp_mb__after_clear_bit() + * you should call smp_mb__before_atomic() and/or smp_mb__after_atomic()   * in order to ensure changes are visible on other processors.   */  static inline void clear_bit(int nr, volatile void * addr) diff --git a/arch/avr32/include/asm/bugs.h b/arch/avr32/include/asm/bugs.h index 7635e770622..278661bbd1b 100644 --- a/arch/avr32/include/asm/bugs.h +++ b/arch/avr32/include/asm/bugs.h @@ -9,7 +9,7 @@  static void __init check_bugs(void)  { -	cpu_data->loops_per_jiffy = loops_per_jiffy; +	boot_cpu_data.loops_per_jiffy = loops_per_jiffy;  }  #endif /* __ASM_AVR32_BUGS_H */ diff --git a/arch/avr32/include/asm/io.h b/arch/avr32/include/asm/io.h index fc6483f83cc..4f5ec2bb717 100644 --- a/arch/avr32/include/asm/io.h +++ b/arch/avr32/include/asm/io.h @@ -295,6 +295,8 @@ extern void __iounmap(void __iomem *addr);  #define iounmap(addr)				\  	__iounmap(addr) +#define ioremap_wc ioremap_nocache +  #define cached(addr) P1SEGADDR(addr)  #define uncached(addr) P2SEGADDR(addr) diff --git a/arch/avr32/include/asm/kprobes.h b/arch/avr32/include/asm/kprobes.h index 996cb656474..45f563ed73f 100644 --- a/arch/avr32/include/asm/kprobes.h +++ b/arch/avr32/include/asm/kprobes.h @@ -16,6 +16,7 @@  typedef u16	kprobe_opcode_t;  #define BREAKPOINT_INSTRUCTION	0xd673	/* breakpoint */  #define MAX_INSN_SIZE		2 +#define MAX_STACK_SIZE		64	/* 32 would probably be OK */  #define kretprobe_blacklist_size 0 @@ -26,6 +27,19 @@ struct arch_specific_insn {  	kprobe_opcode_t	insn[MAX_INSN_SIZE];  }; +struct prev_kprobe { +	struct kprobe *kp; +	unsigned int status; +}; + +/* per-cpu kprobe control block */ +struct kprobe_ctlblk { +	unsigned int kprobe_status; +	struct prev_kprobe prev_kprobe; +	struct pt_regs jprobe_saved_regs; +	char jprobes_stack[MAX_STACK_SIZE]; +}; +  extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr);  extern int kprobe_exceptions_notify(struct notifier_block *self,  				    unsigned long val, void *data); diff --git a/arch/avr32/include/asm/pgalloc.h b/arch/avr32/include/asm/pgalloc.h index bc7e8ae479e..1aba19d68c5 100644 --- a/arch/avr32/include/asm/pgalloc.h +++ b/arch/avr32/include/asm/pgalloc.h @@ -68,7 +68,10 @@ static inline pgtable_t pte_alloc_one(struct mm_struct *mm,  		return NULL;  	page = virt_to_page(pg); -	pgtable_page_ctor(page); +	if (!pgtable_page_ctor(page)) { +		quicklist_free(QUICK_PT, NULL, pg); +		return NULL; +	}  	return page;  } diff --git a/arch/avr32/include/asm/processor.h b/arch/avr32/include/asm/processor.h index 48d71c5c898..972adcc1e8f 100644 --- a/arch/avr32/include/asm/processor.h +++ b/arch/avr32/include/asm/processor.h @@ -83,13 +83,8 @@ static inline unsigned int avr32_get_chip_revision(struct avr32_cpuinfo *cpu)  extern struct avr32_cpuinfo boot_cpu_data; -#ifdef CONFIG_SMP -extern struct avr32_cpuinfo cpu_data[]; -#define current_cpu_data cpu_data[smp_processor_id()] -#else -#define cpu_data (&boot_cpu_data) +/* No SMP support so far */  #define current_cpu_data boot_cpu_data -#endif  /* This decides where the kernel will search for a free chunk of vm   * space during mmap's diff --git a/arch/avr32/include/asm/thread_info.h b/arch/avr32/include/asm/thread_info.h index 6dc62e1f94c..a978f3fe7c2 100644 --- a/arch/avr32/include/asm/thread_info.h +++ b/arch/avr32/include/asm/thread_info.h @@ -66,8 +66,6 @@ static inline struct thread_info *current_thread_info(void)  #endif /* !__ASSEMBLY__ */ -#define PREEMPT_ACTIVE		0x40000000 -  /*   * Thread information flags   * - these are process state flags that various assembly files may need to access  | 
