diff options
Diffstat (limited to 'include/asm-generic')
-rw-r--r-- | include/asm-generic/Kbuild | 1 | ||||
-rw-r--r-- | include/asm-generic/Kbuild.asm | 1 | ||||
-rw-r--r-- | include/asm-generic/atomic.h | 7 | ||||
-rw-r--r-- | include/asm-generic/bug.h | 18 | ||||
-rw-r--r-- | include/asm-generic/device.h | 12 | ||||
-rw-r--r-- | include/asm-generic/dma-mapping.h | 4 | ||||
-rw-r--r-- | include/asm-generic/futex.h | 4 | ||||
-rw-r--r-- | include/asm-generic/page.h | 38 | ||||
-rw-r--r-- | include/asm-generic/termios.h | 4 | ||||
-rw-r--r-- | include/asm-generic/vmlinux.lds.h | 31 |
10 files changed, 88 insertions, 32 deletions
diff --git a/include/asm-generic/Kbuild b/include/asm-generic/Kbuild index 3c06be381701..fa14f8cd30c5 100644 --- a/include/asm-generic/Kbuild +++ b/include/asm-generic/Kbuild | |||
@@ -1,4 +1,3 @@ | |||
1 | header-y += atomic.h | ||
2 | header-y += errno-base.h | 1 | header-y += errno-base.h |
3 | header-y += errno.h | 2 | header-y += errno.h |
4 | header-y += fcntl.h | 3 | header-y += fcntl.h |
diff --git a/include/asm-generic/Kbuild.asm b/include/asm-generic/Kbuild.asm index a84c3d88a189..a37e95fe58d6 100644 --- a/include/asm-generic/Kbuild.asm +++ b/include/asm-generic/Kbuild.asm | |||
@@ -14,6 +14,7 @@ unifdef-y += posix_types.h | |||
14 | unifdef-y += ptrace.h | 14 | unifdef-y += ptrace.h |
15 | unifdef-y += resource.h | 15 | unifdef-y += resource.h |
16 | unifdef-y += sembuf.h | 16 | unifdef-y += sembuf.h |
17 | unifdef-y += setup.h | ||
17 | unifdef-y += shmbuf.h | 18 | unifdef-y += shmbuf.h |
18 | unifdef-y += sigcontext.h | 19 | unifdef-y += sigcontext.h |
19 | unifdef-y += siginfo.h | 20 | unifdef-y += siginfo.h |
diff --git a/include/asm-generic/atomic.h b/include/asm-generic/atomic.h index 42a95d9a0641..b7e4a0467cb1 100644 --- a/include/asm-generic/atomic.h +++ b/include/asm-generic/atomic.h | |||
@@ -66,7 +66,7 @@ static inline void atomic_long_sub(long i, atomic_long_t *l) | |||
66 | atomic64_sub(i, v); | 66 | atomic64_sub(i, v); |
67 | } | 67 | } |
68 | 68 | ||
69 | #else | 69 | #else /* BITS_PER_LONG == 64 */ |
70 | 70 | ||
71 | typedef atomic_t atomic_long_t; | 71 | typedef atomic_t atomic_long_t; |
72 | 72 | ||
@@ -113,5 +113,6 @@ static inline void atomic_long_sub(long i, atomic_long_t *l) | |||
113 | atomic_sub(i, v); | 113 | atomic_sub(i, v); |
114 | } | 114 | } |
115 | 115 | ||
116 | #endif | 116 | #endif /* BITS_PER_LONG == 64 */ |
117 | #endif | 117 | |
118 | #endif /* _ASM_GENERIC_ATOMIC_H */ | ||
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h index c92ae0f166ff..14fae1fa87df 100644 --- a/include/asm-generic/bug.h +++ b/include/asm-generic/bug.h | |||
@@ -4,6 +4,22 @@ | |||
4 | #include <linux/compiler.h> | 4 | #include <linux/compiler.h> |
5 | 5 | ||
6 | #ifdef CONFIG_BUG | 6 | #ifdef CONFIG_BUG |
7 | |||
8 | #ifdef CONFIG_GENERIC_BUG | ||
9 | #ifndef __ASSEMBLY__ | ||
10 | struct bug_entry { | ||
11 | unsigned long bug_addr; | ||
12 | #ifdef CONFIG_DEBUG_BUGVERBOSE | ||
13 | const char *file; | ||
14 | unsigned short line; | ||
15 | #endif | ||
16 | unsigned short flags; | ||
17 | }; | ||
18 | #endif /* __ASSEMBLY__ */ | ||
19 | |||
20 | #define BUGFLAG_WARNING (1<<0) | ||
21 | #endif /* CONFIG_GENERIC_BUG */ | ||
22 | |||
7 | #ifndef HAVE_ARCH_BUG | 23 | #ifndef HAVE_ARCH_BUG |
8 | #define BUG() do { \ | 24 | #define BUG() do { \ |
9 | printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __FUNCTION__); \ | 25 | printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __FUNCTION__); \ |
@@ -19,7 +35,7 @@ | |||
19 | #define WARN_ON(condition) ({ \ | 35 | #define WARN_ON(condition) ({ \ |
20 | typeof(condition) __ret_warn_on = (condition); \ | 36 | typeof(condition) __ret_warn_on = (condition); \ |
21 | if (unlikely(__ret_warn_on)) { \ | 37 | if (unlikely(__ret_warn_on)) { \ |
22 | printk("BUG: warning at %s:%d/%s()\n", __FILE__, \ | 38 | printk("BUG: at %s:%d %s()\n", __FILE__, \ |
23 | __LINE__, __FUNCTION__); \ | 39 | __LINE__, __FUNCTION__); \ |
24 | dump_stack(); \ | 40 | dump_stack(); \ |
25 | } \ | 41 | } \ |
diff --git a/include/asm-generic/device.h b/include/asm-generic/device.h new file mode 100644 index 000000000000..c17c9600f220 --- /dev/null +++ b/include/asm-generic/device.h | |||
@@ -0,0 +1,12 @@ | |||
1 | /* | ||
2 | * Arch specific extensions to struct device | ||
3 | * | ||
4 | * This file is released under the GPLv2 | ||
5 | */ | ||
6 | #ifndef _ASM_GENERIC_DEVICE_H | ||
7 | #define _ASM_GENERIC_DEVICE_H | ||
8 | |||
9 | struct dev_archdata { | ||
10 | }; | ||
11 | |||
12 | #endif /* _ASM_GENERIC_DEVICE_H */ | ||
diff --git a/include/asm-generic/dma-mapping.h b/include/asm-generic/dma-mapping.h index b541e48cc545..783ab9944d70 100644 --- a/include/asm-generic/dma-mapping.h +++ b/include/asm-generic/dma-mapping.h | |||
@@ -266,7 +266,7 @@ dma_error(dma_addr_t dma_addr) | |||
266 | 266 | ||
267 | #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) | 267 | #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) |
268 | #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) | 268 | #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) |
269 | #define dma_is_consistent(d) (1) | 269 | #define dma_is_consistent(d, h) (1) |
270 | 270 | ||
271 | static inline int | 271 | static inline int |
272 | dma_get_cache_alignment(void) | 272 | dma_get_cache_alignment(void) |
@@ -295,7 +295,7 @@ dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_handle, | |||
295 | } | 295 | } |
296 | 296 | ||
297 | static inline void | 297 | static inline void |
298 | dma_cache_sync(void *vaddr, size_t size, | 298 | dma_cache_sync(struct device *dev, void *vaddr, size_t size, |
299 | enum dma_data_direction direction) | 299 | enum dma_data_direction direction) |
300 | { | 300 | { |
301 | /* could define this in terms of the dma_cache ... operations, | 301 | /* could define this in terms of the dma_cache ... operations, |
diff --git a/include/asm-generic/futex.h b/include/asm-generic/futex.h index df893c160318..f422df0956a2 100644 --- a/include/asm-generic/futex.h +++ b/include/asm-generic/futex.h | |||
@@ -21,7 +21,7 @@ futex_atomic_op_inuser (int encoded_op, int __user *uaddr) | |||
21 | if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int))) | 21 | if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int))) |
22 | return -EFAULT; | 22 | return -EFAULT; |
23 | 23 | ||
24 | inc_preempt_count(); | 24 | pagefault_disable(); |
25 | 25 | ||
26 | switch (op) { | 26 | switch (op) { |
27 | case FUTEX_OP_SET: | 27 | case FUTEX_OP_SET: |
@@ -33,7 +33,7 @@ futex_atomic_op_inuser (int encoded_op, int __user *uaddr) | |||
33 | ret = -ENOSYS; | 33 | ret = -ENOSYS; |
34 | } | 34 | } |
35 | 35 | ||
36 | dec_preempt_count(); | 36 | pagefault_enable(); |
37 | 37 | ||
38 | if (!ret) { | 38 | if (!ret) { |
39 | switch (cmp) { | 39 | switch (cmp) { |
diff --git a/include/asm-generic/page.h b/include/asm-generic/page.h index a96b5d986b6e..b55052ce2330 100644 --- a/include/asm-generic/page.h +++ b/include/asm-generic/page.h | |||
@@ -4,21 +4,51 @@ | |||
4 | #ifdef __KERNEL__ | 4 | #ifdef __KERNEL__ |
5 | #ifndef __ASSEMBLY__ | 5 | #ifndef __ASSEMBLY__ |
6 | 6 | ||
7 | #include <linux/compiler.h> | 7 | #include <linux/log2.h> |
8 | 8 | ||
9 | /* Pure 2^n version of get_order */ | 9 | /* |
10 | static __inline__ __attribute_const__ int get_order(unsigned long size) | 10 | * non-const pure 2^n version of get_order |
11 | * - the arch may override these in asm/bitops.h if they can be implemented | ||
12 | * more efficiently than using the arch log2 routines | ||
13 | * - we use the non-const log2() instead if the arch has defined one suitable | ||
14 | */ | ||
15 | #ifndef ARCH_HAS_GET_ORDER | ||
16 | static inline __attribute__((const)) | ||
17 | int __get_order(unsigned long size, int page_shift) | ||
11 | { | 18 | { |
19 | #if BITS_PER_LONG == 32 && defined(ARCH_HAS_ILOG2_U32) | ||
20 | int order = __ilog2_u32(size) - page_shift; | ||
21 | return order >= 0 ? order : 0; | ||
22 | #elif BITS_PER_LONG == 64 && defined(ARCH_HAS_ILOG2_U64) | ||
23 | int order = __ilog2_u64(size) - page_shift; | ||
24 | return order >= 0 ? order : 0; | ||
25 | #else | ||
12 | int order; | 26 | int order; |
13 | 27 | ||
14 | size = (size - 1) >> (PAGE_SHIFT - 1); | 28 | size = (size - 1) >> (page_shift - 1); |
15 | order = -1; | 29 | order = -1; |
16 | do { | 30 | do { |
17 | size >>= 1; | 31 | size >>= 1; |
18 | order++; | 32 | order++; |
19 | } while (size); | 33 | } while (size); |
20 | return order; | 34 | return order; |
35 | #endif | ||
21 | } | 36 | } |
37 | #endif | ||
38 | |||
39 | /** | ||
40 | * get_order - calculate log2(pages) to hold a block of the specified size | ||
41 | * @n - size | ||
42 | * | ||
43 | * calculate allocation order based on the current page size | ||
44 | * - this can be used to initialise global variables from constant data | ||
45 | */ | ||
46 | #define get_order(n) \ | ||
47 | ( \ | ||
48 | __builtin_constant_p(n) ? \ | ||
49 | ((n < (1UL << PAGE_SHIFT)) ? 0 : ilog2(n) - PAGE_SHIFT) : \ | ||
50 | __get_order(n, PAGE_SHIFT) \ | ||
51 | ) | ||
22 | 52 | ||
23 | #endif /* __ASSEMBLY__ */ | 53 | #endif /* __ASSEMBLY__ */ |
24 | #endif /* __KERNEL__ */ | 54 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-generic/termios.h b/include/asm-generic/termios.h index 1e58ca39592c..3769e6bd63b1 100644 --- a/include/asm-generic/termios.h +++ b/include/asm-generic/termios.h | |||
@@ -11,7 +11,7 @@ | |||
11 | /* | 11 | /* |
12 | * Translate a "termio" structure into a "termios". Ugh. | 12 | * Translate a "termio" structure into a "termios". Ugh. |
13 | */ | 13 | */ |
14 | static inline int user_termio_to_kernel_termios(struct termios *termios, | 14 | static inline int user_termio_to_kernel_termios(struct ktermios *termios, |
15 | struct termio __user *termio) | 15 | struct termio __user *termio) |
16 | { | 16 | { |
17 | unsigned short tmp; | 17 | unsigned short tmp; |
@@ -48,7 +48,7 @@ static inline int user_termio_to_kernel_termios(struct termios *termios, | |||
48 | * Translate a "termios" structure into a "termio". Ugh. | 48 | * Translate a "termios" structure into a "termio". Ugh. |
49 | */ | 49 | */ |
50 | static inline int kernel_termios_to_user_termio(struct termio __user *termio, | 50 | static inline int kernel_termios_to_user_termio(struct termio __user *termio, |
51 | struct termios *termios) | 51 | struct ktermios *termios) |
52 | { | 52 | { |
53 | if (put_user(termios->c_iflag, &termio->c_iflag) < 0 || | 53 | if (put_user(termios->c_iflag, &termio->c_iflag) < 0 || |
54 | put_user(termios->c_oflag, &termio->c_oflag) < 0 || | 54 | put_user(termios->c_oflag, &termio->c_oflag) < 0 || |
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index e60d6f21fa62..9fcc8d9fbb14 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -11,8 +11,8 @@ | |||
11 | 11 | ||
12 | #define RODATA \ | 12 | #define RODATA \ |
13 | . = ALIGN(4096); \ | 13 | . = ALIGN(4096); \ |
14 | __start_rodata = .; \ | ||
15 | .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ | 14 | .rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \ |
15 | VMLINUX_SYMBOL(__start_rodata) = .; \ | ||
16 | *(.rodata) *(.rodata.*) \ | 16 | *(.rodata) *(.rodata.*) \ |
17 | *(__vermagic) /* Kernel version magic */ \ | 17 | *(__vermagic) /* Kernel version magic */ \ |
18 | } \ | 18 | } \ |
@@ -35,6 +35,9 @@ | |||
35 | VMLINUX_SYMBOL(__start_pci_fixups_enable) = .; \ | 35 | VMLINUX_SYMBOL(__start_pci_fixups_enable) = .; \ |
36 | *(.pci_fixup_enable) \ | 36 | *(.pci_fixup_enable) \ |
37 | VMLINUX_SYMBOL(__end_pci_fixups_enable) = .; \ | 37 | VMLINUX_SYMBOL(__end_pci_fixups_enable) = .; \ |
38 | VMLINUX_SYMBOL(__start_pci_fixups_resume) = .; \ | ||
39 | *(.pci_fixup_resume) \ | ||
40 | VMLINUX_SYMBOL(__end_pci_fixups_resume) = .; \ | ||
38 | } \ | 41 | } \ |
39 | \ | 42 | \ |
40 | /* RapidIO route ops */ \ | 43 | /* RapidIO route ops */ \ |
@@ -124,12 +127,9 @@ | |||
124 | VMLINUX_SYMBOL(__start___param) = .; \ | 127 | VMLINUX_SYMBOL(__start___param) = .; \ |
125 | *(__param) \ | 128 | *(__param) \ |
126 | VMLINUX_SYMBOL(__stop___param) = .; \ | 129 | VMLINUX_SYMBOL(__stop___param) = .; \ |
130 | VMLINUX_SYMBOL(__end_rodata) = .; \ | ||
127 | } \ | 131 | } \ |
128 | \ | 132 | \ |
129 | /* Unwind data binary search table */ \ | ||
130 | EH_FRAME_HDR \ | ||
131 | \ | ||
132 | __end_rodata = .; \ | ||
133 | . = ALIGN(4096); | 133 | . = ALIGN(4096); |
134 | 134 | ||
135 | #define SECURITY_INIT \ | 135 | #define SECURITY_INIT \ |
@@ -161,18 +161,6 @@ | |||
161 | *(.kprobes.text) \ | 161 | *(.kprobes.text) \ |
162 | VMLINUX_SYMBOL(__kprobes_text_end) = .; | 162 | VMLINUX_SYMBOL(__kprobes_text_end) = .; |
163 | 163 | ||
164 | #ifdef CONFIG_STACK_UNWIND | ||
165 | /* Unwind data binary search table */ | ||
166 | #define EH_FRAME_HDR \ | ||
167 | .eh_frame_hdr : AT(ADDR(.eh_frame_hdr) - LOAD_OFFSET) { \ | ||
168 | VMLINUX_SYMBOL(__start_unwind_hdr) = .; \ | ||
169 | *(.eh_frame_hdr) \ | ||
170 | VMLINUX_SYMBOL(__end_unwind_hdr) = .; \ | ||
171 | } | ||
172 | #else | ||
173 | #define EH_FRAME_HDR | ||
174 | #endif | ||
175 | |||
176 | /* DWARF debug sections. | 164 | /* DWARF debug sections. |
177 | Symbols in the DWARF debugging sections are relative to | 165 | Symbols in the DWARF debugging sections are relative to |
178 | the beginning of the section so we begin them at 0. */ | 166 | the beginning of the section so we begin them at 0. */ |
@@ -211,6 +199,14 @@ | |||
211 | .stab.indexstr 0 : { *(.stab.indexstr) } \ | 199 | .stab.indexstr 0 : { *(.stab.indexstr) } \ |
212 | .comment 0 : { *(.comment) } | 200 | .comment 0 : { *(.comment) } |
213 | 201 | ||
202 | #define BUG_TABLE \ | ||
203 | . = ALIGN(8); \ | ||
204 | __bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) { \ | ||
205 | __start___bug_table = .; \ | ||
206 | *(__bug_table) \ | ||
207 | __stop___bug_table = .; \ | ||
208 | } | ||
209 | |||
214 | #define NOTES \ | 210 | #define NOTES \ |
215 | .notes : { *(.note.*) } :note | 211 | .notes : { *(.note.*) } :note |
216 | 212 | ||
@@ -227,6 +223,7 @@ | |||
227 | *(.initcall4s.init) \ | 223 | *(.initcall4s.init) \ |
228 | *(.initcall5.init) \ | 224 | *(.initcall5.init) \ |
229 | *(.initcall5s.init) \ | 225 | *(.initcall5s.init) \ |
226 | *(.initcallrootfs.init) \ | ||
230 | *(.initcall6.init) \ | 227 | *(.initcall6.init) \ |
231 | *(.initcall6s.init) \ | 228 | *(.initcall6s.init) \ |
232 | *(.initcall7.init) \ | 229 | *(.initcall7.init) \ |