diff options
Diffstat (limited to 'include/asm-generic')
| -rw-r--r-- | include/asm-generic/bitops/atomic.h | 10 | ||||
| -rw-r--r-- | include/asm-generic/bug.h | 8 | ||||
| -rw-r--r-- | include/asm-generic/cacheflush.h | 1 | ||||
| -rw-r--r-- | include/asm-generic/dma-mapping-common.h | 4 | ||||
| -rw-r--r-- | include/asm-generic/fcntl.h | 25 | ||||
| -rw-r--r-- | include/asm-generic/gpio.h | 35 | ||||
| -rw-r--r-- | include/asm-generic/local.h | 19 | ||||
| -rw-r--r-- | include/asm-generic/memory_model.h | 2 | ||||
| -rw-r--r-- | include/asm-generic/mman-common.h | 6 | ||||
| -rw-r--r-- | include/asm-generic/pci-dma-compat.h | 15 | ||||
| -rw-r--r-- | include/asm-generic/percpu.h | 23 | ||||
| -rw-r--r-- | include/asm-generic/socket.h | 1 | ||||
| -rw-r--r-- | include/asm-generic/unistd.h | 12 | ||||
| -rw-r--r-- | include/asm-generic/vmlinux.lds.h | 8 |
14 files changed, 118 insertions, 51 deletions
diff --git a/include/asm-generic/bitops/atomic.h b/include/asm-generic/bitops/atomic.h index c8946465e63a..ecc44a8e2b44 100644 --- a/include/asm-generic/bitops/atomic.h +++ b/include/asm-generic/bitops/atomic.h | |||
| @@ -15,19 +15,19 @@ | |||
| 15 | # define ATOMIC_HASH_SIZE 4 | 15 | # define ATOMIC_HASH_SIZE 4 |
| 16 | # define ATOMIC_HASH(a) (&(__atomic_hash[ (((unsigned long) a)/L1_CACHE_BYTES) & (ATOMIC_HASH_SIZE-1) ])) | 16 | # define ATOMIC_HASH(a) (&(__atomic_hash[ (((unsigned long) a)/L1_CACHE_BYTES) & (ATOMIC_HASH_SIZE-1) ])) |
| 17 | 17 | ||
| 18 | extern raw_spinlock_t __atomic_hash[ATOMIC_HASH_SIZE] __lock_aligned; | 18 | extern arch_spinlock_t __atomic_hash[ATOMIC_HASH_SIZE] __lock_aligned; |
| 19 | 19 | ||
| 20 | /* Can't use raw_spin_lock_irq because of #include problems, so | 20 | /* Can't use raw_spin_lock_irq because of #include problems, so |
| 21 | * this is the substitute */ | 21 | * this is the substitute */ |
| 22 | #define _atomic_spin_lock_irqsave(l,f) do { \ | 22 | #define _atomic_spin_lock_irqsave(l,f) do { \ |
| 23 | raw_spinlock_t *s = ATOMIC_HASH(l); \ | 23 | arch_spinlock_t *s = ATOMIC_HASH(l); \ |
| 24 | local_irq_save(f); \ | 24 | local_irq_save(f); \ |
| 25 | __raw_spin_lock(s); \ | 25 | arch_spin_lock(s); \ |
| 26 | } while(0) | 26 | } while(0) |
| 27 | 27 | ||
| 28 | #define _atomic_spin_unlock_irqrestore(l,f) do { \ | 28 | #define _atomic_spin_unlock_irqrestore(l,f) do { \ |
| 29 | raw_spinlock_t *s = ATOMIC_HASH(l); \ | 29 | arch_spinlock_t *s = ATOMIC_HASH(l); \ |
| 30 | __raw_spin_unlock(s); \ | 30 | arch_spin_unlock(s); \ |
| 31 | local_irq_restore(f); \ | 31 | local_irq_restore(f); \ |
| 32 | } while(0) | 32 | } while(0) |
| 33 | 33 | ||
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h index 4b6755984d24..18c435d7c082 100644 --- a/include/asm-generic/bug.h +++ b/include/asm-generic/bug.h | |||
| @@ -113,22 +113,22 @@ extern void warn_slowpath_null(const char *file, const int line); | |||
| 113 | #endif | 113 | #endif |
| 114 | 114 | ||
| 115 | #define WARN_ON_ONCE(condition) ({ \ | 115 | #define WARN_ON_ONCE(condition) ({ \ |
| 116 | static int __warned; \ | 116 | static bool __warned; \ |
| 117 | int __ret_warn_once = !!(condition); \ | 117 | int __ret_warn_once = !!(condition); \ |
| 118 | \ | 118 | \ |
| 119 | if (unlikely(__ret_warn_once)) \ | 119 | if (unlikely(__ret_warn_once)) \ |
| 120 | if (WARN_ON(!__warned)) \ | 120 | if (WARN_ON(!__warned)) \ |
| 121 | __warned = 1; \ | 121 | __warned = true; \ |
| 122 | unlikely(__ret_warn_once); \ | 122 | unlikely(__ret_warn_once); \ |
| 123 | }) | 123 | }) |
| 124 | 124 | ||
| 125 | #define WARN_ONCE(condition, format...) ({ \ | 125 | #define WARN_ONCE(condition, format...) ({ \ |
| 126 | static int __warned; \ | 126 | static bool __warned; \ |
| 127 | int __ret_warn_once = !!(condition); \ | 127 | int __ret_warn_once = !!(condition); \ |
| 128 | \ | 128 | \ |
| 129 | if (unlikely(__ret_warn_once)) \ | 129 | if (unlikely(__ret_warn_once)) \ |
| 130 | if (WARN(!__warned, format)) \ | 130 | if (WARN(!__warned, format)) \ |
| 131 | __warned = 1; \ | 131 | __warned = true; \ |
| 132 | unlikely(__ret_warn_once); \ | 132 | unlikely(__ret_warn_once); \ |
| 133 | }) | 133 | }) |
| 134 | 134 | ||
diff --git a/include/asm-generic/cacheflush.h b/include/asm-generic/cacheflush.h index ba4ec39a1131..57b5c3c82e86 100644 --- a/include/asm-generic/cacheflush.h +++ b/include/asm-generic/cacheflush.h | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | #define flush_cache_dup_mm(mm) do { } while (0) | 13 | #define flush_cache_dup_mm(mm) do { } while (0) |
| 14 | #define flush_cache_range(vma, start, end) do { } while (0) | 14 | #define flush_cache_range(vma, start, end) do { } while (0) |
| 15 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 15 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) |
| 16 | #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 0 | ||
| 16 | #define flush_dcache_page(page) do { } while (0) | 17 | #define flush_dcache_page(page) do { } while (0) |
| 17 | #define flush_dcache_mmap_lock(mapping) do { } while (0) | 18 | #define flush_dcache_mmap_lock(mapping) do { } while (0) |
| 18 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) | 19 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) |
diff --git a/include/asm-generic/dma-mapping-common.h b/include/asm-generic/dma-mapping-common.h index e694263445f7..69206957b72c 100644 --- a/include/asm-generic/dma-mapping-common.h +++ b/include/asm-generic/dma-mapping-common.h | |||
| @@ -131,7 +131,7 @@ static inline void dma_sync_single_range_for_cpu(struct device *dev, | |||
| 131 | debug_dma_sync_single_range_for_cpu(dev, addr, offset, size, dir); | 131 | debug_dma_sync_single_range_for_cpu(dev, addr, offset, size, dir); |
| 132 | 132 | ||
| 133 | } else | 133 | } else |
| 134 | dma_sync_single_for_cpu(dev, addr, size, dir); | 134 | dma_sync_single_for_cpu(dev, addr + offset, size, dir); |
| 135 | } | 135 | } |
| 136 | 136 | ||
| 137 | static inline void dma_sync_single_range_for_device(struct device *dev, | 137 | static inline void dma_sync_single_range_for_device(struct device *dev, |
| @@ -148,7 +148,7 @@ static inline void dma_sync_single_range_for_device(struct device *dev, | |||
| 148 | debug_dma_sync_single_range_for_device(dev, addr, offset, size, dir); | 148 | debug_dma_sync_single_range_for_device(dev, addr, offset, size, dir); |
| 149 | 149 | ||
| 150 | } else | 150 | } else |
| 151 | dma_sync_single_for_device(dev, addr, size, dir); | 151 | dma_sync_single_for_device(dev, addr + offset, size, dir); |
| 152 | } | 152 | } |
| 153 | 153 | ||
| 154 | static inline void | 154 | static inline void |
diff --git a/include/asm-generic/fcntl.h b/include/asm-generic/fcntl.h index 495dc8af4044..fcd268ce0674 100644 --- a/include/asm-generic/fcntl.h +++ b/include/asm-generic/fcntl.h | |||
| @@ -3,8 +3,6 @@ | |||
| 3 | 3 | ||
| 4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
| 5 | 5 | ||
| 6 | /* open/fcntl - O_SYNC is only implemented on blocks devices and on files | ||
| 7 | located on an ext2 file system */ | ||
| 8 | #define O_ACCMODE 00000003 | 6 | #define O_ACCMODE 00000003 |
| 9 | #define O_RDONLY 00000000 | 7 | #define O_RDONLY 00000000 |
| 10 | #define O_WRONLY 00000001 | 8 | #define O_WRONLY 00000001 |
| @@ -27,8 +25,8 @@ | |||
| 27 | #ifndef O_NONBLOCK | 25 | #ifndef O_NONBLOCK |
| 28 | #define O_NONBLOCK 00004000 | 26 | #define O_NONBLOCK 00004000 |
| 29 | #endif | 27 | #endif |
| 30 | #ifndef O_SYNC | 28 | #ifndef O_DSYNC |
| 31 | #define O_SYNC 00010000 | 29 | #define O_DSYNC 00010000 /* used to be O_SYNC, see below */ |
| 32 | #endif | 30 | #endif |
| 33 | #ifndef FASYNC | 31 | #ifndef FASYNC |
| 34 | #define FASYNC 00020000 /* fcntl, for BSD compatibility */ | 32 | #define FASYNC 00020000 /* fcntl, for BSD compatibility */ |
| @@ -51,6 +49,25 @@ | |||
| 51 | #ifndef O_CLOEXEC | 49 | #ifndef O_CLOEXEC |
| 52 | #define O_CLOEXEC 02000000 /* set close_on_exec */ | 50 | #define O_CLOEXEC 02000000 /* set close_on_exec */ |
| 53 | #endif | 51 | #endif |
| 52 | |||
| 53 | /* | ||
| 54 | * Before Linux 2.6.33 only O_DSYNC semantics were implemented, but using | ||
| 55 | * the O_SYNC flag. We continue to use the existing numerical value | ||
| 56 | * for O_DSYNC semantics now, but using the correct symbolic name for it. | ||
| 57 | * This new value is used to request true Posix O_SYNC semantics. It is | ||
| 58 | * defined in this strange way to make sure applications compiled against | ||
| 59 | * new headers get at least O_DSYNC semantics on older kernels. | ||
| 60 | * | ||
| 61 | * This has the nice side-effect that we can simply test for O_DSYNC | ||
| 62 | * wherever we do not care if O_DSYNC or O_SYNC is used. | ||
| 63 | * | ||
| 64 | * Note: __O_SYNC must never be used directly. | ||
| 65 | */ | ||
| 66 | #ifndef O_SYNC | ||
| 67 | #define __O_SYNC 04000000 | ||
| 68 | #define O_SYNC (__O_SYNC|O_DSYNC) | ||
| 69 | #endif | ||
| 70 | |||
| 54 | #ifndef O_NDELAY | 71 | #ifndef O_NDELAY |
| 55 | #define O_NDELAY O_NONBLOCK | 72 | #define O_NDELAY O_NONBLOCK |
| 56 | #endif | 73 | #endif |
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h index 66d6106a2067..979c6a57f2f1 100644 --- a/include/asm-generic/gpio.h +++ b/include/asm-generic/gpio.h | |||
| @@ -28,6 +28,7 @@ static inline int gpio_is_valid(int number) | |||
| 28 | return ((unsigned)number) < ARCH_NR_GPIOS; | 28 | return ((unsigned)number) < ARCH_NR_GPIOS; |
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | struct device; | ||
| 31 | struct seq_file; | 32 | struct seq_file; |
| 32 | struct module; | 33 | struct module; |
| 33 | 34 | ||
| @@ -135,6 +136,32 @@ extern int __gpio_cansleep(unsigned gpio); | |||
| 135 | 136 | ||
| 136 | extern int __gpio_to_irq(unsigned gpio); | 137 | extern int __gpio_to_irq(unsigned gpio); |
| 137 | 138 | ||
| 139 | #define GPIOF_DIR_OUT (0 << 0) | ||
| 140 | #define GPIOF_DIR_IN (1 << 0) | ||
| 141 | |||
| 142 | #define GPIOF_INIT_LOW (0 << 1) | ||
| 143 | #define GPIOF_INIT_HIGH (1 << 1) | ||
| 144 | |||
| 145 | #define GPIOF_IN (GPIOF_DIR_IN) | ||
| 146 | #define GPIOF_OUT_INIT_LOW (GPIOF_DIR_OUT | GPIOF_INIT_LOW) | ||
| 147 | #define GPIOF_OUT_INIT_HIGH (GPIOF_DIR_OUT | GPIOF_INIT_HIGH) | ||
| 148 | |||
| 149 | /** | ||
| 150 | * struct gpio - a structure describing a GPIO with configuration | ||
| 151 | * @gpio: the GPIO number | ||
| 152 | * @flags: GPIO configuration as specified by GPIOF_* | ||
| 153 | * @label: a literal description string of this GPIO | ||
| 154 | */ | ||
| 155 | struct gpio { | ||
| 156 | unsigned gpio; | ||
| 157 | unsigned long flags; | ||
| 158 | const char *label; | ||
| 159 | }; | ||
| 160 | |||
| 161 | extern int gpio_request_one(unsigned gpio, unsigned long flags, const char *label); | ||
| 162 | extern int gpio_request_array(struct gpio *array, size_t num); | ||
| 163 | extern void gpio_free_array(struct gpio *array, size_t num); | ||
| 164 | |||
| 138 | #ifdef CONFIG_GPIO_SYSFS | 165 | #ifdef CONFIG_GPIO_SYSFS |
| 139 | 166 | ||
| 140 | /* | 167 | /* |
| @@ -144,6 +171,7 @@ extern int __gpio_to_irq(unsigned gpio); | |||
| 144 | extern int gpio_export(unsigned gpio, bool direction_may_change); | 171 | extern int gpio_export(unsigned gpio, bool direction_may_change); |
| 145 | extern int gpio_export_link(struct device *dev, const char *name, | 172 | extern int gpio_export_link(struct device *dev, const char *name, |
| 146 | unsigned gpio); | 173 | unsigned gpio); |
| 174 | extern int gpio_sysfs_set_active_low(unsigned gpio, int value); | ||
| 147 | extern void gpio_unexport(unsigned gpio); | 175 | extern void gpio_unexport(unsigned gpio); |
| 148 | 176 | ||
| 149 | #endif /* CONFIG_GPIO_SYSFS */ | 177 | #endif /* CONFIG_GPIO_SYSFS */ |
| @@ -181,6 +209,8 @@ static inline void gpio_set_value_cansleep(unsigned gpio, int value) | |||
| 181 | 209 | ||
| 182 | #ifndef CONFIG_GPIO_SYSFS | 210 | #ifndef CONFIG_GPIO_SYSFS |
| 183 | 211 | ||
| 212 | struct device; | ||
| 213 | |||
| 184 | /* sysfs support is only available with gpiolib, where it's optional */ | 214 | /* sysfs support is only available with gpiolib, where it's optional */ |
| 185 | 215 | ||
| 186 | static inline int gpio_export(unsigned gpio, bool direction_may_change) | 216 | static inline int gpio_export(unsigned gpio, bool direction_may_change) |
| @@ -194,6 +224,11 @@ static inline int gpio_export_link(struct device *dev, const char *name, | |||
| 194 | return -ENOSYS; | 224 | return -ENOSYS; |
| 195 | } | 225 | } |
| 196 | 226 | ||
| 227 | static inline int gpio_sysfs_set_active_low(unsigned gpio, int value) | ||
| 228 | { | ||
| 229 | return -ENOSYS; | ||
| 230 | } | ||
| 231 | |||
| 197 | static inline void gpio_unexport(unsigned gpio) | 232 | static inline void gpio_unexport(unsigned gpio) |
| 198 | { | 233 | { |
| 199 | } | 234 | } |
diff --git a/include/asm-generic/local.h b/include/asm-generic/local.h index fc218444e315..c8a5d68541d7 100644 --- a/include/asm-generic/local.h +++ b/include/asm-generic/local.h | |||
| @@ -52,23 +52,4 @@ typedef struct | |||
| 52 | #define __local_add(i,l) local_set((l), local_read(l) + (i)) | 52 | #define __local_add(i,l) local_set((l), local_read(l) + (i)) |
| 53 | #define __local_sub(i,l) local_set((l), local_read(l) - (i)) | 53 | #define __local_sub(i,l) local_set((l), local_read(l) - (i)) |
| 54 | 54 | ||
| 55 | /* Use these for per-cpu local_t variables: on some archs they are | ||
| 56 | * much more efficient than these naive implementations. Note they take | ||
| 57 | * a variable (eg. mystruct.foo), not an address. | ||
| 58 | */ | ||
| 59 | #define cpu_local_read(l) local_read(&__get_cpu_var(l)) | ||
| 60 | #define cpu_local_set(l, i) local_set(&__get_cpu_var(l), (i)) | ||
| 61 | #define cpu_local_inc(l) local_inc(&__get_cpu_var(l)) | ||
| 62 | #define cpu_local_dec(l) local_dec(&__get_cpu_var(l)) | ||
| 63 | #define cpu_local_add(i, l) local_add((i), &__get_cpu_var(l)) | ||
| 64 | #define cpu_local_sub(i, l) local_sub((i), &__get_cpu_var(l)) | ||
| 65 | |||
| 66 | /* Non-atomic increments, ie. preemption disabled and won't be touched | ||
| 67 | * in interrupt, etc. Some archs can optimize this case well. | ||
| 68 | */ | ||
| 69 | #define __cpu_local_inc(l) __local_inc(&__get_cpu_var(l)) | ||
| 70 | #define __cpu_local_dec(l) __local_dec(&__get_cpu_var(l)) | ||
| 71 | #define __cpu_local_add(i, l) __local_add((i), &__get_cpu_var(l)) | ||
| 72 | #define __cpu_local_sub(i, l) __local_sub((i), &__get_cpu_var(l)) | ||
| 73 | |||
| 74 | #endif /* _ASM_GENERIC_LOCAL_H */ | 55 | #endif /* _ASM_GENERIC_LOCAL_H */ |
diff --git a/include/asm-generic/memory_model.h b/include/asm-generic/memory_model.h index 4c8d0afae711..fb2d63f13f4c 100644 --- a/include/asm-generic/memory_model.h +++ b/include/asm-generic/memory_model.h | |||
| @@ -47,7 +47,7 @@ | |||
| 47 | 47 | ||
| 48 | #elif defined(CONFIG_SPARSEMEM_VMEMMAP) | 48 | #elif defined(CONFIG_SPARSEMEM_VMEMMAP) |
| 49 | 49 | ||
| 50 | /* memmap is virtually contigious. */ | 50 | /* memmap is virtually contiguous. */ |
| 51 | #define __pfn_to_page(pfn) (vmemmap + (pfn)) | 51 | #define __pfn_to_page(pfn) (vmemmap + (pfn)) |
| 52 | #define __page_to_pfn(page) (unsigned long)((page) - vmemmap) | 52 | #define __page_to_pfn(page) (unsigned long)((page) - vmemmap) |
| 53 | 53 | ||
diff --git a/include/asm-generic/mman-common.h b/include/asm-generic/mman-common.h index 5ee13b2fd223..3da9e2742fa0 100644 --- a/include/asm-generic/mman-common.h +++ b/include/asm-generic/mman-common.h | |||
| @@ -19,6 +19,11 @@ | |||
| 19 | #define MAP_TYPE 0x0f /* Mask for type of mapping */ | 19 | #define MAP_TYPE 0x0f /* Mask for type of mapping */ |
| 20 | #define MAP_FIXED 0x10 /* Interpret addr exactly */ | 20 | #define MAP_FIXED 0x10 /* Interpret addr exactly */ |
| 21 | #define MAP_ANONYMOUS 0x20 /* don't use a file */ | 21 | #define MAP_ANONYMOUS 0x20 /* don't use a file */ |
| 22 | #ifdef CONFIG_MMAP_ALLOW_UNINITIALIZED | ||
| 23 | # define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could be uninitialized */ | ||
| 24 | #else | ||
| 25 | # define MAP_UNINITIALIZED 0x0 /* Don't support this flag */ | ||
| 26 | #endif | ||
| 22 | 27 | ||
| 23 | #define MS_ASYNC 1 /* sync memory asynchronously */ | 28 | #define MS_ASYNC 1 /* sync memory asynchronously */ |
| 24 | #define MS_INVALIDATE 2 /* invalidate the caches */ | 29 | #define MS_INVALIDATE 2 /* invalidate the caches */ |
| @@ -35,6 +40,7 @@ | |||
| 35 | #define MADV_DONTFORK 10 /* don't inherit across fork */ | 40 | #define MADV_DONTFORK 10 /* don't inherit across fork */ |
| 36 | #define MADV_DOFORK 11 /* do inherit across fork */ | 41 | #define MADV_DOFORK 11 /* do inherit across fork */ |
| 37 | #define MADV_HWPOISON 100 /* poison a page for testing */ | 42 | #define MADV_HWPOISON 100 /* poison a page for testing */ |
| 43 | #define MADV_SOFT_OFFLINE 101 /* soft offline page for testing */ | ||
| 38 | 44 | ||
| 39 | #define MADV_MERGEABLE 12 /* KSM may merge identical pages */ | 45 | #define MADV_MERGEABLE 12 /* KSM may merge identical pages */ |
| 40 | #define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages */ | 46 | #define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages */ |
diff --git a/include/asm-generic/pci-dma-compat.h b/include/asm-generic/pci-dma-compat.h index 37b3706226e7..1437b7da09b2 100644 --- a/include/asm-generic/pci-dma-compat.h +++ b/include/asm-generic/pci-dma-compat.h | |||
| @@ -6,9 +6,6 @@ | |||
| 6 | 6 | ||
| 7 | #include <linux/dma-mapping.h> | 7 | #include <linux/dma-mapping.h> |
| 8 | 8 | ||
| 9 | /* note pci_set_dma_mask isn't here, since it's a public function | ||
| 10 | * exported from drivers/pci, use dma_supported instead */ | ||
| 11 | |||
| 12 | static inline int | 9 | static inline int |
| 13 | pci_dma_supported(struct pci_dev *hwdev, u64 mask) | 10 | pci_dma_supported(struct pci_dev *hwdev, u64 mask) |
| 14 | { | 11 | { |
| @@ -104,4 +101,16 @@ pci_dma_mapping_error(struct pci_dev *pdev, dma_addr_t dma_addr) | |||
| 104 | return dma_mapping_error(&pdev->dev, dma_addr); | 101 | return dma_mapping_error(&pdev->dev, dma_addr); |
| 105 | } | 102 | } |
| 106 | 103 | ||
| 104 | #ifdef CONFIG_PCI | ||
| 105 | static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) | ||
| 106 | { | ||
| 107 | return dma_set_mask(&dev->dev, mask); | ||
| 108 | } | ||
| 109 | |||
| 110 | static inline int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) | ||
| 111 | { | ||
| 112 | return dma_set_coherent_mask(&dev->dev, mask); | ||
| 113 | } | ||
| 114 | #endif | ||
| 115 | |||
| 107 | #endif | 116 | #endif |
diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h index 90079c373f1c..04f91c2d3f7b 100644 --- a/include/asm-generic/percpu.h +++ b/include/asm-generic/percpu.h | |||
| @@ -41,7 +41,11 @@ extern unsigned long __per_cpu_offset[NR_CPUS]; | |||
| 41 | * Only S390 provides its own means of moving the pointer. | 41 | * Only S390 provides its own means of moving the pointer. |
| 42 | */ | 42 | */ |
| 43 | #ifndef SHIFT_PERCPU_PTR | 43 | #ifndef SHIFT_PERCPU_PTR |
| 44 | #define SHIFT_PERCPU_PTR(__p, __offset) RELOC_HIDE((__p), (__offset)) | 44 | /* Weird cast keeps both GCC and sparse happy. */ |
| 45 | #define SHIFT_PERCPU_PTR(__p, __offset) ({ \ | ||
| 46 | __verify_pcpu_ptr((__p)); \ | ||
| 47 | RELOC_HIDE((typeof(*(__p)) __kernel __force *)(__p), (__offset)); \ | ||
| 48 | }) | ||
| 45 | #endif | 49 | #endif |
| 46 | 50 | ||
| 47 | /* | 51 | /* |
| @@ -50,11 +54,14 @@ extern unsigned long __per_cpu_offset[NR_CPUS]; | |||
| 50 | * offset. | 54 | * offset. |
| 51 | */ | 55 | */ |
| 52 | #define per_cpu(var, cpu) \ | 56 | #define per_cpu(var, cpu) \ |
| 53 | (*SHIFT_PERCPU_PTR(&per_cpu_var(var), per_cpu_offset(cpu))) | 57 | (*SHIFT_PERCPU_PTR(&(var), per_cpu_offset(cpu))) |
| 54 | #define __get_cpu_var(var) \ | 58 | #define __get_cpu_var(var) \ |
| 55 | (*SHIFT_PERCPU_PTR(&per_cpu_var(var), my_cpu_offset)) | 59 | (*SHIFT_PERCPU_PTR(&(var), my_cpu_offset)) |
| 56 | #define __raw_get_cpu_var(var) \ | 60 | #define __raw_get_cpu_var(var) \ |
| 57 | (*SHIFT_PERCPU_PTR(&per_cpu_var(var), __my_cpu_offset)) | 61 | (*SHIFT_PERCPU_PTR(&(var), __my_cpu_offset)) |
| 62 | |||
| 63 | #define this_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, my_cpu_offset) | ||
| 64 | #define __this_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset) | ||
| 58 | 65 | ||
| 59 | 66 | ||
| 60 | #ifdef CONFIG_HAVE_SETUP_PER_CPU_AREA | 67 | #ifdef CONFIG_HAVE_SETUP_PER_CPU_AREA |
| @@ -63,9 +70,11 @@ extern void setup_per_cpu_areas(void); | |||
| 63 | 70 | ||
| 64 | #else /* ! SMP */ | 71 | #else /* ! SMP */ |
| 65 | 72 | ||
| 66 | #define per_cpu(var, cpu) (*((void)(cpu), &per_cpu_var(var))) | 73 | #define per_cpu(var, cpu) (*((void)(cpu), &(var))) |
| 67 | #define __get_cpu_var(var) per_cpu_var(var) | 74 | #define __get_cpu_var(var) (var) |
| 68 | #define __raw_get_cpu_var(var) per_cpu_var(var) | 75 | #define __raw_get_cpu_var(var) (var) |
| 76 | #define this_cpu_ptr(ptr) per_cpu_ptr(ptr, 0) | ||
| 77 | #define __this_cpu_ptr(ptr) this_cpu_ptr(ptr) | ||
| 69 | 78 | ||
| 70 | #endif /* SMP */ | 79 | #endif /* SMP */ |
| 71 | 80 | ||
diff --git a/include/asm-generic/socket.h b/include/asm-generic/socket.h index 538991cef6f0..9a6115e7cf63 100644 --- a/include/asm-generic/socket.h +++ b/include/asm-generic/socket.h | |||
| @@ -63,4 +63,5 @@ | |||
| 63 | #define SO_PROTOCOL 38 | 63 | #define SO_PROTOCOL 38 |
| 64 | #define SO_DOMAIN 39 | 64 | #define SO_DOMAIN 39 |
| 65 | 65 | ||
| 66 | #define SO_RXQ_OVFL 40 | ||
| 66 | #endif /* __ASM_GENERIC_SOCKET_H */ | 67 | #endif /* __ASM_GENERIC_SOCKET_H */ |
diff --git a/include/asm-generic/unistd.h b/include/asm-generic/unistd.h index d76b66acea95..6a0b30f78a62 100644 --- a/include/asm-generic/unistd.h +++ b/include/asm-generic/unistd.h | |||
| @@ -622,16 +622,20 @@ __SYSCALL(__NR_move_pages, sys_move_pages) | |||
| 622 | __SYSCALL(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo) | 622 | __SYSCALL(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo) |
| 623 | #define __NR_perf_event_open 241 | 623 | #define __NR_perf_event_open 241 |
| 624 | __SYSCALL(__NR_perf_event_open, sys_perf_event_open) | 624 | __SYSCALL(__NR_perf_event_open, sys_perf_event_open) |
| 625 | #define __NR_accept4 242 | ||
| 626 | __SYSCALL(__NR_accept4, sys_accept4) | ||
| 627 | #define __NR_recvmmsg 243 | ||
| 628 | __SYSCALL(__NR_recvmmsg, sys_recvmmsg) | ||
| 625 | 629 | ||
| 626 | #undef __NR_syscalls | 630 | #undef __NR_syscalls |
| 627 | #define __NR_syscalls 242 | 631 | #define __NR_syscalls 244 |
| 628 | 632 | ||
| 629 | /* | 633 | /* |
| 630 | * All syscalls below here should go away really, | 634 | * All syscalls below here should go away really, |
| 631 | * these are provided for both review and as a porting | 635 | * these are provided for both review and as a porting |
| 632 | * help for the C library version. | 636 | * help for the C library version. |
| 633 | * | 637 | * |
| 634 | * Last chance: are any of these important enought to | 638 | * Last chance: are any of these important enough to |
| 635 | * enable by default? | 639 | * enable by default? |
| 636 | */ | 640 | */ |
| 637 | #ifdef __ARCH_WANT_SYSCALL_NO_AT | 641 | #ifdef __ARCH_WANT_SYSCALL_NO_AT |
| @@ -802,7 +806,7 @@ __SYSCALL(__NR_fork, sys_ni_syscall) | |||
| 802 | #define __NR_statfs __NR3264_statfs | 806 | #define __NR_statfs __NR3264_statfs |
| 803 | #define __NR_fstatfs __NR3264_fstatfs | 807 | #define __NR_fstatfs __NR3264_fstatfs |
| 804 | #define __NR_truncate __NR3264_truncate | 808 | #define __NR_truncate __NR3264_truncate |
| 805 | #define __NR_ftruncate __NR3264_truncate | 809 | #define __NR_ftruncate __NR3264_ftruncate |
| 806 | #define __NR_lseek __NR3264_lseek | 810 | #define __NR_lseek __NR3264_lseek |
| 807 | #define __NR_sendfile __NR3264_sendfile | 811 | #define __NR_sendfile __NR3264_sendfile |
| 808 | #define __NR_newfstatat __NR3264_fstatat | 812 | #define __NR_newfstatat __NR3264_fstatat |
| @@ -818,7 +822,7 @@ __SYSCALL(__NR_fork, sys_ni_syscall) | |||
| 818 | #define __NR_statfs64 __NR3264_statfs | 822 | #define __NR_statfs64 __NR3264_statfs |
| 819 | #define __NR_fstatfs64 __NR3264_fstatfs | 823 | #define __NR_fstatfs64 __NR3264_fstatfs |
| 820 | #define __NR_truncate64 __NR3264_truncate | 824 | #define __NR_truncate64 __NR3264_truncate |
| 821 | #define __NR_ftruncate64 __NR3264_truncate | 825 | #define __NR_ftruncate64 __NR3264_ftruncate |
| 822 | #define __NR_llseek __NR3264_lseek | 826 | #define __NR_llseek __NR3264_lseek |
| 823 | #define __NR_sendfile64 __NR3264_sendfile | 827 | #define __NR_sendfile64 __NR3264_sendfile |
| 824 | #define __NR_fstatat64 __NR3264_fstatat | 828 | #define __NR_fstatat64 __NR3264_fstatat |
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index b6e818f4b247..67e652068e0e 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
| @@ -52,8 +52,12 @@ | |||
| 52 | #define LOAD_OFFSET 0 | 52 | #define LOAD_OFFSET 0 |
| 53 | #endif | 53 | #endif |
| 54 | 54 | ||
| 55 | #ifndef VMLINUX_SYMBOL | 55 | #ifndef SYMBOL_PREFIX |
| 56 | #define VMLINUX_SYMBOL(_sym_) _sym_ | 56 | #define VMLINUX_SYMBOL(sym) sym |
| 57 | #else | ||
| 58 | #define PASTE2(x,y) x##y | ||
| 59 | #define PASTE(x,y) PASTE2(x,y) | ||
| 60 | #define VMLINUX_SYMBOL(sym) PASTE(SYMBOL_PREFIX, sym) | ||
| 57 | #endif | 61 | #endif |
| 58 | 62 | ||
| 59 | /* Align . to a 8 byte boundary equals to maximum function alignment. */ | 63 | /* Align . to a 8 byte boundary equals to maximum function alignment. */ |
