diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/acpi/acpi_bus.h | 1 | ||||
-rw-r--r-- | include/asm-blackfin/mach-bf533/bfin_serial_5xx.h | 11 | ||||
-rw-r--r-- | include/asm-blackfin/mach-bf537/bfin_serial_5xx.h | 23 | ||||
-rw-r--r-- | include/asm-blackfin/mach-bf537/portmux.h | 35 | ||||
-rw-r--r-- | include/asm-blackfin/mach-bf561/bfin_serial_5xx.h | 11 | ||||
-rw-r--r-- | include/asm-blackfin/portmux.h | 55 | ||||
-rw-r--r-- | include/asm-blackfin/unistd.h | 56 | ||||
-rw-r--r-- | include/asm-h8300/flat.h | 3 | ||||
-rw-r--r-- | include/asm-i386/system.h | 5 | ||||
-rw-r--r-- | include/asm-m32r/flat.h | 3 | ||||
-rw-r--r-- | include/asm-m68knommu/flat.h | 3 | ||||
-rw-r--r-- | include/asm-mips/cmpxchg.h | 107 | ||||
-rw-r--r-- | include/asm-mips/fcntl.h | 1 | ||||
-rw-r--r-- | include/asm-mips/local.h | 69 | ||||
-rw-r--r-- | include/asm-mips/page.h | 2 | ||||
-rw-r--r-- | include/asm-mips/system.h | 261 | ||||
-rw-r--r-- | include/asm-sh/flat.h | 3 | ||||
-rw-r--r-- | include/asm-v850/flat.h | 4 | ||||
-rw-r--r-- | include/asm-x86_64/processor.h | 2 | ||||
-rw-r--r-- | include/linux/sched.h | 2 | ||||
-rw-r--r-- | include/linux/writeback.h | 2 | ||||
-rw-r--r-- | include/net/rose.h | 2 | ||||
-rw-r--r-- | include/net/tcp.h | 6 |
23 files changed, 301 insertions, 366 deletions
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h index 17500a118782..7b74b60a68a4 100644 --- a/include/acpi/acpi_bus.h +++ b/include/acpi/acpi_bus.h | |||
@@ -332,6 +332,7 @@ int acpi_bus_get_power(acpi_handle handle, int *state); | |||
332 | int acpi_bus_set_power(acpi_handle handle, int state); | 332 | int acpi_bus_set_power(acpi_handle handle, int state); |
333 | #ifdef CONFIG_ACPI_PROC_EVENT | 333 | #ifdef CONFIG_ACPI_PROC_EVENT |
334 | int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data); | 334 | int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data); |
335 | int acpi_bus_generate_proc_event4(const char *class, const char *bid, u8 type, int data); | ||
335 | int acpi_bus_receive_event(struct acpi_bus_event *event); | 336 | int acpi_bus_receive_event(struct acpi_bus_event *event); |
336 | #else | 337 | #else |
337 | static inline int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data) | 338 | static inline int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data) |
diff --git a/include/asm-blackfin/mach-bf533/bfin_serial_5xx.h b/include/asm-blackfin/mach-bf533/bfin_serial_5xx.h index e043cafa3c42..69b9f8e120e9 100644 --- a/include/asm-blackfin/mach-bf533/bfin_serial_5xx.h +++ b/include/asm-blackfin/mach-bf533/bfin_serial_5xx.h | |||
@@ -1,5 +1,6 @@ | |||
1 | #include <linux/serial.h> | 1 | #include <linux/serial.h> |
2 | #include <asm/dma.h> | 2 | #include <asm/dma.h> |
3 | #include <asm/portmux.h> | ||
3 | 4 | ||
4 | #define NR_PORTS 1 | 5 | #define NR_PORTS 1 |
5 | 6 | ||
@@ -92,18 +93,24 @@ struct bfin_serial_res bfin_serial_resource[] = { | |||
92 | } | 93 | } |
93 | }; | 94 | }; |
94 | 95 | ||
96 | #define DRIVER_NAME "bfin-uart" | ||
95 | 97 | ||
96 | int nr_ports = NR_PORTS; | 98 | int nr_ports = NR_PORTS; |
97 | static void bfin_serial_hw_init(struct bfin_serial_port *uart) | 99 | static void bfin_serial_hw_init(struct bfin_serial_port *uart) |
98 | { | 100 | { |
99 | 101 | ||
102 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
103 | peripheral_request(P_UART0_TX, DRIVER_NAME); | ||
104 | peripheral_request(P_UART0_RX, DRIVER_NAME); | ||
105 | #endif | ||
106 | |||
100 | #ifdef CONFIG_SERIAL_BFIN_CTSRTS | 107 | #ifdef CONFIG_SERIAL_BFIN_CTSRTS |
101 | if (uart->cts_pin >= 0) { | 108 | if (uart->cts_pin >= 0) { |
102 | gpio_request(uart->cts_pin, NULL); | 109 | gpio_request(uart->cts_pin, DRIVER_NAME); |
103 | gpio_direction_input(uart->cts_pin); | 110 | gpio_direction_input(uart->cts_pin); |
104 | } | 111 | } |
105 | if (uart->rts_pin >= 0) { | 112 | if (uart->rts_pin >= 0) { |
106 | gpio_request(uart->rts_pin, NULL); | 113 | gpio_request(uart->rts_pin, DRIVER_NAME); |
107 | gpio_direction_input(uart->rts_pin); | 114 | gpio_direction_input(uart->rts_pin); |
108 | } | 115 | } |
109 | #endif | 116 | #endif |
diff --git a/include/asm-blackfin/mach-bf537/bfin_serial_5xx.h b/include/asm-blackfin/mach-bf537/bfin_serial_5xx.h index 8f5d9c4d8d5b..6fb328f5186a 100644 --- a/include/asm-blackfin/mach-bf537/bfin_serial_5xx.h +++ b/include/asm-blackfin/mach-bf537/bfin_serial_5xx.h | |||
@@ -1,5 +1,6 @@ | |||
1 | #include <linux/serial.h> | 1 | #include <linux/serial.h> |
2 | #include <asm/dma.h> | 2 | #include <asm/dma.h> |
3 | #include <asm/portmux.h> | ||
3 | 4 | ||
4 | #define NR_PORTS 2 | 5 | #define NR_PORTS 2 |
5 | 6 | ||
@@ -122,25 +123,29 @@ struct bfin_serial_res bfin_serial_resource[] = { | |||
122 | 123 | ||
123 | int nr_ports = ARRAY_SIZE(bfin_serial_resource); | 124 | int nr_ports = ARRAY_SIZE(bfin_serial_resource); |
124 | 125 | ||
126 | #define DRIVER_NAME "bfin-uart" | ||
127 | |||
125 | static void bfin_serial_hw_init(struct bfin_serial_port *uart) | 128 | static void bfin_serial_hw_init(struct bfin_serial_port *uart) |
126 | { | 129 | { |
127 | unsigned short val; | ||
128 | val = bfin_read16(BFIN_PORT_MUX); | ||
129 | val &= ~(PFDE | PFTE); | ||
130 | bfin_write16(BFIN_PORT_MUX, val); | ||
131 | 130 | ||
132 | val = bfin_read16(PORTF_FER); | 131 | #ifdef CONFIG_SERIAL_BFIN_UART0 |
133 | val |= 0xF; | 132 | peripheral_request(P_UART0_TX, DRIVER_NAME); |
134 | bfin_write16(PORTF_FER, val); | 133 | peripheral_request(P_UART0_RX, DRIVER_NAME); |
134 | #endif | ||
135 | |||
136 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
137 | peripheral_request(P_UART1_TX, DRIVER_NAME); | ||
138 | peripheral_request(P_UART1_RX, DRIVER_NAME); | ||
139 | #endif | ||
135 | 140 | ||
136 | #ifdef CONFIG_SERIAL_BFIN_CTSRTS | 141 | #ifdef CONFIG_SERIAL_BFIN_CTSRTS |
137 | if (uart->cts_pin >= 0) { | 142 | if (uart->cts_pin >= 0) { |
138 | gpio_request(uart->cts_pin, NULL); | 143 | gpio_request(uart->cts_pin, DRIVER_NAME); |
139 | gpio_direction_input(uart->cts_pin); | 144 | gpio_direction_input(uart->cts_pin); |
140 | } | 145 | } |
141 | 146 | ||
142 | if (uart->rts_pin >= 0) { | 147 | if (uart->rts_pin >= 0) { |
143 | gpio_request(uart->rts_pin, NULL); | 148 | gpio_request(uart->rts_pin, DRIVER_NAME); |
144 | gpio_direction_output(uart->rts_pin); | 149 | gpio_direction_output(uart->rts_pin); |
145 | } | 150 | } |
146 | #endif | 151 | #endif |
diff --git a/include/asm-blackfin/mach-bf537/portmux.h b/include/asm-blackfin/mach-bf537/portmux.h index 23e13c5abc4d..ae6c53b28452 100644 --- a/include/asm-blackfin/mach-bf537/portmux.h +++ b/include/asm-blackfin/mach-bf537/portmux.h | |||
@@ -106,4 +106,37 @@ | |||
106 | #define P_SPI0_SSEL2 (P_DEFINED | P_IDENT(PORT_PJ11) | P_FUNCT(1)) | 106 | #define P_SPI0_SSEL2 (P_DEFINED | P_IDENT(PORT_PJ11) | P_FUNCT(1)) |
107 | #define P_SPI0_SSEL7 (P_DEFINED | P_IDENT(PORT_PJ5) | P_FUNCT(2)) | 107 | #define P_SPI0_SSEL7 (P_DEFINED | P_IDENT(PORT_PJ5) | P_FUNCT(2)) |
108 | 108 | ||
109 | #endif /* _MACH_PORTMUX_H_ */ | 109 | #define P_MII0 {\ |
110 | P_MII0_ETxD0, \ | ||
111 | P_MII0_ETxD1, \ | ||
112 | P_MII0_ETxD2, \ | ||
113 | P_MII0_ETxD3, \ | ||
114 | P_MII0_ETxEN, \ | ||
115 | P_MII0_TxCLK, \ | ||
116 | P_MII0_PHYINT, \ | ||
117 | P_MII0_COL, \ | ||
118 | P_MII0_ERxD0, \ | ||
119 | P_MII0_ERxD1, \ | ||
120 | P_MII0_ERxD2, \ | ||
121 | P_MII0_ERxD3, \ | ||
122 | P_MII0_ERxDV, \ | ||
123 | P_MII0_ERxCLK, \ | ||
124 | P_MII0_ERxER, \ | ||
125 | P_MII0_CRS, \ | ||
126 | P_MDC, \ | ||
127 | P_MDIO, 0} | ||
128 | |||
129 | |||
130 | #define P_RMII0 {\ | ||
131 | P_MII0_ETxD0, \ | ||
132 | P_MII0_ETxD1, \ | ||
133 | P_MII0_ETxEN, \ | ||
134 | P_MII0_ERxD0, \ | ||
135 | P_MII0_ERxD1, \ | ||
136 | P_MII0_ERxER, \ | ||
137 | P_RMII0_REF_CLK, \ | ||
138 | P_RMII0_MDINT, \ | ||
139 | P_RMII0_CRS_DV, \ | ||
140 | P_MDC, \ | ||
141 | P_MDIO, 0} | ||
142 | #endif /* _MACH_PORTMUX_H_ */ | ||
diff --git a/include/asm-blackfin/mach-bf561/bfin_serial_5xx.h b/include/asm-blackfin/mach-bf561/bfin_serial_5xx.h index e043cafa3c42..69b9f8e120e9 100644 --- a/include/asm-blackfin/mach-bf561/bfin_serial_5xx.h +++ b/include/asm-blackfin/mach-bf561/bfin_serial_5xx.h | |||
@@ -1,5 +1,6 @@ | |||
1 | #include <linux/serial.h> | 1 | #include <linux/serial.h> |
2 | #include <asm/dma.h> | 2 | #include <asm/dma.h> |
3 | #include <asm/portmux.h> | ||
3 | 4 | ||
4 | #define NR_PORTS 1 | 5 | #define NR_PORTS 1 |
5 | 6 | ||
@@ -92,18 +93,24 @@ struct bfin_serial_res bfin_serial_resource[] = { | |||
92 | } | 93 | } |
93 | }; | 94 | }; |
94 | 95 | ||
96 | #define DRIVER_NAME "bfin-uart" | ||
95 | 97 | ||
96 | int nr_ports = NR_PORTS; | 98 | int nr_ports = NR_PORTS; |
97 | static void bfin_serial_hw_init(struct bfin_serial_port *uart) | 99 | static void bfin_serial_hw_init(struct bfin_serial_port *uart) |
98 | { | 100 | { |
99 | 101 | ||
102 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
103 | peripheral_request(P_UART0_TX, DRIVER_NAME); | ||
104 | peripheral_request(P_UART0_RX, DRIVER_NAME); | ||
105 | #endif | ||
106 | |||
100 | #ifdef CONFIG_SERIAL_BFIN_CTSRTS | 107 | #ifdef CONFIG_SERIAL_BFIN_CTSRTS |
101 | if (uart->cts_pin >= 0) { | 108 | if (uart->cts_pin >= 0) { |
102 | gpio_request(uart->cts_pin, NULL); | 109 | gpio_request(uart->cts_pin, DRIVER_NAME); |
103 | gpio_direction_input(uart->cts_pin); | 110 | gpio_direction_input(uart->cts_pin); |
104 | } | 111 | } |
105 | if (uart->rts_pin >= 0) { | 112 | if (uart->rts_pin >= 0) { |
106 | gpio_request(uart->rts_pin, NULL); | 113 | gpio_request(uart->rts_pin, DRIVER_NAME); |
107 | gpio_direction_input(uart->rts_pin); | 114 | gpio_direction_input(uart->rts_pin); |
108 | } | 115 | } |
109 | #endif | 116 | #endif |
diff --git a/include/asm-blackfin/portmux.h b/include/asm-blackfin/portmux.h index 9d3681e42111..0d3f650d2d99 100644 --- a/include/asm-blackfin/portmux.h +++ b/include/asm-blackfin/portmux.h | |||
@@ -14,6 +14,12 @@ | |||
14 | #define P_MAYSHARE 0x2000 | 14 | #define P_MAYSHARE 0x2000 |
15 | #define P_DONTCARE 0x1000 | 15 | #define P_DONTCARE 0x1000 |
16 | 16 | ||
17 | |||
18 | int peripheral_request(unsigned short per, const char *label); | ||
19 | void peripheral_free(unsigned short per); | ||
20 | int peripheral_request_list(unsigned short per[], const char *label); | ||
21 | void peripheral_free_list(unsigned short per[]); | ||
22 | |||
17 | #include <asm/gpio.h> | 23 | #include <asm/gpio.h> |
18 | #include <asm/mach/portmux.h> | 24 | #include <asm/mach/portmux.h> |
19 | 25 | ||
@@ -145,6 +151,22 @@ | |||
145 | #define P_SPI2_SSEL3 P_UNDEF | 151 | #define P_SPI2_SSEL3 P_UNDEF |
146 | #endif | 152 | #endif |
147 | 153 | ||
154 | #ifndef P_SPI2_SSEL4 | ||
155 | #define P_SPI2_SSEL4 P_UNDEF | ||
156 | #endif | ||
157 | |||
158 | #ifndef P_SPI2_SSEL5 | ||
159 | #define P_SPI2_SSEL5 P_UNDEF | ||
160 | #endif | ||
161 | |||
162 | #ifndef P_SPI2_SSEL6 | ||
163 | #define P_SPI2_SSEL6 P_UNDEF | ||
164 | #endif | ||
165 | |||
166 | #ifndef P_SPI2_SSEL7 | ||
167 | #define P_SPI2_SSEL7 P_UNDEF | ||
168 | #endif | ||
169 | |||
148 | #ifndef P_SPI2_SCK | 170 | #ifndef P_SPI2_SCK |
149 | #define P_SPI2_SCK P_UNDEF | 171 | #define P_SPI2_SCK P_UNDEF |
150 | #endif | 172 | #endif |
@@ -513,6 +535,22 @@ | |||
513 | #define P_SPI0_SSEL3 P_UNDEF | 535 | #define P_SPI0_SSEL3 P_UNDEF |
514 | #endif | 536 | #endif |
515 | 537 | ||
538 | #ifndef P_SPI0_SSEL4 | ||
539 | #define P_SPI0_SSEL4 P_UNDEF | ||
540 | #endif | ||
541 | |||
542 | #ifndef P_SPI0_SSEL5 | ||
543 | #define P_SPI0_SSEL5 P_UNDEF | ||
544 | #endif | ||
545 | |||
546 | #ifndef P_SPI0_SSEL6 | ||
547 | #define P_SPI0_SSEL6 P_UNDEF | ||
548 | #endif | ||
549 | |||
550 | #ifndef P_SPI0_SSEL7 | ||
551 | #define P_SPI0_SSEL7 P_UNDEF | ||
552 | #endif | ||
553 | |||
516 | #ifndef P_UART0_TX | 554 | #ifndef P_UART0_TX |
517 | #define P_UART0_TX P_UNDEF | 555 | #define P_UART0_TX P_UNDEF |
518 | #endif | 556 | #endif |
@@ -741,6 +779,23 @@ | |||
741 | #define P_SPI1_SSEL3 P_UNDEF | 779 | #define P_SPI1_SSEL3 P_UNDEF |
742 | #endif | 780 | #endif |
743 | 781 | ||
782 | |||
783 | #ifndef P_SPI1_SSEL4 | ||
784 | #define P_SPI1_SSEL4 P_UNDEF | ||
785 | #endif | ||
786 | |||
787 | #ifndef P_SPI1_SSEL5 | ||
788 | #define P_SPI1_SSEL5 P_UNDEF | ||
789 | #endif | ||
790 | |||
791 | #ifndef P_SPI1_SSEL6 | ||
792 | #define P_SPI1_SSEL6 P_UNDEF | ||
793 | #endif | ||
794 | |||
795 | #ifndef P_SPI1_SSEL7 | ||
796 | #define P_SPI1_SSEL7 P_UNDEF | ||
797 | #endif | ||
798 | |||
744 | #ifndef P_SPI1_SCK | 799 | #ifndef P_SPI1_SCK |
745 | #define P_SPI1_SCK P_UNDEF | 800 | #define P_SPI1_SCK P_UNDEF |
746 | #endif | 801 | #endif |
diff --git a/include/asm-blackfin/unistd.h b/include/asm-blackfin/unistd.h index 0df9f2d322a3..07ffe8b718c5 100644 --- a/include/asm-blackfin/unistd.h +++ b/include/asm-blackfin/unistd.h | |||
@@ -3,6 +3,7 @@ | |||
3 | /* | 3 | /* |
4 | * This file contains the system call numbers. | 4 | * This file contains the system call numbers. |
5 | */ | 5 | */ |
6 | #define __NR_restart_syscall 0 | ||
6 | #define __NR_exit 1 | 7 | #define __NR_exit 1 |
7 | #define __NR_fork 2 | 8 | #define __NR_fork 2 |
8 | #define __NR_read 3 | 9 | #define __NR_read 3 |
@@ -165,13 +166,13 @@ | |||
165 | #define __NR_sched_get_priority_min 160 | 166 | #define __NR_sched_get_priority_min 160 |
166 | #define __NR_sched_rr_get_interval 161 | 167 | #define __NR_sched_rr_get_interval 161 |
167 | #define __NR_nanosleep 162 | 168 | #define __NR_nanosleep 162 |
168 | /* 163 __NR_mremap */ | 169 | #define __NR_mremap 163 |
169 | #define __NR_setresuid 164 | 170 | #define __NR_setresuid 164 |
170 | #define __NR_getresuid 165 | 171 | #define __NR_getresuid 165 |
171 | /* 166 __NR_vm86 */ | 172 | /* 166 __NR_vm86 */ |
172 | /* 167 __NR_query_module */ | 173 | /* 167 __NR_query_module */ |
173 | /* 168 __NR_poll */ | 174 | /* 168 __NR_poll */ |
174 | /* 169 __NR_nfsservctl */ | 175 | #define __NR_nfsservctl 169 |
175 | #define __NR_setresgid 170 | 176 | #define __NR_setresgid 170 |
176 | #define __NR_getresgid 171 | 177 | #define __NR_getresgid 171 |
177 | #define __NR_prctl 172 | 178 | #define __NR_prctl 172 |
@@ -227,7 +228,7 @@ | |||
227 | /* 222 reserved for TUX */ | 228 | /* 222 reserved for TUX */ |
228 | /* 223 reserved for TUX */ | 229 | /* 223 reserved for TUX */ |
229 | #define __NR_gettid 224 | 230 | #define __NR_gettid 224 |
230 | /* 225 __NR_readahead */ | 231 | #define __NR_readahead 225 |
231 | #define __NR_setxattr 226 | 232 | #define __NR_setxattr 226 |
232 | #define __NR_lsetxattr 227 | 233 | #define __NR_lsetxattr 227 |
233 | #define __NR_fsetxattr 228 | 234 | #define __NR_fsetxattr 228 |
@@ -287,7 +288,7 @@ | |||
287 | #define __NR_mq_timedreceive (__NR_mq_open+3) | 288 | #define __NR_mq_timedreceive (__NR_mq_open+3) |
288 | #define __NR_mq_notify (__NR_mq_open+4) | 289 | #define __NR_mq_notify (__NR_mq_open+4) |
289 | #define __NR_mq_getsetattr (__NR_mq_open+5) | 290 | #define __NR_mq_getsetattr (__NR_mq_open+5) |
290 | /* 284 __NR_sys_kexec_load */ | 291 | #define __NR_kexec_load 284 |
291 | #define __NR_waitid 285 | 292 | #define __NR_waitid 285 |
292 | #define __NR_add_key 286 | 293 | #define __NR_add_key 286 |
293 | #define __NR_request_key 287 | 294 | #define __NR_request_key 287 |
@@ -352,9 +353,54 @@ | |||
352 | #define __NR_shmdt 340 | 353 | #define __NR_shmdt 340 |
353 | #define __NR_shmget 341 | 354 | #define __NR_shmget 341 |
354 | 355 | ||
355 | #define __NR_syscall 342 | 356 | #define __NR_splice 342 |
357 | #define __NR_sync_file_range 343 | ||
358 | #define __NR_tee 344 | ||
359 | #define __NR_vmsplice 345 | ||
360 | |||
361 | #define __NR_epoll_pwait 346 | ||
362 | #define __NR_utimensat 347 | ||
363 | #define __NR_signalfd 348 | ||
364 | #define __NR_timerfd 349 | ||
365 | #define __NR_eventfd 350 | ||
366 | #define __NR_pread64 351 | ||
367 | #define __NR_pwrite64 352 | ||
368 | #define __NR_fadvise64 353 | ||
369 | #define __NR_set_robust_list 354 | ||
370 | #define __NR_get_robust_list 355 | ||
371 | #define __NR_fallocate 356 | ||
372 | |||
373 | #define __NR_syscall 357 | ||
356 | #define NR_syscalls __NR_syscall | 374 | #define NR_syscalls __NR_syscall |
357 | 375 | ||
376 | /* Old optional stuff no one actually uses */ | ||
377 | #define __IGNORE_sysfs | ||
378 | #define __IGNORE_uselib | ||
379 | |||
380 | /* Implement the newer interfaces */ | ||
381 | #define __IGNORE_mmap | ||
382 | #define __IGNORE_poll | ||
383 | #define __IGNORE_select | ||
384 | #define __IGNORE_utime | ||
385 | |||
386 | /* Not relevant on no-mmu */ | ||
387 | #define __IGNORE_swapon | ||
388 | #define __IGNORE_swapoff | ||
389 | #define __IGNORE_msync | ||
390 | #define __IGNORE_mlock | ||
391 | #define __IGNORE_munlock | ||
392 | #define __IGNORE_mlockall | ||
393 | #define __IGNORE_munlockall | ||
394 | #define __IGNORE_mincore | ||
395 | #define __IGNORE_madvise | ||
396 | #define __IGNORE_remap_file_pages | ||
397 | #define __IGNORE_mbind | ||
398 | #define __IGNORE_get_mempolicy | ||
399 | #define __IGNORE_set_mempolicy | ||
400 | #define __IGNORE_migrate_pages | ||
401 | #define __IGNORE_move_pages | ||
402 | #define __IGNORE_getcpu | ||
403 | |||
358 | #ifdef __KERNEL__ | 404 | #ifdef __KERNEL__ |
359 | #define __ARCH_WANT_IPC_PARSE_VERSION | 405 | #define __ARCH_WANT_IPC_PARSE_VERSION |
360 | #define __ARCH_WANT_STAT64 | 406 | #define __ARCH_WANT_STAT64 |
diff --git a/include/asm-h8300/flat.h b/include/asm-h8300/flat.h index c20eee767d6f..2a873508a9a1 100644 --- a/include/asm-h8300/flat.h +++ b/include/asm-h8300/flat.h | |||
@@ -9,6 +9,7 @@ | |||
9 | #define flat_argvp_envp_on_stack() 1 | 9 | #define flat_argvp_envp_on_stack() 1 |
10 | #define flat_old_ram_flag(flags) 1 | 10 | #define flat_old_ram_flag(flags) 1 |
11 | #define flat_reloc_valid(reloc, size) ((reloc) <= (size)) | 11 | #define flat_reloc_valid(reloc, size) ((reloc) <= (size)) |
12 | #define flat_set_persistent(relval, p) 0 | ||
12 | 13 | ||
13 | /* | 14 | /* |
14 | * on the H8 a couple of the relocations have an instruction in the | 15 | * on the H8 a couple of the relocations have an instruction in the |
@@ -18,7 +19,7 @@ | |||
18 | */ | 19 | */ |
19 | 20 | ||
20 | #define flat_get_relocate_addr(rel) (rel) | 21 | #define flat_get_relocate_addr(rel) (rel) |
21 | #define flat_get_addr_from_rp(rp, relval, flags) \ | 22 | #define flat_get_addr_from_rp(rp, relval, flags, persistent) \ |
22 | (get_unaligned(rp) & ((flags & FLAT_FLAG_GOTPIC) ? 0xffffffff: 0x00ffffff)) | 23 | (get_unaligned(rp) & ((flags & FLAT_FLAG_GOTPIC) ? 0xffffffff: 0x00ffffff)) |
23 | #define flat_put_addr_at_rp(rp, addr, rel) \ | 24 | #define flat_put_addr_at_rp(rp, addr, rel) \ |
24 | put_unaligned (((*(char *)(rp)) << 24) | ((addr) & 0x00ffffff), rp) | 25 | put_unaligned (((*(char *)(rp)) << 24) | ((addr) & 0x00ffffff), rp) |
diff --git a/include/asm-i386/system.h b/include/asm-i386/system.h index 609756c61676..d69ba937e092 100644 --- a/include/asm-i386/system.h +++ b/include/asm-i386/system.h | |||
@@ -214,11 +214,6 @@ static inline unsigned long get_limit(unsigned long segment) | |||
214 | */ | 214 | */ |
215 | 215 | ||
216 | 216 | ||
217 | /* | ||
218 | * Actually only lfence would be needed for mb() because all stores done | ||
219 | * by the kernel should be already ordered. But keep a full barrier for now. | ||
220 | */ | ||
221 | |||
222 | #define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2) | 217 | #define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2) |
223 | #define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2) | 218 | #define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2) |
224 | 219 | ||
diff --git a/include/asm-m32r/flat.h b/include/asm-m32r/flat.h index 1b285f65cab6..d851cf0c4aa5 100644 --- a/include/asm-m32r/flat.h +++ b/include/asm-m32r/flat.h | |||
@@ -15,9 +15,10 @@ | |||
15 | #define flat_stack_align(sp) (*sp += (*sp & 3 ? (4 - (*sp & 3)): 0)) | 15 | #define flat_stack_align(sp) (*sp += (*sp & 3 ? (4 - (*sp & 3)): 0)) |
16 | #define flat_argvp_envp_on_stack() 0 | 16 | #define flat_argvp_envp_on_stack() 0 |
17 | #define flat_old_ram_flag(flags) (flags) | 17 | #define flat_old_ram_flag(flags) (flags) |
18 | #define flat_set_persistent(relval, p) 0 | ||
18 | #define flat_reloc_valid(reloc, size) \ | 19 | #define flat_reloc_valid(reloc, size) \ |
19 | (((reloc) - textlen_for_m32r_lo16_data) <= (size)) | 20 | (((reloc) - textlen_for_m32r_lo16_data) <= (size)) |
20 | #define flat_get_addr_from_rp(rp, relval, flags) \ | 21 | #define flat_get_addr_from_rp(rp, relval, flags, persistent) \ |
21 | m32r_flat_get_addr_from_rp(rp, relval, (text_len) ) | 22 | m32r_flat_get_addr_from_rp(rp, relval, (text_len) ) |
22 | 23 | ||
23 | #define flat_put_addr_at_rp(rp, addr, relval) \ | 24 | #define flat_put_addr_at_rp(rp, addr, relval) \ |
diff --git a/include/asm-m68knommu/flat.h b/include/asm-m68knommu/flat.h index 2d836edc4344..814b5174a8e0 100644 --- a/include/asm-m68knommu/flat.h +++ b/include/asm-m68knommu/flat.h | |||
@@ -9,8 +9,9 @@ | |||
9 | #define flat_argvp_envp_on_stack() 1 | 9 | #define flat_argvp_envp_on_stack() 1 |
10 | #define flat_old_ram_flag(flags) (flags) | 10 | #define flat_old_ram_flag(flags) (flags) |
11 | #define flat_reloc_valid(reloc, size) ((reloc) <= (size)) | 11 | #define flat_reloc_valid(reloc, size) ((reloc) <= (size)) |
12 | #define flat_get_addr_from_rp(rp, relval, flags) get_unaligned(rp) | 12 | #define flat_get_addr_from_rp(rp, relval, flags, p) get_unaligned(rp) |
13 | #define flat_put_addr_at_rp(rp, val, relval) put_unaligned(val,rp) | 13 | #define flat_put_addr_at_rp(rp, val, relval) put_unaligned(val,rp) |
14 | #define flat_get_relocate_addr(rel) (rel) | 14 | #define flat_get_relocate_addr(rel) (rel) |
15 | #define flat_set_persistent(relval, p) 0 | ||
15 | 16 | ||
16 | #endif /* __M68KNOMMU_FLAT_H__ */ | 17 | #endif /* __M68KNOMMU_FLAT_H__ */ |
diff --git a/include/asm-mips/cmpxchg.h b/include/asm-mips/cmpxchg.h new file mode 100644 index 000000000000..c5b4708e003b --- /dev/null +++ b/include/asm-mips/cmpxchg.h | |||
@@ -0,0 +1,107 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2003, 06, 07 by Ralf Baechle (ralf@linux-mips.org) | ||
7 | */ | ||
8 | #ifndef __ASM_CMPXCHG_H | ||
9 | #define __ASM_CMPXCHG_H | ||
10 | |||
11 | #include <linux/irqflags.h> | ||
12 | |||
13 | #define __HAVE_ARCH_CMPXCHG 1 | ||
14 | |||
15 | #define __cmpxchg_asm(ld, st, m, old, new) \ | ||
16 | ({ \ | ||
17 | __typeof(*(m)) __ret; \ | ||
18 | \ | ||
19 | if (cpu_has_llsc && R10000_LLSC_WAR) { \ | ||
20 | __asm__ __volatile__( \ | ||
21 | " .set push \n" \ | ||
22 | " .set noat \n" \ | ||
23 | " .set mips3 \n" \ | ||
24 | "1: " ld " %0, %2 # __cmpxchg_asm \n" \ | ||
25 | " bne %0, %z3, 2f \n" \ | ||
26 | " .set mips0 \n" \ | ||
27 | " move $1, %z4 \n" \ | ||
28 | " .set mips3 \n" \ | ||
29 | " " st " $1, %1 \n" \ | ||
30 | " beqzl $1, 1b \n" \ | ||
31 | "2: \n" \ | ||
32 | " .set pop \n" \ | ||
33 | : "=&r" (__ret), "=R" (*m) \ | ||
34 | : "R" (*m), "Jr" (old), "Jr" (new) \ | ||
35 | : "memory"); \ | ||
36 | } else if (cpu_has_llsc) { \ | ||
37 | __asm__ __volatile__( \ | ||
38 | " .set push \n" \ | ||
39 | " .set noat \n" \ | ||
40 | " .set mips3 \n" \ | ||
41 | "1: " ld " %0, %2 # __cmpxchg_asm \n" \ | ||
42 | " bne %0, %z3, 2f \n" \ | ||
43 | " .set mips0 \n" \ | ||
44 | " move $1, %z4 \n" \ | ||
45 | " .set mips3 \n" \ | ||
46 | " " st " $1, %1 \n" \ | ||
47 | " beqz $1, 3f \n" \ | ||
48 | "2: \n" \ | ||
49 | " .subsection 2 \n" \ | ||
50 | "3: b 1b \n" \ | ||
51 | " .previous \n" \ | ||
52 | " .set pop \n" \ | ||
53 | : "=&r" (__ret), "=R" (*m) \ | ||
54 | : "R" (*m), "Jr" (old), "Jr" (new) \ | ||
55 | : "memory"); \ | ||
56 | } else { \ | ||
57 | unsigned long __flags; \ | ||
58 | \ | ||
59 | raw_local_irq_save(__flags); \ | ||
60 | __ret = *m; \ | ||
61 | if (__ret == old) \ | ||
62 | *m = new; \ | ||
63 | raw_local_irq_restore(__flags); \ | ||
64 | } \ | ||
65 | \ | ||
66 | __ret; \ | ||
67 | }) | ||
68 | |||
69 | /* | ||
70 | * This function doesn't exist, so you'll get a linker error | ||
71 | * if something tries to do an invalid cmpxchg(). | ||
72 | */ | ||
73 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
74 | |||
75 | #define __cmpxchg(ptr,old,new,barrier) \ | ||
76 | ({ \ | ||
77 | __typeof__(ptr) __ptr = (ptr); \ | ||
78 | __typeof__(*(ptr)) __old = (old); \ | ||
79 | __typeof__(*(ptr)) __new = (new); \ | ||
80 | __typeof__(*(ptr)) __res = 0; \ | ||
81 | \ | ||
82 | barrier; \ | ||
83 | \ | ||
84 | switch (sizeof(*(__ptr))) { \ | ||
85 | case 4: \ | ||
86 | __res = __cmpxchg_asm("ll", "sc", __ptr, __old, __new); \ | ||
87 | break; \ | ||
88 | case 8: \ | ||
89 | if (sizeof(long) == 8) { \ | ||
90 | __res = __cmpxchg_asm("lld", "scd", __ptr, \ | ||
91 | __old, __new); \ | ||
92 | break; \ | ||
93 | } \ | ||
94 | default: \ | ||
95 | __cmpxchg_called_with_bad_pointer(); \ | ||
96 | break; \ | ||
97 | } \ | ||
98 | \ | ||
99 | barrier; \ | ||
100 | \ | ||
101 | __res; \ | ||
102 | }) | ||
103 | |||
104 | #define cmpxchg(ptr, old, new) __cmpxchg(ptr, old, new, smp_llsc_mb()) | ||
105 | #define cmpxchg_local(ptr, old, new) __cmpxchg(ptr, old, new,) | ||
106 | |||
107 | #endif /* __ASM_CMPXCHG_H */ | ||
diff --git a/include/asm-mips/fcntl.h b/include/asm-mips/fcntl.h index 00a50ec1c19f..2a52333a062d 100644 --- a/include/asm-mips/fcntl.h +++ b/include/asm-mips/fcntl.h | |||
@@ -13,6 +13,7 @@ | |||
13 | #define O_SYNC 0x0010 | 13 | #define O_SYNC 0x0010 |
14 | #define O_NONBLOCK 0x0080 | 14 | #define O_NONBLOCK 0x0080 |
15 | #define O_CREAT 0x0100 /* not fcntl */ | 15 | #define O_CREAT 0x0100 /* not fcntl */ |
16 | #define O_TRUNC 0x0200 /* not fcntl */ | ||
16 | #define O_EXCL 0x0400 /* not fcntl */ | 17 | #define O_EXCL 0x0400 /* not fcntl */ |
17 | #define O_NOCTTY 0x0800 /* not fcntl */ | 18 | #define O_NOCTTY 0x0800 /* not fcntl */ |
18 | #define FASYNC 0x1000 /* fcntl, for BSD compatibility */ | 19 | #define FASYNC 0x1000 /* fcntl, for BSD compatibility */ |
diff --git a/include/asm-mips/local.h b/include/asm-mips/local.h index ed882c88e0ca..f9a5ce5c9af1 100644 --- a/include/asm-mips/local.h +++ b/include/asm-mips/local.h | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <linux/percpu.h> | 4 | #include <linux/percpu.h> |
5 | #include <linux/bitops.h> | 5 | #include <linux/bitops.h> |
6 | #include <asm/atomic.h> | 6 | #include <asm/atomic.h> |
7 | #include <asm/cmpxchg.h> | ||
7 | #include <asm/war.h> | 8 | #include <asm/war.h> |
8 | 9 | ||
9 | typedef struct | 10 | typedef struct |
@@ -114,68 +115,6 @@ static __inline__ long local_sub_return(long i, local_t * l) | |||
114 | return result; | 115 | return result; |
115 | } | 116 | } |
116 | 117 | ||
117 | /* | ||
118 | * local_sub_if_positive - conditionally subtract integer from atomic variable | ||
119 | * @i: integer value to subtract | ||
120 | * @l: pointer of type local_t | ||
121 | * | ||
122 | * Atomically test @l and subtract @i if @l is greater or equal than @i. | ||
123 | * The function returns the old value of @l minus @i. | ||
124 | */ | ||
125 | static __inline__ long local_sub_if_positive(long i, local_t * l) | ||
126 | { | ||
127 | unsigned long result; | ||
128 | |||
129 | if (cpu_has_llsc && R10000_LLSC_WAR) { | ||
130 | unsigned long temp; | ||
131 | |||
132 | __asm__ __volatile__( | ||
133 | " .set mips3 \n" | ||
134 | "1:" __LL "%1, %2 # local_sub_if_positive\n" | ||
135 | " dsubu %0, %1, %3 \n" | ||
136 | " bltz %0, 1f \n" | ||
137 | __SC "%0, %2 \n" | ||
138 | " .set noreorder \n" | ||
139 | " beqzl %0, 1b \n" | ||
140 | " dsubu %0, %1, %3 \n" | ||
141 | " .set reorder \n" | ||
142 | "1: \n" | ||
143 | " .set mips0 \n" | ||
144 | : "=&r" (result), "=&r" (temp), "=m" (l->a.counter) | ||
145 | : "Ir" (i), "m" (l->a.counter) | ||
146 | : "memory"); | ||
147 | } else if (cpu_has_llsc) { | ||
148 | unsigned long temp; | ||
149 | |||
150 | __asm__ __volatile__( | ||
151 | " .set mips3 \n" | ||
152 | "1:" __LL "%1, %2 # local_sub_if_positive\n" | ||
153 | " dsubu %0, %1, %3 \n" | ||
154 | " bltz %0, 1f \n" | ||
155 | __SC "%0, %2 \n" | ||
156 | " .set noreorder \n" | ||
157 | " beqz %0, 1b \n" | ||
158 | " dsubu %0, %1, %3 \n" | ||
159 | " .set reorder \n" | ||
160 | "1: \n" | ||
161 | " .set mips0 \n" | ||
162 | : "=&r" (result), "=&r" (temp), "=m" (l->a.counter) | ||
163 | : "Ir" (i), "m" (l->a.counter) | ||
164 | : "memory"); | ||
165 | } else { | ||
166 | unsigned long flags; | ||
167 | |||
168 | local_irq_save(flags); | ||
169 | result = l->a.counter; | ||
170 | result -= i; | ||
171 | if (result >= 0) | ||
172 | l->a.counter = result; | ||
173 | local_irq_restore(flags); | ||
174 | } | ||
175 | |||
176 | return result; | ||
177 | } | ||
178 | |||
179 | #define local_cmpxchg(l, o, n) \ | 118 | #define local_cmpxchg(l, o, n) \ |
180 | ((long)cmpxchg_local(&((l)->a.counter), (o), (n))) | 119 | ((long)cmpxchg_local(&((l)->a.counter), (o), (n))) |
181 | #define local_xchg(l, n) (xchg_local(&((l)->a.counter),(n))) | 120 | #define local_xchg(l, n) (xchg_local(&((l)->a.counter),(n))) |
@@ -234,12 +173,6 @@ static __inline__ long local_sub_if_positive(long i, local_t * l) | |||
234 | #define local_dec_and_test(l) (local_sub_return(1, (l)) == 0) | 173 | #define local_dec_and_test(l) (local_sub_return(1, (l)) == 0) |
235 | 174 | ||
236 | /* | 175 | /* |
237 | * local_dec_if_positive - decrement by 1 if old value positive | ||
238 | * @l: pointer of type local_t | ||
239 | */ | ||
240 | #define local_dec_if_positive(l) local_sub_if_positive(1, l) | ||
241 | |||
242 | /* | ||
243 | * local_add_negative - add and test if negative | 176 | * local_add_negative - add and test if negative |
244 | * @l: pointer of type local_t | 177 | * @l: pointer of type local_t |
245 | * @i: integer value to add | 178 | * @i: integer value to add |
diff --git a/include/asm-mips/page.h b/include/asm-mips/page.h index b92dd8c760da..e3301e54d559 100644 --- a/include/asm-mips/page.h +++ b/include/asm-mips/page.h | |||
@@ -142,7 +142,7 @@ typedef struct { unsigned long pgprot; } pgprot_t; | |||
142 | /* | 142 | /* |
143 | * __pa()/__va() should be used only during mem init. | 143 | * __pa()/__va() should be used only during mem init. |
144 | */ | 144 | */ |
145 | #if defined(CONFIG_64BIT) && !defined(CONFIG_BUILD_ELF64) | 145 | #ifdef CONFIG_64BIT |
146 | #define __pa(x) \ | 146 | #define __pa(x) \ |
147 | ({ \ | 147 | ({ \ |
148 | unsigned long __x = (unsigned long)(x); \ | 148 | unsigned long __x = (unsigned long)(x); \ |
diff --git a/include/asm-mips/system.h b/include/asm-mips/system.h index 357251f42518..480b574e2483 100644 --- a/include/asm-mips/system.h +++ b/include/asm-mips/system.h | |||
@@ -17,6 +17,7 @@ | |||
17 | 17 | ||
18 | #include <asm/addrspace.h> | 18 | #include <asm/addrspace.h> |
19 | #include <asm/barrier.h> | 19 | #include <asm/barrier.h> |
20 | #include <asm/cmpxchg.h> | ||
20 | #include <asm/cpu-features.h> | 21 | #include <asm/cpu-features.h> |
21 | #include <asm/dsp.h> | 22 | #include <asm/dsp.h> |
22 | #include <asm/war.h> | 23 | #include <asm/war.h> |
@@ -194,266 +195,6 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz | |||
194 | 195 | ||
195 | #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | 196 | #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) |
196 | 197 | ||
197 | #define __HAVE_ARCH_CMPXCHG 1 | ||
198 | |||
199 | static inline unsigned long __cmpxchg_u32(volatile int * m, unsigned long old, | ||
200 | unsigned long new) | ||
201 | { | ||
202 | __u32 retval; | ||
203 | |||
204 | if (cpu_has_llsc && R10000_LLSC_WAR) { | ||
205 | __asm__ __volatile__( | ||
206 | " .set push \n" | ||
207 | " .set noat \n" | ||
208 | " .set mips3 \n" | ||
209 | "1: ll %0, %2 # __cmpxchg_u32 \n" | ||
210 | " bne %0, %z3, 2f \n" | ||
211 | " .set mips0 \n" | ||
212 | " move $1, %z4 \n" | ||
213 | " .set mips3 \n" | ||
214 | " sc $1, %1 \n" | ||
215 | " beqzl $1, 1b \n" | ||
216 | "2: \n" | ||
217 | " .set pop \n" | ||
218 | : "=&r" (retval), "=R" (*m) | ||
219 | : "R" (*m), "Jr" (old), "Jr" (new) | ||
220 | : "memory"); | ||
221 | } else if (cpu_has_llsc) { | ||
222 | __asm__ __volatile__( | ||
223 | " .set push \n" | ||
224 | " .set noat \n" | ||
225 | " .set mips3 \n" | ||
226 | "1: ll %0, %2 # __cmpxchg_u32 \n" | ||
227 | " bne %0, %z3, 2f \n" | ||
228 | " .set mips0 \n" | ||
229 | " move $1, %z4 \n" | ||
230 | " .set mips3 \n" | ||
231 | " sc $1, %1 \n" | ||
232 | " beqz $1, 3f \n" | ||
233 | "2: \n" | ||
234 | " .subsection 2 \n" | ||
235 | "3: b 1b \n" | ||
236 | " .previous \n" | ||
237 | " .set pop \n" | ||
238 | : "=&r" (retval), "=R" (*m) | ||
239 | : "R" (*m), "Jr" (old), "Jr" (new) | ||
240 | : "memory"); | ||
241 | } else { | ||
242 | unsigned long flags; | ||
243 | |||
244 | raw_local_irq_save(flags); | ||
245 | retval = *m; | ||
246 | if (retval == old) | ||
247 | *m = new; | ||
248 | raw_local_irq_restore(flags); /* implies memory barrier */ | ||
249 | } | ||
250 | |||
251 | smp_llsc_mb(); | ||
252 | |||
253 | return retval; | ||
254 | } | ||
255 | |||
256 | static inline unsigned long __cmpxchg_u32_local(volatile int * m, | ||
257 | unsigned long old, unsigned long new) | ||
258 | { | ||
259 | __u32 retval; | ||
260 | |||
261 | if (cpu_has_llsc && R10000_LLSC_WAR) { | ||
262 | __asm__ __volatile__( | ||
263 | " .set push \n" | ||
264 | " .set noat \n" | ||
265 | " .set mips3 \n" | ||
266 | "1: ll %0, %2 # __cmpxchg_u32 \n" | ||
267 | " bne %0, %z3, 2f \n" | ||
268 | " .set mips0 \n" | ||
269 | " move $1, %z4 \n" | ||
270 | " .set mips3 \n" | ||
271 | " sc $1, %1 \n" | ||
272 | " beqzl $1, 1b \n" | ||
273 | "2: \n" | ||
274 | " .set pop \n" | ||
275 | : "=&r" (retval), "=R" (*m) | ||
276 | : "R" (*m), "Jr" (old), "Jr" (new) | ||
277 | : "memory"); | ||
278 | } else if (cpu_has_llsc) { | ||
279 | __asm__ __volatile__( | ||
280 | " .set push \n" | ||
281 | " .set noat \n" | ||
282 | " .set mips3 \n" | ||
283 | "1: ll %0, %2 # __cmpxchg_u32 \n" | ||
284 | " bne %0, %z3, 2f \n" | ||
285 | " .set mips0 \n" | ||
286 | " move $1, %z4 \n" | ||
287 | " .set mips3 \n" | ||
288 | " sc $1, %1 \n" | ||
289 | " beqz $1, 1b \n" | ||
290 | "2: \n" | ||
291 | " .set pop \n" | ||
292 | : "=&r" (retval), "=R" (*m) | ||
293 | : "R" (*m), "Jr" (old), "Jr" (new) | ||
294 | : "memory"); | ||
295 | } else { | ||
296 | unsigned long flags; | ||
297 | |||
298 | local_irq_save(flags); | ||
299 | retval = *m; | ||
300 | if (retval == old) | ||
301 | *m = new; | ||
302 | local_irq_restore(flags); /* implies memory barrier */ | ||
303 | } | ||
304 | |||
305 | return retval; | ||
306 | } | ||
307 | |||
308 | #ifdef CONFIG_64BIT | ||
309 | static inline unsigned long __cmpxchg_u64(volatile int * m, unsigned long old, | ||
310 | unsigned long new) | ||
311 | { | ||
312 | __u64 retval; | ||
313 | |||
314 | if (cpu_has_llsc && R10000_LLSC_WAR) { | ||
315 | __asm__ __volatile__( | ||
316 | " .set push \n" | ||
317 | " .set noat \n" | ||
318 | " .set mips3 \n" | ||
319 | "1: lld %0, %2 # __cmpxchg_u64 \n" | ||
320 | " bne %0, %z3, 2f \n" | ||
321 | " move $1, %z4 \n" | ||
322 | " scd $1, %1 \n" | ||
323 | " beqzl $1, 1b \n" | ||
324 | "2: \n" | ||
325 | " .set pop \n" | ||
326 | : "=&r" (retval), "=R" (*m) | ||
327 | : "R" (*m), "Jr" (old), "Jr" (new) | ||
328 | : "memory"); | ||
329 | } else if (cpu_has_llsc) { | ||
330 | __asm__ __volatile__( | ||
331 | " .set push \n" | ||
332 | " .set noat \n" | ||
333 | " .set mips3 \n" | ||
334 | "1: lld %0, %2 # __cmpxchg_u64 \n" | ||
335 | " bne %0, %z3, 2f \n" | ||
336 | " move $1, %z4 \n" | ||
337 | " scd $1, %1 \n" | ||
338 | " beqz $1, 3f \n" | ||
339 | "2: \n" | ||
340 | " .subsection 2 \n" | ||
341 | "3: b 1b \n" | ||
342 | " .previous \n" | ||
343 | " .set pop \n" | ||
344 | : "=&r" (retval), "=R" (*m) | ||
345 | : "R" (*m), "Jr" (old), "Jr" (new) | ||
346 | : "memory"); | ||
347 | } else { | ||
348 | unsigned long flags; | ||
349 | |||
350 | raw_local_irq_save(flags); | ||
351 | retval = *m; | ||
352 | if (retval == old) | ||
353 | *m = new; | ||
354 | raw_local_irq_restore(flags); /* implies memory barrier */ | ||
355 | } | ||
356 | |||
357 | smp_llsc_mb(); | ||
358 | |||
359 | return retval; | ||
360 | } | ||
361 | |||
362 | static inline unsigned long __cmpxchg_u64_local(volatile int * m, | ||
363 | unsigned long old, unsigned long new) | ||
364 | { | ||
365 | __u64 retval; | ||
366 | |||
367 | if (cpu_has_llsc && R10000_LLSC_WAR) { | ||
368 | __asm__ __volatile__( | ||
369 | " .set push \n" | ||
370 | " .set noat \n" | ||
371 | " .set mips3 \n" | ||
372 | "1: lld %0, %2 # __cmpxchg_u64 \n" | ||
373 | " bne %0, %z3, 2f \n" | ||
374 | " move $1, %z4 \n" | ||
375 | " scd $1, %1 \n" | ||
376 | " beqzl $1, 1b \n" | ||
377 | "2: \n" | ||
378 | " .set pop \n" | ||
379 | : "=&r" (retval), "=R" (*m) | ||
380 | : "R" (*m), "Jr" (old), "Jr" (new) | ||
381 | : "memory"); | ||
382 | } else if (cpu_has_llsc) { | ||
383 | __asm__ __volatile__( | ||
384 | " .set push \n" | ||
385 | " .set noat \n" | ||
386 | " .set mips3 \n" | ||
387 | "1: lld %0, %2 # __cmpxchg_u64 \n" | ||
388 | " bne %0, %z3, 2f \n" | ||
389 | " move $1, %z4 \n" | ||
390 | " scd $1, %1 \n" | ||
391 | " beqz $1, 1b \n" | ||
392 | "2: \n" | ||
393 | " .set pop \n" | ||
394 | : "=&r" (retval), "=R" (*m) | ||
395 | : "R" (*m), "Jr" (old), "Jr" (new) | ||
396 | : "memory"); | ||
397 | } else { | ||
398 | unsigned long flags; | ||
399 | |||
400 | local_irq_save(flags); | ||
401 | retval = *m; | ||
402 | if (retval == old) | ||
403 | *m = new; | ||
404 | local_irq_restore(flags); /* implies memory barrier */ | ||
405 | } | ||
406 | |||
407 | return retval; | ||
408 | } | ||
409 | |||
410 | #else | ||
411 | extern unsigned long __cmpxchg_u64_unsupported_on_32bit_kernels( | ||
412 | volatile int * m, unsigned long old, unsigned long new); | ||
413 | #define __cmpxchg_u64 __cmpxchg_u64_unsupported_on_32bit_kernels | ||
414 | extern unsigned long __cmpxchg_u64_local_unsupported_on_32bit_kernels( | ||
415 | volatile int * m, unsigned long old, unsigned long new); | ||
416 | #define __cmpxchg_u64_local __cmpxchg_u64_local_unsupported_on_32bit_kernels | ||
417 | #endif | ||
418 | |||
419 | /* This function doesn't exist, so you'll get a linker error | ||
420 | if something tries to do an invalid cmpxchg(). */ | ||
421 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
422 | |||
423 | static inline unsigned long __cmpxchg(volatile void * ptr, unsigned long old, | ||
424 | unsigned long new, int size) | ||
425 | { | ||
426 | switch (size) { | ||
427 | case 4: | ||
428 | return __cmpxchg_u32(ptr, old, new); | ||
429 | case 8: | ||
430 | return __cmpxchg_u64(ptr, old, new); | ||
431 | } | ||
432 | __cmpxchg_called_with_bad_pointer(); | ||
433 | return old; | ||
434 | } | ||
435 | |||
436 | static inline unsigned long __cmpxchg_local(volatile void * ptr, | ||
437 | unsigned long old, unsigned long new, int size) | ||
438 | { | ||
439 | switch (size) { | ||
440 | case 4: | ||
441 | return __cmpxchg_u32_local(ptr, old, new); | ||
442 | case 8: | ||
443 | return __cmpxchg_u64_local(ptr, old, new); | ||
444 | } | ||
445 | __cmpxchg_called_with_bad_pointer(); | ||
446 | return old; | ||
447 | } | ||
448 | |||
449 | #define cmpxchg(ptr,old,new) \ | ||
450 | ((__typeof__(*(ptr)))__cmpxchg((ptr), \ | ||
451 | (unsigned long)(old), (unsigned long)(new),sizeof(*(ptr)))) | ||
452 | |||
453 | #define cmpxchg_local(ptr,old,new) \ | ||
454 | ((__typeof__(*(ptr)))__cmpxchg_local((ptr), \ | ||
455 | (unsigned long)(old), (unsigned long)(new),sizeof(*(ptr)))) | ||
456 | |||
457 | extern void set_handler (unsigned long offset, void *addr, unsigned long len); | 198 | extern void set_handler (unsigned long offset, void *addr, unsigned long len); |
458 | extern void set_uncached_handler (unsigned long offset, void *addr, unsigned long len); | 199 | extern void set_uncached_handler (unsigned long offset, void *addr, unsigned long len); |
459 | 200 | ||
diff --git a/include/asm-sh/flat.h b/include/asm-sh/flat.h index 0d5cc04ab005..dc4f5950dafa 100644 --- a/include/asm-sh/flat.h +++ b/include/asm-sh/flat.h | |||
@@ -16,8 +16,9 @@ | |||
16 | #define flat_argvp_envp_on_stack() 0 | 16 | #define flat_argvp_envp_on_stack() 0 |
17 | #define flat_old_ram_flag(flags) (flags) | 17 | #define flat_old_ram_flag(flags) (flags) |
18 | #define flat_reloc_valid(reloc, size) ((reloc) <= (size)) | 18 | #define flat_reloc_valid(reloc, size) ((reloc) <= (size)) |
19 | #define flat_get_addr_from_rp(rp, relval, flags) get_unaligned(rp) | 19 | #define flat_get_addr_from_rp(rp, relval, flags, p) get_unaligned(rp) |
20 | #define flat_put_addr_at_rp(rp, val, relval) put_unaligned(val,rp) | 20 | #define flat_put_addr_at_rp(rp, val, relval) put_unaligned(val,rp) |
21 | #define flat_get_relocate_addr(rel) (rel) | 21 | #define flat_get_relocate_addr(rel) (rel) |
22 | #define flat_set_persistent(relval, p) 0 | ||
22 | 23 | ||
23 | #endif /* __ASM_SH_FLAT_H */ | 24 | #endif /* __ASM_SH_FLAT_H */ |
diff --git a/include/asm-v850/flat.h b/include/asm-v850/flat.h index 3888f59d6881..17f0ea566611 100644 --- a/include/asm-v850/flat.h +++ b/include/asm-v850/flat.h | |||
@@ -25,6 +25,7 @@ | |||
25 | #define flat_stack_align(sp) /* nothing needed */ | 25 | #define flat_stack_align(sp) /* nothing needed */ |
26 | #define flat_argvp_envp_on_stack() 0 | 26 | #define flat_argvp_envp_on_stack() 0 |
27 | #define flat_old_ram_flag(flags) (flags) | 27 | #define flat_old_ram_flag(flags) (flags) |
28 | #define flat_set_persistent(relval, p) 0 | ||
28 | 29 | ||
29 | /* We store the type of relocation in the top 4 bits of the `relval.' */ | 30 | /* We store the type of relocation in the top 4 bits of the `relval.' */ |
30 | 31 | ||
@@ -46,7 +47,8 @@ flat_get_relocate_addr (unsigned long relval) | |||
46 | For the v850, RP should always be half-word aligned. */ | 47 | For the v850, RP should always be half-word aligned. */ |
47 | static inline unsigned long flat_get_addr_from_rp (unsigned long *rp, | 48 | static inline unsigned long flat_get_addr_from_rp (unsigned long *rp, |
48 | unsigned long relval, | 49 | unsigned long relval, |
49 | unsigned long flags) | 50 | unsigned long flags, |
51 | unsigned long *persistent) | ||
50 | { | 52 | { |
51 | short *srp = (short *)rp; | 53 | short *srp = (short *)rp; |
52 | 54 | ||
diff --git a/include/asm-x86_64/processor.h b/include/asm-x86_64/processor.h index 19525175b91c..31f579b828f2 100644 --- a/include/asm-x86_64/processor.h +++ b/include/asm-x86_64/processor.h | |||
@@ -371,7 +371,7 @@ static inline void sync_core(void) | |||
371 | #define ARCH_HAS_PREFETCH | 371 | #define ARCH_HAS_PREFETCH |
372 | static inline void prefetch(void *x) | 372 | static inline void prefetch(void *x) |
373 | { | 373 | { |
374 | asm volatile("prefetcht0 %0" :: "m" (*(unsigned long *)x)); | 374 | asm volatile("prefetcht0 (%0)" :: "r" (x)); |
375 | } | 375 | } |
376 | 376 | ||
377 | #define ARCH_HAS_PREFETCHW 1 | 377 | #define ARCH_HAS_PREFETCHW 1 |
diff --git a/include/linux/sched.h b/include/linux/sched.h index a01ac6dd5f5e..313c6b6e774f 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -113,7 +113,7 @@ extern unsigned long avenrun[]; /* Load averages */ | |||
113 | 113 | ||
114 | #define FSHIFT 11 /* nr of bits of precision */ | 114 | #define FSHIFT 11 /* nr of bits of precision */ |
115 | #define FIXED_1 (1<<FSHIFT) /* 1.0 as fixed-point */ | 115 | #define FIXED_1 (1<<FSHIFT) /* 1.0 as fixed-point */ |
116 | #define LOAD_FREQ (5*HZ) /* 5 sec intervals */ | 116 | #define LOAD_FREQ (5*HZ+1) /* 5 sec intervals */ |
117 | #define EXP_1 1884 /* 1/exp(5sec/1min) as fixed-point */ | 117 | #define EXP_1 1884 /* 1/exp(5sec/1min) as fixed-point */ |
118 | #define EXP_5 2014 /* 1/exp(5sec/5min) */ | 118 | #define EXP_5 2014 /* 1/exp(5sec/5min) */ |
119 | #define EXP_15 2037 /* 1/exp(5sec/15min) */ | 119 | #define EXP_15 2037 /* 1/exp(5sec/15min) */ |
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 4ef4d22e5e43..b4af6bcb7b7a 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
@@ -127,7 +127,7 @@ int sync_page_range(struct inode *inode, struct address_space *mapping, | |||
127 | loff_t pos, loff_t count); | 127 | loff_t pos, loff_t count); |
128 | int sync_page_range_nolock(struct inode *inode, struct address_space *mapping, | 128 | int sync_page_range_nolock(struct inode *inode, struct address_space *mapping, |
129 | loff_t pos, loff_t count); | 129 | loff_t pos, loff_t count); |
130 | void set_page_dirty_balance(struct page *page); | 130 | void set_page_dirty_balance(struct page *page, int page_mkwrite); |
131 | void writeback_set_ratelimit(void); | 131 | void writeback_set_ratelimit(void); |
132 | 132 | ||
133 | /* pdflush.c */ | 133 | /* pdflush.c */ |
diff --git a/include/net/rose.h b/include/net/rose.h index a4047d3cf5dd..e5bb084d8754 100644 --- a/include/net/rose.h +++ b/include/net/rose.h | |||
@@ -188,7 +188,7 @@ extern void rose_kick(struct sock *); | |||
188 | extern void rose_enquiry_response(struct sock *); | 188 | extern void rose_enquiry_response(struct sock *); |
189 | 189 | ||
190 | /* rose_route.c */ | 190 | /* rose_route.c */ |
191 | extern struct rose_neigh rose_loopback_neigh; | 191 | extern struct rose_neigh *rose_loopback_neigh; |
192 | extern const struct file_operations rose_neigh_fops; | 192 | extern const struct file_operations rose_neigh_fops; |
193 | extern const struct file_operations rose_nodes_fops; | 193 | extern const struct file_operations rose_nodes_fops; |
194 | extern const struct file_operations rose_routes_fops; | 194 | extern const struct file_operations rose_routes_fops; |
diff --git a/include/net/tcp.h b/include/net/tcp.h index 185c7ecce4cc..54053de0bdd7 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -1059,14 +1059,12 @@ struct tcp_md5sig_key { | |||
1059 | }; | 1059 | }; |
1060 | 1060 | ||
1061 | struct tcp4_md5sig_key { | 1061 | struct tcp4_md5sig_key { |
1062 | u8 *key; | 1062 | struct tcp_md5sig_key base; |
1063 | u16 keylen; | ||
1064 | __be32 addr; | 1063 | __be32 addr; |
1065 | }; | 1064 | }; |
1066 | 1065 | ||
1067 | struct tcp6_md5sig_key { | 1066 | struct tcp6_md5sig_key { |
1068 | u8 *key; | 1067 | struct tcp_md5sig_key base; |
1069 | u16 keylen; | ||
1070 | #if 0 | 1068 | #if 0 |
1071 | u32 scope_id; /* XXX */ | 1069 | u32 scope_id; /* XXX */ |
1072 | #endif | 1070 | #endif |