aboutsummaryrefslogtreecommitdiffstats
path: root/arch/microblaze/include/asm
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-10-31 19:13:44 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-10-31 19:13:44 -0400
commitb1c907f3b2675ecb01e340948fc62d6535ff5ac3 (patch)
tree978e7ba356ff57c4febe55f3ee0d0955ea721f14 /arch/microblaze/include/asm
parent91e67a996c60a347ad7b918a74efb0f6b3b274c3 (diff)
parent84ac218f0257a0cfd7689d9a44f53118dbf307b3 (diff)
Merge branch 'next' of git://git.monstr.eu/linux-2.6-microblaze
* 'next' of git://git.monstr.eu/linux-2.6-microblaze: microblaze: Remove __ARCH_WANT_INTERRUPTS_ON_CTXSW usage microblaze: Use delay slot in __strnlen_user, __strncpy_user microblaze: Remove NET_IP_ALIGN from system.h microblaze: Add __ucmpdi2() helper function microblaze: Raise SIGFPE/FPE_INTDIV for div by zero microblaze: Switch ELF_ARCH code to 189 microblaze: Added DMA sync operations microblaze: Moved __dma_sync() to dma-mapping.h microblaze: Add PVR for Microblaze v8.20.a microblaze: Fix access_ok macro microblaze: Add loop unrolling for PAGE in copy_tofrom_user microblaze: Simplify logic for unaligned byte copying microblaze: Change label names - copy_tofrom_user microblaze: Separate fixup section definition microblaze: Change label name in copy_tofrom_user microblaze: Clear top bit from cnt32_to_63
Diffstat (limited to 'arch/microblaze/include/asm')
-rw-r--r--arch/microblaze/include/asm/dma-mapping.h20
-rw-r--r--arch/microblaze/include/asm/elf.h8
-rw-r--r--arch/microblaze/include/asm/system.h9
-rw-r--r--arch/microblaze/include/asm/uaccess.h2
4 files changed, 24 insertions, 15 deletions
diff --git a/arch/microblaze/include/asm/dma-mapping.h b/arch/microblaze/include/asm/dma-mapping.h
index a569514cf19f..3a3e5b886854 100644
--- a/arch/microblaze/include/asm/dma-mapping.h
+++ b/arch/microblaze/include/asm/dma-mapping.h
@@ -28,12 +28,12 @@
28#include <linux/dma-attrs.h> 28#include <linux/dma-attrs.h>
29#include <asm/io.h> 29#include <asm/io.h>
30#include <asm-generic/dma-coherent.h> 30#include <asm-generic/dma-coherent.h>
31#include <asm/cacheflush.h>
31 32
32#define DMA_ERROR_CODE (~(dma_addr_t)0x0) 33#define DMA_ERROR_CODE (~(dma_addr_t)0x0)
33 34
34#define __dma_alloc_coherent(dev, gfp, size, handle) NULL 35#define __dma_alloc_coherent(dev, gfp, size, handle) NULL
35#define __dma_free_coherent(size, addr) ((void)0) 36#define __dma_free_coherent(size, addr) ((void)0)
36#define __dma_sync(addr, size, rw) ((void)0)
37 37
38static inline unsigned long device_to_mask(struct device *dev) 38static inline unsigned long device_to_mask(struct device *dev)
39{ 39{
@@ -95,6 +95,22 @@ static inline int dma_set_mask(struct device *dev, u64 dma_mask)
95 95
96#include <asm-generic/dma-mapping-common.h> 96#include <asm-generic/dma-mapping-common.h>
97 97
98static inline void __dma_sync(unsigned long paddr,
99 size_t size, enum dma_data_direction direction)
100{
101 switch (direction) {
102 case DMA_TO_DEVICE:
103 case DMA_BIDIRECTIONAL:
104 flush_dcache_range(paddr, paddr + size);
105 break;
106 case DMA_FROM_DEVICE:
107 invalidate_dcache_range(paddr, paddr + size);
108 break;
109 default:
110 BUG();
111 }
112}
113
98static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) 114static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
99{ 115{
100 struct dma_map_ops *ops = get_dma_ops(dev); 116 struct dma_map_ops *ops = get_dma_ops(dev);
@@ -135,7 +151,7 @@ static inline void dma_cache_sync(struct device *dev, void *vaddr, size_t size,
135 enum dma_data_direction direction) 151 enum dma_data_direction direction)
136{ 152{
137 BUG_ON(direction == DMA_NONE); 153 BUG_ON(direction == DMA_NONE);
138 __dma_sync(vaddr, size, (int)direction); 154 __dma_sync(virt_to_phys(vaddr), size, (int)direction);
139} 155}
140 156
141#endif /* _ASM_MICROBLAZE_DMA_MAPPING_H */ 157#endif /* _ASM_MICROBLAZE_DMA_MAPPING_H */
diff --git a/arch/microblaze/include/asm/elf.h b/arch/microblaze/include/asm/elf.h
index 098dfdde4b06..834849f59ae8 100644
--- a/arch/microblaze/include/asm/elf.h
+++ b/arch/microblaze/include/asm/elf.h
@@ -16,13 +16,15 @@
16 * I've snaffled the value from the microblaze binutils source code 16 * I've snaffled the value from the microblaze binutils source code
17 * /binutils/microblaze/include/elf/microblaze.h 17 * /binutils/microblaze/include/elf/microblaze.h
18 */ 18 */
19#define EM_XILINX_MICROBLAZE 0xbaab 19#define EM_MICROBLAZE 189
20#define ELF_ARCH EM_XILINX_MICROBLAZE 20#define EM_MICROBLAZE_OLD 0xbaab
21#define ELF_ARCH EM_MICROBLAZE
21 22
22/* 23/*
23 * This is used to ensure we don't load something for the wrong architecture. 24 * This is used to ensure we don't load something for the wrong architecture.
24 */ 25 */
25#define elf_check_arch(x) ((x)->e_machine == EM_XILINX_MICROBLAZE) 26#define elf_check_arch(x) ((x)->e_machine == EM_MICROBLAZE \
27 || (x)->e_machine == EM_MICROBLAZE_OLD)
26 28
27/* 29/*
28 * These are used to set parameters in the core dumps. 30 * These are used to set parameters in the core dumps.
diff --git a/arch/microblaze/include/asm/system.h b/arch/microblaze/include/asm/system.h
index e6a2284571dc..5a433cbaafb3 100644
--- a/arch/microblaze/include/asm/system.h
+++ b/arch/microblaze/include/asm/system.h
@@ -17,8 +17,6 @@
17#include <asm-generic/cmpxchg.h> 17#include <asm-generic/cmpxchg.h>
18#include <asm-generic/cmpxchg-local.h> 18#include <asm-generic/cmpxchg-local.h>
19 19
20#define __ARCH_WANT_INTERRUPTS_ON_CTXSW
21
22struct task_struct; 20struct task_struct;
23struct thread_info; 21struct thread_info;
24 22
@@ -96,11 +94,4 @@ extern struct dentry *of_debugfs_root;
96 94
97#define arch_align_stack(x) (x) 95#define arch_align_stack(x) (x)
98 96
99/*
100 * MicroBlaze doesn't handle unaligned accesses in hardware.
101 *
102 * Based on this we force the IP header alignment in network drivers.
103 */
104#define NET_IP_ALIGN 2
105
106#endif /* _ASM_MICROBLAZE_SYSTEM_H */ 97#endif /* _ASM_MICROBLAZE_SYSTEM_H */
diff --git a/arch/microblaze/include/asm/uaccess.h b/arch/microblaze/include/asm/uaccess.h
index 5bb95a11880d..072b0077abf9 100644
--- a/arch/microblaze/include/asm/uaccess.h
+++ b/arch/microblaze/include/asm/uaccess.h
@@ -95,7 +95,7 @@ static inline int ___range_ok(unsigned long addr, unsigned long size)
95 * - "addr", "addr + size" and "size" are all below the limit 95 * - "addr", "addr + size" and "size" are all below the limit
96 */ 96 */
97#define access_ok(type, addr, size) \ 97#define access_ok(type, addr, size) \
98 (get_fs().seg > (((unsigned long)(addr)) | \ 98 (get_fs().seg >= (((unsigned long)(addr)) | \
99 (size) | ((unsigned long)(addr) + (size)))) 99 (size) | ((unsigned long)(addr) + (size))))
100 100
101/* || printk("access_ok failed for %s at 0x%08lx (size %d), seg 0x%08x\n", 101/* || printk("access_ok failed for %s at 0x%08lx (size %d), seg 0x%08x\n",