diff options
Diffstat (limited to 'arch/unicore32/include')
| -rw-r--r-- | arch/unicore32/include/asm/Kbuild | 3 | ||||
| -rw-r--r-- | arch/unicore32/include/asm/barrier.h | 11 | ||||
| -rw-r--r-- | arch/unicore32/include/asm/io.h | 27 | ||||
| -rw-r--r-- | arch/unicore32/include/asm/mmu_context.h | 4 | ||||
| -rw-r--r-- | arch/unicore32/include/asm/pci.h | 5 | ||||
| -rw-r--r-- | arch/unicore32/include/asm/pgalloc.h | 14 | ||||
| -rw-r--r-- | arch/unicore32/include/asm/pgtable.h | 10 | ||||
| -rw-r--r-- | arch/unicore32/include/asm/ptrace.h | 1 | ||||
| -rw-r--r-- | arch/unicore32/include/asm/thread_info.h | 6 | 
9 files changed, 48 insertions, 33 deletions
diff --git a/arch/unicore32/include/asm/Kbuild b/arch/unicore32/include/asm/Kbuild index 89d8b6c4e39..1e5fb872a4a 100644 --- a/arch/unicore32/include/asm/Kbuild +++ b/arch/unicore32/include/asm/Kbuild @@ -16,6 +16,7 @@ generic-y += fcntl.h  generic-y += ftrace.h  generic-y += futex.h  generic-y += hardirq.h +generic-y += hash.h  generic-y += hw_irq.h  generic-y += ioctl.h  generic-y += ioctls.h @@ -24,6 +25,7 @@ generic-y += irq_regs.h  generic-y += kdebug.h  generic-y += kmap_types.h  generic-y += local.h +generic-y += mcs_spinlock.h  generic-y += mman.h  generic-y += module.h  generic-y += msgbuf.h @@ -32,6 +34,7 @@ generic-y += parport.h  generic-y += percpu.h  generic-y += poll.h  generic-y += posix_types.h +generic-y += preempt.h  generic-y += resource.h  generic-y += scatterlist.h  generic-y += sections.h diff --git a/arch/unicore32/include/asm/barrier.h b/arch/unicore32/include/asm/barrier.h index a6620e5336b..83d6a520f4b 100644 --- a/arch/unicore32/include/asm/barrier.h +++ b/arch/unicore32/include/asm/barrier.h @@ -14,15 +14,6 @@  #define dsb() __asm__ __volatile__ ("" : : : "memory")  #define dmb() __asm__ __volatile__ ("" : : : "memory") -#define mb()				barrier() -#define rmb()				barrier() -#define wmb()				barrier() -#define smp_mb()			barrier() -#define smp_rmb()			barrier() -#define smp_wmb()			barrier() -#define read_barrier_depends()		do { } while (0) -#define smp_read_barrier_depends()	do { } while (0) - -#define set_mb(var, value)		do { var = value; smp_mb(); } while (0) +#include <asm-generic/barrier.h>  #endif /* __UNICORE_BARRIER_H__ */ diff --git a/arch/unicore32/include/asm/io.h b/arch/unicore32/include/asm/io.h index 39decb6e6f5..cb1d8fd2b16 100644 --- a/arch/unicore32/include/asm/io.h +++ b/arch/unicore32/include/asm/io.h @@ -39,10 +39,37 @@ extern void __uc32_iounmap(volatile void __iomem *addr);  #define ioremap_nocache(cookie, size)	__uc32_ioremap(cookie, size)  #define iounmap(cookie)			__uc32_iounmap(cookie) +#define readb_relaxed readb +#define readw_relaxed readw +#define readl_relaxed readl +  #define HAVE_ARCH_PIO_SIZE  #define PIO_OFFSET		(unsigned int)(PCI_IOBASE)  #define PIO_MASK		(unsigned int)(IO_SPACE_LIMIT)  #define PIO_RESERVED		(PIO_OFFSET + PIO_MASK + 1) +#ifdef CONFIG_STRICT_DEVMEM + +#include <linux/ioport.h> +#include <linux/mm.h> + +/* + * devmem_is_allowed() checks to see if /dev/mem access to a certain + * address is valid. The argument is a physical page number. + * We mimic x86 here by disallowing access to system RAM as well as + * device-exclusive MMIO regions. This effectively disable read()/write() + * on /dev/mem. + */ +static inline int devmem_is_allowed(unsigned long pfn) +{ +	if (iomem_is_exclusive(pfn << PAGE_SHIFT)) +		return 0; +	if (!page_is_ram(pfn)) +		return 1; +	return 0; +} + +#endif /* CONFIG_STRICT_DEVMEM */ +  #endif	/* __KERNEL__ */  #endif	/* __UNICORE_IO_H__ */ diff --git a/arch/unicore32/include/asm/mmu_context.h b/arch/unicore32/include/asm/mmu_context.h index fb5e4c658f7..ef470a7a3d0 100644 --- a/arch/unicore32/include/asm/mmu_context.h +++ b/arch/unicore32/include/asm/mmu_context.h @@ -14,6 +14,8 @@  #include <linux/compiler.h>  #include <linux/sched.h> +#include <linux/mm.h> +#include <linux/vmacache.h>  #include <linux/io.h>  #include <asm/cacheflush.h> @@ -73,7 +75,7 @@ do { \  		else \  			mm->mmap = NULL; \  		rb_erase(&high_vma->vm_rb, &mm->mm_rb); \ -		mm->mmap_cache = NULL; \ +		vmacache_invalidate(mm); \  		mm->map_count--; \  		remove_vma(high_vma); \  	} \ diff --git a/arch/unicore32/include/asm/pci.h b/arch/unicore32/include/asm/pci.h index f5e108f4a15..654407e9861 100644 --- a/arch/unicore32/include/asm/pci.h +++ b/arch/unicore32/include/asm/pci.h @@ -18,11 +18,6 @@  #include <asm-generic/pci.h>  #include <mach/hardware.h> /* for PCIBIOS_MIN_* */ -static inline void pcibios_penalize_isa_irq(int irq, int active) -{ -	/* We don't do dynamic PCI IRQ allocation */ -} -  #ifdef CONFIG_PCI  static inline void pci_dma_burst_advice(struct pci_dev *pdev,  					enum pci_dma_burst_strategy *strat, diff --git a/arch/unicore32/include/asm/pgalloc.h b/arch/unicore32/include/asm/pgalloc.h index 0213e373a89..2e02d1356fd 100644 --- a/arch/unicore32/include/asm/pgalloc.h +++ b/arch/unicore32/include/asm/pgalloc.h @@ -51,12 +51,14 @@ pte_alloc_one(struct mm_struct *mm, unsigned long addr)  	struct page *pte;  	pte = alloc_pages(PGALLOC_GFP, 0); -	if (pte) { -		if (!PageHighMem(pte)) { -			void *page = page_address(pte); -			clean_dcache_area(page, PTRS_PER_PTE * sizeof(pte_t)); -		} -		pgtable_page_ctor(pte); +	if (!pte) +		return NULL; +	if (!PageHighMem(pte)) { +		void *page = page_address(pte); +		clean_dcache_area(page, PTRS_PER_PTE * sizeof(pte_t)); +	} +	if (!pgtable_page_ctor(pte)) { +		__free_page(pte);  	}  	return pte; diff --git a/arch/unicore32/include/asm/pgtable.h b/arch/unicore32/include/asm/pgtable.h index 233c25880df..ed6f7d000fb 100644 --- a/arch/unicore32/include/asm/pgtable.h +++ b/arch/unicore32/include/asm/pgtable.h @@ -87,16 +87,16 @@ extern pgprot_t pgprot_kernel;  #define PAGE_NONE		pgprot_user  #define PAGE_SHARED		__pgprot(pgprot_val(pgprot_user | PTE_READ \ -								| PTE_WRITE) +								| PTE_WRITE))  #define PAGE_SHARED_EXEC	__pgprot(pgprot_val(pgprot_user | PTE_READ \  								| PTE_WRITE \ -								| PTE_EXEC) +								| PTE_EXEC))  #define PAGE_COPY		__pgprot(pgprot_val(pgprot_user | PTE_READ)  #define PAGE_COPY_EXEC		__pgprot(pgprot_val(pgprot_user | PTE_READ \ -								| PTE_EXEC) -#define PAGE_READONLY		__pgprot(pgprot_val(pgprot_user | PTE_READ) +								| PTE_EXEC)) +#define PAGE_READONLY		__pgprot(pgprot_val(pgprot_user | PTE_READ))  #define PAGE_READONLY_EXEC	__pgprot(pgprot_val(pgprot_user | PTE_READ \ -								| PTE_EXEC) +								| PTE_EXEC))  #define PAGE_KERNEL		pgprot_kernel  #define PAGE_KERNEL_EXEC	__pgprot(pgprot_val(pgprot_kernel | PTE_EXEC)) diff --git a/arch/unicore32/include/asm/ptrace.h b/arch/unicore32/include/asm/ptrace.h index 9df53d991c7..02bf5a415bf 100644 --- a/arch/unicore32/include/asm/ptrace.h +++ b/arch/unicore32/include/asm/ptrace.h @@ -55,6 +55,7 @@ static inline int valid_user_regs(struct pt_regs *regs)  #define instruction_pointer(regs)	((regs)->UCreg_pc)  #define user_stack_pointer(regs)	((regs)->UCreg_sp) +#define profile_pc(regs)		instruction_pointer(regs)  #endif /* __ASSEMBLY__ */  #endif diff --git a/arch/unicore32/include/asm/thread_info.h b/arch/unicore32/include/asm/thread_info.h index 818b4a1edb5..af36d8eabdf 100644 --- a/arch/unicore32/include/asm/thread_info.h +++ b/arch/unicore32/include/asm/thread_info.h @@ -118,12 +118,6 @@ static inline struct thread_info *current_thread_info(void)  #endif  /* - * We use bit 30 of the preempt_count to indicate that kernel - * preemption is occurring.  See <asm/hardirq.h>. - */ -#define PREEMPT_ACTIVE	0x40000000 - -/*   * thread information flags:   *  TIF_SYSCALL_TRACE	- syscall trace active   *  TIF_SIGPENDING	- signal pending  | 
