diff options
Diffstat (limited to 'include/asm-generic')
-rw-r--r-- | include/asm-generic/atomic.h | 12 | ||||
-rw-r--r-- | include/asm-generic/fcntl.h | 8 | ||||
-rw-r--r-- | include/asm-generic/gpio.h | 15 | ||||
-rw-r--r-- | include/asm-generic/io.h | 4 | ||||
-rw-r--r-- | include/asm-generic/local64.h | 96 | ||||
-rw-r--r-- | include/asm-generic/statfs.h | 9 | ||||
-rw-r--r-- | include/asm-generic/topology.h | 20 | ||||
-rw-r--r-- | include/asm-generic/unistd.h | 35 | ||||
-rw-r--r-- | include/asm-generic/vmlinux.lds.h | 17 |
9 files changed, 192 insertions, 24 deletions
diff --git a/include/asm-generic/atomic.h b/include/asm-generic/atomic.h index 058129e9b04c..e53347fbf1da 100644 --- a/include/asm-generic/atomic.h +++ b/include/asm-generic/atomic.h | |||
@@ -57,11 +57,11 @@ static inline int atomic_add_return(int i, atomic_t *v) | |||
57 | unsigned long flags; | 57 | unsigned long flags; |
58 | int temp; | 58 | int temp; |
59 | 59 | ||
60 | local_irq_save(flags); | 60 | raw_local_irq_save(flags); /* Don't trace it in a irqsoff handler */ |
61 | temp = v->counter; | 61 | temp = v->counter; |
62 | temp += i; | 62 | temp += i; |
63 | v->counter = temp; | 63 | v->counter = temp; |
64 | local_irq_restore(flags); | 64 | raw_local_irq_restore(flags); |
65 | 65 | ||
66 | return temp; | 66 | return temp; |
67 | } | 67 | } |
@@ -78,11 +78,11 @@ static inline int atomic_sub_return(int i, atomic_t *v) | |||
78 | unsigned long flags; | 78 | unsigned long flags; |
79 | int temp; | 79 | int temp; |
80 | 80 | ||
81 | local_irq_save(flags); | 81 | raw_local_irq_save(flags); /* Don't trace it in a irqsoff handler */ |
82 | temp = v->counter; | 82 | temp = v->counter; |
83 | temp -= i; | 83 | temp -= i; |
84 | v->counter = temp; | 84 | v->counter = temp; |
85 | local_irq_restore(flags); | 85 | raw_local_irq_restore(flags); |
86 | 86 | ||
87 | return temp; | 87 | return temp; |
88 | } | 88 | } |
@@ -135,9 +135,9 @@ static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr) | |||
135 | unsigned long flags; | 135 | unsigned long flags; |
136 | 136 | ||
137 | mask = ~mask; | 137 | mask = ~mask; |
138 | local_irq_save(flags); | 138 | raw_local_irq_save(flags); /* Don't trace it in a irqsoff handler */ |
139 | *addr &= mask; | 139 | *addr &= mask; |
140 | local_irq_restore(flags); | 140 | raw_local_irq_restore(flags); |
141 | } | 141 | } |
142 | 142 | ||
143 | #define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v))) | 143 | #define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v))) |
diff --git a/include/asm-generic/fcntl.h b/include/asm-generic/fcntl.h index fcd268ce0674..e3cbc38bdcc2 100644 --- a/include/asm-generic/fcntl.h +++ b/include/asm-generic/fcntl.h | |||
@@ -3,6 +3,14 @@ | |||
3 | 3 | ||
4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
5 | 5 | ||
6 | /* | ||
7 | * FMODE_EXEC is 0x20 | ||
8 | * FMODE_NONOTIFY is 0x1000000 | ||
9 | * These cannot be used by userspace O_* until internal and external open | ||
10 | * flags are split. | ||
11 | * -Eric Paris | ||
12 | */ | ||
13 | |||
6 | #define O_ACCMODE 00000003 | 14 | #define O_ACCMODE 00000003 |
7 | #define O_RDONLY 00000000 | 15 | #define O_RDONLY 00000000 |
8 | #define O_WRONLY 00000001 | 16 | #define O_WRONLY 00000001 |
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h index 4f3d75e1ad39..c7376bf80b06 100644 --- a/include/asm-generic/gpio.h +++ b/include/asm-generic/gpio.h | |||
@@ -31,6 +31,7 @@ static inline int gpio_is_valid(int number) | |||
31 | struct device; | 31 | struct device; |
32 | struct seq_file; | 32 | struct seq_file; |
33 | struct module; | 33 | struct module; |
34 | struct device_node; | ||
34 | 35 | ||
35 | /** | 36 | /** |
36 | * struct gpio_chip - abstract a GPIO controller | 37 | * struct gpio_chip - abstract a GPIO controller |
@@ -106,6 +107,17 @@ struct gpio_chip { | |||
106 | const char *const *names; | 107 | const char *const *names; |
107 | unsigned can_sleep:1; | 108 | unsigned can_sleep:1; |
108 | unsigned exported:1; | 109 | unsigned exported:1; |
110 | |||
111 | #if defined(CONFIG_OF_GPIO) | ||
112 | /* | ||
113 | * If CONFIG_OF is enabled, then all GPIO controllers described in the | ||
114 | * device tree automatically may have an OF translation | ||
115 | */ | ||
116 | struct device_node *of_node; | ||
117 | int of_gpio_n_cells; | ||
118 | int (*of_xlate)(struct gpio_chip *gc, struct device_node *np, | ||
119 | const void *gpio_spec, u32 *flags); | ||
120 | #endif | ||
109 | }; | 121 | }; |
110 | 122 | ||
111 | extern const char *gpiochip_is_requested(struct gpio_chip *chip, | 123 | extern const char *gpiochip_is_requested(struct gpio_chip *chip, |
@@ -115,6 +127,9 @@ extern int __must_check gpiochip_reserve(int start, int ngpio); | |||
115 | /* add/remove chips */ | 127 | /* add/remove chips */ |
116 | extern int gpiochip_add(struct gpio_chip *chip); | 128 | extern int gpiochip_add(struct gpio_chip *chip); |
117 | extern int __must_check gpiochip_remove(struct gpio_chip *chip); | 129 | extern int __must_check gpiochip_remove(struct gpio_chip *chip); |
130 | extern struct gpio_chip *gpiochip_find(void *data, | ||
131 | int (*match)(struct gpio_chip *chip, | ||
132 | void *data)); | ||
118 | 133 | ||
119 | 134 | ||
120 | /* Always use the library code for GPIO management calls, | 135 | /* Always use the library code for GPIO management calls, |
diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h index bcee6365dca0..118601fce92d 100644 --- a/include/asm-generic/io.h +++ b/include/asm-generic/io.h | |||
@@ -188,11 +188,15 @@ static inline void outsl(unsigned long addr, const void *buffer, int count) | |||
188 | #ifndef CONFIG_GENERIC_IOMAP | 188 | #ifndef CONFIG_GENERIC_IOMAP |
189 | #define ioread8(addr) readb(addr) | 189 | #define ioread8(addr) readb(addr) |
190 | #define ioread16(addr) readw(addr) | 190 | #define ioread16(addr) readw(addr) |
191 | #define ioread16be(addr) be16_to_cpu(ioread16(addr)) | ||
191 | #define ioread32(addr) readl(addr) | 192 | #define ioread32(addr) readl(addr) |
193 | #define ioread32be(addr) be32_to_cpu(ioread32(addr)) | ||
192 | 194 | ||
193 | #define iowrite8(v, addr) writeb((v), (addr)) | 195 | #define iowrite8(v, addr) writeb((v), (addr)) |
194 | #define iowrite16(v, addr) writew((v), (addr)) | 196 | #define iowrite16(v, addr) writew((v), (addr)) |
197 | #define iowrite16be(v, addr) iowrite16(be16_to_cpu(v), (addr)) | ||
195 | #define iowrite32(v, addr) writel((v), (addr)) | 198 | #define iowrite32(v, addr) writel((v), (addr)) |
199 | #define iowrite32be(v, addr) iowrite32(be32_to_cpu(v), (addr)) | ||
196 | 200 | ||
197 | #define ioread8_rep(p, dst, count) \ | 201 | #define ioread8_rep(p, dst, count) \ |
198 | insb((unsigned long) (p), (dst), (count)) | 202 | insb((unsigned long) (p), (dst), (count)) |
diff --git a/include/asm-generic/local64.h b/include/asm-generic/local64.h new file mode 100644 index 000000000000..02ac760c1a8b --- /dev/null +++ b/include/asm-generic/local64.h | |||
@@ -0,0 +1,96 @@ | |||
1 | #ifndef _ASM_GENERIC_LOCAL64_H | ||
2 | #define _ASM_GENERIC_LOCAL64_H | ||
3 | |||
4 | #include <linux/percpu.h> | ||
5 | #include <asm/types.h> | ||
6 | |||
7 | /* | ||
8 | * A signed long type for operations which are atomic for a single CPU. | ||
9 | * Usually used in combination with per-cpu variables. | ||
10 | * | ||
11 | * This is the default implementation, which uses atomic64_t. Which is | ||
12 | * rather pointless. The whole point behind local64_t is that some processors | ||
13 | * can perform atomic adds and subtracts in a manner which is atomic wrt IRQs | ||
14 | * running on this CPU. local64_t allows exploitation of such capabilities. | ||
15 | */ | ||
16 | |||
17 | /* Implement in terms of atomics. */ | ||
18 | |||
19 | #if BITS_PER_LONG == 64 | ||
20 | |||
21 | #include <asm/local.h> | ||
22 | |||
23 | typedef struct { | ||
24 | local_t a; | ||
25 | } local64_t; | ||
26 | |||
27 | #define LOCAL64_INIT(i) { LOCAL_INIT(i) } | ||
28 | |||
29 | #define local64_read(l) local_read(&(l)->a) | ||
30 | #define local64_set(l,i) local_set((&(l)->a),(i)) | ||
31 | #define local64_inc(l) local_inc(&(l)->a) | ||
32 | #define local64_dec(l) local_dec(&(l)->a) | ||
33 | #define local64_add(i,l) local_add((i),(&(l)->a)) | ||
34 | #define local64_sub(i,l) local_sub((i),(&(l)->a)) | ||
35 | |||
36 | #define local64_sub_and_test(i, l) local_sub_and_test((i), (&(l)->a)) | ||
37 | #define local64_dec_and_test(l) local_dec_and_test(&(l)->a) | ||
38 | #define local64_inc_and_test(l) local_inc_and_test(&(l)->a) | ||
39 | #define local64_add_negative(i, l) local_add_negative((i), (&(l)->a)) | ||
40 | #define local64_add_return(i, l) local_add_return((i), (&(l)->a)) | ||
41 | #define local64_sub_return(i, l) local_sub_return((i), (&(l)->a)) | ||
42 | #define local64_inc_return(l) local_inc_return(&(l)->a) | ||
43 | |||
44 | #define local64_cmpxchg(l, o, n) local_cmpxchg((&(l)->a), (o), (n)) | ||
45 | #define local64_xchg(l, n) local_xchg((&(l)->a), (n)) | ||
46 | #define local64_add_unless(l, _a, u) local_add_unless((&(l)->a), (_a), (u)) | ||
47 | #define local64_inc_not_zero(l) local_inc_not_zero(&(l)->a) | ||
48 | |||
49 | /* Non-atomic variants, ie. preemption disabled and won't be touched | ||
50 | * in interrupt, etc. Some archs can optimize this case well. */ | ||
51 | #define __local64_inc(l) local64_set((l), local64_read(l) + 1) | ||
52 | #define __local64_dec(l) local64_set((l), local64_read(l) - 1) | ||
53 | #define __local64_add(i,l) local64_set((l), local64_read(l) + (i)) | ||
54 | #define __local64_sub(i,l) local64_set((l), local64_read(l) - (i)) | ||
55 | |||
56 | #else /* BITS_PER_LONG != 64 */ | ||
57 | |||
58 | #include <asm/atomic.h> | ||
59 | |||
60 | /* Don't use typedef: don't want them to be mixed with atomic_t's. */ | ||
61 | typedef struct { | ||
62 | atomic64_t a; | ||
63 | } local64_t; | ||
64 | |||
65 | #define LOCAL64_INIT(i) { ATOMIC_LONG_INIT(i) } | ||
66 | |||
67 | #define local64_read(l) atomic64_read(&(l)->a) | ||
68 | #define local64_set(l,i) atomic64_set((&(l)->a),(i)) | ||
69 | #define local64_inc(l) atomic64_inc(&(l)->a) | ||
70 | #define local64_dec(l) atomic64_dec(&(l)->a) | ||
71 | #define local64_add(i,l) atomic64_add((i),(&(l)->a)) | ||
72 | #define local64_sub(i,l) atomic64_sub((i),(&(l)->a)) | ||
73 | |||
74 | #define local64_sub_and_test(i, l) atomic64_sub_and_test((i), (&(l)->a)) | ||
75 | #define local64_dec_and_test(l) atomic64_dec_and_test(&(l)->a) | ||
76 | #define local64_inc_and_test(l) atomic64_inc_and_test(&(l)->a) | ||
77 | #define local64_add_negative(i, l) atomic64_add_negative((i), (&(l)->a)) | ||
78 | #define local64_add_return(i, l) atomic64_add_return((i), (&(l)->a)) | ||
79 | #define local64_sub_return(i, l) atomic64_sub_return((i), (&(l)->a)) | ||
80 | #define local64_inc_return(l) atomic64_inc_return(&(l)->a) | ||
81 | |||
82 | #define local64_cmpxchg(l, o, n) atomic64_cmpxchg((&(l)->a), (o), (n)) | ||
83 | #define local64_xchg(l, n) atomic64_xchg((&(l)->a), (n)) | ||
84 | #define local64_add_unless(l, _a, u) atomic64_add_unless((&(l)->a), (_a), (u)) | ||
85 | #define local64_inc_not_zero(l) atomic64_inc_not_zero(&(l)->a) | ||
86 | |||
87 | /* Non-atomic variants, ie. preemption disabled and won't be touched | ||
88 | * in interrupt, etc. Some archs can optimize this case well. */ | ||
89 | #define __local64_inc(l) local64_set((l), local64_read(l) + 1) | ||
90 | #define __local64_dec(l) local64_set((l), local64_read(l) - 1) | ||
91 | #define __local64_add(i,l) local64_set((l), local64_read(l) + (i)) | ||
92 | #define __local64_sub(i,l) local64_set((l), local64_read(l) - (i)) | ||
93 | |||
94 | #endif /* BITS_PER_LONG != 64 */ | ||
95 | |||
96 | #endif /* _ASM_GENERIC_LOCAL64_H */ | ||
diff --git a/include/asm-generic/statfs.h b/include/asm-generic/statfs.h index 3b4fb3e52f0d..0fd28e028de1 100644 --- a/include/asm-generic/statfs.h +++ b/include/asm-generic/statfs.h | |||
@@ -33,7 +33,8 @@ struct statfs { | |||
33 | __kernel_fsid_t f_fsid; | 33 | __kernel_fsid_t f_fsid; |
34 | __statfs_word f_namelen; | 34 | __statfs_word f_namelen; |
35 | __statfs_word f_frsize; | 35 | __statfs_word f_frsize; |
36 | __statfs_word f_spare[5]; | 36 | __statfs_word f_flags; |
37 | __statfs_word f_spare[4]; | ||
37 | }; | 38 | }; |
38 | 39 | ||
39 | /* | 40 | /* |
@@ -55,7 +56,8 @@ struct statfs64 { | |||
55 | __kernel_fsid_t f_fsid; | 56 | __kernel_fsid_t f_fsid; |
56 | __statfs_word f_namelen; | 57 | __statfs_word f_namelen; |
57 | __statfs_word f_frsize; | 58 | __statfs_word f_frsize; |
58 | __statfs_word f_spare[5]; | 59 | __statfs_word f_flags; |
60 | __statfs_word f_spare[4]; | ||
59 | } ARCH_PACK_STATFS64; | 61 | } ARCH_PACK_STATFS64; |
60 | 62 | ||
61 | /* | 63 | /* |
@@ -77,7 +79,8 @@ struct compat_statfs64 { | |||
77 | __kernel_fsid_t f_fsid; | 79 | __kernel_fsid_t f_fsid; |
78 | __u32 f_namelen; | 80 | __u32 f_namelen; |
79 | __u32 f_frsize; | 81 | __u32 f_frsize; |
80 | __u32 f_spare[5]; | 82 | __u32 f_flags; |
83 | __u32 f_spare[4]; | ||
81 | } ARCH_PACK_COMPAT_STATFS64; | 84 | } ARCH_PACK_COMPAT_STATFS64; |
82 | 85 | ||
83 | #endif | 86 | #endif |
diff --git a/include/asm-generic/topology.h b/include/asm-generic/topology.h index fd60700503c8..fc824e2828f3 100644 --- a/include/asm-generic/topology.h +++ b/include/asm-generic/topology.h | |||
@@ -5,7 +5,7 @@ | |||
5 | * | 5 | * |
6 | * Copyright (C) 2002, IBM Corp. | 6 | * Copyright (C) 2002, IBM Corp. |
7 | * | 7 | * |
8 | * All rights reserved. | 8 | * All rights reserved. |
9 | * | 9 | * |
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 as published by | 11 | * it under the terms of the GNU General Public License as published by |
@@ -34,9 +34,16 @@ | |||
34 | #ifndef cpu_to_node | 34 | #ifndef cpu_to_node |
35 | #define cpu_to_node(cpu) ((void)(cpu),0) | 35 | #define cpu_to_node(cpu) ((void)(cpu),0) |
36 | #endif | 36 | #endif |
37 | #ifndef set_numa_node | ||
38 | #define set_numa_node(node) | ||
39 | #endif | ||
40 | #ifndef set_cpu_numa_node | ||
41 | #define set_cpu_numa_node(cpu, node) | ||
42 | #endif | ||
37 | #ifndef cpu_to_mem | 43 | #ifndef cpu_to_mem |
38 | #define cpu_to_mem(cpu) ((void)(cpu),0) | 44 | #define cpu_to_mem(cpu) ((void)(cpu),0) |
39 | #endif | 45 | #endif |
46 | |||
40 | #ifndef parent_node | 47 | #ifndef parent_node |
41 | #define parent_node(node) ((void)(node),0) | 48 | #define parent_node(node) ((void)(node),0) |
42 | #endif | 49 | #endif |
@@ -55,4 +62,15 @@ | |||
55 | 62 | ||
56 | #endif /* CONFIG_NUMA */ | 63 | #endif /* CONFIG_NUMA */ |
57 | 64 | ||
65 | #if !defined(CONFIG_NUMA) || !defined(CONFIG_HAVE_MEMORYLESS_NODES) | ||
66 | |||
67 | #ifndef set_numa_mem | ||
68 | #define set_numa_mem(node) | ||
69 | #endif | ||
70 | #ifndef set_cpu_numa_mem | ||
71 | #define set_cpu_numa_mem(cpu, node) | ||
72 | #endif | ||
73 | |||
74 | #endif /* !CONFIG_NUMA || !CONFIG_HAVE_MEMORYLESS_NODES */ | ||
75 | |||
58 | #endif /* _ASM_GENERIC_TOPOLOGY_H */ | 76 | #endif /* _ASM_GENERIC_TOPOLOGY_H */ |
diff --git a/include/asm-generic/unistd.h b/include/asm-generic/unistd.h index 0dfd517e5ec9..e1898090f22c 100644 --- a/include/asm-generic/unistd.h +++ b/include/asm-generic/unistd.h | |||
@@ -18,7 +18,7 @@ | |||
18 | #define __SYSCALL(x, y) | 18 | #define __SYSCALL(x, y) |
19 | #endif | 19 | #endif |
20 | 20 | ||
21 | #if __BITS_PER_LONG == 32 | 21 | #if __BITS_PER_LONG == 32 || defined(__SYSCALL_COMPAT) |
22 | #define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _32) | 22 | #define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _32) |
23 | #else | 23 | #else |
24 | #define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _64) | 24 | #define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _64) |
@@ -241,8 +241,13 @@ __SYSCALL(__NR_sync, sys_sync) | |||
241 | __SYSCALL(__NR_fsync, sys_fsync) | 241 | __SYSCALL(__NR_fsync, sys_fsync) |
242 | #define __NR_fdatasync 83 | 242 | #define __NR_fdatasync 83 |
243 | __SYSCALL(__NR_fdatasync, sys_fdatasync) | 243 | __SYSCALL(__NR_fdatasync, sys_fdatasync) |
244 | #ifdef __ARCH_WANT_SYNC_FILE_RANGE2 | ||
245 | #define __NR_sync_file_range2 84 | ||
246 | __SYSCALL(__NR_sync_file_range2, sys_sync_file_range2) | ||
247 | #else | ||
244 | #define __NR_sync_file_range 84 | 248 | #define __NR_sync_file_range 84 |
245 | __SYSCALL(__NR_sync_file_range, sys_sync_file_range) /* .long sys_sync_file_range2, */ | 249 | __SYSCALL(__NR_sync_file_range, sys_sync_file_range) |
250 | #endif | ||
246 | 251 | ||
247 | /* fs/timerfd.c */ | 252 | /* fs/timerfd.c */ |
248 | #define __NR_timerfd_create 85 | 253 | #define __NR_timerfd_create 85 |
@@ -580,7 +585,7 @@ __SYSCALL(__NR_execve, sys_execve) /* .long sys_execve_wrapper */ | |||
580 | __SC_3264(__NR3264_mmap, sys_mmap2, sys_mmap) | 585 | __SC_3264(__NR3264_mmap, sys_mmap2, sys_mmap) |
581 | /* mm/fadvise.c */ | 586 | /* mm/fadvise.c */ |
582 | #define __NR3264_fadvise64 223 | 587 | #define __NR3264_fadvise64 223 |
583 | __SC_3264(__NR3264_fadvise64, sys_fadvise64_64, sys_fadvise64) | 588 | __SYSCALL(__NR3264_fadvise64, sys_fadvise64_64) |
584 | 589 | ||
585 | /* mm/, CONFIG_MMU only */ | 590 | /* mm/, CONFIG_MMU only */ |
586 | #ifndef __ARCH_NOMMU | 591 | #ifndef __ARCH_NOMMU |
@@ -626,11 +631,20 @@ __SYSCALL(__NR_perf_event_open, sys_perf_event_open) | |||
626 | __SYSCALL(__NR_accept4, sys_accept4) | 631 | __SYSCALL(__NR_accept4, sys_accept4) |
627 | #define __NR_recvmmsg 243 | 632 | #define __NR_recvmmsg 243 |
628 | __SYSCALL(__NR_recvmmsg, sys_recvmmsg) | 633 | __SYSCALL(__NR_recvmmsg, sys_recvmmsg) |
629 | #define __NR_prlimit64 244 | 634 | |
635 | /* | ||
636 | * Architectures may provide up to 16 syscalls of their own | ||
637 | * starting with this value. | ||
638 | */ | ||
639 | #define __NR_arch_specific_syscall 244 | ||
640 | |||
641 | #define __NR_wait4 260 | ||
642 | __SYSCALL(__NR_wait4, sys_wait4) | ||
643 | #define __NR_prlimit64 261 | ||
630 | __SYSCALL(__NR_prlimit64, sys_prlimit64) | 644 | __SYSCALL(__NR_prlimit64, sys_prlimit64) |
631 | 645 | ||
632 | #undef __NR_syscalls | 646 | #undef __NR_syscalls |
633 | #define __NR_syscalls 245 | 647 | #define __NR_syscalls 262 |
634 | 648 | ||
635 | /* | 649 | /* |
636 | * All syscalls below here should go away really, | 650 | * All syscalls below here should go away really, |
@@ -696,7 +710,8 @@ __SYSCALL(__NR_signalfd, sys_signalfd) | |||
696 | #define __NR_syscalls (__NR_signalfd+1) | 710 | #define __NR_syscalls (__NR_signalfd+1) |
697 | #endif /* __ARCH_WANT_SYSCALL_NO_FLAGS */ | 711 | #endif /* __ARCH_WANT_SYSCALL_NO_FLAGS */ |
698 | 712 | ||
699 | #if __BITS_PER_LONG == 32 && defined(__ARCH_WANT_SYSCALL_OFF_T) | 713 | #if (__BITS_PER_LONG == 32 || defined(__SYSCALL_COMPAT)) && \ |
714 | defined(__ARCH_WANT_SYSCALL_OFF_T) | ||
700 | #define __NR_sendfile 1046 | 715 | #define __NR_sendfile 1046 |
701 | __SYSCALL(__NR_sendfile, sys_sendfile) | 716 | __SYSCALL(__NR_sendfile, sys_sendfile) |
702 | #define __NR_ftruncate 1047 | 717 | #define __NR_ftruncate 1047 |
@@ -742,6 +757,7 @@ __SYSCALL(__NR_getpgrp, sys_getpgrp) | |||
742 | __SYSCALL(__NR_pause, sys_pause) | 757 | __SYSCALL(__NR_pause, sys_pause) |
743 | #define __NR_time 1062 | 758 | #define __NR_time 1062 |
744 | #define __ARCH_WANT_SYS_TIME | 759 | #define __ARCH_WANT_SYS_TIME |
760 | #define __ARCH_WANT_COMPAT_SYS_TIME | ||
745 | __SYSCALL(__NR_time, sys_time) | 761 | __SYSCALL(__NR_time, sys_time) |
746 | #define __NR_utime 1063 | 762 | #define __NR_utime 1063 |
747 | #define __ARCH_WANT_SYS_UTIME | 763 | #define __ARCH_WANT_SYS_UTIME |
@@ -765,8 +781,8 @@ __SYSCALL(__NR_epoll_wait, sys_epoll_wait) | |||
765 | __SYSCALL(__NR_ustat, sys_ustat) | 781 | __SYSCALL(__NR_ustat, sys_ustat) |
766 | #define __NR_vfork 1071 | 782 | #define __NR_vfork 1071 |
767 | __SYSCALL(__NR_vfork, sys_vfork) | 783 | __SYSCALL(__NR_vfork, sys_vfork) |
768 | #define __NR_wait4 1072 | 784 | #define __NR_oldwait4 1072 |
769 | __SYSCALL(__NR_wait4, sys_wait4) | 785 | __SYSCALL(__NR_oldwait4, sys_wait4) |
770 | #define __NR_recv 1073 | 786 | #define __NR_recv 1073 |
771 | __SYSCALL(__NR_recv, sys_recv) | 787 | __SYSCALL(__NR_recv, sys_recv) |
772 | #define __NR_send 1074 | 788 | #define __NR_send 1074 |
@@ -803,7 +819,7 @@ __SYSCALL(__NR_fork, sys_ni_syscall) | |||
803 | * Here we map the numbers so that both versions | 819 | * Here we map the numbers so that both versions |
804 | * use the same syscall table layout. | 820 | * use the same syscall table layout. |
805 | */ | 821 | */ |
806 | #if __BITS_PER_LONG == 64 | 822 | #if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT) |
807 | #define __NR_fcntl __NR3264_fcntl | 823 | #define __NR_fcntl __NR3264_fcntl |
808 | #define __NR_statfs __NR3264_statfs | 824 | #define __NR_statfs __NR3264_statfs |
809 | #define __NR_fstatfs __NR3264_fstatfs | 825 | #define __NR_fstatfs __NR3264_fstatfs |
@@ -850,6 +866,7 @@ __SYSCALL(__NR_fork, sys_ni_syscall) | |||
850 | #endif | 866 | #endif |
851 | #define __ARCH_WANT_SYS_RT_SIGACTION | 867 | #define __ARCH_WANT_SYS_RT_SIGACTION |
852 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | 868 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND |
869 | #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND | ||
853 | 870 | ||
854 | /* | 871 | /* |
855 | * "Conditional" syscalls | 872 | * "Conditional" syscalls |
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 48c5299cbf26..8a92a170fb7d 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -63,6 +63,12 @@ | |||
63 | /* Align . to a 8 byte boundary equals to maximum function alignment. */ | 63 | /* Align . to a 8 byte boundary equals to maximum function alignment. */ |
64 | #define ALIGN_FUNCTION() . = ALIGN(8) | 64 | #define ALIGN_FUNCTION() . = ALIGN(8) |
65 | 65 | ||
66 | /* | ||
67 | * Align to a 32 byte boundary equal to the | ||
68 | * alignment gcc 4.5 uses for a struct | ||
69 | */ | ||
70 | #define STRUCT_ALIGN() . = ALIGN(32) | ||
71 | |||
66 | /* The actual configuration determine if the init/exit sections | 72 | /* The actual configuration determine if the init/exit sections |
67 | * are handled as text/data or they can be discarded (which | 73 | * are handled as text/data or they can be discarded (which |
68 | * often happens at runtime) | 74 | * often happens at runtime) |
@@ -150,10 +156,6 @@ | |||
150 | CPU_KEEP(exit.data) \ | 156 | CPU_KEEP(exit.data) \ |
151 | MEM_KEEP(init.data) \ | 157 | MEM_KEEP(init.data) \ |
152 | MEM_KEEP(exit.data) \ | 158 | MEM_KEEP(exit.data) \ |
153 | . = ALIGN(8); \ | ||
154 | VMLINUX_SYMBOL(__start___markers) = .; \ | ||
155 | *(__markers) \ | ||
156 | VMLINUX_SYMBOL(__stop___markers) = .; \ | ||
157 | . = ALIGN(32); \ | 159 | . = ALIGN(32); \ |
158 | VMLINUX_SYMBOL(__start___tracepoints) = .; \ | 160 | VMLINUX_SYMBOL(__start___tracepoints) = .; \ |
159 | *(__tracepoints) \ | 161 | *(__tracepoints) \ |
@@ -166,7 +168,11 @@ | |||
166 | LIKELY_PROFILE() \ | 168 | LIKELY_PROFILE() \ |
167 | BRANCH_PROFILE() \ | 169 | BRANCH_PROFILE() \ |
168 | TRACE_PRINTKS() \ | 170 | TRACE_PRINTKS() \ |
171 | \ | ||
172 | STRUCT_ALIGN(); \ | ||
169 | FTRACE_EVENTS() \ | 173 | FTRACE_EVENTS() \ |
174 | \ | ||
175 | STRUCT_ALIGN(); \ | ||
170 | TRACE_SYSCALLS() | 176 | TRACE_SYSCALLS() |
171 | 177 | ||
172 | /* | 178 | /* |
@@ -435,7 +441,7 @@ | |||
435 | */ | 441 | */ |
436 | #define INIT_TASK_DATA_SECTION(align) \ | 442 | #define INIT_TASK_DATA_SECTION(align) \ |
437 | . = ALIGN(align); \ | 443 | . = ALIGN(align); \ |
438 | .data..init_task : { \ | 444 | .data..init_task : AT(ADDR(.data..init_task) - LOAD_OFFSET) { \ |
439 | INIT_TASK_DATA(align) \ | 445 | INIT_TASK_DATA(align) \ |
440 | } | 446 | } |
441 | 447 | ||
@@ -643,6 +649,7 @@ | |||
643 | EXIT_DATA \ | 649 | EXIT_DATA \ |
644 | EXIT_CALL \ | 650 | EXIT_CALL \ |
645 | *(.discard) \ | 651 | *(.discard) \ |
652 | *(.discard.*) \ | ||
646 | } | 653 | } |
647 | 654 | ||
648 | /** | 655 | /** |