diff options
Diffstat (limited to 'arch/arm/include/asm')
| -rw-r--r-- | arch/arm/include/asm/cnt32_to_63.h | 78 | ||||
| -rw-r--r-- | arch/arm/include/asm/dma-mapping.h | 86 | ||||
| -rw-r--r-- | arch/arm/include/asm/io.h | 5 | ||||
| -rw-r--r-- | arch/arm/include/asm/kexec.h | 2 | ||||
| -rw-r--r-- | arch/arm/include/asm/mach/map.h | 14 | ||||
| -rw-r--r-- | arch/arm/include/asm/memory.h | 22 | ||||
| -rw-r--r-- | arch/arm/include/asm/mtd-xip.h | 2 | ||||
| -rw-r--r-- | arch/arm/include/asm/pci.h | 2 | ||||
| -rw-r--r-- | arch/arm/include/asm/processor.h | 4 | ||||
| -rw-r--r-- | arch/arm/include/asm/tlbflush.h | 7 | ||||
| -rw-r--r-- | arch/arm/include/asm/unistd.h | 6 |
11 files changed, 104 insertions, 124 deletions
diff --git a/arch/arm/include/asm/cnt32_to_63.h b/arch/arm/include/asm/cnt32_to_63.h deleted file mode 100644 index 480c873fa746..000000000000 --- a/arch/arm/include/asm/cnt32_to_63.h +++ /dev/null | |||
| @@ -1,78 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * include/asm/cnt32_to_63.h -- extend a 32-bit counter to 63 bits | ||
| 3 | * | ||
| 4 | * Author: Nicolas Pitre | ||
| 5 | * Created: December 3, 2006 | ||
| 6 | * Copyright: MontaVista Software, Inc. | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 | ||
| 10 | * as published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef __INCLUDE_CNT32_TO_63_H__ | ||
| 14 | #define __INCLUDE_CNT32_TO_63_H__ | ||
| 15 | |||
| 16 | #include <linux/compiler.h> | ||
| 17 | #include <asm/types.h> | ||
| 18 | #include <asm/byteorder.h> | ||
| 19 | |||
| 20 | /* | ||
| 21 | * Prototype: u64 cnt32_to_63(u32 cnt) | ||
| 22 | * Many hardware clock counters are only 32 bits wide and therefore have | ||
| 23 | * a relatively short period making wrap-arounds rather frequent. This | ||
| 24 | * is a problem when implementing sched_clock() for example, where a 64-bit | ||
| 25 | * non-wrapping monotonic value is expected to be returned. | ||
| 26 | * | ||
| 27 | * To overcome that limitation, let's extend a 32-bit counter to 63 bits | ||
| 28 | * in a completely lock free fashion. Bits 0 to 31 of the clock are provided | ||
| 29 | * by the hardware while bits 32 to 62 are stored in memory. The top bit in | ||
| 30 | * memory is used to synchronize with the hardware clock half-period. When | ||
| 31 | * the top bit of both counters (hardware and in memory) differ then the | ||
| 32 | * memory is updated with a new value, incrementing it when the hardware | ||
| 33 | * counter wraps around. | ||
| 34 | * | ||
| 35 | * Because a word store in memory is atomic then the incremented value will | ||
| 36 | * always be in synch with the top bit indicating to any potential concurrent | ||
| 37 | * reader if the value in memory is up to date or not with regards to the | ||
| 38 | * needed increment. And any race in updating the value in memory is harmless | ||
| 39 | * as the same value would simply be stored more than once. | ||
| 40 | * | ||
| 41 | * The only restriction for the algorithm to work properly is that this | ||
| 42 | * code must be executed at least once per each half period of the 32-bit | ||
| 43 | * counter to properly update the state bit in memory. This is usually not a | ||
| 44 | * problem in practice, but if it is then a kernel timer could be scheduled | ||
| 45 | * to manage for this code to be executed often enough. | ||
| 46 | * | ||
| 47 | * Note that the top bit (bit 63) in the returned value should be considered | ||
| 48 | * as garbage. It is not cleared here because callers are likely to use a | ||
| 49 | * multiplier on the returned value which can get rid of the top bit | ||
| 50 | * implicitly by making the multiplier even, therefore saving on a runtime | ||
| 51 | * clear-bit instruction. Otherwise caller must remember to clear the top | ||
| 52 | * bit explicitly. | ||
| 53 | */ | ||
| 54 | |||
| 55 | /* this is used only to give gcc a clue about good code generation */ | ||
| 56 | typedef union { | ||
| 57 | struct { | ||
| 58 | #if defined(__LITTLE_ENDIAN) | ||
| 59 | u32 lo, hi; | ||
| 60 | #elif defined(__BIG_ENDIAN) | ||
| 61 | u32 hi, lo; | ||
| 62 | #endif | ||
| 63 | }; | ||
| 64 | u64 val; | ||
| 65 | } cnt32_to_63_t; | ||
| 66 | |||
| 67 | #define cnt32_to_63(cnt_lo) \ | ||
| 68 | ({ \ | ||
| 69 | static volatile u32 __m_cnt_hi = 0; \ | ||
| 70 | cnt32_to_63_t __x; \ | ||
| 71 | __x.hi = __m_cnt_hi; \ | ||
| 72 | __x.lo = (cnt_lo); \ | ||
| 73 | if (unlikely((s32)(__x.hi ^ __x.lo) < 0)) \ | ||
| 74 | __m_cnt_hi = __x.hi = (__x.hi ^ 0x80000000) + (__x.hi >> 31); \ | ||
| 75 | __x.val; \ | ||
| 76 | }) | ||
| 77 | |||
| 78 | #endif | ||
diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h index 45329fca1b64..7b95d2058395 100644 --- a/arch/arm/include/asm/dma-mapping.h +++ b/arch/arm/include/asm/dma-mapping.h | |||
| @@ -3,11 +3,48 @@ | |||
| 3 | 3 | ||
| 4 | #ifdef __KERNEL__ | 4 | #ifdef __KERNEL__ |
| 5 | 5 | ||
| 6 | #include <linux/mm.h> /* need struct page */ | 6 | #include <linux/mm_types.h> |
| 7 | |||
| 8 | #include <linux/scatterlist.h> | 7 | #include <linux/scatterlist.h> |
| 9 | 8 | ||
| 10 | #include <asm-generic/dma-coherent.h> | 9 | #include <asm-generic/dma-coherent.h> |
| 10 | #include <asm/memory.h> | ||
| 11 | |||
| 12 | /* | ||
| 13 | * page_to_dma/dma_to_virt/virt_to_dma are architecture private functions | ||
| 14 | * used internally by the DMA-mapping API to provide DMA addresses. They | ||
| 15 | * must not be used by drivers. | ||
| 16 | */ | ||
| 17 | #ifndef __arch_page_to_dma | ||
| 18 | static inline dma_addr_t page_to_dma(struct device *dev, struct page *page) | ||
| 19 | { | ||
| 20 | return (dma_addr_t)__virt_to_bus((unsigned long)page_address(page)); | ||
| 21 | } | ||
| 22 | |||
| 23 | static inline void *dma_to_virt(struct device *dev, dma_addr_t addr) | ||
| 24 | { | ||
| 25 | return (void *)__bus_to_virt(addr); | ||
| 26 | } | ||
| 27 | |||
| 28 | static inline dma_addr_t virt_to_dma(struct device *dev, void *addr) | ||
| 29 | { | ||
| 30 | return (dma_addr_t)__virt_to_bus((unsigned long)(addr)); | ||
| 31 | } | ||
| 32 | #else | ||
| 33 | static inline dma_addr_t page_to_dma(struct device *dev, struct page *page) | ||
| 34 | { | ||
| 35 | return __arch_page_to_dma(dev, page); | ||
| 36 | } | ||
| 37 | |||
| 38 | static inline void *dma_to_virt(struct device *dev, dma_addr_t addr) | ||
| 39 | { | ||
| 40 | return __arch_dma_to_virt(dev, addr); | ||
| 41 | } | ||
| 42 | |||
| 43 | static inline dma_addr_t virt_to_dma(struct device *dev, void *addr) | ||
| 44 | { | ||
| 45 | return __arch_virt_to_dma(dev, addr); | ||
| 46 | } | ||
| 47 | #endif | ||
| 11 | 48 | ||
| 12 | /* | 49 | /* |
| 13 | * DMA-consistent mapping functions. These allocate/free a region of | 50 | * DMA-consistent mapping functions. These allocate/free a region of |
| @@ -169,7 +206,7 @@ dma_map_single(struct device *dev, void *cpu_addr, size_t size, | |||
| 169 | if (!arch_is_coherent()) | 206 | if (!arch_is_coherent()) |
| 170 | dma_cache_maint(cpu_addr, size, dir); | 207 | dma_cache_maint(cpu_addr, size, dir); |
| 171 | 208 | ||
| 172 | return virt_to_dma(dev, (unsigned long)cpu_addr); | 209 | return virt_to_dma(dev, cpu_addr); |
| 173 | } | 210 | } |
| 174 | #else | 211 | #else |
| 175 | extern dma_addr_t dma_map_single(struct device *,void *, size_t, enum dma_data_direction); | 212 | extern dma_addr_t dma_map_single(struct device *,void *, size_t, enum dma_data_direction); |
| @@ -195,7 +232,7 @@ dma_map_page(struct device *dev, struct page *page, | |||
| 195 | unsigned long offset, size_t size, | 232 | unsigned long offset, size_t size, |
| 196 | enum dma_data_direction dir) | 233 | enum dma_data_direction dir) |
| 197 | { | 234 | { |
| 198 | return dma_map_single(dev, page_address(page) + offset, size, (int)dir); | 235 | return dma_map_single(dev, page_address(page) + offset, size, dir); |
| 199 | } | 236 | } |
| 200 | 237 | ||
| 201 | /** | 238 | /** |
| @@ -241,7 +278,7 @@ static inline void | |||
| 241 | dma_unmap_page(struct device *dev, dma_addr_t handle, size_t size, | 278 | dma_unmap_page(struct device *dev, dma_addr_t handle, size_t size, |
| 242 | enum dma_data_direction dir) | 279 | enum dma_data_direction dir) |
| 243 | { | 280 | { |
| 244 | dma_unmap_single(dev, handle, size, (int)dir); | 281 | dma_unmap_single(dev, handle, size, dir); |
| 245 | } | 282 | } |
| 246 | 283 | ||
| 247 | /** | 284 | /** |
| @@ -314,11 +351,12 @@ extern void dma_unmap_sg(struct device *, struct scatterlist *, int, enum dma_da | |||
| 314 | 351 | ||
| 315 | 352 | ||
| 316 | /** | 353 | /** |
| 317 | * dma_sync_single_for_cpu | 354 | * dma_sync_single_range_for_cpu |
| 318 | * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices | 355 | * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices |
| 319 | * @handle: DMA address of buffer | 356 | * @handle: DMA address of buffer |
| 320 | * @size: size of buffer to map | 357 | * @offset: offset of region to start sync |
| 321 | * @dir: DMA transfer direction | 358 | * @size: size of region to sync |
| 359 | * @dir: DMA transfer direction (same as passed to dma_map_single) | ||
| 322 | * | 360 | * |
| 323 | * Make physical memory consistent for a single streaming mode DMA | 361 | * Make physical memory consistent for a single streaming mode DMA |
| 324 | * translation after a transfer. | 362 | * translation after a transfer. |
| @@ -332,25 +370,41 @@ extern void dma_unmap_sg(struct device *, struct scatterlist *, int, enum dma_da | |||
| 332 | */ | 370 | */ |
| 333 | #ifndef CONFIG_DMABOUNCE | 371 | #ifndef CONFIG_DMABOUNCE |
| 334 | static inline void | 372 | static inline void |
| 335 | dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle, size_t size, | 373 | dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t handle, |
| 336 | enum dma_data_direction dir) | 374 | unsigned long offset, size_t size, |
| 375 | enum dma_data_direction dir) | ||
| 337 | { | 376 | { |
| 338 | if (!arch_is_coherent()) | 377 | if (!arch_is_coherent()) |
| 339 | dma_cache_maint((void *)dma_to_virt(dev, handle), size, dir); | 378 | dma_cache_maint(dma_to_virt(dev, handle) + offset, size, dir); |
| 340 | } | 379 | } |
| 341 | 380 | ||
| 342 | static inline void | 381 | static inline void |
| 343 | dma_sync_single_for_device(struct device *dev, dma_addr_t handle, size_t size, | 382 | dma_sync_single_range_for_device(struct device *dev, dma_addr_t handle, |
| 344 | enum dma_data_direction dir) | 383 | unsigned long offset, size_t size, |
| 384 | enum dma_data_direction dir) | ||
| 345 | { | 385 | { |
| 346 | if (!arch_is_coherent()) | 386 | if (!arch_is_coherent()) |
| 347 | dma_cache_maint((void *)dma_to_virt(dev, handle), size, dir); | 387 | dma_cache_maint(dma_to_virt(dev, handle) + offset, size, dir); |
| 348 | } | 388 | } |
| 349 | #else | 389 | #else |
| 350 | extern void dma_sync_single_for_cpu(struct device*, dma_addr_t, size_t, enum dma_data_direction); | 390 | extern void dma_sync_single_range_for_cpu(struct device *, dma_addr_t, unsigned long, size_t, enum dma_data_direction); |
| 351 | extern void dma_sync_single_for_device(struct device*, dma_addr_t, size_t, enum dma_data_direction); | 391 | extern void dma_sync_single_range_for_device(struct device *, dma_addr_t, unsigned long, size_t, enum dma_data_direction); |
| 352 | #endif | 392 | #endif |
| 353 | 393 | ||
| 394 | static inline void | ||
| 395 | dma_sync_single_for_cpu(struct device *dev, dma_addr_t handle, size_t size, | ||
| 396 | enum dma_data_direction dir) | ||
| 397 | { | ||
| 398 | dma_sync_single_range_for_cpu(dev, handle, 0, size, dir); | ||
| 399 | } | ||
| 400 | |||
| 401 | static inline void | ||
| 402 | dma_sync_single_for_device(struct device *dev, dma_addr_t handle, size_t size, | ||
| 403 | enum dma_data_direction dir) | ||
| 404 | { | ||
| 405 | dma_sync_single_range_for_device(dev, handle, 0, size, dir); | ||
| 406 | } | ||
| 407 | |||
| 354 | 408 | ||
| 355 | /** | 409 | /** |
| 356 | * dma_sync_sg_for_cpu | 410 | * dma_sync_sg_for_cpu |
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h index 94a95d7fafd6..71934856fc22 100644 --- a/arch/arm/include/asm/io.h +++ b/arch/arm/include/asm/io.h | |||
| @@ -61,8 +61,9 @@ extern void __raw_readsl(const void __iomem *addr, void *data, int longlen); | |||
| 61 | #define MT_DEVICE_NONSHARED 1 | 61 | #define MT_DEVICE_NONSHARED 1 |
| 62 | #define MT_DEVICE_CACHED 2 | 62 | #define MT_DEVICE_CACHED 2 |
| 63 | #define MT_DEVICE_IXP2000 3 | 63 | #define MT_DEVICE_IXP2000 3 |
| 64 | #define MT_DEVICE_WC 4 | ||
| 64 | /* | 65 | /* |
| 65 | * types 4 onwards can be found in asm/mach/map.h and are undefined | 66 | * types 5 onwards can be found in asm/mach/map.h and are undefined |
| 66 | * for ioremap | 67 | * for ioremap |
| 67 | */ | 68 | */ |
| 68 | 69 | ||
| @@ -215,11 +216,13 @@ extern void _memset_io(volatile void __iomem *, int, size_t); | |||
| 215 | #define ioremap(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) | 216 | #define ioremap(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) |
| 216 | #define ioremap_nocache(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) | 217 | #define ioremap_nocache(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) |
| 217 | #define ioremap_cached(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE_CACHED) | 218 | #define ioremap_cached(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE_CACHED) |
| 219 | #define ioremap_wc(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE_WC) | ||
| 218 | #define iounmap(cookie) __iounmap(cookie) | 220 | #define iounmap(cookie) __iounmap(cookie) |
| 219 | #else | 221 | #else |
| 220 | #define ioremap(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) | 222 | #define ioremap(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) |
| 221 | #define ioremap_nocache(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) | 223 | #define ioremap_nocache(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE) |
| 222 | #define ioremap_cached(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_CACHED) | 224 | #define ioremap_cached(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_CACHED) |
| 225 | #define ioremap_wc(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE_WC) | ||
| 223 | #define iounmap(cookie) __arch_iounmap(cookie) | 226 | #define iounmap(cookie) __arch_iounmap(cookie) |
| 224 | #endif | 227 | #endif |
| 225 | 228 | ||
diff --git a/arch/arm/include/asm/kexec.h b/arch/arm/include/asm/kexec.h index c8986bb99ed5..df15a0dc228e 100644 --- a/arch/arm/include/asm/kexec.h +++ b/arch/arm/include/asm/kexec.h | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | /* Maximum address we can use for the control code buffer */ | 10 | /* Maximum address we can use for the control code buffer */ |
| 11 | #define KEXEC_CONTROL_MEMORY_LIMIT (-1UL) | 11 | #define KEXEC_CONTROL_MEMORY_LIMIT (-1UL) |
| 12 | 12 | ||
| 13 | #define KEXEC_CONTROL_CODE_SIZE 4096 | 13 | #define KEXEC_CONTROL_PAGE_SIZE 4096 |
| 14 | 14 | ||
| 15 | #define KEXEC_ARCH KEXEC_ARCH_ARM | 15 | #define KEXEC_ARCH KEXEC_ARCH_ARM |
| 16 | 16 | ||
diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h index 06f583b13999..9eb936e49cc3 100644 --- a/arch/arm/include/asm/mach/map.h +++ b/arch/arm/include/asm/mach/map.h | |||
| @@ -18,13 +18,13 @@ struct map_desc { | |||
| 18 | unsigned int type; | 18 | unsigned int type; |
| 19 | }; | 19 | }; |
| 20 | 20 | ||
| 21 | /* types 0-3 are defined in asm/io.h */ | 21 | /* types 0-4 are defined in asm/io.h */ |
| 22 | #define MT_CACHECLEAN 4 | 22 | #define MT_CACHECLEAN 5 |
| 23 | #define MT_MINICLEAN 5 | 23 | #define MT_MINICLEAN 6 |
| 24 | #define MT_LOW_VECTORS 6 | 24 | #define MT_LOW_VECTORS 7 |
| 25 | #define MT_HIGH_VECTORS 7 | 25 | #define MT_HIGH_VECTORS 8 |
| 26 | #define MT_MEMORY 8 | 26 | #define MT_MEMORY 9 |
| 27 | #define MT_ROM 9 | 27 | #define MT_ROM 10 |
| 28 | 28 | ||
| 29 | #define MT_NONSHARED_DEVICE MT_DEVICE_NONSHARED | 29 | #define MT_NONSHARED_DEVICE MT_DEVICE_NONSHARED |
| 30 | #define MT_IXP2000_DEVICE MT_DEVICE_IXP2000 | 30 | #define MT_IXP2000_DEVICE MT_DEVICE_IXP2000 |
diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h index 1e070a2b561a..bf7c737c9226 100644 --- a/arch/arm/include/asm/memory.h +++ b/arch/arm/include/asm/memory.h | |||
| @@ -150,6 +150,14 @@ | |||
| 150 | #endif | 150 | #endif |
| 151 | 151 | ||
| 152 | /* | 152 | /* |
| 153 | * Amount of memory reserved for the vmalloc() area, and minimum | ||
| 154 | * address for vmalloc mappings. | ||
| 155 | */ | ||
| 156 | extern unsigned long vmalloc_reserve; | ||
| 157 | |||
| 158 | #define VMALLOC_MIN (void *)(VMALLOC_END - vmalloc_reserve) | ||
| 159 | |||
| 160 | /* | ||
| 153 | * PFNs are used to describe any physical page; this means | 161 | * PFNs are used to describe any physical page; this means |
| 154 | * PFN 0 == physical address 0. | 162 | * PFN 0 == physical address 0. |
| 155 | * | 163 | * |
| @@ -306,20 +314,6 @@ static inline __deprecated void *bus_to_virt(unsigned long x) | |||
| 306 | #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) | 314 | #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) |
| 307 | 315 | ||
| 308 | /* | 316 | /* |
| 309 | * Optional device DMA address remapping. Do _not_ use directly! | ||
| 310 | * We should really eliminate virt_to_bus() here - it's deprecated. | ||
| 311 | */ | ||
| 312 | #ifndef __arch_page_to_dma | ||
| 313 | #define page_to_dma(dev, page) ((dma_addr_t)__virt_to_bus((unsigned long)page_address(page))) | ||
| 314 | #define dma_to_virt(dev, addr) ((void *)__bus_to_virt(addr)) | ||
| 315 | #define virt_to_dma(dev, addr) ((dma_addr_t)__virt_to_bus((unsigned long)(addr))) | ||
| 316 | #else | ||
| 317 | #define page_to_dma(dev, page) (__arch_page_to_dma(dev, page)) | ||
| 318 | #define dma_to_virt(dev, addr) (__arch_dma_to_virt(dev, addr)) | ||
| 319 | #define virt_to_dma(dev, addr) (__arch_virt_to_dma(dev, addr)) | ||
| 320 | #endif | ||
| 321 | |||
| 322 | /* | ||
| 323 | * Optional coherency support. Currently used only by selected | 317 | * Optional coherency support. Currently used only by selected |
| 324 | * Intel XSC3-based systems. | 318 | * Intel XSC3-based systems. |
| 325 | */ | 319 | */ |
diff --git a/arch/arm/include/asm/mtd-xip.h b/arch/arm/include/asm/mtd-xip.h index 4225372a26f3..d8fbe2d9b8b9 100644 --- a/arch/arm/include/asm/mtd-xip.h +++ b/arch/arm/include/asm/mtd-xip.h | |||
| @@ -10,8 +10,6 @@ | |||
| 10 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
| 11 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
| 12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
| 13 | * | ||
| 14 | * $Id: xip.h,v 1.2 2004/12/01 15:49:10 nico Exp $ | ||
| 15 | */ | 13 | */ |
| 16 | 14 | ||
| 17 | #ifndef __ARM_MTD_XIP_H__ | 15 | #ifndef __ARM_MTD_XIP_H__ |
diff --git a/arch/arm/include/asm/pci.h b/arch/arm/include/asm/pci.h index 721c03d53f4b..918d0cbbf064 100644 --- a/arch/arm/include/asm/pci.h +++ b/arch/arm/include/asm/pci.h | |||
| @@ -30,7 +30,7 @@ static inline void pcibios_penalize_isa_irq(int irq, int active) | |||
| 30 | * The networking and block device layers use this boolean for bounce | 30 | * The networking and block device layers use this boolean for bounce |
| 31 | * buffer decisions. | 31 | * buffer decisions. |
| 32 | */ | 32 | */ |
| 33 | #define PCI_DMA_BUS_IS_PHYS (0) | 33 | #define PCI_DMA_BUS_IS_PHYS (1) |
| 34 | 34 | ||
| 35 | /* | 35 | /* |
| 36 | * Whether pci_unmap_{single,page} is a nop depends upon the | 36 | * Whether pci_unmap_{single,page} is a nop depends upon the |
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h index b01d5e7e3d5a..517a4d6ffc74 100644 --- a/arch/arm/include/asm/processor.h +++ b/arch/arm/include/asm/processor.h | |||
| @@ -112,9 +112,9 @@ extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); | |||
| 112 | static inline void prefetch(const void *ptr) | 112 | static inline void prefetch(const void *ptr) |
| 113 | { | 113 | { |
| 114 | __asm__ __volatile__( | 114 | __asm__ __volatile__( |
| 115 | "pld\t%0" | 115 | "pld\t%a0" |
| 116 | : | 116 | : |
| 117 | : "o" (*(char *)ptr) | 117 | : "p" (ptr) |
| 118 | : "cc"); | 118 | : "cc"); |
| 119 | } | 119 | } |
| 120 | 120 | ||
diff --git a/arch/arm/include/asm/tlbflush.h b/arch/arm/include/asm/tlbflush.h index 0d0d40f1b599..b543a054a17e 100644 --- a/arch/arm/include/asm/tlbflush.h +++ b/arch/arm/include/asm/tlbflush.h | |||
| @@ -54,6 +54,7 @@ | |||
| 54 | * v4wbi - ARMv4 with write buffer with I TLB flush entry instruction | 54 | * v4wbi - ARMv4 with write buffer with I TLB flush entry instruction |
| 55 | * fr - Feroceon (v4wbi with non-outer-cacheable page table walks) | 55 | * fr - Feroceon (v4wbi with non-outer-cacheable page table walks) |
| 56 | * v6wbi - ARMv6 with write buffer with I TLB flush entry instruction | 56 | * v6wbi - ARMv6 with write buffer with I TLB flush entry instruction |
| 57 | * v7wbi - identical to v6wbi | ||
| 57 | */ | 58 | */ |
| 58 | #undef _TLB | 59 | #undef _TLB |
| 59 | #undef MULTI_TLB | 60 | #undef MULTI_TLB |
| @@ -266,14 +267,16 @@ extern struct cpu_tlb_fns cpu_tlb; | |||
| 266 | v4wbi_possible_flags | \ | 267 | v4wbi_possible_flags | \ |
| 267 | fr_possible_flags | \ | 268 | fr_possible_flags | \ |
| 268 | v4wb_possible_flags | \ | 269 | v4wb_possible_flags | \ |
| 269 | v6wbi_possible_flags) | 270 | v6wbi_possible_flags | \ |
| 271 | v7wbi_possible_flags) | ||
| 270 | 272 | ||
| 271 | #define always_tlb_flags (v3_always_flags & \ | 273 | #define always_tlb_flags (v3_always_flags & \ |
| 272 | v4_always_flags & \ | 274 | v4_always_flags & \ |
| 273 | v4wbi_always_flags & \ | 275 | v4wbi_always_flags & \ |
| 274 | fr_always_flags & \ | 276 | fr_always_flags & \ |
| 275 | v4wb_always_flags & \ | 277 | v4wb_always_flags & \ |
| 276 | v6wbi_always_flags) | 278 | v6wbi_always_flags & \ |
| 279 | v7wbi_always_flags) | ||
| 277 | 280 | ||
| 278 | #define tlb_flag(f) ((always_tlb_flags & (f)) || (__tlb_flag & possible_tlb_flags & (f))) | 281 | #define tlb_flag(f) ((always_tlb_flags & (f)) || (__tlb_flag & possible_tlb_flags & (f))) |
| 279 | 282 | ||
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h index f95fbb2fcb5f..010618487cf1 100644 --- a/arch/arm/include/asm/unistd.h +++ b/arch/arm/include/asm/unistd.h | |||
| @@ -381,6 +381,12 @@ | |||
| 381 | #define __NR_fallocate (__NR_SYSCALL_BASE+352) | 381 | #define __NR_fallocate (__NR_SYSCALL_BASE+352) |
| 382 | #define __NR_timerfd_settime (__NR_SYSCALL_BASE+353) | 382 | #define __NR_timerfd_settime (__NR_SYSCALL_BASE+353) |
| 383 | #define __NR_timerfd_gettime (__NR_SYSCALL_BASE+354) | 383 | #define __NR_timerfd_gettime (__NR_SYSCALL_BASE+354) |
| 384 | #define __NR_signalfd4 (__NR_SYSCALL_BASE+355) | ||
| 385 | #define __NR_eventfd2 (__NR_SYSCALL_BASE+356) | ||
| 386 | #define __NR_epoll_create1 (__NR_SYSCALL_BASE+357) | ||
| 387 | #define __NR_dup3 (__NR_SYSCALL_BASE+358) | ||
| 388 | #define __NR_pipe2 (__NR_SYSCALL_BASE+359) | ||
| 389 | #define __NR_inotify_init1 (__NR_SYSCALL_BASE+360) | ||
| 384 | 390 | ||
| 385 | /* | 391 | /* |
| 386 | * The following SWIs are ARM private. | 392 | * The following SWIs are ARM private. |
