diff options
author | Michal Simek <monstr@monstr.eu> | 2012-03-30 06:10:03 -0400 |
---|---|---|
committer | Michal Simek <monstr@monstr.eu> | 2012-03-30 06:10:03 -0400 |
commit | 6a4770e335bd4df0a4577146f76e116ab6e23f40 (patch) | |
tree | 305056c20b6ccf3a4fed00e9e32f3a1dd039cd70 /arch/sh | |
parent | ac64a9caa55bdfd8d24784f25c68cb7919ddabe3 (diff) | |
parent | f52b69f86e27903d6896ed5fa7cd280fec8de532 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into next
Diffstat (limited to 'arch/sh')
116 files changed, 1070 insertions, 1007 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 713fb58ca507..ff9e033ce626 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -5,6 +5,7 @@ config SUPERH | |||
5 | select HAVE_IDE if HAS_IOPORT | 5 | select HAVE_IDE if HAS_IOPORT |
6 | select HAVE_MEMBLOCK | 6 | select HAVE_MEMBLOCK |
7 | select HAVE_MEMBLOCK_NODE_MAP | 7 | select HAVE_MEMBLOCK_NODE_MAP |
8 | select ARCH_DISCARD_MEMBLOCK | ||
8 | select HAVE_OPROFILE | 9 | select HAVE_OPROFILE |
9 | select HAVE_GENERIC_DMA_COHERENT | 10 | select HAVE_GENERIC_DMA_COHERENT |
10 | select HAVE_ARCH_TRACEHOOK | 11 | select HAVE_ARCH_TRACEHOOK |
@@ -22,7 +23,7 @@ config SUPERH | |||
22 | select HAVE_SYSCALL_TRACEPOINTS | 23 | select HAVE_SYSCALL_TRACEPOINTS |
23 | select HAVE_REGS_AND_STACK_ACCESS_API | 24 | select HAVE_REGS_AND_STACK_ACCESS_API |
24 | select HAVE_GENERIC_HARDIRQS | 25 | select HAVE_GENERIC_HARDIRQS |
25 | select HAVE_SPARSE_IRQ | 26 | select MAY_HAVE_SPARSE_IRQ |
26 | select IRQ_FORCED_THREADING | 27 | select IRQ_FORCED_THREADING |
27 | select RTC_LIB | 28 | select RTC_LIB |
28 | select GENERIC_ATOMIC64 | 29 | select GENERIC_ATOMIC64 |
@@ -161,6 +162,9 @@ config NO_IOPORT | |||
161 | config IO_TRAPPED | 162 | config IO_TRAPPED |
162 | bool | 163 | bool |
163 | 164 | ||
165 | config SWAP_IO_SPACE | ||
166 | bool | ||
167 | |||
164 | config DMA_COHERENT | 168 | config DMA_COHERENT |
165 | bool | 169 | bool |
166 | 170 | ||
diff --git a/arch/sh/boards/mach-ap325rxa/setup.c b/arch/sh/boards/mach-ap325rxa/setup.c index ebd0f818a25f..8cf02e343333 100644 --- a/arch/sh/boards/mach-ap325rxa/setup.c +++ b/arch/sh/boards/mach-ap325rxa/setup.c | |||
@@ -157,7 +157,7 @@ static struct platform_device nand_flash_device = { | |||
157 | #define PORT_DRVCRA 0xA405018A | 157 | #define PORT_DRVCRA 0xA405018A |
158 | #define PORT_DRVCRB 0xA405018C | 158 | #define PORT_DRVCRB 0xA405018C |
159 | 159 | ||
160 | static int ap320_wvga_set_brightness(void *board_data, int brightness) | 160 | static int ap320_wvga_set_brightness(int brightness) |
161 | { | 161 | { |
162 | if (brightness) { | 162 | if (brightness) { |
163 | gpio_set_value(GPIO_PTS3, 0); | 163 | gpio_set_value(GPIO_PTS3, 0); |
@@ -170,12 +170,12 @@ static int ap320_wvga_set_brightness(void *board_data, int brightness) | |||
170 | return 0; | 170 | return 0; |
171 | } | 171 | } |
172 | 172 | ||
173 | static int ap320_wvga_get_brightness(void *board_data) | 173 | static int ap320_wvga_get_brightness(void) |
174 | { | 174 | { |
175 | return gpio_get_value(GPIO_PTS3); | 175 | return gpio_get_value(GPIO_PTS3); |
176 | } | 176 | } |
177 | 177 | ||
178 | static void ap320_wvga_power_on(void *board_data, struct fb_info *info) | 178 | static void ap320_wvga_power_on(void) |
179 | { | 179 | { |
180 | msleep(100); | 180 | msleep(100); |
181 | 181 | ||
@@ -183,7 +183,7 @@ static void ap320_wvga_power_on(void *board_data, struct fb_info *info) | |||
183 | __raw_writew(FPGA_LCDREG_VAL, FPGA_LCDREG); | 183 | __raw_writew(FPGA_LCDREG_VAL, FPGA_LCDREG); |
184 | } | 184 | } |
185 | 185 | ||
186 | static void ap320_wvga_power_off(void *board_data) | 186 | static void ap320_wvga_power_off(void) |
187 | { | 187 | { |
188 | /* ASD AP-320/325 LCD OFF */ | 188 | /* ASD AP-320/325 LCD OFF */ |
189 | __raw_writew(0, FPGA_LCDREG); | 189 | __raw_writew(0, FPGA_LCDREG); |
@@ -211,21 +211,19 @@ static struct sh_mobile_lcdc_info lcdc_info = { | |||
211 | .fourcc = V4L2_PIX_FMT_RGB565, | 211 | .fourcc = V4L2_PIX_FMT_RGB565, |
212 | .interface_type = RGB18, | 212 | .interface_type = RGB18, |
213 | .clock_divider = 1, | 213 | .clock_divider = 1, |
214 | .lcd_cfg = ap325rxa_lcdc_modes, | 214 | .lcd_modes = ap325rxa_lcdc_modes, |
215 | .num_cfg = ARRAY_SIZE(ap325rxa_lcdc_modes), | 215 | .num_modes = ARRAY_SIZE(ap325rxa_lcdc_modes), |
216 | .lcd_size_cfg = { /* 7.0 inch */ | 216 | .panel_cfg = { |
217 | .width = 152, | 217 | .width = 152, /* 7.0 inch */ |
218 | .height = 91, | 218 | .height = 91, |
219 | }, | ||
220 | .board_cfg = { | ||
221 | .display_on = ap320_wvga_power_on, | 219 | .display_on = ap320_wvga_power_on, |
222 | .display_off = ap320_wvga_power_off, | 220 | .display_off = ap320_wvga_power_off, |
223 | .set_brightness = ap320_wvga_set_brightness, | ||
224 | .get_brightness = ap320_wvga_get_brightness, | ||
225 | }, | 221 | }, |
226 | .bl_info = { | 222 | .bl_info = { |
227 | .name = "sh_mobile_lcdc_bl", | 223 | .name = "sh_mobile_lcdc_bl", |
228 | .max_brightness = 1, | 224 | .max_brightness = 1, |
225 | .set_brightness = ap320_wvga_set_brightness, | ||
226 | .get_brightness = ap320_wvga_get_brightness, | ||
229 | }, | 227 | }, |
230 | } | 228 | } |
231 | }; | 229 | }; |
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c index cde7c0085ced..d12fe9ddf3da 100644 --- a/arch/sh/boards/mach-ecovec24/setup.c +++ b/arch/sh/boards/mach-ecovec24/setup.c | |||
@@ -310,14 +310,14 @@ static const struct fb_videomode ecovec_dvi_modes[] = { | |||
310 | }, | 310 | }, |
311 | }; | 311 | }; |
312 | 312 | ||
313 | static int ecovec24_set_brightness(void *board_data, int brightness) | 313 | static int ecovec24_set_brightness(int brightness) |
314 | { | 314 | { |
315 | gpio_set_value(GPIO_PTR1, brightness); | 315 | gpio_set_value(GPIO_PTR1, brightness); |
316 | 316 | ||
317 | return 0; | 317 | return 0; |
318 | } | 318 | } |
319 | 319 | ||
320 | static int ecovec24_get_brightness(void *board_data) | 320 | static int ecovec24_get_brightness(void) |
321 | { | 321 | { |
322 | return gpio_get_value(GPIO_PTR1); | 322 | return gpio_get_value(GPIO_PTR1); |
323 | } | 323 | } |
@@ -327,17 +327,15 @@ static struct sh_mobile_lcdc_info lcdc_info = { | |||
327 | .interface_type = RGB18, | 327 | .interface_type = RGB18, |
328 | .chan = LCDC_CHAN_MAINLCD, | 328 | .chan = LCDC_CHAN_MAINLCD, |
329 | .fourcc = V4L2_PIX_FMT_RGB565, | 329 | .fourcc = V4L2_PIX_FMT_RGB565, |
330 | .lcd_size_cfg = { /* 7.0 inch */ | 330 | .panel_cfg = { /* 7.0 inch */ |
331 | .width = 152, | 331 | .width = 152, |
332 | .height = 91, | 332 | .height = 91, |
333 | }, | 333 | }, |
334 | .board_cfg = { | ||
335 | .set_brightness = ecovec24_set_brightness, | ||
336 | .get_brightness = ecovec24_get_brightness, | ||
337 | }, | ||
338 | .bl_info = { | 334 | .bl_info = { |
339 | .name = "sh_mobile_lcdc_bl", | 335 | .name = "sh_mobile_lcdc_bl", |
340 | .max_brightness = 1, | 336 | .max_brightness = 1, |
337 | .set_brightness = ecovec24_set_brightness, | ||
338 | .get_brightness = ecovec24_get_brightness, | ||
341 | }, | 339 | }, |
342 | } | 340 | } |
343 | }; | 341 | }; |
@@ -524,11 +522,18 @@ static void sdhi0_set_pwr(struct platform_device *pdev, int state) | |||
524 | gpio_set_value(GPIO_PTB6, state); | 522 | gpio_set_value(GPIO_PTB6, state); |
525 | } | 523 | } |
526 | 524 | ||
525 | static int sdhi0_get_cd(struct platform_device *pdev) | ||
526 | { | ||
527 | return !gpio_get_value(GPIO_PTY7); | ||
528 | } | ||
529 | |||
527 | static struct sh_mobile_sdhi_info sdhi0_info = { | 530 | static struct sh_mobile_sdhi_info sdhi0_info = { |
528 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, | 531 | .dma_slave_tx = SHDMA_SLAVE_SDHI0_TX, |
529 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, | 532 | .dma_slave_rx = SHDMA_SLAVE_SDHI0_RX, |
530 | .set_pwr = sdhi0_set_pwr, | 533 | .set_pwr = sdhi0_set_pwr, |
531 | .tmio_caps = MMC_CAP_SDIO_IRQ | MMC_CAP_POWER_OFF_CARD, | 534 | .tmio_caps = MMC_CAP_SDIO_IRQ | MMC_CAP_POWER_OFF_CARD | |
535 | MMC_CAP_NEEDS_POLL, | ||
536 | .get_cd = sdhi0_get_cd, | ||
532 | }; | 537 | }; |
533 | 538 | ||
534 | static struct resource sdhi0_resources[] = { | 539 | static struct resource sdhi0_resources[] = { |
@@ -561,11 +566,18 @@ static void sdhi1_set_pwr(struct platform_device *pdev, int state) | |||
561 | gpio_set_value(GPIO_PTB7, state); | 566 | gpio_set_value(GPIO_PTB7, state); |
562 | } | 567 | } |
563 | 568 | ||
569 | static int sdhi1_get_cd(struct platform_device *pdev) | ||
570 | { | ||
571 | return !gpio_get_value(GPIO_PTW7); | ||
572 | } | ||
573 | |||
564 | static struct sh_mobile_sdhi_info sdhi1_info = { | 574 | static struct sh_mobile_sdhi_info sdhi1_info = { |
565 | .dma_slave_tx = SHDMA_SLAVE_SDHI1_TX, | 575 | .dma_slave_tx = SHDMA_SLAVE_SDHI1_TX, |
566 | .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX, | 576 | .dma_slave_rx = SHDMA_SLAVE_SDHI1_RX, |
567 | .tmio_caps = MMC_CAP_SDIO_IRQ | MMC_CAP_POWER_OFF_CARD, | 577 | .tmio_caps = MMC_CAP_SDIO_IRQ | MMC_CAP_POWER_OFF_CARD | |
578 | MMC_CAP_NEEDS_POLL, | ||
568 | .set_pwr = sdhi1_set_pwr, | 579 | .set_pwr = sdhi1_set_pwr, |
580 | .get_cd = sdhi1_get_cd, | ||
569 | }; | 581 | }; |
570 | 582 | ||
571 | static struct resource sdhi1_resources[] = { | 583 | static struct resource sdhi1_resources[] = { |
@@ -769,7 +781,9 @@ static struct platform_device camera_devices[] = { | |||
769 | 781 | ||
770 | /* FSI */ | 782 | /* FSI */ |
771 | static struct sh_fsi_platform_info fsi_info = { | 783 | static struct sh_fsi_platform_info fsi_info = { |
772 | .portb_flags = SH_FSI_BRS_INV, | 784 | .port_b = { |
785 | .flags = SH_FSI_BRS_INV, | ||
786 | }, | ||
773 | }; | 787 | }; |
774 | 788 | ||
775 | static struct resource fsi_resources[] = { | 789 | static struct resource fsi_resources[] = { |
@@ -1001,6 +1015,7 @@ extern char ecovec24_sdram_leave_end; | |||
1001 | static int __init arch_setup(void) | 1015 | static int __init arch_setup(void) |
1002 | { | 1016 | { |
1003 | struct clk *clk; | 1017 | struct clk *clk; |
1018 | bool cn12_enabled = false; | ||
1004 | 1019 | ||
1005 | /* register board specific self-refresh code */ | 1020 | /* register board specific self-refresh code */ |
1006 | sh_mobile_register_self_refresh(SUSP_SH_STANDBY | SUSP_SH_SF | | 1021 | sh_mobile_register_self_refresh(SUSP_SH_STANDBY | SUSP_SH_SF | |
@@ -1116,8 +1131,8 @@ static int __init arch_setup(void) | |||
1116 | /* DVI */ | 1131 | /* DVI */ |
1117 | lcdc_info.clock_source = LCDC_CLK_EXTERNAL; | 1132 | lcdc_info.clock_source = LCDC_CLK_EXTERNAL; |
1118 | lcdc_info.ch[0].clock_divider = 1; | 1133 | lcdc_info.ch[0].clock_divider = 1; |
1119 | lcdc_info.ch[0].lcd_cfg = ecovec_dvi_modes; | 1134 | lcdc_info.ch[0].lcd_modes = ecovec_dvi_modes; |
1120 | lcdc_info.ch[0].num_cfg = ARRAY_SIZE(ecovec_dvi_modes); | 1135 | lcdc_info.ch[0].num_modes = ARRAY_SIZE(ecovec_dvi_modes); |
1121 | 1136 | ||
1122 | gpio_set_value(GPIO_PTA2, 1); | 1137 | gpio_set_value(GPIO_PTA2, 1); |
1123 | gpio_set_value(GPIO_PTU1, 1); | 1138 | gpio_set_value(GPIO_PTU1, 1); |
@@ -1125,8 +1140,8 @@ static int __init arch_setup(void) | |||
1125 | /* Panel */ | 1140 | /* Panel */ |
1126 | lcdc_info.clock_source = LCDC_CLK_PERIPHERAL; | 1141 | lcdc_info.clock_source = LCDC_CLK_PERIPHERAL; |
1127 | lcdc_info.ch[0].clock_divider = 2; | 1142 | lcdc_info.ch[0].clock_divider = 2; |
1128 | lcdc_info.ch[0].lcd_cfg = ecovec_lcd_modes; | 1143 | lcdc_info.ch[0].lcd_modes = ecovec_lcd_modes; |
1129 | lcdc_info.ch[0].num_cfg = ARRAY_SIZE(ecovec_lcd_modes); | 1144 | lcdc_info.ch[0].num_modes = ARRAY_SIZE(ecovec_lcd_modes); |
1130 | 1145 | ||
1131 | gpio_set_value(GPIO_PTR1, 1); | 1146 | gpio_set_value(GPIO_PTR1, 1); |
1132 | 1147 | ||
@@ -1201,9 +1216,13 @@ static int __init arch_setup(void) | |||
1201 | gpio_direction_input(GPIO_PTR5); | 1216 | gpio_direction_input(GPIO_PTR5); |
1202 | gpio_direction_input(GPIO_PTR6); | 1217 | gpio_direction_input(GPIO_PTR6); |
1203 | 1218 | ||
1219 | /* SD-card slot CN11 */ | ||
1220 | /* Card-detect, used on CN11, either with SDHI0 or with SPI */ | ||
1221 | gpio_request(GPIO_PTY7, NULL); | ||
1222 | gpio_direction_input(GPIO_PTY7); | ||
1223 | |||
1204 | #if defined(CONFIG_MMC_SDHI) || defined(CONFIG_MMC_SDHI_MODULE) | 1224 | #if defined(CONFIG_MMC_SDHI) || defined(CONFIG_MMC_SDHI_MODULE) |
1205 | /* enable SDHI0 on CN11 (needs DS2.4 set to ON) */ | 1225 | /* enable SDHI0 on CN11 (needs DS2.4 set to ON) */ |
1206 | gpio_request(GPIO_FN_SDHI0CD, NULL); | ||
1207 | gpio_request(GPIO_FN_SDHI0WP, NULL); | 1226 | gpio_request(GPIO_FN_SDHI0WP, NULL); |
1208 | gpio_request(GPIO_FN_SDHI0CMD, NULL); | 1227 | gpio_request(GPIO_FN_SDHI0CMD, NULL); |
1209 | gpio_request(GPIO_FN_SDHI0CLK, NULL); | 1228 | gpio_request(GPIO_FN_SDHI0CLK, NULL); |
@@ -1213,23 +1232,6 @@ static int __init arch_setup(void) | |||
1213 | gpio_request(GPIO_FN_SDHI0D0, NULL); | 1232 | gpio_request(GPIO_FN_SDHI0D0, NULL); |
1214 | gpio_request(GPIO_PTB6, NULL); | 1233 | gpio_request(GPIO_PTB6, NULL); |
1215 | gpio_direction_output(GPIO_PTB6, 0); | 1234 | gpio_direction_output(GPIO_PTB6, 0); |
1216 | |||
1217 | #if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) | ||
1218 | /* enable SDHI1 on CN12 (needs DS2.6,7 set to ON,OFF) */ | ||
1219 | gpio_request(GPIO_FN_SDHI1CD, NULL); | ||
1220 | gpio_request(GPIO_FN_SDHI1WP, NULL); | ||
1221 | gpio_request(GPIO_FN_SDHI1CMD, NULL); | ||
1222 | gpio_request(GPIO_FN_SDHI1CLK, NULL); | ||
1223 | gpio_request(GPIO_FN_SDHI1D3, NULL); | ||
1224 | gpio_request(GPIO_FN_SDHI1D2, NULL); | ||
1225 | gpio_request(GPIO_FN_SDHI1D1, NULL); | ||
1226 | gpio_request(GPIO_FN_SDHI1D0, NULL); | ||
1227 | gpio_request(GPIO_PTB7, NULL); | ||
1228 | gpio_direction_output(GPIO_PTB7, 0); | ||
1229 | |||
1230 | /* I/O buffer drive ability is high for SDHI1 */ | ||
1231 | __raw_writew((__raw_readw(IODRIVEA) & ~0x3000) | 0x2000 , IODRIVEA); | ||
1232 | #endif /* CONFIG_MMC_SH_MMCIF */ | ||
1233 | #else | 1235 | #else |
1234 | /* enable MSIOF0 on CN11 (needs DS2.4 set to OFF) */ | 1236 | /* enable MSIOF0 on CN11 (needs DS2.4 set to OFF) */ |
1235 | gpio_request(GPIO_FN_MSIOF0_TXD, NULL); | 1237 | gpio_request(GPIO_FN_MSIOF0_TXD, NULL); |
@@ -1241,12 +1243,51 @@ static int __init arch_setup(void) | |||
1241 | gpio_direction_output(GPIO_PTB6, 0); /* disable power by default */ | 1243 | gpio_direction_output(GPIO_PTB6, 0); /* disable power by default */ |
1242 | gpio_request(GPIO_PTY6, NULL); /* write protect */ | 1244 | gpio_request(GPIO_PTY6, NULL); /* write protect */ |
1243 | gpio_direction_input(GPIO_PTY6); | 1245 | gpio_direction_input(GPIO_PTY6); |
1244 | gpio_request(GPIO_PTY7, NULL); /* card detect */ | ||
1245 | gpio_direction_input(GPIO_PTY7); | ||
1246 | 1246 | ||
1247 | spi_register_board_info(spi_bus, ARRAY_SIZE(spi_bus)); | 1247 | spi_register_board_info(spi_bus, ARRAY_SIZE(spi_bus)); |
1248 | #endif | 1248 | #endif |
1249 | 1249 | ||
1250 | /* MMC/SD-card slot CN12 */ | ||
1251 | #if defined(CONFIG_MMC_SH_MMCIF) || defined(CONFIG_MMC_SH_MMCIF_MODULE) | ||
1252 | /* enable MMCIF (needs DS2.6,7 set to OFF,ON) */ | ||
1253 | gpio_request(GPIO_FN_MMC_D7, NULL); | ||
1254 | gpio_request(GPIO_FN_MMC_D6, NULL); | ||
1255 | gpio_request(GPIO_FN_MMC_D5, NULL); | ||
1256 | gpio_request(GPIO_FN_MMC_D4, NULL); | ||
1257 | gpio_request(GPIO_FN_MMC_D3, NULL); | ||
1258 | gpio_request(GPIO_FN_MMC_D2, NULL); | ||
1259 | gpio_request(GPIO_FN_MMC_D1, NULL); | ||
1260 | gpio_request(GPIO_FN_MMC_D0, NULL); | ||
1261 | gpio_request(GPIO_FN_MMC_CLK, NULL); | ||
1262 | gpio_request(GPIO_FN_MMC_CMD, NULL); | ||
1263 | gpio_request(GPIO_PTB7, NULL); | ||
1264 | gpio_direction_output(GPIO_PTB7, 0); | ||
1265 | |||
1266 | cn12_enabled = true; | ||
1267 | #elif defined(CONFIG_MMC_SDHI) || defined(CONFIG_MMC_SDHI_MODULE) | ||
1268 | /* enable SDHI1 on CN12 (needs DS2.6,7 set to ON,OFF) */ | ||
1269 | gpio_request(GPIO_FN_SDHI1WP, NULL); | ||
1270 | gpio_request(GPIO_FN_SDHI1CMD, NULL); | ||
1271 | gpio_request(GPIO_FN_SDHI1CLK, NULL); | ||
1272 | gpio_request(GPIO_FN_SDHI1D3, NULL); | ||
1273 | gpio_request(GPIO_FN_SDHI1D2, NULL); | ||
1274 | gpio_request(GPIO_FN_SDHI1D1, NULL); | ||
1275 | gpio_request(GPIO_FN_SDHI1D0, NULL); | ||
1276 | gpio_request(GPIO_PTB7, NULL); | ||
1277 | gpio_direction_output(GPIO_PTB7, 0); | ||
1278 | |||
1279 | /* Card-detect, used on CN12 with SDHI1 */ | ||
1280 | gpio_request(GPIO_PTW7, NULL); | ||
1281 | gpio_direction_input(GPIO_PTW7); | ||
1282 | |||
1283 | cn12_enabled = true; | ||
1284 | #endif | ||
1285 | |||
1286 | if (cn12_enabled) | ||
1287 | /* I/O buffer drive ability is high for CN12 */ | ||
1288 | __raw_writew((__raw_readw(IODRIVEA) & ~0x3000) | 0x2000, | ||
1289 | IODRIVEA); | ||
1290 | |||
1250 | /* enable Video */ | 1291 | /* enable Video */ |
1251 | gpio_request(GPIO_PTU2, NULL); | 1292 | gpio_request(GPIO_PTU2, NULL); |
1252 | gpio_direction_output(GPIO_PTU2, 1); | 1293 | gpio_direction_output(GPIO_PTU2, 1); |
@@ -1305,25 +1346,6 @@ static int __init arch_setup(void) | |||
1305 | gpio_request(GPIO_PTU5, NULL); | 1346 | gpio_request(GPIO_PTU5, NULL); |
1306 | gpio_direction_output(GPIO_PTU5, 0); | 1347 | gpio_direction_output(GPIO_PTU5, 0); |
1307 | 1348 | ||
1308 | #if defined(CONFIG_MMC_SH_MMCIF) || defined(CONFIG_MMC_SH_MMCIF_MODULE) | ||
1309 | /* enable MMCIF (needs DS2.6,7 set to OFF,ON) */ | ||
1310 | gpio_request(GPIO_FN_MMC_D7, NULL); | ||
1311 | gpio_request(GPIO_FN_MMC_D6, NULL); | ||
1312 | gpio_request(GPIO_FN_MMC_D5, NULL); | ||
1313 | gpio_request(GPIO_FN_MMC_D4, NULL); | ||
1314 | gpio_request(GPIO_FN_MMC_D3, NULL); | ||
1315 | gpio_request(GPIO_FN_MMC_D2, NULL); | ||
1316 | gpio_request(GPIO_FN_MMC_D1, NULL); | ||
1317 | gpio_request(GPIO_FN_MMC_D0, NULL); | ||
1318 | gpio_request(GPIO_FN_MMC_CLK, NULL); | ||
1319 | gpio_request(GPIO_FN_MMC_CMD, NULL); | ||
1320 | gpio_request(GPIO_PTB7, NULL); | ||
1321 | gpio_direction_output(GPIO_PTB7, 0); | ||
1322 | |||
1323 | /* I/O buffer drive ability is high for MMCIF */ | ||
1324 | __raw_writew((__raw_readw(IODRIVEA) & ~0x3000) | 0x2000 , IODRIVEA); | ||
1325 | #endif | ||
1326 | |||
1327 | /* enable I2C device */ | 1349 | /* enable I2C device */ |
1328 | i2c_register_board_info(0, i2c0_devices, | 1350 | i2c_register_board_info(0, i2c0_devices, |
1329 | ARRAY_SIZE(i2c0_devices)); | 1351 | ARRAY_SIZE(i2c0_devices)); |
diff --git a/arch/sh/boards/mach-highlander/setup.c b/arch/sh/boards/mach-highlander/setup.c index 74b8db1b74a9..4a52590fe3d8 100644 --- a/arch/sh/boards/mach-highlander/setup.c +++ b/arch/sh/boards/mach-highlander/setup.c | |||
@@ -322,7 +322,7 @@ static void ivdr_clk_disable(struct clk *clk) | |||
322 | __raw_writew(__raw_readw(PA_IVDRCTL) & ~(1 << IVDR_CK_ON), PA_IVDRCTL); | 322 | __raw_writew(__raw_readw(PA_IVDRCTL) & ~(1 << IVDR_CK_ON), PA_IVDRCTL); |
323 | } | 323 | } |
324 | 324 | ||
325 | static struct clk_ops ivdr_clk_ops = { | 325 | static struct sh_clk_ops ivdr_clk_ops = { |
326 | .enable = ivdr_clk_enable, | 326 | .enable = ivdr_clk_enable, |
327 | .disable = ivdr_clk_disable, | 327 | .disable = ivdr_clk_disable, |
328 | }; | 328 | }; |
diff --git a/arch/sh/boards/mach-kfr2r09/lcd_wqvga.c b/arch/sh/boards/mach-kfr2r09/lcd_wqvga.c index 25e145fb7087..c148b36ecb65 100644 --- a/arch/sh/boards/mach-kfr2r09/lcd_wqvga.c +++ b/arch/sh/boards/mach-kfr2r09/lcd_wqvga.c | |||
@@ -251,8 +251,7 @@ static void display_on(void *sohandle, | |||
251 | write_memory_start(sohandle, so); | 251 | write_memory_start(sohandle, so); |
252 | } | 252 | } |
253 | 253 | ||
254 | int kfr2r09_lcd_setup(void *board_data, void *sohandle, | 254 | int kfr2r09_lcd_setup(void *sohandle, struct sh_mobile_lcdc_sys_bus_ops *so) |
255 | struct sh_mobile_lcdc_sys_bus_ops *so) | ||
256 | { | 255 | { |
257 | /* power on */ | 256 | /* power on */ |
258 | gpio_set_value(GPIO_PTF4, 0); /* PROTECT/ -> L */ | 257 | gpio_set_value(GPIO_PTF4, 0); /* PROTECT/ -> L */ |
@@ -273,8 +272,7 @@ int kfr2r09_lcd_setup(void *board_data, void *sohandle, | |||
273 | return 0; | 272 | return 0; |
274 | } | 273 | } |
275 | 274 | ||
276 | void kfr2r09_lcd_start(void *board_data, void *sohandle, | 275 | void kfr2r09_lcd_start(void *sohandle, struct sh_mobile_lcdc_sys_bus_ops *so) |
277 | struct sh_mobile_lcdc_sys_bus_ops *so) | ||
278 | { | 276 | { |
279 | write_memory_start(sohandle, so); | 277 | write_memory_start(sohandle, so); |
280 | } | 278 | } |
@@ -327,12 +325,12 @@ static int kfr2r09_lcd_backlight(int on) | |||
327 | return 0; | 325 | return 0; |
328 | } | 326 | } |
329 | 327 | ||
330 | void kfr2r09_lcd_on(void *board_data, struct fb_info *info) | 328 | void kfr2r09_lcd_on(void) |
331 | { | 329 | { |
332 | kfr2r09_lcd_backlight(1); | 330 | kfr2r09_lcd_backlight(1); |
333 | } | 331 | } |
334 | 332 | ||
335 | void kfr2r09_lcd_off(void *board_data) | 333 | void kfr2r09_lcd_off(void) |
336 | { | 334 | { |
337 | kfr2r09_lcd_backlight(0); | 335 | kfr2r09_lcd_backlight(0); |
338 | } | 336 | } |
diff --git a/arch/sh/boards/mach-kfr2r09/setup.c b/arch/sh/boards/mach-kfr2r09/setup.c index 5b382e1afaea..d04a55d3b877 100644 --- a/arch/sh/boards/mach-kfr2r09/setup.c +++ b/arch/sh/boards/mach-kfr2r09/setup.c | |||
@@ -148,13 +148,11 @@ static struct sh_mobile_lcdc_info kfr2r09_sh_lcdc_info = { | |||
148 | .interface_type = SYS18, | 148 | .interface_type = SYS18, |
149 | .clock_divider = 6, | 149 | .clock_divider = 6, |
150 | .flags = LCDC_FLAGS_DWPOL, | 150 | .flags = LCDC_FLAGS_DWPOL, |
151 | .lcd_cfg = kfr2r09_lcdc_modes, | 151 | .lcd_modes = kfr2r09_lcdc_modes, |
152 | .num_cfg = ARRAY_SIZE(kfr2r09_lcdc_modes), | 152 | .num_modes = ARRAY_SIZE(kfr2r09_lcdc_modes), |
153 | .lcd_size_cfg = { | 153 | .panel_cfg = { |
154 | .width = 35, | 154 | .width = 35, |
155 | .height = 58, | 155 | .height = 58, |
156 | }, | ||
157 | .board_cfg = { | ||
158 | .setup_sys = kfr2r09_lcd_setup, | 156 | .setup_sys = kfr2r09_lcd_setup, |
159 | .start_transfer = kfr2r09_lcd_start, | 157 | .start_transfer = kfr2r09_lcd_start, |
160 | .display_on = kfr2r09_lcd_on, | 158 | .display_on = kfr2r09_lcd_on, |
diff --git a/arch/sh/boards/mach-microdev/irq.c b/arch/sh/boards/mach-microdev/irq.c index 4fb00369f0e2..9a8aff339619 100644 --- a/arch/sh/boards/mach-microdev/irq.c +++ b/arch/sh/boards/mach-microdev/irq.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/irq.h> | 13 | #include <linux/irq.h> |
14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/io.h> | 15 | #include <asm/io.h> |
17 | #include <mach/microdev.h> | 16 | #include <mach/microdev.h> |
18 | 17 | ||
diff --git a/arch/sh/boards/mach-migor/lcd_qvga.c b/arch/sh/boards/mach-migor/lcd_qvga.c index de9014a8a93e..8bccd345b69c 100644 --- a/arch/sh/boards/mach-migor/lcd_qvga.c +++ b/arch/sh/boards/mach-migor/lcd_qvga.c | |||
@@ -113,8 +113,7 @@ static const unsigned short magic3_data[] = { | |||
113 | 0x0010, 0x16B0, 0x0011, 0x0111, 0x0007, 0x0061, | 113 | 0x0010, 0x16B0, 0x0011, 0x0111, 0x0007, 0x0061, |
114 | }; | 114 | }; |
115 | 115 | ||
116 | int migor_lcd_qvga_setup(void *board_data, void *sohandle, | 116 | int migor_lcd_qvga_setup(void *sohandle, struct sh_mobile_lcdc_sys_bus_ops *so) |
117 | struct sh_mobile_lcdc_sys_bus_ops *so) | ||
118 | { | 117 | { |
119 | unsigned long xres = 320; | 118 | unsigned long xres = 320; |
120 | unsigned long yres = 240; | 119 | unsigned long yres = 240; |
diff --git a/arch/sh/boards/mach-migor/setup.c b/arch/sh/boards/mach-migor/setup.c index d37ba2720527..ff6f69c6906e 100644 --- a/arch/sh/boards/mach-migor/setup.c +++ b/arch/sh/boards/mach-migor/setup.c | |||
@@ -246,9 +246,9 @@ static struct sh_mobile_lcdc_info sh_mobile_lcdc_info = { | |||
246 | .fourcc = V4L2_PIX_FMT_RGB565, | 246 | .fourcc = V4L2_PIX_FMT_RGB565, |
247 | .interface_type = RGB16, | 247 | .interface_type = RGB16, |
248 | .clock_divider = 2, | 248 | .clock_divider = 2, |
249 | .lcd_cfg = migor_lcd_modes, | 249 | .lcd_modes = migor_lcd_modes, |
250 | .num_cfg = ARRAY_SIZE(migor_lcd_modes), | 250 | .num_modes = ARRAY_SIZE(migor_lcd_modes), |
251 | .lcd_size_cfg = { /* 7.0 inch */ | 251 | .panel_cfg = { /* 7.0 inch */ |
252 | .width = 152, | 252 | .width = 152, |
253 | .height = 91, | 253 | .height = 91, |
254 | }, | 254 | }, |
@@ -260,13 +260,11 @@ static struct sh_mobile_lcdc_info sh_mobile_lcdc_info = { | |||
260 | .fourcc = V4L2_PIX_FMT_RGB565, | 260 | .fourcc = V4L2_PIX_FMT_RGB565, |
261 | .interface_type = SYS16A, | 261 | .interface_type = SYS16A, |
262 | .clock_divider = 10, | 262 | .clock_divider = 10, |
263 | .lcd_cfg = migor_lcd_modes, | 263 | .lcd_modes = migor_lcd_modes, |
264 | .num_cfg = ARRAY_SIZE(migor_lcd_modes), | 264 | .num_modes = ARRAY_SIZE(migor_lcd_modes), |
265 | .lcd_size_cfg = { /* 2.4 inch */ | 265 | .panel_cfg = { |
266 | .width = 49, | 266 | .width = 49, /* 2.4 inch */ |
267 | .height = 37, | 267 | .height = 37, |
268 | }, | ||
269 | .board_cfg = { | ||
270 | .setup_sys = migor_lcd_qvga_setup, | 268 | .setup_sys = migor_lcd_qvga_setup, |
271 | }, | 269 | }, |
272 | .sys_bus_cfg = { | 270 | .sys_bus_cfg = { |
diff --git a/arch/sh/boards/mach-sdk7786/setup.c b/arch/sh/boards/mach-sdk7786/setup.c index 486d1ac3694c..27a2314f50ac 100644 --- a/arch/sh/boards/mach-sdk7786/setup.c +++ b/arch/sh/boards/mach-sdk7786/setup.c | |||
@@ -167,7 +167,7 @@ static void sdk7786_pcie_clk_disable(struct clk *clk) | |||
167 | fpga_write_reg(fpga_read_reg(PCIECR) & ~PCIECR_CLKEN, PCIECR); | 167 | fpga_write_reg(fpga_read_reg(PCIECR) & ~PCIECR_CLKEN, PCIECR); |
168 | } | 168 | } |
169 | 169 | ||
170 | static struct clk_ops sdk7786_pcie_clk_ops = { | 170 | static struct sh_clk_ops sdk7786_pcie_clk_ops = { |
171 | .enable = sdk7786_pcie_clk_enable, | 171 | .enable = sdk7786_pcie_clk_enable, |
172 | .disable = sdk7786_pcie_clk_disable, | 172 | .disable = sdk7786_pcie_clk_disable, |
173 | }; | 173 | }; |
diff --git a/arch/sh/boards/mach-se/7724/setup.c b/arch/sh/boards/mach-se/7724/setup.c index 2b07fc016950..c540b16547c3 100644 --- a/arch/sh/boards/mach-se/7724/setup.c +++ b/arch/sh/boards/mach-se/7724/setup.c | |||
@@ -182,12 +182,10 @@ static struct sh_mobile_lcdc_info lcdc_info = { | |||
182 | .chan = LCDC_CHAN_MAINLCD, | 182 | .chan = LCDC_CHAN_MAINLCD, |
183 | .fourcc = V4L2_PIX_FMT_RGB565, | 183 | .fourcc = V4L2_PIX_FMT_RGB565, |
184 | .clock_divider = 1, | 184 | .clock_divider = 1, |
185 | .lcd_size_cfg = { /* 7.0 inch */ | 185 | .panel_cfg = { /* 7.0 inch */ |
186 | .width = 152, | 186 | .width = 152, |
187 | .height = 91, | 187 | .height = 91, |
188 | }, | 188 | }, |
189 | .board_cfg = { | ||
190 | }, | ||
191 | } | 189 | } |
192 | }; | 190 | }; |
193 | 191 | ||
@@ -278,7 +276,9 @@ static struct platform_device ceu1_device = { | |||
278 | /* FSI */ | 276 | /* FSI */ |
279 | /* change J20, J21, J22 pin to 1-2 connection to use slave mode */ | 277 | /* change J20, J21, J22 pin to 1-2 connection to use slave mode */ |
280 | static struct sh_fsi_platform_info fsi_info = { | 278 | static struct sh_fsi_platform_info fsi_info = { |
281 | .porta_flags = SH_FSI_BRS_INV, | 279 | .port_a = { |
280 | .flags = SH_FSI_BRS_INV, | ||
281 | }, | ||
282 | }; | 282 | }; |
283 | 283 | ||
284 | static struct resource fsi_resources[] = { | 284 | static struct resource fsi_resources[] = { |
@@ -888,12 +888,12 @@ static int __init devices_setup(void) | |||
888 | 888 | ||
889 | if (sw & SW41_B) { | 889 | if (sw & SW41_B) { |
890 | /* 720p */ | 890 | /* 720p */ |
891 | lcdc_info.ch[0].lcd_cfg = lcdc_720p_modes; | 891 | lcdc_info.ch[0].lcd_modes = lcdc_720p_modes; |
892 | lcdc_info.ch[0].num_cfg = ARRAY_SIZE(lcdc_720p_modes); | 892 | lcdc_info.ch[0].num_modes = ARRAY_SIZE(lcdc_720p_modes); |
893 | } else { | 893 | } else { |
894 | /* VGA */ | 894 | /* VGA */ |
895 | lcdc_info.ch[0].lcd_cfg = lcdc_vga_modes; | 895 | lcdc_info.ch[0].lcd_modes = lcdc_vga_modes; |
896 | lcdc_info.ch[0].num_cfg = ARRAY_SIZE(lcdc_vga_modes); | 896 | lcdc_info.ch[0].num_modes = ARRAY_SIZE(lcdc_vga_modes); |
897 | } | 897 | } |
898 | 898 | ||
899 | if (sw & SW41_A) { | 899 | if (sw & SW41_A) { |
diff --git a/arch/sh/drivers/dma/dma-g2.c b/arch/sh/drivers/dma/dma-g2.c index be9ca7ca0ce4..e1ab6eb3c04b 100644 --- a/arch/sh/drivers/dma/dma-g2.c +++ b/arch/sh/drivers/dma/dma-g2.c | |||
@@ -181,14 +181,14 @@ static int __init g2_dma_init(void) | |||
181 | 181 | ||
182 | ret = register_dmac(&g2_dma_info); | 182 | ret = register_dmac(&g2_dma_info); |
183 | if (unlikely(ret != 0)) | 183 | if (unlikely(ret != 0)) |
184 | free_irq(HW_EVENT_G2_DMA, 0); | 184 | free_irq(HW_EVENT_G2_DMA, &g2_dma_info); |
185 | 185 | ||
186 | return ret; | 186 | return ret; |
187 | } | 187 | } |
188 | 188 | ||
189 | static void __exit g2_dma_exit(void) | 189 | static void __exit g2_dma_exit(void) |
190 | { | 190 | { |
191 | free_irq(HW_EVENT_G2_DMA, 0); | 191 | free_irq(HW_EVENT_G2_DMA, &g2_dma_info); |
192 | unregister_dmac(&g2_dma_info); | 192 | unregister_dmac(&g2_dma_info); |
193 | } | 193 | } |
194 | 194 | ||
diff --git a/arch/sh/drivers/dma/dmabrg.c b/arch/sh/drivers/dma/dmabrg.c index 3d66a32ce610..c0dd904483c7 100644 --- a/arch/sh/drivers/dma/dmabrg.c +++ b/arch/sh/drivers/dma/dmabrg.c | |||
@@ -189,8 +189,8 @@ static int __init dmabrg_init(void) | |||
189 | if (ret == 0) | 189 | if (ret == 0) |
190 | return ret; | 190 | return ret; |
191 | 191 | ||
192 | free_irq(DMABRGI1, 0); | 192 | free_irq(DMABRGI1, NULL); |
193 | out1: free_irq(DMABRGI0, 0); | 193 | out1: free_irq(DMABRGI0, NULL); |
194 | out0: kfree(dmabrg_handlers); | 194 | out0: kfree(dmabrg_handlers); |
195 | return ret; | 195 | return ret; |
196 | } | 196 | } |
diff --git a/arch/sh/drivers/pci/pci-sh7780.c b/arch/sh/drivers/pci/pci-sh7780.c index fb8f14990743..5a6dab6e27d9 100644 --- a/arch/sh/drivers/pci/pci-sh7780.c +++ b/arch/sh/drivers/pci/pci-sh7780.c | |||
@@ -21,6 +21,13 @@ | |||
21 | #include <asm/mmu.h> | 21 | #include <asm/mmu.h> |
22 | #include <asm/sizes.h> | 22 | #include <asm/sizes.h> |
23 | 23 | ||
24 | #if defined(CONFIG_CPU_BIG_ENDIAN) | ||
25 | # define PCICR_ENDIANNESS SH4_PCICR_BSWP | ||
26 | #else | ||
27 | # define PCICR_ENDIANNESS 0 | ||
28 | #endif | ||
29 | |||
30 | |||
24 | static struct resource sh7785_pci_resources[] = { | 31 | static struct resource sh7785_pci_resources[] = { |
25 | { | 32 | { |
26 | .name = "PCI IO", | 33 | .name = "PCI IO", |
@@ -254,7 +261,7 @@ static int __init sh7780_pci_init(void) | |||
254 | __raw_writel(PCIECR_ENBL, PCIECR); | 261 | __raw_writel(PCIECR_ENBL, PCIECR); |
255 | 262 | ||
256 | /* Reset */ | 263 | /* Reset */ |
257 | __raw_writel(SH4_PCICR_PREFIX | SH4_PCICR_PRST, | 264 | __raw_writel(SH4_PCICR_PREFIX | SH4_PCICR_PRST | PCICR_ENDIANNESS, |
258 | chan->reg_base + SH4_PCICR); | 265 | chan->reg_base + SH4_PCICR); |
259 | 266 | ||
260 | /* | 267 | /* |
@@ -290,7 +297,8 @@ static int __init sh7780_pci_init(void) | |||
290 | * Now throw it in to register initialization mode and | 297 | * Now throw it in to register initialization mode and |
291 | * start the real work. | 298 | * start the real work. |
292 | */ | 299 | */ |
293 | __raw_writel(SH4_PCICR_PREFIX, chan->reg_base + SH4_PCICR); | 300 | __raw_writel(SH4_PCICR_PREFIX | PCICR_ENDIANNESS, |
301 | chan->reg_base + SH4_PCICR); | ||
294 | 302 | ||
295 | memphys = __pa(memory_start); | 303 | memphys = __pa(memory_start); |
296 | memsize = roundup_pow_of_two(memory_end - memory_start); | 304 | memsize = roundup_pow_of_two(memory_end - memory_start); |
@@ -380,7 +388,8 @@ static int __init sh7780_pci_init(void) | |||
380 | * Initialization mode complete, release the control register and | 388 | * Initialization mode complete, release the control register and |
381 | * enable round robin mode to stop device overruns/starvation. | 389 | * enable round robin mode to stop device overruns/starvation. |
382 | */ | 390 | */ |
383 | __raw_writel(SH4_PCICR_PREFIX | SH4_PCICR_CFIN | SH4_PCICR_FTO, | 391 | __raw_writel(SH4_PCICR_PREFIX | SH4_PCICR_CFIN | SH4_PCICR_FTO | |
392 | PCICR_ENDIANNESS, | ||
384 | chan->reg_base + SH4_PCICR); | 393 | chan->reg_base + SH4_PCICR); |
385 | 394 | ||
386 | ret = register_pci_controller(chan); | 395 | ret = register_pci_controller(chan); |
diff --git a/arch/sh/drivers/pci/pci.c b/arch/sh/drivers/pci/pci.c index 1e7b0e2e764d..9d10a3cb8797 100644 --- a/arch/sh/drivers/pci/pci.c +++ b/arch/sh/drivers/pci/pci.c | |||
@@ -37,11 +37,20 @@ static void __devinit pcibios_scanbus(struct pci_channel *hose) | |||
37 | static int next_busno; | 37 | static int next_busno; |
38 | static int need_domain_info; | 38 | static int need_domain_info; |
39 | LIST_HEAD(resources); | 39 | LIST_HEAD(resources); |
40 | struct resource *res; | ||
41 | resource_size_t offset; | ||
40 | int i; | 42 | int i; |
41 | struct pci_bus *bus; | 43 | struct pci_bus *bus; |
42 | 44 | ||
43 | for (i = 0; i < hose->nr_resources; i++) | 45 | for (i = 0; i < hose->nr_resources; i++) { |
44 | pci_add_resource(&resources, hose->resources + i); | 46 | res = hose->resources + i; |
47 | offset = 0; | ||
48 | if (res->flags & IORESOURCE_IO) | ||
49 | offset = hose->io_offset; | ||
50 | else if (res->flags & IORESOURCE_MEM) | ||
51 | offset = hose->mem_offset; | ||
52 | pci_add_resource_offset(&resources, res, offset); | ||
53 | } | ||
45 | 54 | ||
46 | bus = pci_scan_root_bus(NULL, next_busno, hose->pci_ops, hose, | 55 | bus = pci_scan_root_bus(NULL, next_busno, hose->pci_ops, hose, |
47 | &resources); | 56 | &resources); |
@@ -143,42 +152,12 @@ static int __init pcibios_init(void) | |||
143 | } | 152 | } |
144 | subsys_initcall(pcibios_init); | 153 | subsys_initcall(pcibios_init); |
145 | 154 | ||
146 | static void pcibios_fixup_device_resources(struct pci_dev *dev, | ||
147 | struct pci_bus *bus) | ||
148 | { | ||
149 | /* Update device resources. */ | ||
150 | struct pci_channel *hose = bus->sysdata; | ||
151 | unsigned long offset = 0; | ||
152 | int i; | ||
153 | |||
154 | for (i = 0; i < PCI_NUM_RESOURCES; i++) { | ||
155 | if (!dev->resource[i].start) | ||
156 | continue; | ||
157 | if (dev->resource[i].flags & IORESOURCE_IO) | ||
158 | offset = hose->io_offset; | ||
159 | else if (dev->resource[i].flags & IORESOURCE_MEM) | ||
160 | offset = hose->mem_offset; | ||
161 | |||
162 | dev->resource[i].start += offset; | ||
163 | dev->resource[i].end += offset; | ||
164 | } | ||
165 | } | ||
166 | |||
167 | /* | 155 | /* |
168 | * Called after each bus is probed, but before its children | 156 | * Called after each bus is probed, but before its children |
169 | * are examined. | 157 | * are examined. |
170 | */ | 158 | */ |
171 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) | 159 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) |
172 | { | 160 | { |
173 | struct pci_dev *dev; | ||
174 | struct list_head *ln; | ||
175 | |||
176 | for (ln = bus->devices.next; ln != &bus->devices; ln = ln->next) { | ||
177 | dev = pci_dev_b(ln); | ||
178 | |||
179 | if ((dev->class >> 8) != PCI_CLASS_BRIDGE_PCI) | ||
180 | pcibios_fixup_device_resources(dev, bus); | ||
181 | } | ||
182 | } | 161 | } |
183 | 162 | ||
184 | /* | 163 | /* |
@@ -208,36 +187,6 @@ resource_size_t pcibios_align_resource(void *data, const struct resource *res, | |||
208 | return start; | 187 | return start; |
209 | } | 188 | } |
210 | 189 | ||
211 | void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, | ||
212 | struct resource *res) | ||
213 | { | ||
214 | struct pci_channel *hose = dev->sysdata; | ||
215 | unsigned long offset = 0; | ||
216 | |||
217 | if (res->flags & IORESOURCE_IO) | ||
218 | offset = hose->io_offset; | ||
219 | else if (res->flags & IORESOURCE_MEM) | ||
220 | offset = hose->mem_offset; | ||
221 | |||
222 | region->start = res->start - offset; | ||
223 | region->end = res->end - offset; | ||
224 | } | ||
225 | |||
226 | void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, | ||
227 | struct pci_bus_region *region) | ||
228 | { | ||
229 | struct pci_channel *hose = dev->sysdata; | ||
230 | unsigned long offset = 0; | ||
231 | |||
232 | if (res->flags & IORESOURCE_IO) | ||
233 | offset = hose->io_offset; | ||
234 | else if (res->flags & IORESOURCE_MEM) | ||
235 | offset = hose->mem_offset; | ||
236 | |||
237 | res->start = region->start + offset; | ||
238 | res->end = region->end + offset; | ||
239 | } | ||
240 | |||
241 | int pcibios_enable_device(struct pci_dev *dev, int mask) | 190 | int pcibios_enable_device(struct pci_dev *dev, int mask) |
242 | { | 191 | { |
243 | return pci_enable_resources(dev, mask); | 192 | return pci_enable_resources(dev, mask); |
@@ -381,8 +330,6 @@ EXPORT_SYMBOL(pci_iounmap); | |||
381 | #endif /* CONFIG_GENERIC_IOMAP */ | 330 | #endif /* CONFIG_GENERIC_IOMAP */ |
382 | 331 | ||
383 | #ifdef CONFIG_HOTPLUG | 332 | #ifdef CONFIG_HOTPLUG |
384 | EXPORT_SYMBOL(pcibios_resource_to_bus); | ||
385 | EXPORT_SYMBOL(pcibios_bus_to_resource); | ||
386 | EXPORT_SYMBOL(PCIBIOS_MIN_IO); | 333 | EXPORT_SYMBOL(PCIBIOS_MIN_IO); |
387 | EXPORT_SYMBOL(PCIBIOS_MIN_MEM); | 334 | EXPORT_SYMBOL(PCIBIOS_MIN_MEM); |
388 | #endif | 335 | #endif |
diff --git a/arch/sh/include/asm/atomic-irq.h b/arch/sh/include/asm/atomic-irq.h index 467d9415a32e..9f7c56609e53 100644 --- a/arch/sh/include/asm/atomic-irq.h +++ b/arch/sh/include/asm/atomic-irq.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_SH_ATOMIC_IRQ_H | 1 | #ifndef __ASM_SH_ATOMIC_IRQ_H |
2 | #define __ASM_SH_ATOMIC_IRQ_H | 2 | #define __ASM_SH_ATOMIC_IRQ_H |
3 | 3 | ||
4 | #include <linux/irqflags.h> | ||
5 | |||
4 | /* | 6 | /* |
5 | * To get proper branch prediction for the main line, we must branch | 7 | * To get proper branch prediction for the main line, we must branch |
6 | * forward to code at the end of this object's .text section, then | 8 | * forward to code at the end of this object's .text section, then |
diff --git a/arch/sh/include/asm/atomic.h b/arch/sh/include/asm/atomic.h index 63a27dbc952e..37f2f4a55231 100644 --- a/arch/sh/include/asm/atomic.h +++ b/arch/sh/include/asm/atomic.h | |||
@@ -9,7 +9,7 @@ | |||
9 | 9 | ||
10 | #include <linux/compiler.h> | 10 | #include <linux/compiler.h> |
11 | #include <linux/types.h> | 11 | #include <linux/types.h> |
12 | #include <asm/system.h> | 12 | #include <asm/cmpxchg.h> |
13 | 13 | ||
14 | #define ATOMIC_INIT(i) ( (atomic_t) { (i) } ) | 14 | #define ATOMIC_INIT(i) ( (atomic_t) { (i) } ) |
15 | 15 | ||
diff --git a/arch/sh/include/asm/auxvec.h b/arch/sh/include/asm/auxvec.h index 483effd65e00..8bcc51af9367 100644 --- a/arch/sh/include/asm/auxvec.h +++ b/arch/sh/include/asm/auxvec.h | |||
@@ -33,4 +33,6 @@ | |||
33 | #define AT_L1D_CACHESHAPE 35 | 33 | #define AT_L1D_CACHESHAPE 35 |
34 | #define AT_L2_CACHESHAPE 36 | 34 | #define AT_L2_CACHESHAPE 36 |
35 | 35 | ||
36 | #define AT_VECTOR_SIZE_ARCH 5 /* entries in ARCH_DLINFO */ | ||
37 | |||
36 | #endif /* __ASM_SH_AUXVEC_H */ | 38 | #endif /* __ASM_SH_AUXVEC_H */ |
diff --git a/arch/sh/include/asm/barrier.h b/arch/sh/include/asm/barrier.h new file mode 100644 index 000000000000..72c103dae300 --- /dev/null +++ b/arch/sh/include/asm/barrier.h | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima | ||
3 | * Copyright (C) 2002 Paul Mundt | ||
4 | */ | ||
5 | #ifndef __ASM_SH_BARRIER_H | ||
6 | #define __ASM_SH_BARRIER_H | ||
7 | |||
8 | #if defined(CONFIG_CPU_SH4A) || defined(CONFIG_CPU_SH5) | ||
9 | #include <asm/cache_insns.h> | ||
10 | #endif | ||
11 | |||
12 | /* | ||
13 | * A brief note on ctrl_barrier(), the control register write barrier. | ||
14 | * | ||
15 | * Legacy SH cores typically require a sequence of 8 nops after | ||
16 | * modification of a control register in order for the changes to take | ||
17 | * effect. On newer cores (like the sh4a and sh5) this is accomplished | ||
18 | * with icbi. | ||
19 | * | ||
20 | * Also note that on sh4a in the icbi case we can forego a synco for the | ||
21 | * write barrier, as it's not necessary for control registers. | ||
22 | * | ||
23 | * Historically we have only done this type of barrier for the MMUCR, but | ||
24 | * it's also necessary for the CCR, so we make it generic here instead. | ||
25 | */ | ||
26 | #if defined(CONFIG_CPU_SH4A) || defined(CONFIG_CPU_SH5) | ||
27 | #define mb() __asm__ __volatile__ ("synco": : :"memory") | ||
28 | #define rmb() mb() | ||
29 | #define wmb() __asm__ __volatile__ ("synco": : :"memory") | ||
30 | #define ctrl_barrier() __icbi(PAGE_OFFSET) | ||
31 | #define read_barrier_depends() do { } while(0) | ||
32 | #else | ||
33 | #define mb() __asm__ __volatile__ ("": : :"memory") | ||
34 | #define rmb() mb() | ||
35 | #define wmb() __asm__ __volatile__ ("": : :"memory") | ||
36 | #define ctrl_barrier() __asm__ __volatile__ ("nop;nop;nop;nop;nop;nop;nop;nop") | ||
37 | #define read_barrier_depends() do { } while(0) | ||
38 | #endif | ||
39 | |||
40 | #ifdef CONFIG_SMP | ||
41 | #define smp_mb() mb() | ||
42 | #define smp_rmb() rmb() | ||
43 | #define smp_wmb() wmb() | ||
44 | #define smp_read_barrier_depends() read_barrier_depends() | ||
45 | #else | ||
46 | #define smp_mb() barrier() | ||
47 | #define smp_rmb() barrier() | ||
48 | #define smp_wmb() barrier() | ||
49 | #define smp_read_barrier_depends() do { } while(0) | ||
50 | #endif | ||
51 | |||
52 | #define set_mb(var, value) do { (void)xchg(&var, value); } while (0) | ||
53 | |||
54 | #endif /* __ASM_SH_BARRIER_H */ | ||
diff --git a/arch/sh/include/asm/bitops.h b/arch/sh/include/asm/bitops.h index 90fa3e48b4d6..ea8706d94f08 100644 --- a/arch/sh/include/asm/bitops.h +++ b/arch/sh/include/asm/bitops.h | |||
@@ -7,7 +7,6 @@ | |||
7 | #error only <linux/bitops.h> can be included directly | 7 | #error only <linux/bitops.h> can be included directly |
8 | #endif | 8 | #endif |
9 | 9 | ||
10 | #include <asm/system.h> | ||
11 | /* For __swab32 */ | 10 | /* For __swab32 */ |
12 | #include <asm/byteorder.h> | 11 | #include <asm/byteorder.h> |
13 | 12 | ||
diff --git a/arch/sh/include/asm/bl_bit.h b/arch/sh/include/asm/bl_bit.h new file mode 100644 index 000000000000..45e6b9fc37a0 --- /dev/null +++ b/arch/sh/include/asm/bl_bit.h | |||
@@ -0,0 +1,10 @@ | |||
1 | #ifndef __ASM_SH_BL_BIT_H | ||
2 | #define __ASM_SH_BL_BIT_H | ||
3 | |||
4 | #ifdef CONFIG_SUPERH32 | ||
5 | # include "bl_bit_32.h" | ||
6 | #else | ||
7 | # include "bl_bit_64.h" | ||
8 | #endif | ||
9 | |||
10 | #endif /* __ASM_SH_BL_BIT_H */ | ||
diff --git a/arch/sh/include/asm/bl_bit_32.h b/arch/sh/include/asm/bl_bit_32.h new file mode 100644 index 000000000000..fd21eee62149 --- /dev/null +++ b/arch/sh/include/asm/bl_bit_32.h | |||
@@ -0,0 +1,33 @@ | |||
1 | #ifndef __ASM_SH_BL_BIT_32_H | ||
2 | #define __ASM_SH_BL_BIT_32_H | ||
3 | |||
4 | static inline void set_bl_bit(void) | ||
5 | { | ||
6 | unsigned long __dummy0, __dummy1; | ||
7 | |||
8 | __asm__ __volatile__ ( | ||
9 | "stc sr, %0\n\t" | ||
10 | "or %2, %0\n\t" | ||
11 | "and %3, %0\n\t" | ||
12 | "ldc %0, sr\n\t" | ||
13 | : "=&r" (__dummy0), "=r" (__dummy1) | ||
14 | : "r" (0x10000000), "r" (0xffffff0f) | ||
15 | : "memory" | ||
16 | ); | ||
17 | } | ||
18 | |||
19 | static inline void clear_bl_bit(void) | ||
20 | { | ||
21 | unsigned long __dummy0, __dummy1; | ||
22 | |||
23 | __asm__ __volatile__ ( | ||
24 | "stc sr, %0\n\t" | ||
25 | "and %2, %0\n\t" | ||
26 | "ldc %0, sr\n\t" | ||
27 | : "=&r" (__dummy0), "=r" (__dummy1) | ||
28 | : "1" (~0x10000000) | ||
29 | : "memory" | ||
30 | ); | ||
31 | } | ||
32 | |||
33 | #endif /* __ASM_SH_BL_BIT_32_H */ | ||
diff --git a/arch/sh/include/asm/bl_bit_64.h b/arch/sh/include/asm/bl_bit_64.h new file mode 100644 index 000000000000..6cc8711af435 --- /dev/null +++ b/arch/sh/include/asm/bl_bit_64.h | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000, 2001 Paolo Alberelli | ||
3 | * Copyright (C) 2003 Paul Mundt | ||
4 | * Copyright (C) 2004 Richard Curnow | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | #ifndef __ASM_SH_BL_BIT_64_H | ||
11 | #define __ASM_SH_BL_BIT_64_H | ||
12 | |||
13 | #include <asm/processor.h> | ||
14 | |||
15 | #define SR_BL_LL 0x0000000010000000LL | ||
16 | |||
17 | static inline void set_bl_bit(void) | ||
18 | { | ||
19 | unsigned long long __dummy0, __dummy1 = SR_BL_LL; | ||
20 | |||
21 | __asm__ __volatile__("getcon " __SR ", %0\n\t" | ||
22 | "or %0, %1, %0\n\t" | ||
23 | "putcon %0, " __SR "\n\t" | ||
24 | : "=&r" (__dummy0) | ||
25 | : "r" (__dummy1)); | ||
26 | |||
27 | } | ||
28 | |||
29 | static inline void clear_bl_bit(void) | ||
30 | { | ||
31 | unsigned long long __dummy0, __dummy1 = ~SR_BL_LL; | ||
32 | |||
33 | __asm__ __volatile__("getcon " __SR ", %0\n\t" | ||
34 | "and %0, %1, %0\n\t" | ||
35 | "putcon %0, " __SR "\n\t" | ||
36 | : "=&r" (__dummy0) | ||
37 | : "r" (__dummy1)); | ||
38 | } | ||
39 | |||
40 | #endif /* __ASM_SH_BL_BIT_64_H */ | ||
diff --git a/arch/sh/include/asm/bug.h b/arch/sh/include/asm/bug.h index 6323f864d111..2b87d86bfc41 100644 --- a/arch/sh/include/asm/bug.h +++ b/arch/sh/include/asm/bug.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_SH_BUG_H | 1 | #ifndef __ASM_SH_BUG_H |
2 | #define __ASM_SH_BUG_H | 2 | #define __ASM_SH_BUG_H |
3 | 3 | ||
4 | #include <linux/linkage.h> | ||
5 | |||
4 | #define TRAPA_BUG_OPCODE 0xc33e /* trapa #0x3e */ | 6 | #define TRAPA_BUG_OPCODE 0xc33e /* trapa #0x3e */ |
5 | #define BUGFLAG_UNWINDER (1 << 1) | 7 | #define BUGFLAG_UNWINDER (1 << 1) |
6 | 8 | ||
@@ -107,4 +109,7 @@ do { \ | |||
107 | 109 | ||
108 | #include <asm-generic/bug.h> | 110 | #include <asm-generic/bug.h> |
109 | 111 | ||
112 | struct pt_regs; | ||
113 | extern void die(const char *str, struct pt_regs *regs, long err) __attribute__ ((noreturn)); | ||
114 | |||
110 | #endif /* __ASM_SH_BUG_H */ | 115 | #endif /* __ASM_SH_BUG_H */ |
diff --git a/arch/sh/include/asm/cache_insns.h b/arch/sh/include/asm/cache_insns.h new file mode 100644 index 000000000000..d25fbe53090d --- /dev/null +++ b/arch/sh/include/asm/cache_insns.h | |||
@@ -0,0 +1,11 @@ | |||
1 | #ifndef __ASM_SH_CACHE_INSNS_H | ||
2 | #define __ASM_SH_CACHE_INSNS_H | ||
3 | |||
4 | |||
5 | #ifdef CONFIG_SUPERH32 | ||
6 | # include "cache_insns_32.h" | ||
7 | #else | ||
8 | # include "cache_insns_64.h" | ||
9 | #endif | ||
10 | |||
11 | #endif /* __ASM_SH_CACHE_INSNS_H */ | ||
diff --git a/arch/sh/include/asm/cache_insns_32.h b/arch/sh/include/asm/cache_insns_32.h new file mode 100644 index 000000000000..b92fe5416092 --- /dev/null +++ b/arch/sh/include/asm/cache_insns_32.h | |||
@@ -0,0 +1,21 @@ | |||
1 | #ifndef __ASM_SH_CACHE_INSNS_32_H | ||
2 | #define __ASM_SH_CACHE_INSNS_32_H | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | |||
6 | #if defined(CONFIG_CPU_SH4A) | ||
7 | #define __icbi(addr) __asm__ __volatile__ ( "icbi @%0\n\t" : : "r" (addr)) | ||
8 | #else | ||
9 | #define __icbi(addr) mb() | ||
10 | #endif | ||
11 | |||
12 | #define __ocbp(addr) __asm__ __volatile__ ( "ocbp @%0\n\t" : : "r" (addr)) | ||
13 | #define __ocbi(addr) __asm__ __volatile__ ( "ocbi @%0\n\t" : : "r" (addr)) | ||
14 | #define __ocbwb(addr) __asm__ __volatile__ ( "ocbwb @%0\n\t" : : "r" (addr)) | ||
15 | |||
16 | static inline reg_size_t register_align(void *val) | ||
17 | { | ||
18 | return (unsigned long)(signed long)val; | ||
19 | } | ||
20 | |||
21 | #endif /* __ASM_SH_CACHE_INSNS_32_H */ | ||
diff --git a/arch/sh/include/asm/cache_insns_64.h b/arch/sh/include/asm/cache_insns_64.h new file mode 100644 index 000000000000..70b6357eaf1a --- /dev/null +++ b/arch/sh/include/asm/cache_insns_64.h | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000, 2001 Paolo Alberelli | ||
3 | * Copyright (C) 2003 Paul Mundt | ||
4 | * Copyright (C) 2004 Richard Curnow | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | #ifndef __ASM_SH_CACHE_INSNS_64_H | ||
11 | #define __ASM_SH_CACHE_INSNS_64_H | ||
12 | |||
13 | #define __icbi(addr) __asm__ __volatile__ ( "icbi %0, 0\n\t" : : "r" (addr)) | ||
14 | #define __ocbp(addr) __asm__ __volatile__ ( "ocbp %0, 0\n\t" : : "r" (addr)) | ||
15 | #define __ocbi(addr) __asm__ __volatile__ ( "ocbi %0, 0\n\t" : : "r" (addr)) | ||
16 | #define __ocbwb(addr) __asm__ __volatile__ ( "ocbwb %0, 0\n\t" : : "r" (addr)) | ||
17 | |||
18 | static inline reg_size_t register_align(void *val) | ||
19 | { | ||
20 | return (unsigned long long)(signed long long)(signed long)val; | ||
21 | } | ||
22 | |||
23 | #endif /* __ASM_SH_CACHE_INSNS_64_H */ | ||
diff --git a/arch/sh/include/asm/clock.h b/arch/sh/include/asm/clock.h index 803d4c7f09dc..0390a07e7e3b 100644 --- a/arch/sh/include/asm/clock.h +++ b/arch/sh/include/asm/clock.h | |||
@@ -4,7 +4,7 @@ | |||
4 | #include <linux/sh_clk.h> | 4 | #include <linux/sh_clk.h> |
5 | 5 | ||
6 | /* Should be defined by processor-specific code */ | 6 | /* Should be defined by processor-specific code */ |
7 | void __deprecated arch_init_clk_ops(struct clk_ops **, int type); | 7 | void __deprecated arch_init_clk_ops(struct sh_clk_ops **, int type); |
8 | int __init arch_clk_init(void); | 8 | int __init arch_clk_init(void); |
9 | 9 | ||
10 | /* arch/sh/kernel/cpu/clock-cpg.c */ | 10 | /* arch/sh/kernel/cpu/clock-cpg.c */ |
diff --git a/arch/sh/include/asm/cmpxchg-irq.h b/arch/sh/include/asm/cmpxchg-irq.h index 43049ec0554b..bd11f630414a 100644 --- a/arch/sh/include/asm/cmpxchg-irq.h +++ b/arch/sh/include/asm/cmpxchg-irq.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_SH_CMPXCHG_IRQ_H | 1 | #ifndef __ASM_SH_CMPXCHG_IRQ_H |
2 | #define __ASM_SH_CMPXCHG_IRQ_H | 2 | #define __ASM_SH_CMPXCHG_IRQ_H |
3 | 3 | ||
4 | #include <linux/irqflags.h> | ||
5 | |||
4 | static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val) | 6 | static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val) |
5 | { | 7 | { |
6 | unsigned long flags, retval; | 8 | unsigned long flags, retval; |
diff --git a/arch/sh/include/asm/cmpxchg.h b/arch/sh/include/asm/cmpxchg.h new file mode 100644 index 000000000000..f6bd1406b897 --- /dev/null +++ b/arch/sh/include/asm/cmpxchg.h | |||
@@ -0,0 +1,70 @@ | |||
1 | #ifndef __ASM_SH_CMPXCHG_H | ||
2 | #define __ASM_SH_CMPXCHG_H | ||
3 | |||
4 | /* | ||
5 | * Atomic operations that C can't guarantee us. Useful for | ||
6 | * resource counting etc.. | ||
7 | */ | ||
8 | |||
9 | #include <linux/compiler.h> | ||
10 | #include <linux/types.h> | ||
11 | |||
12 | #if defined(CONFIG_GUSA_RB) | ||
13 | #include <asm/cmpxchg-grb.h> | ||
14 | #elif defined(CONFIG_CPU_SH4A) | ||
15 | #include <asm/cmpxchg-llsc.h> | ||
16 | #else | ||
17 | #include <asm/cmpxchg-irq.h> | ||
18 | #endif | ||
19 | |||
20 | extern void __xchg_called_with_bad_pointer(void); | ||
21 | |||
22 | #define __xchg(ptr, x, size) \ | ||
23 | ({ \ | ||
24 | unsigned long __xchg__res; \ | ||
25 | volatile void *__xchg_ptr = (ptr); \ | ||
26 | switch (size) { \ | ||
27 | case 4: \ | ||
28 | __xchg__res = xchg_u32(__xchg_ptr, x); \ | ||
29 | break; \ | ||
30 | case 1: \ | ||
31 | __xchg__res = xchg_u8(__xchg_ptr, x); \ | ||
32 | break; \ | ||
33 | default: \ | ||
34 | __xchg_called_with_bad_pointer(); \ | ||
35 | __xchg__res = x; \ | ||
36 | break; \ | ||
37 | } \ | ||
38 | \ | ||
39 | __xchg__res; \ | ||
40 | }) | ||
41 | |||
42 | #define xchg(ptr,x) \ | ||
43 | ((__typeof__(*(ptr)))__xchg((ptr),(unsigned long)(x), sizeof(*(ptr)))) | ||
44 | |||
45 | /* This function doesn't exist, so you'll get a linker error | ||
46 | * if something tries to do an invalid cmpxchg(). */ | ||
47 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
48 | |||
49 | #define __HAVE_ARCH_CMPXCHG 1 | ||
50 | |||
51 | static inline unsigned long __cmpxchg(volatile void * ptr, unsigned long old, | ||
52 | unsigned long new, int size) | ||
53 | { | ||
54 | switch (size) { | ||
55 | case 4: | ||
56 | return __cmpxchg_u32(ptr, old, new); | ||
57 | } | ||
58 | __cmpxchg_called_with_bad_pointer(); | ||
59 | return old; | ||
60 | } | ||
61 | |||
62 | #define cmpxchg(ptr,o,n) \ | ||
63 | ({ \ | ||
64 | __typeof__(*(ptr)) _o_ = (o); \ | ||
65 | __typeof__(*(ptr)) _n_ = (n); \ | ||
66 | (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
67 | (unsigned long)_n_, sizeof(*(ptr))); \ | ||
68 | }) | ||
69 | |||
70 | #endif /* __ASM_SH_CMPXCHG_H */ | ||
diff --git a/arch/sh/include/asm/exec.h b/arch/sh/include/asm/exec.h new file mode 100644 index 000000000000..69486a9497f7 --- /dev/null +++ b/arch/sh/include/asm/exec.h | |||
@@ -0,0 +1,10 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima | ||
3 | * Copyright (C) 2002 Paul Mundt | ||
4 | */ | ||
5 | #ifndef __ASM_SH_EXEC_H | ||
6 | #define __ASM_SH_EXEC_H | ||
7 | |||
8 | #define arch_align_stack(x) (x) | ||
9 | |||
10 | #endif /* __ASM_SH_EXEC_H */ | ||
diff --git a/arch/sh/include/asm/futex-irq.h b/arch/sh/include/asm/futex-irq.h index 6cb9f193a95e..63d33129ea23 100644 --- a/arch/sh/include/asm/futex-irq.h +++ b/arch/sh/include/asm/futex-irq.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef __ASM_SH_FUTEX_IRQ_H | 1 | #ifndef __ASM_SH_FUTEX_IRQ_H |
2 | #define __ASM_SH_FUTEX_IRQ_H | 2 | #define __ASM_SH_FUTEX_IRQ_H |
3 | 3 | ||
4 | #include <asm/system.h> | ||
5 | 4 | ||
6 | static inline int atomic_futex_op_xchg_set(int oparg, u32 __user *uaddr, | 5 | static inline int atomic_futex_op_xchg_set(int oparg, u32 __user *uaddr, |
7 | int *oldval) | 6 | int *oldval) |
diff --git a/arch/sh/include/asm/io.h b/arch/sh/include/asm/io.h index 28c5aa58bb45..ec464a6b95fe 100644 --- a/arch/sh/include/asm/io.h +++ b/arch/sh/include/asm/io.h | |||
@@ -14,7 +14,6 @@ | |||
14 | */ | 14 | */ |
15 | #include <linux/errno.h> | 15 | #include <linux/errno.h> |
16 | #include <asm/cache.h> | 16 | #include <asm/cache.h> |
17 | #include <asm/system.h> | ||
18 | #include <asm/addrspace.h> | 17 | #include <asm/addrspace.h> |
19 | #include <asm/machvec.h> | 18 | #include <asm/machvec.h> |
20 | #include <asm/pgtable.h> | 19 | #include <asm/pgtable.h> |
@@ -24,6 +23,7 @@ | |||
24 | #define __IO_PREFIX generic | 23 | #define __IO_PREFIX generic |
25 | #include <asm/io_generic.h> | 24 | #include <asm/io_generic.h> |
26 | #include <asm/io_trapped.h> | 25 | #include <asm/io_trapped.h> |
26 | #include <mach/mangle-port.h> | ||
27 | 27 | ||
28 | #define __raw_writeb(v,a) (__chk_io_ptr(a), *(volatile u8 __force *)(a) = (v)) | 28 | #define __raw_writeb(v,a) (__chk_io_ptr(a), *(volatile u8 __force *)(a) = (v)) |
29 | #define __raw_writew(v,a) (__chk_io_ptr(a), *(volatile u16 __force *)(a) = (v)) | 29 | #define __raw_writew(v,a) (__chk_io_ptr(a), *(volatile u16 __force *)(a) = (v)) |
@@ -35,21 +35,15 @@ | |||
35 | #define __raw_readl(a) (__chk_io_ptr(a), *(volatile u32 __force *)(a)) | 35 | #define __raw_readl(a) (__chk_io_ptr(a), *(volatile u32 __force *)(a)) |
36 | #define __raw_readq(a) (__chk_io_ptr(a), *(volatile u64 __force *)(a)) | 36 | #define __raw_readq(a) (__chk_io_ptr(a), *(volatile u64 __force *)(a)) |
37 | 37 | ||
38 | #define readb_relaxed(c) ({ u8 __v = __raw_readb(c); __v; }) | 38 | #define readb_relaxed(c) ({ u8 __v = ioswabb(__raw_readb(c)); __v; }) |
39 | #define readw_relaxed(c) ({ u16 __v = le16_to_cpu((__force __le16) \ | 39 | #define readw_relaxed(c) ({ u16 __v = ioswabw(__raw_readw(c)); __v; }) |
40 | __raw_readw(c)); __v; }) | 40 | #define readl_relaxed(c) ({ u32 __v = ioswabl(__raw_readl(c)); __v; }) |
41 | #define readl_relaxed(c) ({ u32 __v = le32_to_cpu((__force __le32) \ | 41 | #define readq_relaxed(c) ({ u64 __v = ioswabq(__raw_readq(c)); __v; }) |
42 | __raw_readl(c)); __v; }) | 42 | |
43 | #define readq_relaxed(c) ({ u64 __v = le64_to_cpu((__force __le64) \ | 43 | #define writeb_relaxed(v,c) ((void)__raw_writeb((__force u8)ioswabb(v),c)) |
44 | __raw_readq(c)); __v; }) | 44 | #define writew_relaxed(v,c) ((void)__raw_writew((__force u16)ioswabw(v),c)) |
45 | 45 | #define writel_relaxed(v,c) ((void)__raw_writel((__force u32)ioswabl(v),c)) | |
46 | #define writeb_relaxed(v,c) ((void)__raw_writeb(v,c)) | 46 | #define writeq_relaxed(v,c) ((void)__raw_writeq((__force u64)ioswabq(v),c)) |
47 | #define writew_relaxed(v,c) ((void)__raw_writew((__force u16) \ | ||
48 | cpu_to_le16(v),c)) | ||
49 | #define writel_relaxed(v,c) ((void)__raw_writel((__force u32) \ | ||
50 | cpu_to_le32(v),c)) | ||
51 | #define writeq_relaxed(v,c) ((void)__raw_writeq((__force u64) \ | ||
52 | cpu_to_le64(v),c)) | ||
53 | 47 | ||
54 | #define readb(a) ({ u8 r_ = readb_relaxed(a); rmb(); r_; }) | 48 | #define readb(a) ({ u8 r_ = readb_relaxed(a); rmb(); r_; }) |
55 | #define readw(a) ({ u16 r_ = readw_relaxed(a); rmb(); r_; }) | 49 | #define readw(a) ({ u16 r_ = readw_relaxed(a); rmb(); r_; }) |
diff --git a/arch/sh/include/asm/irq.h b/arch/sh/include/asm/irq.h index 45d08b6a5ef7..2a62017eb275 100644 --- a/arch/sh/include/asm/irq.h +++ b/arch/sh/include/asm/irq.h | |||
@@ -21,17 +21,6 @@ | |||
21 | #define NO_IRQ_IGNORE ((unsigned int)-1) | 21 | #define NO_IRQ_IGNORE ((unsigned int)-1) |
22 | 22 | ||
23 | /* | 23 | /* |
24 | * Convert back and forth between INTEVT and IRQ values. | ||
25 | */ | ||
26 | #ifdef CONFIG_CPU_HAS_INTEVT | ||
27 | #define evt2irq(evt) (((evt) >> 5) - 16) | ||
28 | #define irq2evt(irq) (((irq) + 16) << 5) | ||
29 | #else | ||
30 | #define evt2irq(evt) (evt) | ||
31 | #define irq2evt(irq) (irq) | ||
32 | #endif | ||
33 | |||
34 | /* | ||
35 | * Simple Mask Register Support | 24 | * Simple Mask Register Support |
36 | */ | 25 | */ |
37 | extern void make_maskreg_irq(unsigned int irq); | 26 | extern void make_maskreg_irq(unsigned int irq); |
diff --git a/arch/sh/include/asm/pci.h b/arch/sh/include/asm/pci.h index cb21e2399dc1..bff96c2e7d25 100644 --- a/arch/sh/include/asm/pci.h +++ b/arch/sh/include/asm/pci.h | |||
@@ -114,12 +114,6 @@ static inline void pci_dma_burst_advice(struct pci_dev *pdev, | |||
114 | /* Board-specific fixup routines. */ | 114 | /* Board-specific fixup routines. */ |
115 | int pcibios_map_platform_irq(const struct pci_dev *dev, u8 slot, u8 pin); | 115 | int pcibios_map_platform_irq(const struct pci_dev *dev, u8 slot, u8 pin); |
116 | 116 | ||
117 | extern void pcibios_resource_to_bus(struct pci_dev *dev, | ||
118 | struct pci_bus_region *region, struct resource *res); | ||
119 | |||
120 | extern void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, | ||
121 | struct pci_bus_region *region); | ||
122 | |||
123 | #define pci_domain_nr(bus) ((struct pci_channel *)(bus)->sysdata)->index | 117 | #define pci_domain_nr(bus) ((struct pci_channel *)(bus)->sysdata)->index |
124 | 118 | ||
125 | static inline int pci_proc_domain(struct pci_bus *bus) | 119 | static inline int pci_proc_domain(struct pci_bus *bus) |
diff --git a/arch/sh/include/asm/posix_types_32.h b/arch/sh/include/asm/posix_types_32.h index 6a9ceaaf1aea..abda58467ece 100644 --- a/arch/sh/include/asm/posix_types_32.h +++ b/arch/sh/include/asm/posix_types_32.h | |||
@@ -12,11 +12,6 @@ typedef unsigned short __kernel_uid_t; | |||
12 | typedef unsigned short __kernel_gid_t; | 12 | typedef unsigned short __kernel_gid_t; |
13 | #define __kernel_gid_t __kernel_gid_t | 13 | #define __kernel_gid_t __kernel_gid_t |
14 | 14 | ||
15 | typedef unsigned int __kernel_uid32_t; | ||
16 | #define __kernel_uid32_t __kernel_uid32_t | ||
17 | typedef unsigned int __kernel_gid32_t; | ||
18 | #define __kernel_gid32_t __kernel_gid32_t | ||
19 | |||
20 | typedef unsigned short __kernel_old_uid_t; | 15 | typedef unsigned short __kernel_old_uid_t; |
21 | #define __kernel_old_uid_t __kernel_old_uid_t | 16 | #define __kernel_old_uid_t __kernel_old_uid_t |
22 | typedef unsigned short __kernel_old_gid_t; | 17 | typedef unsigned short __kernel_old_gid_t; |
diff --git a/arch/sh/include/asm/posix_types_64.h b/arch/sh/include/asm/posix_types_64.h index 8cd11485c06b..fcda07b4a616 100644 --- a/arch/sh/include/asm/posix_types_64.h +++ b/arch/sh/include/asm/posix_types_64.h | |||
@@ -17,10 +17,6 @@ typedef int __kernel_ssize_t; | |||
17 | #define __kernel_ssize_t __kernel_ssize_t | 17 | #define __kernel_ssize_t __kernel_ssize_t |
18 | typedef int __kernel_ptrdiff_t; | 18 | typedef int __kernel_ptrdiff_t; |
19 | #define __kernel_ptrdiff_t __kernel_ptrdiff_t | 19 | #define __kernel_ptrdiff_t __kernel_ptrdiff_t |
20 | typedef unsigned int __kernel_uid32_t; | ||
21 | #define __kernel_uid32_t __kernel_uid32_t | ||
22 | typedef unsigned int __kernel_gid32_t; | ||
23 | #define __kernel_gid32_t __kernel_gid32_t | ||
24 | 20 | ||
25 | typedef unsigned short __kernel_old_uid_t; | 21 | typedef unsigned short __kernel_old_uid_t; |
26 | #define __kernel_old_uid_t __kernel_old_uid_t | 22 | #define __kernel_old_uid_t __kernel_old_uid_t |
diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h index 9c7bdfcaebbd..a229c393826a 100644 --- a/arch/sh/include/asm/processor.h +++ b/arch/sh/include/asm/processor.h | |||
@@ -101,6 +101,10 @@ extern struct sh_cpuinfo cpu_data[]; | |||
101 | #define cpu_sleep() __asm__ __volatile__ ("sleep" : : : "memory") | 101 | #define cpu_sleep() __asm__ __volatile__ ("sleep" : : : "memory") |
102 | #define cpu_relax() barrier() | 102 | #define cpu_relax() barrier() |
103 | 103 | ||
104 | void default_idle(void); | ||
105 | void cpu_idle_wait(void); | ||
106 | void stop_this_cpu(void *); | ||
107 | |||
104 | /* Forward decl */ | 108 | /* Forward decl */ |
105 | struct seq_operations; | 109 | struct seq_operations; |
106 | struct task_struct; | 110 | struct task_struct; |
@@ -161,6 +165,17 @@ int vsyscall_init(void); | |||
161 | #define vsyscall_init() do { } while (0) | 165 | #define vsyscall_init() do { } while (0) |
162 | #endif | 166 | #endif |
163 | 167 | ||
168 | /* | ||
169 | * SH-2A has both 16 and 32-bit opcodes, do lame encoding checks. | ||
170 | */ | ||
171 | #ifdef CONFIG_CPU_SH2A | ||
172 | extern unsigned int instruction_size(unsigned int insn); | ||
173 | #elif defined(CONFIG_SUPERH32) | ||
174 | #define instruction_size(insn) (2) | ||
175 | #else | ||
176 | #define instruction_size(insn) (4) | ||
177 | #endif | ||
178 | |||
164 | #endif /* __ASSEMBLY__ */ | 179 | #endif /* __ASSEMBLY__ */ |
165 | 180 | ||
166 | #ifdef CONFIG_SUPERH32 | 181 | #ifdef CONFIG_SUPERH32 |
diff --git a/arch/sh/include/asm/ptrace.h b/arch/sh/include/asm/ptrace.h index 2d3679b2447f..c7b7e1ed194a 100644 --- a/arch/sh/include/asm/ptrace.h +++ b/arch/sh/include/asm/ptrace.h | |||
@@ -37,7 +37,6 @@ | |||
37 | #include <linux/thread_info.h> | 37 | #include <linux/thread_info.h> |
38 | #include <asm/addrspace.h> | 38 | #include <asm/addrspace.h> |
39 | #include <asm/page.h> | 39 | #include <asm/page.h> |
40 | #include <asm/system.h> | ||
41 | 40 | ||
42 | #define user_mode(regs) (((regs)->sr & 0x40000000)==0) | 41 | #define user_mode(regs) (((regs)->sr & 0x40000000)==0) |
43 | #define kernel_stack_pointer(_regs) ((unsigned long)(_regs)->regs[15]) | 42 | #define kernel_stack_pointer(_regs) ((unsigned long)(_regs)->regs[15]) |
diff --git a/arch/sh/include/asm/setup.h b/arch/sh/include/asm/setup.h index 01fa17a3d759..465a22df8fd0 100644 --- a/arch/sh/include/asm/setup.h +++ b/arch/sh/include/asm/setup.h | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | void sh_mv_setup(void); | 21 | void sh_mv_setup(void); |
22 | void check_for_initrd(void); | 22 | void check_for_initrd(void); |
23 | void per_cpu_trap_init(void); | ||
23 | 24 | ||
24 | #endif /* __KERNEL__ */ | 25 | #endif /* __KERNEL__ */ |
25 | 26 | ||
diff --git a/arch/sh/include/asm/switch_to.h b/arch/sh/include/asm/switch_to.h new file mode 100644 index 000000000000..62b1941813e3 --- /dev/null +++ b/arch/sh/include/asm/switch_to.h | |||
@@ -0,0 +1,19 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000, 2001 Paolo Alberelli | ||
3 | * Copyright (C) 2003 Paul Mundt | ||
4 | * Copyright (C) 2004 Richard Curnow | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | #ifndef __ASM_SH_SWITCH_TO_H | ||
11 | #define __ASM_SH_SWITCH_TO_H | ||
12 | |||
13 | #ifdef CONFIG_SUPERH32 | ||
14 | # include "switch_to_32.h" | ||
15 | #else | ||
16 | # include "switch_to_64.h" | ||
17 | #endif | ||
18 | |||
19 | #endif /* __ASM_SH_SWITCH_TO_H */ | ||
diff --git a/arch/sh/include/asm/system_32.h b/arch/sh/include/asm/switch_to_32.h index a4ad1cd9bc4d..0c065513e7ac 100644 --- a/arch/sh/include/asm/system_32.h +++ b/arch/sh/include/asm/switch_to_32.h | |||
@@ -1,8 +1,5 @@ | |||
1 | #ifndef __ASM_SH_SYSTEM_32_H | 1 | #ifndef __ASM_SH_SWITCH_TO_32_H |
2 | #define __ASM_SH_SYSTEM_32_H | 2 | #define __ASM_SH_SWITCH_TO_32_H |
3 | |||
4 | #include <linux/types.h> | ||
5 | #include <asm/mmu.h> | ||
6 | 3 | ||
7 | #ifdef CONFIG_SH_DSP | 4 | #ifdef CONFIG_SH_DSP |
8 | 5 | ||
@@ -32,7 +29,6 @@ do { \ | |||
32 | : : "r" (__ts2)); \ | 29 | : : "r" (__ts2)); \ |
33 | } while (0) | 30 | } while (0) |
34 | 31 | ||
35 | |||
36 | #define __save_dsp(tsk) \ | 32 | #define __save_dsp(tsk) \ |
37 | do { \ | 33 | do { \ |
38 | register u32 *__ts2 __asm__ ("r2") = \ | 34 | register u32 *__ts2 __asm__ ("r2") = \ |
@@ -64,16 +60,6 @@ do { \ | |||
64 | #define __restore_dsp(tsk) do { } while (0) | 60 | #define __restore_dsp(tsk) do { } while (0) |
65 | #endif | 61 | #endif |
66 | 62 | ||
67 | #if defined(CONFIG_CPU_SH4A) | ||
68 | #define __icbi(addr) __asm__ __volatile__ ( "icbi @%0\n\t" : : "r" (addr)) | ||
69 | #else | ||
70 | #define __icbi(addr) mb() | ||
71 | #endif | ||
72 | |||
73 | #define __ocbp(addr) __asm__ __volatile__ ( "ocbp @%0\n\t" : : "r" (addr)) | ||
74 | #define __ocbi(addr) __asm__ __volatile__ ( "ocbi @%0\n\t" : : "r" (addr)) | ||
75 | #define __ocbwb(addr) __asm__ __volatile__ ( "ocbwb @%0\n\t" : : "r" (addr)) | ||
76 | |||
77 | struct task_struct *__switch_to(struct task_struct *prev, | 63 | struct task_struct *__switch_to(struct task_struct *prev, |
78 | struct task_struct *next); | 64 | struct task_struct *next); |
79 | 65 | ||
@@ -145,92 +131,4 @@ do { \ | |||
145 | __restore_dsp(prev); \ | 131 | __restore_dsp(prev); \ |
146 | } while (0) | 132 | } while (0) |
147 | 133 | ||
148 | #ifdef CONFIG_CPU_HAS_SR_RB | 134 | #endif /* __ASM_SH_SWITCH_TO_32_H */ |
149 | #define lookup_exception_vector() \ | ||
150 | ({ \ | ||
151 | unsigned long _vec; \ | ||
152 | \ | ||
153 | __asm__ __volatile__ ( \ | ||
154 | "stc r2_bank, %0\n\t" \ | ||
155 | : "=r" (_vec) \ | ||
156 | ); \ | ||
157 | \ | ||
158 | _vec; \ | ||
159 | }) | ||
160 | #else | ||
161 | #define lookup_exception_vector() \ | ||
162 | ({ \ | ||
163 | unsigned long _vec; \ | ||
164 | __asm__ __volatile__ ( \ | ||
165 | "mov r4, %0\n\t" \ | ||
166 | : "=r" (_vec) \ | ||
167 | ); \ | ||
168 | \ | ||
169 | _vec; \ | ||
170 | }) | ||
171 | #endif | ||
172 | |||
173 | static inline reg_size_t register_align(void *val) | ||
174 | { | ||
175 | return (unsigned long)(signed long)val; | ||
176 | } | ||
177 | |||
178 | int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, | ||
179 | struct mem_access *ma, int, unsigned long address); | ||
180 | |||
181 | static inline void trigger_address_error(void) | ||
182 | { | ||
183 | __asm__ __volatile__ ( | ||
184 | "ldc %0, sr\n\t" | ||
185 | "mov.l @%1, %0" | ||
186 | : | ||
187 | : "r" (0x10000000), "r" (0x80000001) | ||
188 | ); | ||
189 | } | ||
190 | |||
191 | asmlinkage void do_address_error(struct pt_regs *regs, | ||
192 | unsigned long writeaccess, | ||
193 | unsigned long address); | ||
194 | asmlinkage void do_divide_error(unsigned long r4, unsigned long r5, | ||
195 | unsigned long r6, unsigned long r7, | ||
196 | struct pt_regs __regs); | ||
197 | asmlinkage void do_reserved_inst(unsigned long r4, unsigned long r5, | ||
198 | unsigned long r6, unsigned long r7, | ||
199 | struct pt_regs __regs); | ||
200 | asmlinkage void do_illegal_slot_inst(unsigned long r4, unsigned long r5, | ||
201 | unsigned long r6, unsigned long r7, | ||
202 | struct pt_regs __regs); | ||
203 | asmlinkage void do_exception_error(unsigned long r4, unsigned long r5, | ||
204 | unsigned long r6, unsigned long r7, | ||
205 | struct pt_regs __regs); | ||
206 | |||
207 | static inline void set_bl_bit(void) | ||
208 | { | ||
209 | unsigned long __dummy0, __dummy1; | ||
210 | |||
211 | __asm__ __volatile__ ( | ||
212 | "stc sr, %0\n\t" | ||
213 | "or %2, %0\n\t" | ||
214 | "and %3, %0\n\t" | ||
215 | "ldc %0, sr\n\t" | ||
216 | : "=&r" (__dummy0), "=r" (__dummy1) | ||
217 | : "r" (0x10000000), "r" (0xffffff0f) | ||
218 | : "memory" | ||
219 | ); | ||
220 | } | ||
221 | |||
222 | static inline void clear_bl_bit(void) | ||
223 | { | ||
224 | unsigned long __dummy0, __dummy1; | ||
225 | |||
226 | __asm__ __volatile__ ( | ||
227 | "stc sr, %0\n\t" | ||
228 | "and %2, %0\n\t" | ||
229 | "ldc %0, sr\n\t" | ||
230 | : "=&r" (__dummy0), "=r" (__dummy1) | ||
231 | : "1" (~0x10000000) | ||
232 | : "memory" | ||
233 | ); | ||
234 | } | ||
235 | |||
236 | #endif /* __ASM_SH_SYSTEM_32_H */ | ||
diff --git a/arch/sh/include/asm/switch_to_64.h b/arch/sh/include/asm/switch_to_64.h new file mode 100644 index 000000000000..ba3129d6bc21 --- /dev/null +++ b/arch/sh/include/asm/switch_to_64.h | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000, 2001 Paolo Alberelli | ||
3 | * Copyright (C) 2003 Paul Mundt | ||
4 | * Copyright (C) 2004 Richard Curnow | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | #ifndef __ASM_SH_SWITCH_TO_64_H | ||
11 | #define __ASM_SH_SWITCH_TO_64_H | ||
12 | |||
13 | struct thread_struct; | ||
14 | struct task_struct; | ||
15 | |||
16 | /* | ||
17 | * switch_to() should switch tasks to task nr n, first | ||
18 | */ | ||
19 | struct task_struct *sh64_switch_to(struct task_struct *prev, | ||
20 | struct thread_struct *prev_thread, | ||
21 | struct task_struct *next, | ||
22 | struct thread_struct *next_thread); | ||
23 | |||
24 | #define switch_to(prev,next,last) \ | ||
25 | do { \ | ||
26 | if (last_task_used_math != next) { \ | ||
27 | struct pt_regs *regs = next->thread.uregs; \ | ||
28 | if (regs) regs->sr |= SR_FD; \ | ||
29 | } \ | ||
30 | last = sh64_switch_to(prev, &prev->thread, next, \ | ||
31 | &next->thread); \ | ||
32 | } while (0) | ||
33 | |||
34 | |||
35 | #endif /* __ASM_SH_SWITCH_TO_64_H */ | ||
diff --git a/arch/sh/include/asm/system.h b/arch/sh/include/asm/system.h deleted file mode 100644 index 10c8b1823a18..000000000000 --- a/arch/sh/include/asm/system.h +++ /dev/null | |||
@@ -1,184 +0,0 @@ | |||
1 | #ifndef __ASM_SH_SYSTEM_H | ||
2 | #define __ASM_SH_SYSTEM_H | ||
3 | |||
4 | /* | ||
5 | * Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima | ||
6 | * Copyright (C) 2002 Paul Mundt | ||
7 | */ | ||
8 | |||
9 | #include <linux/irqflags.h> | ||
10 | #include <linux/compiler.h> | ||
11 | #include <linux/linkage.h> | ||
12 | #include <asm/types.h> | ||
13 | #include <asm/uncached.h> | ||
14 | |||
15 | #define AT_VECTOR_SIZE_ARCH 5 /* entries in ARCH_DLINFO */ | ||
16 | |||
17 | /* | ||
18 | * A brief note on ctrl_barrier(), the control register write barrier. | ||
19 | * | ||
20 | * Legacy SH cores typically require a sequence of 8 nops after | ||
21 | * modification of a control register in order for the changes to take | ||
22 | * effect. On newer cores (like the sh4a and sh5) this is accomplished | ||
23 | * with icbi. | ||
24 | * | ||
25 | * Also note that on sh4a in the icbi case we can forego a synco for the | ||
26 | * write barrier, as it's not necessary for control registers. | ||
27 | * | ||
28 | * Historically we have only done this type of barrier for the MMUCR, but | ||
29 | * it's also necessary for the CCR, so we make it generic here instead. | ||
30 | */ | ||
31 | #if defined(CONFIG_CPU_SH4A) || defined(CONFIG_CPU_SH5) | ||
32 | #define mb() __asm__ __volatile__ ("synco": : :"memory") | ||
33 | #define rmb() mb() | ||
34 | #define wmb() __asm__ __volatile__ ("synco": : :"memory") | ||
35 | #define ctrl_barrier() __icbi(PAGE_OFFSET) | ||
36 | #define read_barrier_depends() do { } while(0) | ||
37 | #else | ||
38 | #define mb() __asm__ __volatile__ ("": : :"memory") | ||
39 | #define rmb() mb() | ||
40 | #define wmb() __asm__ __volatile__ ("": : :"memory") | ||
41 | #define ctrl_barrier() __asm__ __volatile__ ("nop;nop;nop;nop;nop;nop;nop;nop") | ||
42 | #define read_barrier_depends() do { } while(0) | ||
43 | #endif | ||
44 | |||
45 | #ifdef CONFIG_SMP | ||
46 | #define smp_mb() mb() | ||
47 | #define smp_rmb() rmb() | ||
48 | #define smp_wmb() wmb() | ||
49 | #define smp_read_barrier_depends() read_barrier_depends() | ||
50 | #else | ||
51 | #define smp_mb() barrier() | ||
52 | #define smp_rmb() barrier() | ||
53 | #define smp_wmb() barrier() | ||
54 | #define smp_read_barrier_depends() do { } while(0) | ||
55 | #endif | ||
56 | |||
57 | #define set_mb(var, value) do { (void)xchg(&var, value); } while (0) | ||
58 | |||
59 | #ifdef CONFIG_GUSA_RB | ||
60 | #include <asm/cmpxchg-grb.h> | ||
61 | #elif defined(CONFIG_CPU_SH4A) | ||
62 | #include <asm/cmpxchg-llsc.h> | ||
63 | #else | ||
64 | #include <asm/cmpxchg-irq.h> | ||
65 | #endif | ||
66 | |||
67 | extern void __xchg_called_with_bad_pointer(void); | ||
68 | |||
69 | #define __xchg(ptr, x, size) \ | ||
70 | ({ \ | ||
71 | unsigned long __xchg__res; \ | ||
72 | volatile void *__xchg_ptr = (ptr); \ | ||
73 | switch (size) { \ | ||
74 | case 4: \ | ||
75 | __xchg__res = xchg_u32(__xchg_ptr, x); \ | ||
76 | break; \ | ||
77 | case 1: \ | ||
78 | __xchg__res = xchg_u8(__xchg_ptr, x); \ | ||
79 | break; \ | ||
80 | default: \ | ||
81 | __xchg_called_with_bad_pointer(); \ | ||
82 | __xchg__res = x; \ | ||
83 | break; \ | ||
84 | } \ | ||
85 | \ | ||
86 | __xchg__res; \ | ||
87 | }) | ||
88 | |||
89 | #define xchg(ptr,x) \ | ||
90 | ((__typeof__(*(ptr)))__xchg((ptr),(unsigned long)(x), sizeof(*(ptr)))) | ||
91 | |||
92 | /* This function doesn't exist, so you'll get a linker error | ||
93 | * if something tries to do an invalid cmpxchg(). */ | ||
94 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
95 | |||
96 | #define __HAVE_ARCH_CMPXCHG 1 | ||
97 | |||
98 | static inline unsigned long __cmpxchg(volatile void * ptr, unsigned long old, | ||
99 | unsigned long new, int size) | ||
100 | { | ||
101 | switch (size) { | ||
102 | case 4: | ||
103 | return __cmpxchg_u32(ptr, old, new); | ||
104 | } | ||
105 | __cmpxchg_called_with_bad_pointer(); | ||
106 | return old; | ||
107 | } | ||
108 | |||
109 | #define cmpxchg(ptr,o,n) \ | ||
110 | ({ \ | ||
111 | __typeof__(*(ptr)) _o_ = (o); \ | ||
112 | __typeof__(*(ptr)) _n_ = (n); \ | ||
113 | (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
114 | (unsigned long)_n_, sizeof(*(ptr))); \ | ||
115 | }) | ||
116 | |||
117 | struct pt_regs; | ||
118 | |||
119 | extern void die(const char *str, struct pt_regs *regs, long err) __attribute__ ((noreturn)); | ||
120 | void free_initmem(void); | ||
121 | void free_initrd_mem(unsigned long start, unsigned long end); | ||
122 | |||
123 | extern void *set_exception_table_vec(unsigned int vec, void *handler); | ||
124 | |||
125 | static inline void *set_exception_table_evt(unsigned int evt, void *handler) | ||
126 | { | ||
127 | return set_exception_table_vec(evt >> 5, handler); | ||
128 | } | ||
129 | |||
130 | /* | ||
131 | * SH-2A has both 16 and 32-bit opcodes, do lame encoding checks. | ||
132 | */ | ||
133 | #ifdef CONFIG_CPU_SH2A | ||
134 | extern unsigned int instruction_size(unsigned int insn); | ||
135 | #elif defined(CONFIG_SUPERH32) | ||
136 | #define instruction_size(insn) (2) | ||
137 | #else | ||
138 | #define instruction_size(insn) (4) | ||
139 | #endif | ||
140 | |||
141 | void per_cpu_trap_init(void); | ||
142 | void default_idle(void); | ||
143 | void cpu_idle_wait(void); | ||
144 | void stop_this_cpu(void *); | ||
145 | |||
146 | #ifdef CONFIG_SUPERH32 | ||
147 | #define BUILD_TRAP_HANDLER(name) \ | ||
148 | asmlinkage void name##_trap_handler(unsigned long r4, unsigned long r5, \ | ||
149 | unsigned long r6, unsigned long r7, \ | ||
150 | struct pt_regs __regs) | ||
151 | |||
152 | #define TRAP_HANDLER_DECL \ | ||
153 | struct pt_regs *regs = RELOC_HIDE(&__regs, 0); \ | ||
154 | unsigned int vec = regs->tra; \ | ||
155 | (void)vec; | ||
156 | #else | ||
157 | #define BUILD_TRAP_HANDLER(name) \ | ||
158 | asmlinkage void name##_trap_handler(unsigned int vec, struct pt_regs *regs) | ||
159 | #define TRAP_HANDLER_DECL | ||
160 | #endif | ||
161 | |||
162 | BUILD_TRAP_HANDLER(address_error); | ||
163 | BUILD_TRAP_HANDLER(debug); | ||
164 | BUILD_TRAP_HANDLER(bug); | ||
165 | BUILD_TRAP_HANDLER(breakpoint); | ||
166 | BUILD_TRAP_HANDLER(singlestep); | ||
167 | BUILD_TRAP_HANDLER(fpu_error); | ||
168 | BUILD_TRAP_HANDLER(fpu_state_restore); | ||
169 | BUILD_TRAP_HANDLER(nmi); | ||
170 | |||
171 | #define arch_align_stack(x) (x) | ||
172 | |||
173 | struct mem_access { | ||
174 | unsigned long (*from)(void *dst, const void __user *src, unsigned long cnt); | ||
175 | unsigned long (*to)(void __user *dst, const void *src, unsigned long cnt); | ||
176 | }; | ||
177 | |||
178 | #ifdef CONFIG_SUPERH32 | ||
179 | # include "system_32.h" | ||
180 | #else | ||
181 | # include "system_64.h" | ||
182 | #endif | ||
183 | |||
184 | #endif | ||
diff --git a/arch/sh/include/asm/system_64.h b/arch/sh/include/asm/system_64.h deleted file mode 100644 index 8593bc8d1a4e..000000000000 --- a/arch/sh/include/asm/system_64.h +++ /dev/null | |||
@@ -1,79 +0,0 @@ | |||
1 | #ifndef __ASM_SH_SYSTEM_64_H | ||
2 | #define __ASM_SH_SYSTEM_64_H | ||
3 | |||
4 | /* | ||
5 | * include/asm-sh/system_64.h | ||
6 | * | ||
7 | * Copyright (C) 2000, 2001 Paolo Alberelli | ||
8 | * Copyright (C) 2003 Paul Mundt | ||
9 | * Copyright (C) 2004 Richard Curnow | ||
10 | * | ||
11 | * This file is subject to the terms and conditions of the GNU General Public | ||
12 | * License. See the file "COPYING" in the main directory of this archive | ||
13 | * for more details. | ||
14 | */ | ||
15 | #include <cpu/registers.h> | ||
16 | #include <asm/processor.h> | ||
17 | |||
18 | /* | ||
19 | * switch_to() should switch tasks to task nr n, first | ||
20 | */ | ||
21 | struct thread_struct; | ||
22 | struct task_struct *sh64_switch_to(struct task_struct *prev, | ||
23 | struct thread_struct *prev_thread, | ||
24 | struct task_struct *next, | ||
25 | struct thread_struct *next_thread); | ||
26 | |||
27 | #define switch_to(prev,next,last) \ | ||
28 | do { \ | ||
29 | if (last_task_used_math != next) { \ | ||
30 | struct pt_regs *regs = next->thread.uregs; \ | ||
31 | if (regs) regs->sr |= SR_FD; \ | ||
32 | } \ | ||
33 | last = sh64_switch_to(prev, &prev->thread, next, \ | ||
34 | &next->thread); \ | ||
35 | } while (0) | ||
36 | |||
37 | #define __icbi(addr) __asm__ __volatile__ ( "icbi %0, 0\n\t" : : "r" (addr)) | ||
38 | #define __ocbp(addr) __asm__ __volatile__ ( "ocbp %0, 0\n\t" : : "r" (addr)) | ||
39 | #define __ocbi(addr) __asm__ __volatile__ ( "ocbi %0, 0\n\t" : : "r" (addr)) | ||
40 | #define __ocbwb(addr) __asm__ __volatile__ ( "ocbwb %0, 0\n\t" : : "r" (addr)) | ||
41 | |||
42 | static inline reg_size_t register_align(void *val) | ||
43 | { | ||
44 | return (unsigned long long)(signed long long)(signed long)val; | ||
45 | } | ||
46 | |||
47 | extern void phys_stext(void); | ||
48 | |||
49 | static inline void trigger_address_error(void) | ||
50 | { | ||
51 | phys_stext(); | ||
52 | } | ||
53 | |||
54 | #define SR_BL_LL 0x0000000010000000LL | ||
55 | |||
56 | static inline void set_bl_bit(void) | ||
57 | { | ||
58 | unsigned long long __dummy0, __dummy1 = SR_BL_LL; | ||
59 | |||
60 | __asm__ __volatile__("getcon " __SR ", %0\n\t" | ||
61 | "or %0, %1, %0\n\t" | ||
62 | "putcon %0, " __SR "\n\t" | ||
63 | : "=&r" (__dummy0) | ||
64 | : "r" (__dummy1)); | ||
65 | |||
66 | } | ||
67 | |||
68 | static inline void clear_bl_bit(void) | ||
69 | { | ||
70 | unsigned long long __dummy0, __dummy1 = ~SR_BL_LL; | ||
71 | |||
72 | __asm__ __volatile__("getcon " __SR ", %0\n\t" | ||
73 | "and %0, %1, %0\n\t" | ||
74 | "putcon %0, " __SR "\n\t" | ||
75 | : "=&r" (__dummy0) | ||
76 | : "r" (__dummy1)); | ||
77 | } | ||
78 | |||
79 | #endif /* __ASM_SH_SYSTEM_64_H */ | ||
diff --git a/arch/sh/include/asm/traps.h b/arch/sh/include/asm/traps.h new file mode 100644 index 000000000000..afd9df8d0641 --- /dev/null +++ b/arch/sh/include/asm/traps.h | |||
@@ -0,0 +1,21 @@ | |||
1 | #ifndef __ASM_SH_TRAPS_H | ||
2 | #define __ASM_SH_TRAPS_H | ||
3 | |||
4 | #include <linux/compiler.h> | ||
5 | |||
6 | #ifdef CONFIG_SUPERH32 | ||
7 | # include "traps_32.h" | ||
8 | #else | ||
9 | # include "traps_64.h" | ||
10 | #endif | ||
11 | |||
12 | BUILD_TRAP_HANDLER(address_error); | ||
13 | BUILD_TRAP_HANDLER(debug); | ||
14 | BUILD_TRAP_HANDLER(bug); | ||
15 | BUILD_TRAP_HANDLER(breakpoint); | ||
16 | BUILD_TRAP_HANDLER(singlestep); | ||
17 | BUILD_TRAP_HANDLER(fpu_error); | ||
18 | BUILD_TRAP_HANDLER(fpu_state_restore); | ||
19 | BUILD_TRAP_HANDLER(nmi); | ||
20 | |||
21 | #endif /* __ASM_SH_TRAPS_H */ | ||
diff --git a/arch/sh/include/asm/traps_32.h b/arch/sh/include/asm/traps_32.h new file mode 100644 index 000000000000..cfd55ff9dff2 --- /dev/null +++ b/arch/sh/include/asm/traps_32.h | |||
@@ -0,0 +1,68 @@ | |||
1 | #ifndef __ASM_SH_TRAPS_32_H | ||
2 | #define __ASM_SH_TRAPS_32_H | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | #include <asm/mmu.h> | ||
6 | |||
7 | #ifdef CONFIG_CPU_HAS_SR_RB | ||
8 | #define lookup_exception_vector() \ | ||
9 | ({ \ | ||
10 | unsigned long _vec; \ | ||
11 | \ | ||
12 | __asm__ __volatile__ ( \ | ||
13 | "stc r2_bank, %0\n\t" \ | ||
14 | : "=r" (_vec) \ | ||
15 | ); \ | ||
16 | \ | ||
17 | _vec; \ | ||
18 | }) | ||
19 | #else | ||
20 | #define lookup_exception_vector() \ | ||
21 | ({ \ | ||
22 | unsigned long _vec; \ | ||
23 | __asm__ __volatile__ ( \ | ||
24 | "mov r4, %0\n\t" \ | ||
25 | : "=r" (_vec) \ | ||
26 | ); \ | ||
27 | \ | ||
28 | _vec; \ | ||
29 | }) | ||
30 | #endif | ||
31 | |||
32 | static inline void trigger_address_error(void) | ||
33 | { | ||
34 | __asm__ __volatile__ ( | ||
35 | "ldc %0, sr\n\t" | ||
36 | "mov.l @%1, %0" | ||
37 | : | ||
38 | : "r" (0x10000000), "r" (0x80000001) | ||
39 | ); | ||
40 | } | ||
41 | |||
42 | asmlinkage void do_address_error(struct pt_regs *regs, | ||
43 | unsigned long writeaccess, | ||
44 | unsigned long address); | ||
45 | asmlinkage void do_divide_error(unsigned long r4, unsigned long r5, | ||
46 | unsigned long r6, unsigned long r7, | ||
47 | struct pt_regs __regs); | ||
48 | asmlinkage void do_reserved_inst(unsigned long r4, unsigned long r5, | ||
49 | unsigned long r6, unsigned long r7, | ||
50 | struct pt_regs __regs); | ||
51 | asmlinkage void do_illegal_slot_inst(unsigned long r4, unsigned long r5, | ||
52 | unsigned long r6, unsigned long r7, | ||
53 | struct pt_regs __regs); | ||
54 | asmlinkage void do_exception_error(unsigned long r4, unsigned long r5, | ||
55 | unsigned long r6, unsigned long r7, | ||
56 | struct pt_regs __regs); | ||
57 | |||
58 | #define BUILD_TRAP_HANDLER(name) \ | ||
59 | asmlinkage void name##_trap_handler(unsigned long r4, unsigned long r5, \ | ||
60 | unsigned long r6, unsigned long r7, \ | ||
61 | struct pt_regs __regs) | ||
62 | |||
63 | #define TRAP_HANDLER_DECL \ | ||
64 | struct pt_regs *regs = RELOC_HIDE(&__regs, 0); \ | ||
65 | unsigned int vec = regs->tra; \ | ||
66 | (void)vec; | ||
67 | |||
68 | #endif /* __ASM_SH_TRAPS_32_H */ | ||
diff --git a/arch/sh/include/asm/traps_64.h b/arch/sh/include/asm/traps_64.h new file mode 100644 index 000000000000..c52d7f9a06c1 --- /dev/null +++ b/arch/sh/include/asm/traps_64.h | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000, 2001 Paolo Alberelli | ||
3 | * Copyright (C) 2003 Paul Mundt | ||
4 | * Copyright (C) 2004 Richard Curnow | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | #ifndef __ASM_SH_TRAPS_64_H | ||
11 | #define __ASM_SH_TRAPS_64_H | ||
12 | |||
13 | extern void phys_stext(void); | ||
14 | |||
15 | static inline void trigger_address_error(void) | ||
16 | { | ||
17 | phys_stext(); | ||
18 | } | ||
19 | |||
20 | #define BUILD_TRAP_HANDLER(name) \ | ||
21 | asmlinkage void name##_trap_handler(unsigned int vec, struct pt_regs *regs) | ||
22 | #define TRAP_HANDLER_DECL | ||
23 | |||
24 | #endif /* __ASM_SH_TRAPS_64_H */ | ||
diff --git a/arch/sh/include/asm/uaccess.h b/arch/sh/include/asm/uaccess.h index 075848f43b6a..050f221fa898 100644 --- a/arch/sh/include/asm/uaccess.h +++ b/arch/sh/include/asm/uaccess.h | |||
@@ -254,5 +254,19 @@ int fixup_exception(struct pt_regs *regs); | |||
254 | unsigned long search_exception_table(unsigned long addr); | 254 | unsigned long search_exception_table(unsigned long addr); |
255 | const struct exception_table_entry *search_exception_tables(unsigned long addr); | 255 | const struct exception_table_entry *search_exception_tables(unsigned long addr); |
256 | 256 | ||
257 | extern void *set_exception_table_vec(unsigned int vec, void *handler); | ||
258 | |||
259 | static inline void *set_exception_table_evt(unsigned int evt, void *handler) | ||
260 | { | ||
261 | return set_exception_table_vec(evt >> 5, handler); | ||
262 | } | ||
263 | |||
264 | struct mem_access { | ||
265 | unsigned long (*from)(void *dst, const void __user *src, unsigned long cnt); | ||
266 | unsigned long (*to)(void __user *dst, const void *src, unsigned long cnt); | ||
267 | }; | ||
268 | |||
269 | int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, | ||
270 | struct mem_access *ma, int, unsigned long address); | ||
257 | 271 | ||
258 | #endif /* __ASM_SH_UACCESS_H */ | 272 | #endif /* __ASM_SH_UACCESS_H */ |
diff --git a/arch/sh/include/asm/unistd.h b/arch/sh/include/asm/unistd.h index 65be656ead7d..a42a5610a36a 100644 --- a/arch/sh/include/asm/unistd.h +++ b/arch/sh/include/asm/unistd.h | |||
@@ -1,9 +1,46 @@ | |||
1 | #ifdef __KERNEL__ | 1 | #ifdef __KERNEL__ |
2 | # ifdef CONFIG_SUPERH32 | 2 | # ifdef CONFIG_SUPERH32 |
3 | |||
3 | # include "unistd_32.h" | 4 | # include "unistd_32.h" |
5 | # define __ARCH_WANT_SYS_RT_SIGSUSPEND | ||
6 | |||
4 | # else | 7 | # else |
5 | # include "unistd_64.h" | 8 | # include "unistd_64.h" |
6 | # endif | 9 | # endif |
10 | |||
11 | # define __ARCH_WANT_IPC_PARSE_VERSION | ||
12 | # define __ARCH_WANT_OLD_READDIR | ||
13 | # define __ARCH_WANT_OLD_STAT | ||
14 | # define __ARCH_WANT_STAT64 | ||
15 | # define __ARCH_WANT_SYS_ALARM | ||
16 | # define __ARCH_WANT_SYS_GETHOSTNAME | ||
17 | # define __ARCH_WANT_SYS_IPC | ||
18 | # define __ARCH_WANT_SYS_PAUSE | ||
19 | # define __ARCH_WANT_SYS_SGETMASK | ||
20 | # define __ARCH_WANT_SYS_SIGNAL | ||
21 | # define __ARCH_WANT_SYS_TIME | ||
22 | # define __ARCH_WANT_SYS_UTIME | ||
23 | # define __ARCH_WANT_SYS_WAITPID | ||
24 | # define __ARCH_WANT_SYS_SOCKETCALL | ||
25 | # define __ARCH_WANT_SYS_FADVISE64 | ||
26 | # define __ARCH_WANT_SYS_GETPGRP | ||
27 | # define __ARCH_WANT_SYS_LLSEEK | ||
28 | # define __ARCH_WANT_SYS_NICE | ||
29 | # define __ARCH_WANT_SYS_OLD_GETRLIMIT | ||
30 | # define __ARCH_WANT_SYS_OLD_UNAME | ||
31 | # define __ARCH_WANT_SYS_OLDUMOUNT | ||
32 | # define __ARCH_WANT_SYS_SIGPENDING | ||
33 | # define __ARCH_WANT_SYS_SIGPROCMASK | ||
34 | # define __ARCH_WANT_SYS_RT_SIGACTION | ||
35 | |||
36 | /* | ||
37 | * "Conditional" syscalls | ||
38 | * | ||
39 | * What we want is __attribute__((weak,alias("sys_ni_syscall"))), | ||
40 | * but it doesn't work on all toolchains, so we just do it by hand | ||
41 | */ | ||
42 | # define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") | ||
43 | |||
7 | #else | 44 | #else |
8 | # ifdef __SH5__ | 45 | # ifdef __SH5__ |
9 | # include "unistd_64.h" | 46 | # include "unistd_64.h" |
diff --git a/arch/sh/include/asm/unistd_32.h b/arch/sh/include/asm/unistd_32.h index 152b8627a184..72fd1e061006 100644 --- a/arch/sh/include/asm/unistd_32.h +++ b/arch/sh/include/asm/unistd_32.h | |||
@@ -1,5 +1,5 @@ | |||
1 | #ifndef __ASM_SH_UNISTD_H | 1 | #ifndef __ASM_SH_UNISTD_32_H |
2 | #define __ASM_SH_UNISTD_H | 2 | #define __ASM_SH_UNISTD_32_H |
3 | 3 | ||
4 | /* | 4 | /* |
5 | * Copyright (C) 1999 Niibe Yutaka | 5 | * Copyright (C) 1999 Niibe Yutaka |
@@ -26,7 +26,7 @@ | |||
26 | #define __NR_mknod 14 | 26 | #define __NR_mknod 14 |
27 | #define __NR_chmod 15 | 27 | #define __NR_chmod 15 |
28 | #define __NR_lchown 16 | 28 | #define __NR_lchown 16 |
29 | #define __NR_break 17 | 29 | /* 17 was sys_break */ |
30 | #define __NR_oldstat 18 | 30 | #define __NR_oldstat 18 |
31 | #define __NR_lseek 19 | 31 | #define __NR_lseek 19 |
32 | #define __NR_getpid 20 | 32 | #define __NR_getpid 20 |
@@ -40,11 +40,11 @@ | |||
40 | #define __NR_oldfstat 28 | 40 | #define __NR_oldfstat 28 |
41 | #define __NR_pause 29 | 41 | #define __NR_pause 29 |
42 | #define __NR_utime 30 | 42 | #define __NR_utime 30 |
43 | #define __NR_stty 31 | 43 | /* 31 was sys_stty */ |
44 | #define __NR_gtty 32 | 44 | /* 32 was sys_gtty */ |
45 | #define __NR_access 33 | 45 | #define __NR_access 33 |
46 | #define __NR_nice 34 | 46 | #define __NR_nice 34 |
47 | #define __NR_ftime 35 | 47 | /* 35 was sys_ftime */ |
48 | #define __NR_sync 36 | 48 | #define __NR_sync 36 |
49 | #define __NR_kill 37 | 49 | #define __NR_kill 37 |
50 | #define __NR_rename 38 | 50 | #define __NR_rename 38 |
@@ -53,7 +53,7 @@ | |||
53 | #define __NR_dup 41 | 53 | #define __NR_dup 41 |
54 | #define __NR_pipe 42 | 54 | #define __NR_pipe 42 |
55 | #define __NR_times 43 | 55 | #define __NR_times 43 |
56 | #define __NR_prof 44 | 56 | /* 44 was sys_prof */ |
57 | #define __NR_brk 45 | 57 | #define __NR_brk 45 |
58 | #define __NR_setgid 46 | 58 | #define __NR_setgid 46 |
59 | #define __NR_getgid 47 | 59 | #define __NR_getgid 47 |
@@ -62,13 +62,13 @@ | |||
62 | #define __NR_getegid 50 | 62 | #define __NR_getegid 50 |
63 | #define __NR_acct 51 | 63 | #define __NR_acct 51 |
64 | #define __NR_umount2 52 | 64 | #define __NR_umount2 52 |
65 | #define __NR_lock 53 | 65 | /* 53 was sys_lock */ |
66 | #define __NR_ioctl 54 | 66 | #define __NR_ioctl 54 |
67 | #define __NR_fcntl 55 | 67 | #define __NR_fcntl 55 |
68 | #define __NR_mpx 56 | 68 | /* 56 was sys_mpx */ |
69 | #define __NR_setpgid 57 | 69 | #define __NR_setpgid 57 |
70 | #define __NR_ulimit 58 | 70 | /* 58 was sys_ulimit */ |
71 | #define __NR_oldolduname 59 | 71 | /* 59 was sys_olduname */ |
72 | #define __NR_umask 60 | 72 | #define __NR_umask 60 |
73 | #define __NR_chroot 61 | 73 | #define __NR_chroot 61 |
74 | #define __NR_ustat 62 | 74 | #define __NR_ustat 62 |
@@ -91,7 +91,7 @@ | |||
91 | #define __NR_settimeofday 79 | 91 | #define __NR_settimeofday 79 |
92 | #define __NR_getgroups 80 | 92 | #define __NR_getgroups 80 |
93 | #define __NR_setgroups 81 | 93 | #define __NR_setgroups 81 |
94 | #define __NR_select 82 | 94 | /* 82 was sys_oldselect */ |
95 | #define __NR_symlink 83 | 95 | #define __NR_symlink 83 |
96 | #define __NR_oldlstat 84 | 96 | #define __NR_oldlstat 84 |
97 | #define __NR_readlink 85 | 97 | #define __NR_readlink 85 |
@@ -107,10 +107,10 @@ | |||
107 | #define __NR_fchown 95 | 107 | #define __NR_fchown 95 |
108 | #define __NR_getpriority 96 | 108 | #define __NR_getpriority 96 |
109 | #define __NR_setpriority 97 | 109 | #define __NR_setpriority 97 |
110 | #define __NR_profil 98 | 110 | /* 98 was sys_profil */ |
111 | #define __NR_statfs 99 | 111 | #define __NR_statfs 99 |
112 | #define __NR_fstatfs 100 | 112 | #define __NR_fstatfs 100 |
113 | #define __NR_ioperm 101 | 113 | /* 101 was sys_ioperm */ |
114 | #define __NR_socketcall 102 | 114 | #define __NR_socketcall 102 |
115 | #define __NR_syslog 103 | 115 | #define __NR_syslog 103 |
116 | #define __NR_setitimer 104 | 116 | #define __NR_setitimer 104 |
@@ -119,10 +119,10 @@ | |||
119 | #define __NR_lstat 107 | 119 | #define __NR_lstat 107 |
120 | #define __NR_fstat 108 | 120 | #define __NR_fstat 108 |
121 | #define __NR_olduname 109 | 121 | #define __NR_olduname 109 |
122 | #define __NR_iopl 110 | 122 | /* 110 was sys_iopl */ |
123 | #define __NR_vhangup 111 | 123 | #define __NR_vhangup 111 |
124 | #define __NR_idle 112 | 124 | /* 112 was sys_idle */ |
125 | #define __NR_vm86old 113 | 125 | /* 113 was sys_vm86old */ |
126 | #define __NR_wait4 114 | 126 | #define __NR_wait4 114 |
127 | #define __NR_swapoff 115 | 127 | #define __NR_swapoff 115 |
128 | #define __NR_sysinfo 116 | 128 | #define __NR_sysinfo 116 |
@@ -136,17 +136,17 @@ | |||
136 | #define __NR_adjtimex 124 | 136 | #define __NR_adjtimex 124 |
137 | #define __NR_mprotect 125 | 137 | #define __NR_mprotect 125 |
138 | #define __NR_sigprocmask 126 | 138 | #define __NR_sigprocmask 126 |
139 | #define __NR_create_module 127 | 139 | /* 127 was sys_create_module */ |
140 | #define __NR_init_module 128 | 140 | #define __NR_init_module 128 |
141 | #define __NR_delete_module 129 | 141 | #define __NR_delete_module 129 |
142 | #define __NR_get_kernel_syms 130 | 142 | /* 130 was sys_get_kernel_syms */ |
143 | #define __NR_quotactl 131 | 143 | #define __NR_quotactl 131 |
144 | #define __NR_getpgid 132 | 144 | #define __NR_getpgid 132 |
145 | #define __NR_fchdir 133 | 145 | #define __NR_fchdir 133 |
146 | #define __NR_bdflush 134 | 146 | #define __NR_bdflush 134 |
147 | #define __NR_sysfs 135 | 147 | #define __NR_sysfs 135 |
148 | #define __NR_personality 136 | 148 | #define __NR_personality 136 |
149 | #define __NR_afs_syscall 137 /* Syscall for Andrew File System */ | 149 | /* 137 was sys_afs_syscall */ |
150 | #define __NR_setfsuid 138 | 150 | #define __NR_setfsuid 138 |
151 | #define __NR_setfsgid 139 | 151 | #define __NR_setfsgid 139 |
152 | #define __NR__llseek 140 | 152 | #define __NR__llseek 140 |
@@ -175,8 +175,8 @@ | |||
175 | #define __NR_mremap 163 | 175 | #define __NR_mremap 163 |
176 | #define __NR_setresuid 164 | 176 | #define __NR_setresuid 164 |
177 | #define __NR_getresuid 165 | 177 | #define __NR_getresuid 165 |
178 | #define __NR_vm86 166 | 178 | /* 166 was sys_vm86 */ |
179 | #define __NR_query_module 167 | 179 | /* 167 was sys_query_module */ |
180 | #define __NR_poll 168 | 180 | #define __NR_poll 168 |
181 | #define __NR_nfsservctl 169 | 181 | #define __NR_nfsservctl 169 |
182 | #define __NR_setresgid 170 | 182 | #define __NR_setresgid 170 |
@@ -197,8 +197,8 @@ | |||
197 | #define __NR_capset 185 | 197 | #define __NR_capset 185 |
198 | #define __NR_sigaltstack 186 | 198 | #define __NR_sigaltstack 186 |
199 | #define __NR_sendfile 187 | 199 | #define __NR_sendfile 187 |
200 | #define __NR_streams1 188 /* some people actually want it */ | 200 | /* 188 reserved for sys_getpmsg */ |
201 | #define __NR_streams2 189 /* some people actually want it */ | 201 | /* 189 reserved for sys_putpmsg */ |
202 | #define __NR_vfork 190 | 202 | #define __NR_vfork 190 |
203 | #define __NR_ugetrlimit 191 /* SuS compliant getrlimit */ | 203 | #define __NR_ugetrlimit 191 /* SuS compliant getrlimit */ |
204 | #define __NR_mmap2 192 | 204 | #define __NR_mmap2 192 |
@@ -231,7 +231,8 @@ | |||
231 | #define __NR_madvise 219 | 231 | #define __NR_madvise 219 |
232 | #define __NR_getdents64 220 | 232 | #define __NR_getdents64 220 |
233 | #define __NR_fcntl64 221 | 233 | #define __NR_fcntl64 221 |
234 | /* 223 is unused */ | 234 | /* 222 is reserved for tux */ |
235 | /* 223 is unused */ | ||
235 | #define __NR_gettid 224 | 236 | #define __NR_gettid 224 |
236 | #define __NR_readahead 225 | 237 | #define __NR_readahead 225 |
237 | #define __NR_setxattr 226 | 238 | #define __NR_setxattr 226 |
@@ -251,15 +252,15 @@ | |||
251 | #define __NR_futex 240 | 252 | #define __NR_futex 240 |
252 | #define __NR_sched_setaffinity 241 | 253 | #define __NR_sched_setaffinity 241 |
253 | #define __NR_sched_getaffinity 242 | 254 | #define __NR_sched_getaffinity 242 |
254 | #define __NR_set_thread_area 243 | 255 | /* 243 is reserved for set_thread_area */ |
255 | #define __NR_get_thread_area 244 | 256 | /* 244 is reserved for get_thread_area */ |
256 | #define __NR_io_setup 245 | 257 | #define __NR_io_setup 245 |
257 | #define __NR_io_destroy 246 | 258 | #define __NR_io_destroy 246 |
258 | #define __NR_io_getevents 247 | 259 | #define __NR_io_getevents 247 |
259 | #define __NR_io_submit 248 | 260 | #define __NR_io_submit 248 |
260 | #define __NR_io_cancel 249 | 261 | #define __NR_io_cancel 249 |
261 | #define __NR_fadvise64 250 | 262 | #define __NR_fadvise64 250 |
262 | 263 | /* 251 is unused */ | |
263 | #define __NR_exit_group 252 | 264 | #define __NR_exit_group 252 |
264 | #define __NR_lookup_dcookie 253 | 265 | #define __NR_lookup_dcookie 253 |
265 | #define __NR_epoll_create 254 | 266 | #define __NR_epoll_create 254 |
@@ -281,7 +282,7 @@ | |||
281 | #define __NR_tgkill 270 | 282 | #define __NR_tgkill 270 |
282 | #define __NR_utimes 271 | 283 | #define __NR_utimes 271 |
283 | #define __NR_fadvise64_64 272 | 284 | #define __NR_fadvise64_64 272 |
284 | #define __NR_vserver 273 | 285 | /* 273 is reserved for vserver */ |
285 | #define __NR_mbind 274 | 286 | #define __NR_mbind 274 |
286 | #define __NR_get_mempolicy 275 | 287 | #define __NR_get_mempolicy 275 |
287 | #define __NR_set_mempolicy 276 | 288 | #define __NR_set_mempolicy 276 |
@@ -301,7 +302,7 @@ | |||
301 | #define __NR_inotify_init 290 | 302 | #define __NR_inotify_init 290 |
302 | #define __NR_inotify_add_watch 291 | 303 | #define __NR_inotify_add_watch 291 |
303 | #define __NR_inotify_rm_watch 292 | 304 | #define __NR_inotify_rm_watch 292 |
304 | /* 293 is unused */ | 305 | /* 293 is unused */ |
305 | #define __NR_migrate_pages 294 | 306 | #define __NR_migrate_pages 294 |
306 | #define __NR_openat 295 | 307 | #define __NR_openat 295 |
307 | #define __NR_mkdirat 296 | 308 | #define __NR_mkdirat 296 |
@@ -380,43 +381,4 @@ | |||
380 | 381 | ||
381 | #define NR_syscalls 367 | 382 | #define NR_syscalls 367 |
382 | 383 | ||
383 | #ifdef __KERNEL__ | 384 | #endif /* __ASM_SH_UNISTD_32_H */ |
384 | |||
385 | #define __ARCH_WANT_IPC_PARSE_VERSION | ||
386 | #define __ARCH_WANT_OLD_READDIR | ||
387 | #define __ARCH_WANT_OLD_STAT | ||
388 | #define __ARCH_WANT_STAT64 | ||
389 | #define __ARCH_WANT_SYS_ALARM | ||
390 | #define __ARCH_WANT_SYS_GETHOSTNAME | ||
391 | #define __ARCH_WANT_SYS_IPC | ||
392 | #define __ARCH_WANT_SYS_PAUSE | ||
393 | #define __ARCH_WANT_SYS_SGETMASK | ||
394 | #define __ARCH_WANT_SYS_SIGNAL | ||
395 | #define __ARCH_WANT_SYS_TIME | ||
396 | #define __ARCH_WANT_SYS_UTIME | ||
397 | #define __ARCH_WANT_SYS_WAITPID | ||
398 | #define __ARCH_WANT_SYS_SOCKETCALL | ||
399 | #define __ARCH_WANT_SYS_FADVISE64 | ||
400 | #define __ARCH_WANT_SYS_GETPGRP | ||
401 | #define __ARCH_WANT_SYS_LLSEEK | ||
402 | #define __ARCH_WANT_SYS_NICE | ||
403 | #define __ARCH_WANT_SYS_OLD_GETRLIMIT | ||
404 | #define __ARCH_WANT_SYS_OLD_UNAME | ||
405 | #define __ARCH_WANT_SYS_OLDUMOUNT | ||
406 | #define __ARCH_WANT_SYS_SIGPENDING | ||
407 | #define __ARCH_WANT_SYS_SIGPROCMASK | ||
408 | #define __ARCH_WANT_SYS_RT_SIGACTION | ||
409 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | ||
410 | |||
411 | /* | ||
412 | * "Conditional" syscalls | ||
413 | * | ||
414 | * What we want is __attribute__((weak,alias("sys_ni_syscall"))), | ||
415 | * but it doesn't work on all toolchains, so we just do it by hand | ||
416 | */ | ||
417 | #ifndef cond_syscall | ||
418 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") | ||
419 | #endif | ||
420 | |||
421 | #endif /* __KERNEL__ */ | ||
422 | #endif /* __ASM_SH_UNISTD_H */ | ||
diff --git a/arch/sh/include/asm/unistd_64.h b/arch/sh/include/asm/unistd_64.h index c330c23db5a0..a28edc329692 100644 --- a/arch/sh/include/asm/unistd_64.h +++ b/arch/sh/include/asm/unistd_64.h | |||
@@ -31,7 +31,7 @@ | |||
31 | #define __NR_mknod 14 | 31 | #define __NR_mknod 14 |
32 | #define __NR_chmod 15 | 32 | #define __NR_chmod 15 |
33 | #define __NR_lchown 16 | 33 | #define __NR_lchown 16 |
34 | #define __NR_break 17 | 34 | /* 17 was sys_break */ |
35 | #define __NR_oldstat 18 | 35 | #define __NR_oldstat 18 |
36 | #define __NR_lseek 19 | 36 | #define __NR_lseek 19 |
37 | #define __NR_getpid 20 | 37 | #define __NR_getpid 20 |
@@ -45,11 +45,11 @@ | |||
45 | #define __NR_oldfstat 28 | 45 | #define __NR_oldfstat 28 |
46 | #define __NR_pause 29 | 46 | #define __NR_pause 29 |
47 | #define __NR_utime 30 | 47 | #define __NR_utime 30 |
48 | #define __NR_stty 31 | 48 | /* 31 was sys_stty */ |
49 | #define __NR_gtty 32 | 49 | /* 32 was sys_gtty */ |
50 | #define __NR_access 33 | 50 | #define __NR_access 33 |
51 | #define __NR_nice 34 | 51 | #define __NR_nice 34 |
52 | #define __NR_ftime 35 | 52 | /* 35 was sys_ftime */ |
53 | #define __NR_sync 36 | 53 | #define __NR_sync 36 |
54 | #define __NR_kill 37 | 54 | #define __NR_kill 37 |
55 | #define __NR_rename 38 | 55 | #define __NR_rename 38 |
@@ -58,7 +58,7 @@ | |||
58 | #define __NR_dup 41 | 58 | #define __NR_dup 41 |
59 | #define __NR_pipe 42 | 59 | #define __NR_pipe 42 |
60 | #define __NR_times 43 | 60 | #define __NR_times 43 |
61 | #define __NR_prof 44 | 61 | /* 44 was sys_prof */ |
62 | #define __NR_brk 45 | 62 | #define __NR_brk 45 |
63 | #define __NR_setgid 46 | 63 | #define __NR_setgid 46 |
64 | #define __NR_getgid 47 | 64 | #define __NR_getgid 47 |
@@ -67,13 +67,13 @@ | |||
67 | #define __NR_getegid 50 | 67 | #define __NR_getegid 50 |
68 | #define __NR_acct 51 | 68 | #define __NR_acct 51 |
69 | #define __NR_umount2 52 | 69 | #define __NR_umount2 52 |
70 | #define __NR_lock 53 | 70 | /* 53 was sys_lock */ |
71 | #define __NR_ioctl 54 | 71 | #define __NR_ioctl 54 |
72 | #define __NR_fcntl 55 | 72 | #define __NR_fcntl 55 |
73 | #define __NR_mpx 56 | 73 | /* 56 was sys_mpx */ |
74 | #define __NR_setpgid 57 | 74 | #define __NR_setpgid 57 |
75 | #define __NR_ulimit 58 | 75 | /* 58 was sys_ulimit */ |
76 | #define __NR_oldolduname 59 | 76 | /* 59 was sys_olduname */ |
77 | #define __NR_umask 60 | 77 | #define __NR_umask 60 |
78 | #define __NR_chroot 61 | 78 | #define __NR_chroot 61 |
79 | #define __NR_ustat 62 | 79 | #define __NR_ustat 62 |
@@ -96,7 +96,7 @@ | |||
96 | #define __NR_settimeofday 79 | 96 | #define __NR_settimeofday 79 |
97 | #define __NR_getgroups 80 | 97 | #define __NR_getgroups 80 |
98 | #define __NR_setgroups 81 | 98 | #define __NR_setgroups 81 |
99 | #define __NR_select 82 | 99 | /* 82 was sys_select */ |
100 | #define __NR_symlink 83 | 100 | #define __NR_symlink 83 |
101 | #define __NR_oldlstat 84 | 101 | #define __NR_oldlstat 84 |
102 | #define __NR_readlink 85 | 102 | #define __NR_readlink 85 |
@@ -112,10 +112,10 @@ | |||
112 | #define __NR_fchown 95 | 112 | #define __NR_fchown 95 |
113 | #define __NR_getpriority 96 | 113 | #define __NR_getpriority 96 |
114 | #define __NR_setpriority 97 | 114 | #define __NR_setpriority 97 |
115 | #define __NR_profil 98 | 115 | /* 98 was sys_profil */ |
116 | #define __NR_statfs 99 | 116 | #define __NR_statfs 99 |
117 | #define __NR_fstatfs 100 | 117 | #define __NR_fstatfs 100 |
118 | #define __NR_ioperm 101 | 118 | /* 101 was sys_ioperm */ |
119 | #define __NR_socketcall 102 /* old implementation of socket systemcall */ | 119 | #define __NR_socketcall 102 /* old implementation of socket systemcall */ |
120 | #define __NR_syslog 103 | 120 | #define __NR_syslog 103 |
121 | #define __NR_setitimer 104 | 121 | #define __NR_setitimer 104 |
@@ -124,10 +124,10 @@ | |||
124 | #define __NR_lstat 107 | 124 | #define __NR_lstat 107 |
125 | #define __NR_fstat 108 | 125 | #define __NR_fstat 108 |
126 | #define __NR_olduname 109 | 126 | #define __NR_olduname 109 |
127 | #define __NR_iopl 110 | 127 | /* 110 was sys_iopl */ |
128 | #define __NR_vhangup 111 | 128 | #define __NR_vhangup 111 |
129 | #define __NR_idle 112 | 129 | /* 112 was sys_idle */ |
130 | #define __NR_vm86old 113 | 130 | /* 113 was sys_vm86old */ |
131 | #define __NR_wait4 114 | 131 | #define __NR_wait4 114 |
132 | #define __NR_swapoff 115 | 132 | #define __NR_swapoff 115 |
133 | #define __NR_sysinfo 116 | 133 | #define __NR_sysinfo 116 |
@@ -141,17 +141,17 @@ | |||
141 | #define __NR_adjtimex 124 | 141 | #define __NR_adjtimex 124 |
142 | #define __NR_mprotect 125 | 142 | #define __NR_mprotect 125 |
143 | #define __NR_sigprocmask 126 | 143 | #define __NR_sigprocmask 126 |
144 | #define __NR_create_module 127 | 144 | /* 127 was sys_create_module */ |
145 | #define __NR_init_module 128 | 145 | #define __NR_init_module 128 |
146 | #define __NR_delete_module 129 | 146 | #define __NR_delete_module 129 |
147 | #define __NR_get_kernel_syms 130 | 147 | /* 130 was sys_get_kernel_syms */ |
148 | #define __NR_quotactl 131 | 148 | #define __NR_quotactl 131 |
149 | #define __NR_getpgid 132 | 149 | #define __NR_getpgid 132 |
150 | #define __NR_fchdir 133 | 150 | #define __NR_fchdir 133 |
151 | #define __NR_bdflush 134 | 151 | #define __NR_bdflush 134 |
152 | #define __NR_sysfs 135 | 152 | #define __NR_sysfs 135 |
153 | #define __NR_personality 136 | 153 | #define __NR_personality 136 |
154 | #define __NR_afs_syscall 137 /* Syscall for Andrew File System */ | 154 | /* 137 was sys_afs_syscall */ |
155 | #define __NR_setfsuid 138 | 155 | #define __NR_setfsuid 138 |
156 | #define __NR_setfsgid 139 | 156 | #define __NR_setfsgid 139 |
157 | #define __NR__llseek 140 | 157 | #define __NR__llseek 140 |
@@ -180,8 +180,8 @@ | |||
180 | #define __NR_mremap 163 | 180 | #define __NR_mremap 163 |
181 | #define __NR_setresuid 164 | 181 | #define __NR_setresuid 164 |
182 | #define __NR_getresuid 165 | 182 | #define __NR_getresuid 165 |
183 | #define __NR_vm86 166 | 183 | /* 166 was sys_vm86 */ |
184 | #define __NR_query_module 167 | 184 | /* 167 was sys_query_module */ |
185 | #define __NR_poll 168 | 185 | #define __NR_poll 168 |
186 | #define __NR_nfsservctl 169 | 186 | #define __NR_nfsservctl 169 |
187 | #define __NR_setresgid 170 | 187 | #define __NR_setresgid 170 |
@@ -202,8 +202,8 @@ | |||
202 | #define __NR_capset 185 | 202 | #define __NR_capset 185 |
203 | #define __NR_sigaltstack 186 | 203 | #define __NR_sigaltstack 186 |
204 | #define __NR_sendfile 187 | 204 | #define __NR_sendfile 187 |
205 | #define __NR_streams1 188 /* some people actually want it */ | 205 | /* 188 reserved for getpmsg */ |
206 | #define __NR_streams2 189 /* some people actually want it */ | 206 | /* 189 reserved for putpmsg */ |
207 | #define __NR_vfork 190 | 207 | #define __NR_vfork 190 |
208 | #define __NR_ugetrlimit 191 /* SuS compliant getrlimit */ | 208 | #define __NR_ugetrlimit 191 /* SuS compliant getrlimit */ |
209 | #define __NR_mmap2 192 | 209 | #define __NR_mmap2 192 |
@@ -262,16 +262,15 @@ | |||
262 | #define __NR_msgrcv 241 | 262 | #define __NR_msgrcv 241 |
263 | #define __NR_msgget 242 | 263 | #define __NR_msgget 242 |
264 | #define __NR_msgctl 243 | 264 | #define __NR_msgctl 243 |
265 | #if 0 | 265 | #define __NR_shmat 244 |
266 | #define __NR_shmatcall 244 | ||
267 | #endif | ||
268 | #define __NR_shmdt 245 | 266 | #define __NR_shmdt 245 |
269 | #define __NR_shmget 246 | 267 | #define __NR_shmget 246 |
270 | #define __NR_shmctl 247 | 268 | #define __NR_shmctl 247 |
271 | 269 | ||
272 | #define __NR_getdents64 248 | 270 | #define __NR_getdents64 248 |
273 | #define __NR_fcntl64 249 | 271 | #define __NR_fcntl64 249 |
274 | /* 223 is unused */ | 272 | /* 250 is reserved for tux */ |
273 | /* 251 is unused */ | ||
275 | #define __NR_gettid 252 | 274 | #define __NR_gettid 252 |
276 | #define __NR_readahead 253 | 275 | #define __NR_readahead 253 |
277 | #define __NR_setxattr 254 | 276 | #define __NR_setxattr 254 |
@@ -291,14 +290,15 @@ | |||
291 | #define __NR_futex 268 | 290 | #define __NR_futex 268 |
292 | #define __NR_sched_setaffinity 269 | 291 | #define __NR_sched_setaffinity 269 |
293 | #define __NR_sched_getaffinity 270 | 292 | #define __NR_sched_getaffinity 270 |
294 | #define __NR_set_thread_area 271 | 293 | /* 271 is reserved for set_thread_area */ |
295 | #define __NR_get_thread_area 272 | 294 | /* 272 is reserved for get_thread_area */ |
296 | #define __NR_io_setup 273 | 295 | #define __NR_io_setup 273 |
297 | #define __NR_io_destroy 274 | 296 | #define __NR_io_destroy 274 |
298 | #define __NR_io_getevents 275 | 297 | #define __NR_io_getevents 275 |
299 | #define __NR_io_submit 276 | 298 | #define __NR_io_submit 276 |
300 | #define __NR_io_cancel 277 | 299 | #define __NR_io_cancel 277 |
301 | #define __NR_fadvise64 278 | 300 | #define __NR_fadvise64 278 |
301 | /* 279 is unused */ | ||
302 | #define __NR_exit_group 280 | 302 | #define __NR_exit_group 280 |
303 | 303 | ||
304 | #define __NR_lookup_dcookie 281 | 304 | #define __NR_lookup_dcookie 281 |
@@ -321,17 +321,17 @@ | |||
321 | #define __NR_tgkill 298 | 321 | #define __NR_tgkill 298 |
322 | #define __NR_utimes 299 | 322 | #define __NR_utimes 299 |
323 | #define __NR_fadvise64_64 300 | 323 | #define __NR_fadvise64_64 300 |
324 | #define __NR_vserver 301 | 324 | /* 301 is reserved for vserver */ |
325 | #define __NR_mbind 302 | 325 | /* 302 is reserved for mbind */ |
326 | #define __NR_get_mempolicy 303 | 326 | /* 303 is reserved for get_mempolicy */ |
327 | #define __NR_set_mempolicy 304 | 327 | /* 304 is reserved for set_mempolicy */ |
328 | #define __NR_mq_open 305 | 328 | #define __NR_mq_open 305 |
329 | #define __NR_mq_unlink (__NR_mq_open+1) | 329 | #define __NR_mq_unlink (__NR_mq_open+1) |
330 | #define __NR_mq_timedsend (__NR_mq_open+2) | 330 | #define __NR_mq_timedsend (__NR_mq_open+2) |
331 | #define __NR_mq_timedreceive (__NR_mq_open+3) | 331 | #define __NR_mq_timedreceive (__NR_mq_open+3) |
332 | #define __NR_mq_notify (__NR_mq_open+4) | 332 | #define __NR_mq_notify (__NR_mq_open+4) |
333 | #define __NR_mq_getsetattr (__NR_mq_open+5) | 333 | #define __NR_mq_getsetattr (__NR_mq_open+5) |
334 | #define __NR_kexec_load 311 | 334 | /* 311 is reserved for kexec */ |
335 | #define __NR_waitid 312 | 335 | #define __NR_waitid 312 |
336 | #define __NR_add_key 313 | 336 | #define __NR_add_key 313 |
337 | #define __NR_request_key 314 | 337 | #define __NR_request_key 314 |
@@ -341,7 +341,7 @@ | |||
341 | #define __NR_inotify_init 318 | 341 | #define __NR_inotify_init 318 |
342 | #define __NR_inotify_add_watch 319 | 342 | #define __NR_inotify_add_watch 319 |
343 | #define __NR_inotify_rm_watch 320 | 343 | #define __NR_inotify_rm_watch 320 |
344 | /* 321 is unused */ | 344 | /* 321 is unused */ |
345 | #define __NR_migrate_pages 322 | 345 | #define __NR_migrate_pages 322 |
346 | #define __NR_openat 323 | 346 | #define __NR_openat 323 |
347 | #define __NR_mkdirat 324 | 347 | #define __NR_mkdirat 324 |
@@ -399,44 +399,6 @@ | |||
399 | #define __NR_process_vm_readv 376 | 399 | #define __NR_process_vm_readv 376 |
400 | #define __NR_process_vm_writev 377 | 400 | #define __NR_process_vm_writev 377 |
401 | 401 | ||
402 | #ifdef __KERNEL__ | ||
403 | |||
404 | #define NR_syscalls 378 | 402 | #define NR_syscalls 378 |
405 | 403 | ||
406 | #define __ARCH_WANT_IPC_PARSE_VERSION | ||
407 | #define __ARCH_WANT_OLD_READDIR | ||
408 | #define __ARCH_WANT_OLD_STAT | ||
409 | #define __ARCH_WANT_STAT64 | ||
410 | #define __ARCH_WANT_SYS_ALARM | ||
411 | #define __ARCH_WANT_SYS_GETHOSTNAME | ||
412 | #define __ARCH_WANT_SYS_IPC | ||
413 | #define __ARCH_WANT_SYS_PAUSE | ||
414 | #define __ARCH_WANT_SYS_SGETMASK | ||
415 | #define __ARCH_WANT_SYS_SIGNAL | ||
416 | #define __ARCH_WANT_SYS_TIME | ||
417 | #define __ARCH_WANT_SYS_UTIME | ||
418 | #define __ARCH_WANT_SYS_WAITPID | ||
419 | #define __ARCH_WANT_SYS_SOCKETCALL | ||
420 | #define __ARCH_WANT_SYS_FADVISE64 | ||
421 | #define __ARCH_WANT_SYS_GETPGRP | ||
422 | #define __ARCH_WANT_SYS_LLSEEK | ||
423 | #define __ARCH_WANT_SYS_NICE | ||
424 | #define __ARCH_WANT_SYS_OLD_GETRLIMIT | ||
425 | #define __ARCH_WANT_SYS_OLD_UNAME | ||
426 | #define __ARCH_WANT_SYS_OLDUMOUNT | ||
427 | #define __ARCH_WANT_SYS_SIGPENDING | ||
428 | #define __ARCH_WANT_SYS_SIGPROCMASK | ||
429 | #define __ARCH_WANT_SYS_RT_SIGACTION | ||
430 | |||
431 | /* | ||
432 | * "Conditional" syscalls | ||
433 | * | ||
434 | * What we want is __attribute__((weak,alias("sys_ni_syscall"))), | ||
435 | * but it doesn't work on all toolchains, so we just do it by hand | ||
436 | */ | ||
437 | #ifndef cond_syscall | ||
438 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") | ||
439 | #endif | ||
440 | |||
441 | #endif /* __KERNEL__ */ | ||
442 | #endif /* __ASM_SH_UNISTD_64_H */ | 404 | #endif /* __ASM_SH_UNISTD_64_H */ |
diff --git a/arch/sh/include/cpu-sh4/cpu/dma-register.h b/arch/sh/include/cpu-sh4/cpu/dma-register.h index 18fa80aba15e..02788b6a03b7 100644 --- a/arch/sh/include/cpu-sh4/cpu/dma-register.h +++ b/arch/sh/include/cpu-sh4/cpu/dma-register.h | |||
@@ -16,45 +16,29 @@ | |||
16 | 16 | ||
17 | #define DMAOR_INIT DMAOR_DME | 17 | #define DMAOR_INIT DMAOR_DME |
18 | 18 | ||
19 | #if defined(CONFIG_CPU_SUBTYPE_SH7343) || \ | 19 | #if defined(CONFIG_CPU_SUBTYPE_SH7343) |
20 | defined(CONFIG_CPU_SUBTYPE_SH7730) | ||
21 | #define CHCR_TS_LOW_MASK 0x00000018 | 20 | #define CHCR_TS_LOW_MASK 0x00000018 |
22 | #define CHCR_TS_LOW_SHIFT 3 | 21 | #define CHCR_TS_LOW_SHIFT 3 |
23 | #define CHCR_TS_HIGH_MASK 0 | 22 | #define CHCR_TS_HIGH_MASK 0 |
24 | #define CHCR_TS_HIGH_SHIFT 0 | 23 | #define CHCR_TS_HIGH_SHIFT 0 |
25 | #elif defined(CONFIG_CPU_SUBTYPE_SH7722) || \ | 24 | #elif defined(CONFIG_CPU_SUBTYPE_SH7722) || \ |
25 | defined(CONFIG_CPU_SUBTYPE_SH7723) || \ | ||
26 | defined(CONFIG_CPU_SUBTYPE_SH7724) || \ | 26 | defined(CONFIG_CPU_SUBTYPE_SH7724) || \ |
27 | defined(CONFIG_CPU_SUBTYPE_SH7730) || \ | ||
27 | defined(CONFIG_CPU_SUBTYPE_SH7786) | 28 | defined(CONFIG_CPU_SUBTYPE_SH7786) |
28 | #define CHCR_TS_LOW_MASK 0x00000018 | 29 | #define CHCR_TS_LOW_MASK 0x00000018 |
29 | #define CHCR_TS_LOW_SHIFT 3 | 30 | #define CHCR_TS_LOW_SHIFT 3 |
30 | #define CHCR_TS_HIGH_MASK 0x00300000 | 31 | #define CHCR_TS_HIGH_MASK 0x00300000 |
31 | #define CHCR_TS_HIGH_SHIFT (20 - 2) /* 2 bits for shifted low TS */ | 32 | #define CHCR_TS_HIGH_SHIFT (20 - 2) /* 2 bits for shifted low TS */ |
32 | #elif defined(CONFIG_CPU_SUBTYPE_SH7763) || \ | 33 | #elif defined(CONFIG_CPU_SUBTYPE_SH7757) || \ |
33 | defined(CONFIG_CPU_SUBTYPE_SH7764) | 34 | defined(CONFIG_CPU_SUBTYPE_SH7763) || \ |
34 | #define CHCR_TS_LOW_MASK 0x00000018 | 35 | defined(CONFIG_CPU_SUBTYPE_SH7764) || \ |
35 | #define CHCR_TS_LOW_SHIFT 3 | 36 | defined(CONFIG_CPU_SUBTYPE_SH7780) || \ |
36 | #define CHCR_TS_HIGH_MASK 0 | 37 | defined(CONFIG_CPU_SUBTYPE_SH7785) |
37 | #define CHCR_TS_HIGH_SHIFT 0 | ||
38 | #elif defined(CONFIG_CPU_SUBTYPE_SH7723) | ||
39 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
40 | #define CHCR_TS_LOW_SHIFT 3 | ||
41 | #define CHCR_TS_HIGH_MASK 0 | ||
42 | #define CHCR_TS_HIGH_SHIFT 0 | ||
43 | #elif defined(CONFIG_CPU_SUBTYPE_SH7757) | ||
44 | #define CHCR_TS_LOW_MASK 0x00000018 | 38 | #define CHCR_TS_LOW_MASK 0x00000018 |
45 | #define CHCR_TS_LOW_SHIFT 3 | 39 | #define CHCR_TS_LOW_SHIFT 3 |
46 | #define CHCR_TS_HIGH_MASK 0x00100000 | 40 | #define CHCR_TS_HIGH_MASK 0x00100000 |
47 | #define CHCR_TS_HIGH_SHIFT (20 - 2) /* 2 bits for shifted low TS */ | 41 | #define CHCR_TS_HIGH_SHIFT (20 - 2) /* 2 bits for shifted low TS */ |
48 | #elif defined(CONFIG_CPU_SUBTYPE_SH7780) | ||
49 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
50 | #define CHCR_TS_LOW_SHIFT 3 | ||
51 | #define CHCR_TS_HIGH_MASK 0 | ||
52 | #define CHCR_TS_HIGH_SHIFT 0 | ||
53 | #else /* SH7785 */ | ||
54 | #define CHCR_TS_LOW_MASK 0x00000018 | ||
55 | #define CHCR_TS_LOW_SHIFT 3 | ||
56 | #define CHCR_TS_HIGH_MASK 0 | ||
57 | #define CHCR_TS_HIGH_SHIFT 0 | ||
58 | #endif | 42 | #endif |
59 | 43 | ||
60 | /* Transmit sizes and respective CHCR register values */ | 44 | /* Transmit sizes and respective CHCR register values */ |
diff --git a/arch/sh/include/mach-common/mach/mangle-port.h b/arch/sh/include/mach-common/mach/mangle-port.h new file mode 100644 index 000000000000..4ca1769a0f12 --- /dev/null +++ b/arch/sh/include/mach-common/mach/mangle-port.h | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * SH version cribbed from the MIPS copy: | ||
3 | * | ||
4 | * This file is subject to the terms and conditions of the GNU General Public | ||
5 | * License. See the file "COPYING" in the main directory of this archive | ||
6 | * for more details. | ||
7 | * | ||
8 | * Copyright (C) 2003, 2004 Ralf Baechle | ||
9 | */ | ||
10 | #ifndef __MACH_COMMON_MANGLE_PORT_H | ||
11 | #define __MACH_COMMON_MANGLE_PORT_H | ||
12 | |||
13 | /* | ||
14 | * Sane hardware offers swapping of PCI/ISA I/O space accesses in hardware; | ||
15 | * less sane hardware forces software to fiddle with this... | ||
16 | * | ||
17 | * Regardless, if the host bus endianness mismatches that of PCI/ISA, then | ||
18 | * you can't have the numerical value of data and byte addresses within | ||
19 | * multibyte quantities both preserved at the same time. Hence two | ||
20 | * variations of functions: non-prefixed ones that preserve the value | ||
21 | * and prefixed ones that preserve byte addresses. The latters are | ||
22 | * typically used for moving raw data between a peripheral and memory (cf. | ||
23 | * string I/O functions), hence the "__mem_" prefix. | ||
24 | */ | ||
25 | #if defined(CONFIG_SWAP_IO_SPACE) | ||
26 | |||
27 | # define ioswabb(x) (x) | ||
28 | # define __mem_ioswabb(x) (x) | ||
29 | # define ioswabw(x) le16_to_cpu(x) | ||
30 | # define __mem_ioswabw(x) (x) | ||
31 | # define ioswabl(x) le32_to_cpu(x) | ||
32 | # define __mem_ioswabl(x) (x) | ||
33 | # define ioswabq(x) le64_to_cpu(x) | ||
34 | # define __mem_ioswabq(x) (x) | ||
35 | |||
36 | #else | ||
37 | |||
38 | # define ioswabb(x) (x) | ||
39 | # define __mem_ioswabb(x) (x) | ||
40 | # define ioswabw(x) (x) | ||
41 | # define __mem_ioswabw(x) cpu_to_le16(x) | ||
42 | # define ioswabl(x) (x) | ||
43 | # define __mem_ioswabl(x) cpu_to_le32(x) | ||
44 | # define ioswabq(x) (x) | ||
45 | # define __mem_ioswabq(x) cpu_to_le32(x) | ||
46 | |||
47 | #endif | ||
48 | |||
49 | #endif /* __MACH_COMMON_MANGLE_PORT_H */ | ||
diff --git a/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h b/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h index 07e635b0e04c..ba3d93d333f8 100644 --- a/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h +++ b/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h | |||
@@ -4,21 +4,21 @@ | |||
4 | #include <video/sh_mobile_lcdc.h> | 4 | #include <video/sh_mobile_lcdc.h> |
5 | 5 | ||
6 | #if defined(CONFIG_FB_SH_MOBILE_LCDC) || defined(CONFIG_FB_SH_MOBILE_LCDC_MODULE) | 6 | #if defined(CONFIG_FB_SH_MOBILE_LCDC) || defined(CONFIG_FB_SH_MOBILE_LCDC_MODULE) |
7 | void kfr2r09_lcd_on(void *board_data, struct fb_info *info); | 7 | void kfr2r09_lcd_on(void); |
8 | void kfr2r09_lcd_off(void *board_data); | 8 | void kfr2r09_lcd_off(void); |
9 | int kfr2r09_lcd_setup(void *board_data, void *sys_ops_handle, | 9 | int kfr2r09_lcd_setup(void *sys_ops_handle, |
10 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops); | 10 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops); |
11 | void kfr2r09_lcd_start(void *board_data, void *sys_ops_handle, | 11 | void kfr2r09_lcd_start(void *sys_ops_handle, |
12 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops); | 12 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops); |
13 | #else | 13 | #else |
14 | static void kfr2r09_lcd_on(void *board_data) {} | 14 | static void kfr2r09_lcd_on(void) {} |
15 | static void kfr2r09_lcd_off(void *board_data) {} | 15 | static void kfr2r09_lcd_off(void) {} |
16 | static int kfr2r09_lcd_setup(void *board_data, void *sys_ops_handle, | 16 | static int kfr2r09_lcd_setup(void *sys_ops_handle, |
17 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops) | 17 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops) |
18 | { | 18 | { |
19 | return -ENODEV; | 19 | return -ENODEV; |
20 | } | 20 | } |
21 | static void kfr2r09_lcd_start(void *board_data, void *sys_ops_handle, | 21 | static void kfr2r09_lcd_start(void *sys_ops_handle, |
22 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops) | 22 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops) |
23 | { | 23 | { |
24 | } | 24 | } |
diff --git a/arch/sh/include/mach-migor/mach/migor.h b/arch/sh/include/mach-migor/mach/migor.h index 42fccf93412e..7de7bb74c290 100644 --- a/arch/sh/include/mach-migor/mach/migor.h +++ b/arch/sh/include/mach-migor/mach/migor.h | |||
@@ -9,7 +9,7 @@ | |||
9 | 9 | ||
10 | #include <video/sh_mobile_lcdc.h> | 10 | #include <video/sh_mobile_lcdc.h> |
11 | 11 | ||
12 | int migor_lcd_qvga_setup(void *board_data, void *sys_ops_handle, | 12 | int migor_lcd_qvga_setup(void *sys_ops_handle, |
13 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops); | 13 | struct sh_mobile_lcdc_sys_bus_ops *sys_ops); |
14 | 14 | ||
15 | #endif /* __ASM_SH_MIGOR_H */ | 15 | #endif /* __ASM_SH_MIGOR_H */ |
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c index fac742e514ee..61a07dafcd46 100644 --- a/arch/sh/kernel/cpu/init.c +++ b/arch/sh/kernel/cpu/init.c | |||
@@ -18,13 +18,13 @@ | |||
18 | #include <asm/processor.h> | 18 | #include <asm/processor.h> |
19 | #include <asm/uaccess.h> | 19 | #include <asm/uaccess.h> |
20 | #include <asm/page.h> | 20 | #include <asm/page.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/cacheflush.h> | 21 | #include <asm/cacheflush.h> |
23 | #include <asm/cache.h> | 22 | #include <asm/cache.h> |
24 | #include <asm/elf.h> | 23 | #include <asm/elf.h> |
25 | #include <asm/io.h> | 24 | #include <asm/io.h> |
26 | #include <asm/smp.h> | 25 | #include <asm/smp.h> |
27 | #include <asm/sh_bios.h> | 26 | #include <asm/sh_bios.h> |
27 | #include <asm/setup.h> | ||
28 | 28 | ||
29 | #ifdef CONFIG_SH_FPU | 29 | #ifdef CONFIG_SH_FPU |
30 | #define cpu_has_fpu 1 | 30 | #define cpu_has_fpu 1 |
diff --git a/arch/sh/kernel/cpu/irq/imask.c b/arch/sh/kernel/cpu/irq/imask.c index 39b6a24c159d..e7f1745bd121 100644 --- a/arch/sh/kernel/cpu/irq/imask.c +++ b/arch/sh/kernel/cpu/irq/imask.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/cache.h> | 19 | #include <linux/cache.h> |
20 | #include <linux/irq.h> | 20 | #include <linux/irq.h> |
21 | #include <linux/bitmap.h> | 21 | #include <linux/bitmap.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/irq.h> | 22 | #include <asm/irq.h> |
24 | 23 | ||
25 | /* Bitmap of IRQ masked */ | 24 | /* Bitmap of IRQ masked */ |
diff --git a/arch/sh/kernel/cpu/sh2/clock-sh7619.c b/arch/sh/kernel/cpu/sh2/clock-sh7619.c index 5b7f12e58a8d..e80252ae5bca 100644 --- a/arch/sh/kernel/cpu/sh2/clock-sh7619.c +++ b/arch/sh/kernel/cpu/sh2/clock-sh7619.c | |||
@@ -28,7 +28,7 @@ static void master_clk_init(struct clk *clk) | |||
28 | clk->rate *= pll2_mult * pll1rate[(__raw_readw(FREQCR) >> 8) & 7]; | 28 | clk->rate *= pll2_mult * pll1rate[(__raw_readw(FREQCR) >> 8) & 7]; |
29 | } | 29 | } |
30 | 30 | ||
31 | static struct clk_ops sh7619_master_clk_ops = { | 31 | static struct sh_clk_ops sh7619_master_clk_ops = { |
32 | .init = master_clk_init, | 32 | .init = master_clk_init, |
33 | }; | 33 | }; |
34 | 34 | ||
@@ -38,7 +38,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
38 | return clk->parent->rate / pfc_divisors[idx]; | 38 | return clk->parent->rate / pfc_divisors[idx]; |
39 | } | 39 | } |
40 | 40 | ||
41 | static struct clk_ops sh7619_module_clk_ops = { | 41 | static struct sh_clk_ops sh7619_module_clk_ops = { |
42 | .recalc = module_clk_recalc, | 42 | .recalc = module_clk_recalc, |
43 | }; | 43 | }; |
44 | 44 | ||
@@ -47,22 +47,22 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
47 | return clk->parent->rate / pll1rate[(__raw_readw(FREQCR) >> 8) & 7]; | 47 | return clk->parent->rate / pll1rate[(__raw_readw(FREQCR) >> 8) & 7]; |
48 | } | 48 | } |
49 | 49 | ||
50 | static struct clk_ops sh7619_bus_clk_ops = { | 50 | static struct sh_clk_ops sh7619_bus_clk_ops = { |
51 | .recalc = bus_clk_recalc, | 51 | .recalc = bus_clk_recalc, |
52 | }; | 52 | }; |
53 | 53 | ||
54 | static struct clk_ops sh7619_cpu_clk_ops = { | 54 | static struct sh_clk_ops sh7619_cpu_clk_ops = { |
55 | .recalc = followparent_recalc, | 55 | .recalc = followparent_recalc, |
56 | }; | 56 | }; |
57 | 57 | ||
58 | static struct clk_ops *sh7619_clk_ops[] = { | 58 | static struct sh_clk_ops *sh7619_clk_ops[] = { |
59 | &sh7619_master_clk_ops, | 59 | &sh7619_master_clk_ops, |
60 | &sh7619_module_clk_ops, | 60 | &sh7619_module_clk_ops, |
61 | &sh7619_bus_clk_ops, | 61 | &sh7619_bus_clk_ops, |
62 | &sh7619_cpu_clk_ops, | 62 | &sh7619_cpu_clk_ops, |
63 | }; | 63 | }; |
64 | 64 | ||
65 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 65 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
66 | { | 66 | { |
67 | if (test_mode_pin(MODE_PIN2 | MODE_PIN0) || | 67 | if (test_mode_pin(MODE_PIN2 | MODE_PIN0) || |
68 | test_mode_pin(MODE_PIN2 | MODE_PIN1)) | 68 | test_mode_pin(MODE_PIN2 | MODE_PIN1)) |
diff --git a/arch/sh/kernel/cpu/sh2a/clock-sh7201.c b/arch/sh/kernel/cpu/sh2a/clock-sh7201.c index 1174e2d96c03..532a36c72322 100644 --- a/arch/sh/kernel/cpu/sh2a/clock-sh7201.c +++ b/arch/sh/kernel/cpu/sh2a/clock-sh7201.c | |||
@@ -30,7 +30,7 @@ static void master_clk_init(struct clk *clk) | |||
30 | pll1rate[(__raw_readw(FREQCR) >> 8) & 0x0007]; | 30 | pll1rate[(__raw_readw(FREQCR) >> 8) & 0x0007]; |
31 | } | 31 | } |
32 | 32 | ||
33 | static struct clk_ops sh7201_master_clk_ops = { | 33 | static struct sh_clk_ops sh7201_master_clk_ops = { |
34 | .init = master_clk_init, | 34 | .init = master_clk_init, |
35 | }; | 35 | }; |
36 | 36 | ||
@@ -40,7 +40,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
40 | return clk->parent->rate / pfc_divisors[idx]; | 40 | return clk->parent->rate / pfc_divisors[idx]; |
41 | } | 41 | } |
42 | 42 | ||
43 | static struct clk_ops sh7201_module_clk_ops = { | 43 | static struct sh_clk_ops sh7201_module_clk_ops = { |
44 | .recalc = module_clk_recalc, | 44 | .recalc = module_clk_recalc, |
45 | }; | 45 | }; |
46 | 46 | ||
@@ -50,7 +50,7 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
50 | return clk->parent->rate / pfc_divisors[idx]; | 50 | return clk->parent->rate / pfc_divisors[idx]; |
51 | } | 51 | } |
52 | 52 | ||
53 | static struct clk_ops sh7201_bus_clk_ops = { | 53 | static struct sh_clk_ops sh7201_bus_clk_ops = { |
54 | .recalc = bus_clk_recalc, | 54 | .recalc = bus_clk_recalc, |
55 | }; | 55 | }; |
56 | 56 | ||
@@ -60,18 +60,18 @@ static unsigned long cpu_clk_recalc(struct clk *clk) | |||
60 | return clk->parent->rate / ifc_divisors[idx]; | 60 | return clk->parent->rate / ifc_divisors[idx]; |
61 | } | 61 | } |
62 | 62 | ||
63 | static struct clk_ops sh7201_cpu_clk_ops = { | 63 | static struct sh_clk_ops sh7201_cpu_clk_ops = { |
64 | .recalc = cpu_clk_recalc, | 64 | .recalc = cpu_clk_recalc, |
65 | }; | 65 | }; |
66 | 66 | ||
67 | static struct clk_ops *sh7201_clk_ops[] = { | 67 | static struct sh_clk_ops *sh7201_clk_ops[] = { |
68 | &sh7201_master_clk_ops, | 68 | &sh7201_master_clk_ops, |
69 | &sh7201_module_clk_ops, | 69 | &sh7201_module_clk_ops, |
70 | &sh7201_bus_clk_ops, | 70 | &sh7201_bus_clk_ops, |
71 | &sh7201_cpu_clk_ops, | 71 | &sh7201_cpu_clk_ops, |
72 | }; | 72 | }; |
73 | 73 | ||
74 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 74 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
75 | { | 75 | { |
76 | if (test_mode_pin(MODE_PIN1 | MODE_PIN0)) | 76 | if (test_mode_pin(MODE_PIN1 | MODE_PIN0)) |
77 | pll2_mult = 1; | 77 | pll2_mult = 1; |
diff --git a/arch/sh/kernel/cpu/sh2a/clock-sh7203.c b/arch/sh/kernel/cpu/sh2a/clock-sh7203.c index 95a008e8b735..529f719b6e33 100644 --- a/arch/sh/kernel/cpu/sh2a/clock-sh7203.c +++ b/arch/sh/kernel/cpu/sh2a/clock-sh7203.c | |||
@@ -32,7 +32,7 @@ static void master_clk_init(struct clk *clk) | |||
32 | clk->rate *= pll1rate[(__raw_readw(FREQCR) >> 8) & 0x0003] * pll2_mult; | 32 | clk->rate *= pll1rate[(__raw_readw(FREQCR) >> 8) & 0x0003] * pll2_mult; |
33 | } | 33 | } |
34 | 34 | ||
35 | static struct clk_ops sh7203_master_clk_ops = { | 35 | static struct sh_clk_ops sh7203_master_clk_ops = { |
36 | .init = master_clk_init, | 36 | .init = master_clk_init, |
37 | }; | 37 | }; |
38 | 38 | ||
@@ -42,7 +42,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
42 | return clk->parent->rate / pfc_divisors[idx]; | 42 | return clk->parent->rate / pfc_divisors[idx]; |
43 | } | 43 | } |
44 | 44 | ||
45 | static struct clk_ops sh7203_module_clk_ops = { | 45 | static struct sh_clk_ops sh7203_module_clk_ops = { |
46 | .recalc = module_clk_recalc, | 46 | .recalc = module_clk_recalc, |
47 | }; | 47 | }; |
48 | 48 | ||
@@ -52,22 +52,22 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
52 | return clk->parent->rate / pfc_divisors[idx-2]; | 52 | return clk->parent->rate / pfc_divisors[idx-2]; |
53 | } | 53 | } |
54 | 54 | ||
55 | static struct clk_ops sh7203_bus_clk_ops = { | 55 | static struct sh_clk_ops sh7203_bus_clk_ops = { |
56 | .recalc = bus_clk_recalc, | 56 | .recalc = bus_clk_recalc, |
57 | }; | 57 | }; |
58 | 58 | ||
59 | static struct clk_ops sh7203_cpu_clk_ops = { | 59 | static struct sh_clk_ops sh7203_cpu_clk_ops = { |
60 | .recalc = followparent_recalc, | 60 | .recalc = followparent_recalc, |
61 | }; | 61 | }; |
62 | 62 | ||
63 | static struct clk_ops *sh7203_clk_ops[] = { | 63 | static struct sh_clk_ops *sh7203_clk_ops[] = { |
64 | &sh7203_master_clk_ops, | 64 | &sh7203_master_clk_ops, |
65 | &sh7203_module_clk_ops, | 65 | &sh7203_module_clk_ops, |
66 | &sh7203_bus_clk_ops, | 66 | &sh7203_bus_clk_ops, |
67 | &sh7203_cpu_clk_ops, | 67 | &sh7203_cpu_clk_ops, |
68 | }; | 68 | }; |
69 | 69 | ||
70 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 70 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
71 | { | 71 | { |
72 | if (test_mode_pin(MODE_PIN1)) | 72 | if (test_mode_pin(MODE_PIN1)) |
73 | pll2_mult = 4; | 73 | pll2_mult = 4; |
diff --git a/arch/sh/kernel/cpu/sh2a/clock-sh7206.c b/arch/sh/kernel/cpu/sh2a/clock-sh7206.c index 3c314d7cd6e6..177789834678 100644 --- a/arch/sh/kernel/cpu/sh2a/clock-sh7206.c +++ b/arch/sh/kernel/cpu/sh2a/clock-sh7206.c | |||
@@ -29,7 +29,7 @@ static void master_clk_init(struct clk *clk) | |||
29 | clk->rate *= pll2_mult * pll1rate[(__raw_readw(FREQCR) >> 8) & 0x0007]; | 29 | clk->rate *= pll2_mult * pll1rate[(__raw_readw(FREQCR) >> 8) & 0x0007]; |
30 | } | 30 | } |
31 | 31 | ||
32 | static struct clk_ops sh7206_master_clk_ops = { | 32 | static struct sh_clk_ops sh7206_master_clk_ops = { |
33 | .init = master_clk_init, | 33 | .init = master_clk_init, |
34 | }; | 34 | }; |
35 | 35 | ||
@@ -39,7 +39,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
39 | return clk->parent->rate / pfc_divisors[idx]; | 39 | return clk->parent->rate / pfc_divisors[idx]; |
40 | } | 40 | } |
41 | 41 | ||
42 | static struct clk_ops sh7206_module_clk_ops = { | 42 | static struct sh_clk_ops sh7206_module_clk_ops = { |
43 | .recalc = module_clk_recalc, | 43 | .recalc = module_clk_recalc, |
44 | }; | 44 | }; |
45 | 45 | ||
@@ -48,7 +48,7 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
48 | return clk->parent->rate / pll1rate[(__raw_readw(FREQCR) >> 8) & 0x0007]; | 48 | return clk->parent->rate / pll1rate[(__raw_readw(FREQCR) >> 8) & 0x0007]; |
49 | } | 49 | } |
50 | 50 | ||
51 | static struct clk_ops sh7206_bus_clk_ops = { | 51 | static struct sh_clk_ops sh7206_bus_clk_ops = { |
52 | .recalc = bus_clk_recalc, | 52 | .recalc = bus_clk_recalc, |
53 | }; | 53 | }; |
54 | 54 | ||
@@ -58,18 +58,18 @@ static unsigned long cpu_clk_recalc(struct clk *clk) | |||
58 | return clk->parent->rate / ifc_divisors[idx]; | 58 | return clk->parent->rate / ifc_divisors[idx]; |
59 | } | 59 | } |
60 | 60 | ||
61 | static struct clk_ops sh7206_cpu_clk_ops = { | 61 | static struct sh_clk_ops sh7206_cpu_clk_ops = { |
62 | .recalc = cpu_clk_recalc, | 62 | .recalc = cpu_clk_recalc, |
63 | }; | 63 | }; |
64 | 64 | ||
65 | static struct clk_ops *sh7206_clk_ops[] = { | 65 | static struct sh_clk_ops *sh7206_clk_ops[] = { |
66 | &sh7206_master_clk_ops, | 66 | &sh7206_master_clk_ops, |
67 | &sh7206_module_clk_ops, | 67 | &sh7206_module_clk_ops, |
68 | &sh7206_bus_clk_ops, | 68 | &sh7206_bus_clk_ops, |
69 | &sh7206_cpu_clk_ops, | 69 | &sh7206_cpu_clk_ops, |
70 | }; | 70 | }; |
71 | 71 | ||
72 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 72 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
73 | { | 73 | { |
74 | if (test_mode_pin(MODE_PIN2 | MODE_PIN1 | MODE_PIN0)) | 74 | if (test_mode_pin(MODE_PIN2 | MODE_PIN1 | MODE_PIN0)) |
75 | pll2_mult = 1; | 75 | pll2_mult = 1; |
diff --git a/arch/sh/kernel/cpu/sh2a/opcode_helper.c b/arch/sh/kernel/cpu/sh2a/opcode_helper.c index 9704b7926d8b..72aa61c81e48 100644 --- a/arch/sh/kernel/cpu/sh2a/opcode_helper.c +++ b/arch/sh/kernel/cpu/sh2a/opcode_helper.c | |||
@@ -10,7 +10,6 @@ | |||
10 | * for more details. | 10 | * for more details. |
11 | */ | 11 | */ |
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <asm/system.h> | ||
14 | 13 | ||
15 | /* | 14 | /* |
16 | * Instructions on SH are generally fixed at 16-bits, however, SH-2A | 15 | * Instructions on SH are generally fixed at 16-bits, however, SH-2A |
diff --git a/arch/sh/kernel/cpu/sh3/clock-sh3.c b/arch/sh/kernel/cpu/sh3/clock-sh3.c index b78384afac09..90faa44ca94d 100644 --- a/arch/sh/kernel/cpu/sh3/clock-sh3.c +++ b/arch/sh/kernel/cpu/sh3/clock-sh3.c | |||
@@ -34,7 +34,7 @@ static void master_clk_init(struct clk *clk) | |||
34 | clk->rate *= pfc_divisors[idx]; | 34 | clk->rate *= pfc_divisors[idx]; |
35 | } | 35 | } |
36 | 36 | ||
37 | static struct clk_ops sh3_master_clk_ops = { | 37 | static struct sh_clk_ops sh3_master_clk_ops = { |
38 | .init = master_clk_init, | 38 | .init = master_clk_init, |
39 | }; | 39 | }; |
40 | 40 | ||
@@ -46,7 +46,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
46 | return clk->parent->rate / pfc_divisors[idx]; | 46 | return clk->parent->rate / pfc_divisors[idx]; |
47 | } | 47 | } |
48 | 48 | ||
49 | static struct clk_ops sh3_module_clk_ops = { | 49 | static struct sh_clk_ops sh3_module_clk_ops = { |
50 | .recalc = module_clk_recalc, | 50 | .recalc = module_clk_recalc, |
51 | }; | 51 | }; |
52 | 52 | ||
@@ -58,7 +58,7 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
58 | return clk->parent->rate / stc_multipliers[idx]; | 58 | return clk->parent->rate / stc_multipliers[idx]; |
59 | } | 59 | } |
60 | 60 | ||
61 | static struct clk_ops sh3_bus_clk_ops = { | 61 | static struct sh_clk_ops sh3_bus_clk_ops = { |
62 | .recalc = bus_clk_recalc, | 62 | .recalc = bus_clk_recalc, |
63 | }; | 63 | }; |
64 | 64 | ||
@@ -70,18 +70,18 @@ static unsigned long cpu_clk_recalc(struct clk *clk) | |||
70 | return clk->parent->rate / ifc_divisors[idx]; | 70 | return clk->parent->rate / ifc_divisors[idx]; |
71 | } | 71 | } |
72 | 72 | ||
73 | static struct clk_ops sh3_cpu_clk_ops = { | 73 | static struct sh_clk_ops sh3_cpu_clk_ops = { |
74 | .recalc = cpu_clk_recalc, | 74 | .recalc = cpu_clk_recalc, |
75 | }; | 75 | }; |
76 | 76 | ||
77 | static struct clk_ops *sh3_clk_ops[] = { | 77 | static struct sh_clk_ops *sh3_clk_ops[] = { |
78 | &sh3_master_clk_ops, | 78 | &sh3_master_clk_ops, |
79 | &sh3_module_clk_ops, | 79 | &sh3_module_clk_ops, |
80 | &sh3_bus_clk_ops, | 80 | &sh3_bus_clk_ops, |
81 | &sh3_cpu_clk_ops, | 81 | &sh3_cpu_clk_ops, |
82 | }; | 82 | }; |
83 | 83 | ||
84 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 84 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
85 | { | 85 | { |
86 | if (idx < ARRAY_SIZE(sh3_clk_ops)) | 86 | if (idx < ARRAY_SIZE(sh3_clk_ops)) |
87 | *ops = sh3_clk_ops[idx]; | 87 | *ops = sh3_clk_ops[idx]; |
diff --git a/arch/sh/kernel/cpu/sh3/clock-sh7705.c b/arch/sh/kernel/cpu/sh3/clock-sh7705.c index 0ecea1451c6f..a8da4a9986b3 100644 --- a/arch/sh/kernel/cpu/sh3/clock-sh7705.c +++ b/arch/sh/kernel/cpu/sh3/clock-sh7705.c | |||
@@ -35,7 +35,7 @@ static void master_clk_init(struct clk *clk) | |||
35 | clk->rate *= pfc_divisors[__raw_readw(FRQCR) & 0x0003]; | 35 | clk->rate *= pfc_divisors[__raw_readw(FRQCR) & 0x0003]; |
36 | } | 36 | } |
37 | 37 | ||
38 | static struct clk_ops sh7705_master_clk_ops = { | 38 | static struct sh_clk_ops sh7705_master_clk_ops = { |
39 | .init = master_clk_init, | 39 | .init = master_clk_init, |
40 | }; | 40 | }; |
41 | 41 | ||
@@ -45,7 +45,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
45 | return clk->parent->rate / pfc_divisors[idx]; | 45 | return clk->parent->rate / pfc_divisors[idx]; |
46 | } | 46 | } |
47 | 47 | ||
48 | static struct clk_ops sh7705_module_clk_ops = { | 48 | static struct sh_clk_ops sh7705_module_clk_ops = { |
49 | .recalc = module_clk_recalc, | 49 | .recalc = module_clk_recalc, |
50 | }; | 50 | }; |
51 | 51 | ||
@@ -55,7 +55,7 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
55 | return clk->parent->rate / stc_multipliers[idx]; | 55 | return clk->parent->rate / stc_multipliers[idx]; |
56 | } | 56 | } |
57 | 57 | ||
58 | static struct clk_ops sh7705_bus_clk_ops = { | 58 | static struct sh_clk_ops sh7705_bus_clk_ops = { |
59 | .recalc = bus_clk_recalc, | 59 | .recalc = bus_clk_recalc, |
60 | }; | 60 | }; |
61 | 61 | ||
@@ -65,18 +65,18 @@ static unsigned long cpu_clk_recalc(struct clk *clk) | |||
65 | return clk->parent->rate / ifc_divisors[idx]; | 65 | return clk->parent->rate / ifc_divisors[idx]; |
66 | } | 66 | } |
67 | 67 | ||
68 | static struct clk_ops sh7705_cpu_clk_ops = { | 68 | static struct sh_clk_ops sh7705_cpu_clk_ops = { |
69 | .recalc = cpu_clk_recalc, | 69 | .recalc = cpu_clk_recalc, |
70 | }; | 70 | }; |
71 | 71 | ||
72 | static struct clk_ops *sh7705_clk_ops[] = { | 72 | static struct sh_clk_ops *sh7705_clk_ops[] = { |
73 | &sh7705_master_clk_ops, | 73 | &sh7705_master_clk_ops, |
74 | &sh7705_module_clk_ops, | 74 | &sh7705_module_clk_ops, |
75 | &sh7705_bus_clk_ops, | 75 | &sh7705_bus_clk_ops, |
76 | &sh7705_cpu_clk_ops, | 76 | &sh7705_cpu_clk_ops, |
77 | }; | 77 | }; |
78 | 78 | ||
79 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 79 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
80 | { | 80 | { |
81 | if (idx < ARRAY_SIZE(sh7705_clk_ops)) | 81 | if (idx < ARRAY_SIZE(sh7705_clk_ops)) |
82 | *ops = sh7705_clk_ops[idx]; | 82 | *ops = sh7705_clk_ops[idx]; |
diff --git a/arch/sh/kernel/cpu/sh3/clock-sh7706.c b/arch/sh/kernel/cpu/sh3/clock-sh7706.c index 6f9ff8b57dd6..a4088e5b2203 100644 --- a/arch/sh/kernel/cpu/sh3/clock-sh7706.c +++ b/arch/sh/kernel/cpu/sh3/clock-sh7706.c | |||
@@ -30,7 +30,7 @@ static void master_clk_init(struct clk *clk) | |||
30 | clk->rate *= pfc_divisors[idx]; | 30 | clk->rate *= pfc_divisors[idx]; |
31 | } | 31 | } |
32 | 32 | ||
33 | static struct clk_ops sh7706_master_clk_ops = { | 33 | static struct sh_clk_ops sh7706_master_clk_ops = { |
34 | .init = master_clk_init, | 34 | .init = master_clk_init, |
35 | }; | 35 | }; |
36 | 36 | ||
@@ -42,7 +42,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
42 | return clk->parent->rate / pfc_divisors[idx]; | 42 | return clk->parent->rate / pfc_divisors[idx]; |
43 | } | 43 | } |
44 | 44 | ||
45 | static struct clk_ops sh7706_module_clk_ops = { | 45 | static struct sh_clk_ops sh7706_module_clk_ops = { |
46 | .recalc = module_clk_recalc, | 46 | .recalc = module_clk_recalc, |
47 | }; | 47 | }; |
48 | 48 | ||
@@ -54,7 +54,7 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
54 | return clk->parent->rate / stc_multipliers[idx]; | 54 | return clk->parent->rate / stc_multipliers[idx]; |
55 | } | 55 | } |
56 | 56 | ||
57 | static struct clk_ops sh7706_bus_clk_ops = { | 57 | static struct sh_clk_ops sh7706_bus_clk_ops = { |
58 | .recalc = bus_clk_recalc, | 58 | .recalc = bus_clk_recalc, |
59 | }; | 59 | }; |
60 | 60 | ||
@@ -66,18 +66,18 @@ static unsigned long cpu_clk_recalc(struct clk *clk) | |||
66 | return clk->parent->rate / ifc_divisors[idx]; | 66 | return clk->parent->rate / ifc_divisors[idx]; |
67 | } | 67 | } |
68 | 68 | ||
69 | static struct clk_ops sh7706_cpu_clk_ops = { | 69 | static struct sh_clk_ops sh7706_cpu_clk_ops = { |
70 | .recalc = cpu_clk_recalc, | 70 | .recalc = cpu_clk_recalc, |
71 | }; | 71 | }; |
72 | 72 | ||
73 | static struct clk_ops *sh7706_clk_ops[] = { | 73 | static struct sh_clk_ops *sh7706_clk_ops[] = { |
74 | &sh7706_master_clk_ops, | 74 | &sh7706_master_clk_ops, |
75 | &sh7706_module_clk_ops, | 75 | &sh7706_module_clk_ops, |
76 | &sh7706_bus_clk_ops, | 76 | &sh7706_bus_clk_ops, |
77 | &sh7706_cpu_clk_ops, | 77 | &sh7706_cpu_clk_ops, |
78 | }; | 78 | }; |
79 | 79 | ||
80 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 80 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
81 | { | 81 | { |
82 | if (idx < ARRAY_SIZE(sh7706_clk_ops)) | 82 | if (idx < ARRAY_SIZE(sh7706_clk_ops)) |
83 | *ops = sh7706_clk_ops[idx]; | 83 | *ops = sh7706_clk_ops[idx]; |
diff --git a/arch/sh/kernel/cpu/sh3/clock-sh7709.c b/arch/sh/kernel/cpu/sh3/clock-sh7709.c index f302ba09e681..54a6d4bcc0db 100644 --- a/arch/sh/kernel/cpu/sh3/clock-sh7709.c +++ b/arch/sh/kernel/cpu/sh3/clock-sh7709.c | |||
@@ -30,7 +30,7 @@ static void master_clk_init(struct clk *clk) | |||
30 | clk->rate *= pfc_divisors[idx]; | 30 | clk->rate *= pfc_divisors[idx]; |
31 | } | 31 | } |
32 | 32 | ||
33 | static struct clk_ops sh7709_master_clk_ops = { | 33 | static struct sh_clk_ops sh7709_master_clk_ops = { |
34 | .init = master_clk_init, | 34 | .init = master_clk_init, |
35 | }; | 35 | }; |
36 | 36 | ||
@@ -42,7 +42,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
42 | return clk->parent->rate / pfc_divisors[idx]; | 42 | return clk->parent->rate / pfc_divisors[idx]; |
43 | } | 43 | } |
44 | 44 | ||
45 | static struct clk_ops sh7709_module_clk_ops = { | 45 | static struct sh_clk_ops sh7709_module_clk_ops = { |
46 | .recalc = module_clk_recalc, | 46 | .recalc = module_clk_recalc, |
47 | }; | 47 | }; |
48 | 48 | ||
@@ -55,7 +55,7 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
55 | return clk->parent->rate * stc_multipliers[idx]; | 55 | return clk->parent->rate * stc_multipliers[idx]; |
56 | } | 56 | } |
57 | 57 | ||
58 | static struct clk_ops sh7709_bus_clk_ops = { | 58 | static struct sh_clk_ops sh7709_bus_clk_ops = { |
59 | .recalc = bus_clk_recalc, | 59 | .recalc = bus_clk_recalc, |
60 | }; | 60 | }; |
61 | 61 | ||
@@ -67,18 +67,18 @@ static unsigned long cpu_clk_recalc(struct clk *clk) | |||
67 | return clk->parent->rate / ifc_divisors[idx]; | 67 | return clk->parent->rate / ifc_divisors[idx]; |
68 | } | 68 | } |
69 | 69 | ||
70 | static struct clk_ops sh7709_cpu_clk_ops = { | 70 | static struct sh_clk_ops sh7709_cpu_clk_ops = { |
71 | .recalc = cpu_clk_recalc, | 71 | .recalc = cpu_clk_recalc, |
72 | }; | 72 | }; |
73 | 73 | ||
74 | static struct clk_ops *sh7709_clk_ops[] = { | 74 | static struct sh_clk_ops *sh7709_clk_ops[] = { |
75 | &sh7709_master_clk_ops, | 75 | &sh7709_master_clk_ops, |
76 | &sh7709_module_clk_ops, | 76 | &sh7709_module_clk_ops, |
77 | &sh7709_bus_clk_ops, | 77 | &sh7709_bus_clk_ops, |
78 | &sh7709_cpu_clk_ops, | 78 | &sh7709_cpu_clk_ops, |
79 | }; | 79 | }; |
80 | 80 | ||
81 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 81 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
82 | { | 82 | { |
83 | if (idx < ARRAY_SIZE(sh7709_clk_ops)) | 83 | if (idx < ARRAY_SIZE(sh7709_clk_ops)) |
84 | *ops = sh7709_clk_ops[idx]; | 84 | *ops = sh7709_clk_ops[idx]; |
diff --git a/arch/sh/kernel/cpu/sh3/clock-sh7710.c b/arch/sh/kernel/cpu/sh3/clock-sh7710.c index 29a87d8946a4..ce601b2e3976 100644 --- a/arch/sh/kernel/cpu/sh3/clock-sh7710.c +++ b/arch/sh/kernel/cpu/sh3/clock-sh7710.c | |||
@@ -29,7 +29,7 @@ static void master_clk_init(struct clk *clk) | |||
29 | clk->rate *= md_table[__raw_readw(FRQCR) & 0x0007]; | 29 | clk->rate *= md_table[__raw_readw(FRQCR) & 0x0007]; |
30 | } | 30 | } |
31 | 31 | ||
32 | static struct clk_ops sh7710_master_clk_ops = { | 32 | static struct sh_clk_ops sh7710_master_clk_ops = { |
33 | .init = master_clk_init, | 33 | .init = master_clk_init, |
34 | }; | 34 | }; |
35 | 35 | ||
@@ -39,7 +39,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
39 | return clk->parent->rate / md_table[idx]; | 39 | return clk->parent->rate / md_table[idx]; |
40 | } | 40 | } |
41 | 41 | ||
42 | static struct clk_ops sh7710_module_clk_ops = { | 42 | static struct sh_clk_ops sh7710_module_clk_ops = { |
43 | .recalc = module_clk_recalc, | 43 | .recalc = module_clk_recalc, |
44 | }; | 44 | }; |
45 | 45 | ||
@@ -49,7 +49,7 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
49 | return clk->parent->rate / md_table[idx]; | 49 | return clk->parent->rate / md_table[idx]; |
50 | } | 50 | } |
51 | 51 | ||
52 | static struct clk_ops sh7710_bus_clk_ops = { | 52 | static struct sh_clk_ops sh7710_bus_clk_ops = { |
53 | .recalc = bus_clk_recalc, | 53 | .recalc = bus_clk_recalc, |
54 | }; | 54 | }; |
55 | 55 | ||
@@ -59,18 +59,18 @@ static unsigned long cpu_clk_recalc(struct clk *clk) | |||
59 | return clk->parent->rate / md_table[idx]; | 59 | return clk->parent->rate / md_table[idx]; |
60 | } | 60 | } |
61 | 61 | ||
62 | static struct clk_ops sh7710_cpu_clk_ops = { | 62 | static struct sh_clk_ops sh7710_cpu_clk_ops = { |
63 | .recalc = cpu_clk_recalc, | 63 | .recalc = cpu_clk_recalc, |
64 | }; | 64 | }; |
65 | 65 | ||
66 | static struct clk_ops *sh7710_clk_ops[] = { | 66 | static struct sh_clk_ops *sh7710_clk_ops[] = { |
67 | &sh7710_master_clk_ops, | 67 | &sh7710_master_clk_ops, |
68 | &sh7710_module_clk_ops, | 68 | &sh7710_module_clk_ops, |
69 | &sh7710_bus_clk_ops, | 69 | &sh7710_bus_clk_ops, |
70 | &sh7710_cpu_clk_ops, | 70 | &sh7710_cpu_clk_ops, |
71 | }; | 71 | }; |
72 | 72 | ||
73 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 73 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
74 | { | 74 | { |
75 | if (idx < ARRAY_SIZE(sh7710_clk_ops)) | 75 | if (idx < ARRAY_SIZE(sh7710_clk_ops)) |
76 | *ops = sh7710_clk_ops[idx]; | 76 | *ops = sh7710_clk_ops[idx]; |
diff --git a/arch/sh/kernel/cpu/sh3/clock-sh7712.c b/arch/sh/kernel/cpu/sh3/clock-sh7712.c index b0d0c5203996..21438a9a1ae1 100644 --- a/arch/sh/kernel/cpu/sh3/clock-sh7712.c +++ b/arch/sh/kernel/cpu/sh3/clock-sh7712.c | |||
@@ -29,7 +29,7 @@ static void master_clk_init(struct clk *clk) | |||
29 | clk->rate *= multipliers[idx]; | 29 | clk->rate *= multipliers[idx]; |
30 | } | 30 | } |
31 | 31 | ||
32 | static struct clk_ops sh7712_master_clk_ops = { | 32 | static struct sh_clk_ops sh7712_master_clk_ops = { |
33 | .init = master_clk_init, | 33 | .init = master_clk_init, |
34 | }; | 34 | }; |
35 | 35 | ||
@@ -41,7 +41,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
41 | return clk->parent->rate / divisors[idx]; | 41 | return clk->parent->rate / divisors[idx]; |
42 | } | 42 | } |
43 | 43 | ||
44 | static struct clk_ops sh7712_module_clk_ops = { | 44 | static struct sh_clk_ops sh7712_module_clk_ops = { |
45 | .recalc = module_clk_recalc, | 45 | .recalc = module_clk_recalc, |
46 | }; | 46 | }; |
47 | 47 | ||
@@ -53,17 +53,17 @@ static unsigned long cpu_clk_recalc(struct clk *clk) | |||
53 | return clk->parent->rate / divisors[idx]; | 53 | return clk->parent->rate / divisors[idx]; |
54 | } | 54 | } |
55 | 55 | ||
56 | static struct clk_ops sh7712_cpu_clk_ops = { | 56 | static struct sh_clk_ops sh7712_cpu_clk_ops = { |
57 | .recalc = cpu_clk_recalc, | 57 | .recalc = cpu_clk_recalc, |
58 | }; | 58 | }; |
59 | 59 | ||
60 | static struct clk_ops *sh7712_clk_ops[] = { | 60 | static struct sh_clk_ops *sh7712_clk_ops[] = { |
61 | &sh7712_master_clk_ops, | 61 | &sh7712_master_clk_ops, |
62 | &sh7712_module_clk_ops, | 62 | &sh7712_module_clk_ops, |
63 | &sh7712_cpu_clk_ops, | 63 | &sh7712_cpu_clk_ops, |
64 | }; | 64 | }; |
65 | 65 | ||
66 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 66 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
67 | { | 67 | { |
68 | if (idx < ARRAY_SIZE(sh7712_clk_ops)) | 68 | if (idx < ARRAY_SIZE(sh7712_clk_ops)) |
69 | *ops = sh7712_clk_ops[idx]; | 69 | *ops = sh7712_clk_ops[idx]; |
diff --git a/arch/sh/kernel/cpu/sh4/clock-sh4-202.c b/arch/sh/kernel/cpu/sh4/clock-sh4-202.c index f4e262adb39e..4b5bab5f875f 100644 --- a/arch/sh/kernel/cpu/sh4/clock-sh4-202.c +++ b/arch/sh/kernel/cpu/sh4/clock-sh4-202.c | |||
@@ -41,7 +41,7 @@ static inline int frqcr3_lookup(struct clk *clk, unsigned long rate) | |||
41 | return 5; | 41 | return 5; |
42 | } | 42 | } |
43 | 43 | ||
44 | static struct clk_ops sh4202_emi_clk_ops = { | 44 | static struct sh_clk_ops sh4202_emi_clk_ops = { |
45 | .recalc = emi_clk_recalc, | 45 | .recalc = emi_clk_recalc, |
46 | }; | 46 | }; |
47 | 47 | ||
@@ -56,7 +56,7 @@ static unsigned long femi_clk_recalc(struct clk *clk) | |||
56 | return clk->parent->rate / frqcr3_divisors[idx]; | 56 | return clk->parent->rate / frqcr3_divisors[idx]; |
57 | } | 57 | } |
58 | 58 | ||
59 | static struct clk_ops sh4202_femi_clk_ops = { | 59 | static struct sh_clk_ops sh4202_femi_clk_ops = { |
60 | .recalc = femi_clk_recalc, | 60 | .recalc = femi_clk_recalc, |
61 | }; | 61 | }; |
62 | 62 | ||
@@ -130,7 +130,7 @@ static int shoc_clk_set_rate(struct clk *clk, unsigned long rate) | |||
130 | return 0; | 130 | return 0; |
131 | } | 131 | } |
132 | 132 | ||
133 | static struct clk_ops sh4202_shoc_clk_ops = { | 133 | static struct sh_clk_ops sh4202_shoc_clk_ops = { |
134 | .init = shoc_clk_init, | 134 | .init = shoc_clk_init, |
135 | .recalc = shoc_clk_recalc, | 135 | .recalc = shoc_clk_recalc, |
136 | .set_rate = shoc_clk_set_rate, | 136 | .set_rate = shoc_clk_set_rate, |
diff --git a/arch/sh/kernel/cpu/sh4/clock-sh4.c b/arch/sh/kernel/cpu/sh4/clock-sh4.c index 5add75c1f539..99e5ec8b483d 100644 --- a/arch/sh/kernel/cpu/sh4/clock-sh4.c +++ b/arch/sh/kernel/cpu/sh4/clock-sh4.c | |||
@@ -31,7 +31,7 @@ static void master_clk_init(struct clk *clk) | |||
31 | clk->rate *= pfc_divisors[__raw_readw(FRQCR) & 0x0007]; | 31 | clk->rate *= pfc_divisors[__raw_readw(FRQCR) & 0x0007]; |
32 | } | 32 | } |
33 | 33 | ||
34 | static struct clk_ops sh4_master_clk_ops = { | 34 | static struct sh_clk_ops sh4_master_clk_ops = { |
35 | .init = master_clk_init, | 35 | .init = master_clk_init, |
36 | }; | 36 | }; |
37 | 37 | ||
@@ -41,7 +41,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
41 | return clk->parent->rate / pfc_divisors[idx]; | 41 | return clk->parent->rate / pfc_divisors[idx]; |
42 | } | 42 | } |
43 | 43 | ||
44 | static struct clk_ops sh4_module_clk_ops = { | 44 | static struct sh_clk_ops sh4_module_clk_ops = { |
45 | .recalc = module_clk_recalc, | 45 | .recalc = module_clk_recalc, |
46 | }; | 46 | }; |
47 | 47 | ||
@@ -51,7 +51,7 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
51 | return clk->parent->rate / bfc_divisors[idx]; | 51 | return clk->parent->rate / bfc_divisors[idx]; |
52 | } | 52 | } |
53 | 53 | ||
54 | static struct clk_ops sh4_bus_clk_ops = { | 54 | static struct sh_clk_ops sh4_bus_clk_ops = { |
55 | .recalc = bus_clk_recalc, | 55 | .recalc = bus_clk_recalc, |
56 | }; | 56 | }; |
57 | 57 | ||
@@ -61,18 +61,18 @@ static unsigned long cpu_clk_recalc(struct clk *clk) | |||
61 | return clk->parent->rate / ifc_divisors[idx]; | 61 | return clk->parent->rate / ifc_divisors[idx]; |
62 | } | 62 | } |
63 | 63 | ||
64 | static struct clk_ops sh4_cpu_clk_ops = { | 64 | static struct sh_clk_ops sh4_cpu_clk_ops = { |
65 | .recalc = cpu_clk_recalc, | 65 | .recalc = cpu_clk_recalc, |
66 | }; | 66 | }; |
67 | 67 | ||
68 | static struct clk_ops *sh4_clk_ops[] = { | 68 | static struct sh_clk_ops *sh4_clk_ops[] = { |
69 | &sh4_master_clk_ops, | 69 | &sh4_master_clk_ops, |
70 | &sh4_module_clk_ops, | 70 | &sh4_module_clk_ops, |
71 | &sh4_bus_clk_ops, | 71 | &sh4_bus_clk_ops, |
72 | &sh4_cpu_clk_ops, | 72 | &sh4_cpu_clk_ops, |
73 | }; | 73 | }; |
74 | 74 | ||
75 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 75 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
76 | { | 76 | { |
77 | if (idx < ARRAY_SIZE(sh4_clk_ops)) | 77 | if (idx < ARRAY_SIZE(sh4_clk_ops)) |
78 | *ops = sh4_clk_ops[idx]; | 78 | *ops = sh4_clk_ops[idx]; |
diff --git a/arch/sh/kernel/cpu/sh4/fpu.c b/arch/sh/kernel/cpu/sh4/fpu.c index 447482d7f65e..e74cd6c0f10d 100644 --- a/arch/sh/kernel/cpu/sh4/fpu.c +++ b/arch/sh/kernel/cpu/sh4/fpu.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <cpu/fpu.h> | 16 | #include <cpu/fpu.h> |
17 | #include <asm/processor.h> | 17 | #include <asm/processor.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/fpu.h> | 18 | #include <asm/fpu.h> |
20 | 19 | ||
21 | /* The PR (precision) bit in the FP Status Register must be clear when | 20 | /* The PR (precision) bit in the FP Status Register must be clear when |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7343.c b/arch/sh/kernel/cpu/sh4a/clock-sh7343.c index 70e45bdaadc7..ea01a72f1b94 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7343.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7343.c | |||
@@ -61,7 +61,7 @@ static unsigned long dll_recalc(struct clk *clk) | |||
61 | return clk->parent->rate * mult; | 61 | return clk->parent->rate * mult; |
62 | } | 62 | } |
63 | 63 | ||
64 | static struct clk_ops dll_clk_ops = { | 64 | static struct sh_clk_ops dll_clk_ops = { |
65 | .recalc = dll_recalc, | 65 | .recalc = dll_recalc, |
66 | }; | 66 | }; |
67 | 67 | ||
@@ -81,7 +81,7 @@ static unsigned long pll_recalc(struct clk *clk) | |||
81 | return clk->parent->rate * mult; | 81 | return clk->parent->rate * mult; |
82 | } | 82 | } |
83 | 83 | ||
84 | static struct clk_ops pll_clk_ops = { | 84 | static struct sh_clk_ops pll_clk_ops = { |
85 | .recalc = pll_recalc, | 85 | .recalc = pll_recalc, |
86 | }; | 86 | }; |
87 | 87 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7366.c b/arch/sh/kernel/cpu/sh4a/clock-sh7366.c index 3c3165000c52..7ac07b4f75de 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7366.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7366.c | |||
@@ -61,7 +61,7 @@ static unsigned long dll_recalc(struct clk *clk) | |||
61 | return clk->parent->rate * mult; | 61 | return clk->parent->rate * mult; |
62 | } | 62 | } |
63 | 63 | ||
64 | static struct clk_ops dll_clk_ops = { | 64 | static struct sh_clk_ops dll_clk_ops = { |
65 | .recalc = dll_recalc, | 65 | .recalc = dll_recalc, |
66 | }; | 66 | }; |
67 | 67 | ||
@@ -84,7 +84,7 @@ static unsigned long pll_recalc(struct clk *clk) | |||
84 | return (clk->parent->rate * mult) / div; | 84 | return (clk->parent->rate * mult) / div; |
85 | } | 85 | } |
86 | 86 | ||
87 | static struct clk_ops pll_clk_ops = { | 87 | static struct sh_clk_ops pll_clk_ops = { |
88 | .recalc = pll_recalc, | 88 | .recalc = pll_recalc, |
89 | }; | 89 | }; |
90 | 90 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7722.c b/arch/sh/kernel/cpu/sh4a/clock-sh7722.c index 212c72ef959c..8e1f97010c0d 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7722.c | |||
@@ -64,7 +64,7 @@ static unsigned long dll_recalc(struct clk *clk) | |||
64 | return clk->parent->rate * mult; | 64 | return clk->parent->rate * mult; |
65 | } | 65 | } |
66 | 66 | ||
67 | static struct clk_ops dll_clk_ops = { | 67 | static struct sh_clk_ops dll_clk_ops = { |
68 | .recalc = dll_recalc, | 68 | .recalc = dll_recalc, |
69 | }; | 69 | }; |
70 | 70 | ||
@@ -87,7 +87,7 @@ static unsigned long pll_recalc(struct clk *clk) | |||
87 | return (clk->parent->rate * mult) / div; | 87 | return (clk->parent->rate * mult) / div; |
88 | } | 88 | } |
89 | 89 | ||
90 | static struct clk_ops pll_clk_ops = { | 90 | static struct sh_clk_ops pll_clk_ops = { |
91 | .recalc = pll_recalc, | 91 | .recalc = pll_recalc, |
92 | }; | 92 | }; |
93 | 93 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7723.c b/arch/sh/kernel/cpu/sh4a/clock-sh7723.c index 2f8c9179da47..35f75cf0c7e5 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7723.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7723.c | |||
@@ -65,7 +65,7 @@ static unsigned long dll_recalc(struct clk *clk) | |||
65 | return clk->parent->rate * mult; | 65 | return clk->parent->rate * mult; |
66 | } | 66 | } |
67 | 67 | ||
68 | static struct clk_ops dll_clk_ops = { | 68 | static struct sh_clk_ops dll_clk_ops = { |
69 | .recalc = dll_recalc, | 69 | .recalc = dll_recalc, |
70 | }; | 70 | }; |
71 | 71 | ||
@@ -88,7 +88,7 @@ static unsigned long pll_recalc(struct clk *clk) | |||
88 | return (clk->parent->rate * mult) / div; | 88 | return (clk->parent->rate * mult) / div; |
89 | } | 89 | } |
90 | 90 | ||
91 | static struct clk_ops pll_clk_ops = { | 91 | static struct sh_clk_ops pll_clk_ops = { |
92 | .recalc = pll_recalc, | 92 | .recalc = pll_recalc, |
93 | }; | 93 | }; |
94 | 94 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7724.c b/arch/sh/kernel/cpu/sh4a/clock-sh7724.c index 70bd96646f42..2a87901673fe 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7724.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7724.c | |||
@@ -70,7 +70,7 @@ static unsigned long fll_recalc(struct clk *clk) | |||
70 | return (clk->parent->rate * mult) / div; | 70 | return (clk->parent->rate * mult) / div; |
71 | } | 71 | } |
72 | 72 | ||
73 | static struct clk_ops fll_clk_ops = { | 73 | static struct sh_clk_ops fll_clk_ops = { |
74 | .recalc = fll_recalc, | 74 | .recalc = fll_recalc, |
75 | }; | 75 | }; |
76 | 76 | ||
@@ -90,7 +90,7 @@ static unsigned long pll_recalc(struct clk *clk) | |||
90 | return clk->parent->rate * mult; | 90 | return clk->parent->rate * mult; |
91 | } | 91 | } |
92 | 92 | ||
93 | static struct clk_ops pll_clk_ops = { | 93 | static struct sh_clk_ops pll_clk_ops = { |
94 | .recalc = pll_recalc, | 94 | .recalc = pll_recalc, |
95 | }; | 95 | }; |
96 | 96 | ||
@@ -105,7 +105,7 @@ static unsigned long div3_recalc(struct clk *clk) | |||
105 | return clk->parent->rate / 3; | 105 | return clk->parent->rate / 3; |
106 | } | 106 | } |
107 | 107 | ||
108 | static struct clk_ops div3_clk_ops = { | 108 | static struct sh_clk_ops div3_clk_ops = { |
109 | .recalc = div3_recalc, | 109 | .recalc = div3_recalc, |
110 | }; | 110 | }; |
111 | 111 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7757.c b/arch/sh/kernel/cpu/sh4a/clock-sh7757.c index 0bd21c82151b..5853989586ed 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7757.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7757.c | |||
@@ -33,7 +33,7 @@ static unsigned long pll_recalc(struct clk *clk) | |||
33 | return clk->parent->rate * multiplier; | 33 | return clk->parent->rate * multiplier; |
34 | } | 34 | } |
35 | 35 | ||
36 | static struct clk_ops pll_clk_ops = { | 36 | static struct sh_clk_ops pll_clk_ops = { |
37 | .recalc = pll_recalc, | 37 | .recalc = pll_recalc, |
38 | }; | 38 | }; |
39 | 39 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7763.c b/arch/sh/kernel/cpu/sh4a/clock-sh7763.c index 2d4c7fd79c02..7707e35aea46 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7763.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7763.c | |||
@@ -27,7 +27,7 @@ static void master_clk_init(struct clk *clk) | |||
27 | clk->rate *= p0fc_divisors[(__raw_readl(FRQCR) >> 4) & 0x07]; | 27 | clk->rate *= p0fc_divisors[(__raw_readl(FRQCR) >> 4) & 0x07]; |
28 | } | 28 | } |
29 | 29 | ||
30 | static struct clk_ops sh7763_master_clk_ops = { | 30 | static struct sh_clk_ops sh7763_master_clk_ops = { |
31 | .init = master_clk_init, | 31 | .init = master_clk_init, |
32 | }; | 32 | }; |
33 | 33 | ||
@@ -37,7 +37,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
37 | return clk->parent->rate / p0fc_divisors[idx]; | 37 | return clk->parent->rate / p0fc_divisors[idx]; |
38 | } | 38 | } |
39 | 39 | ||
40 | static struct clk_ops sh7763_module_clk_ops = { | 40 | static struct sh_clk_ops sh7763_module_clk_ops = { |
41 | .recalc = module_clk_recalc, | 41 | .recalc = module_clk_recalc, |
42 | }; | 42 | }; |
43 | 43 | ||
@@ -47,22 +47,22 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
47 | return clk->parent->rate / bfc_divisors[idx]; | 47 | return clk->parent->rate / bfc_divisors[idx]; |
48 | } | 48 | } |
49 | 49 | ||
50 | static struct clk_ops sh7763_bus_clk_ops = { | 50 | static struct sh_clk_ops sh7763_bus_clk_ops = { |
51 | .recalc = bus_clk_recalc, | 51 | .recalc = bus_clk_recalc, |
52 | }; | 52 | }; |
53 | 53 | ||
54 | static struct clk_ops sh7763_cpu_clk_ops = { | 54 | static struct sh_clk_ops sh7763_cpu_clk_ops = { |
55 | .recalc = followparent_recalc, | 55 | .recalc = followparent_recalc, |
56 | }; | 56 | }; |
57 | 57 | ||
58 | static struct clk_ops *sh7763_clk_ops[] = { | 58 | static struct sh_clk_ops *sh7763_clk_ops[] = { |
59 | &sh7763_master_clk_ops, | 59 | &sh7763_master_clk_ops, |
60 | &sh7763_module_clk_ops, | 60 | &sh7763_module_clk_ops, |
61 | &sh7763_bus_clk_ops, | 61 | &sh7763_bus_clk_ops, |
62 | &sh7763_cpu_clk_ops, | 62 | &sh7763_cpu_clk_ops, |
63 | }; | 63 | }; |
64 | 64 | ||
65 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 65 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
66 | { | 66 | { |
67 | if (idx < ARRAY_SIZE(sh7763_clk_ops)) | 67 | if (idx < ARRAY_SIZE(sh7763_clk_ops)) |
68 | *ops = sh7763_clk_ops[idx]; | 68 | *ops = sh7763_clk_ops[idx]; |
@@ -74,7 +74,7 @@ static unsigned long shyway_clk_recalc(struct clk *clk) | |||
74 | return clk->parent->rate / cfc_divisors[idx]; | 74 | return clk->parent->rate / cfc_divisors[idx]; |
75 | } | 75 | } |
76 | 76 | ||
77 | static struct clk_ops sh7763_shyway_clk_ops = { | 77 | static struct sh_clk_ops sh7763_shyway_clk_ops = { |
78 | .recalc = shyway_clk_recalc, | 78 | .recalc = shyway_clk_recalc, |
79 | }; | 79 | }; |
80 | 80 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7770.c b/arch/sh/kernel/cpu/sh4a/clock-sh7770.c index 9e3354365d40..5d36f334bb0a 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7770.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7770.c | |||
@@ -24,7 +24,7 @@ static void master_clk_init(struct clk *clk) | |||
24 | clk->rate *= pfc_divisors[(__raw_readl(FRQCR) >> 28) & 0x000f]; | 24 | clk->rate *= pfc_divisors[(__raw_readl(FRQCR) >> 28) & 0x000f]; |
25 | } | 25 | } |
26 | 26 | ||
27 | static struct clk_ops sh7770_master_clk_ops = { | 27 | static struct sh_clk_ops sh7770_master_clk_ops = { |
28 | .init = master_clk_init, | 28 | .init = master_clk_init, |
29 | }; | 29 | }; |
30 | 30 | ||
@@ -34,7 +34,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
34 | return clk->parent->rate / pfc_divisors[idx]; | 34 | return clk->parent->rate / pfc_divisors[idx]; |
35 | } | 35 | } |
36 | 36 | ||
37 | static struct clk_ops sh7770_module_clk_ops = { | 37 | static struct sh_clk_ops sh7770_module_clk_ops = { |
38 | .recalc = module_clk_recalc, | 38 | .recalc = module_clk_recalc, |
39 | }; | 39 | }; |
40 | 40 | ||
@@ -44,7 +44,7 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
44 | return clk->parent->rate / bfc_divisors[idx]; | 44 | return clk->parent->rate / bfc_divisors[idx]; |
45 | } | 45 | } |
46 | 46 | ||
47 | static struct clk_ops sh7770_bus_clk_ops = { | 47 | static struct sh_clk_ops sh7770_bus_clk_ops = { |
48 | .recalc = bus_clk_recalc, | 48 | .recalc = bus_clk_recalc, |
49 | }; | 49 | }; |
50 | 50 | ||
@@ -54,18 +54,18 @@ static unsigned long cpu_clk_recalc(struct clk *clk) | |||
54 | return clk->parent->rate / ifc_divisors[idx]; | 54 | return clk->parent->rate / ifc_divisors[idx]; |
55 | } | 55 | } |
56 | 56 | ||
57 | static struct clk_ops sh7770_cpu_clk_ops = { | 57 | static struct sh_clk_ops sh7770_cpu_clk_ops = { |
58 | .recalc = cpu_clk_recalc, | 58 | .recalc = cpu_clk_recalc, |
59 | }; | 59 | }; |
60 | 60 | ||
61 | static struct clk_ops *sh7770_clk_ops[] = { | 61 | static struct sh_clk_ops *sh7770_clk_ops[] = { |
62 | &sh7770_master_clk_ops, | 62 | &sh7770_master_clk_ops, |
63 | &sh7770_module_clk_ops, | 63 | &sh7770_module_clk_ops, |
64 | &sh7770_bus_clk_ops, | 64 | &sh7770_bus_clk_ops, |
65 | &sh7770_cpu_clk_ops, | 65 | &sh7770_cpu_clk_ops, |
66 | }; | 66 | }; |
67 | 67 | ||
68 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 68 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
69 | { | 69 | { |
70 | if (idx < ARRAY_SIZE(sh7770_clk_ops)) | 70 | if (idx < ARRAY_SIZE(sh7770_clk_ops)) |
71 | *ops = sh7770_clk_ops[idx]; | 71 | *ops = sh7770_clk_ops[idx]; |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7780.c b/arch/sh/kernel/cpu/sh4a/clock-sh7780.c index 3b53348fe2fc..793dae42a2f8 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7780.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7780.c | |||
@@ -27,7 +27,7 @@ static void master_clk_init(struct clk *clk) | |||
27 | clk->rate *= pfc_divisors[__raw_readl(FRQCR) & 0x0003]; | 27 | clk->rate *= pfc_divisors[__raw_readl(FRQCR) & 0x0003]; |
28 | } | 28 | } |
29 | 29 | ||
30 | static struct clk_ops sh7780_master_clk_ops = { | 30 | static struct sh_clk_ops sh7780_master_clk_ops = { |
31 | .init = master_clk_init, | 31 | .init = master_clk_init, |
32 | }; | 32 | }; |
33 | 33 | ||
@@ -37,7 +37,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
37 | return clk->parent->rate / pfc_divisors[idx]; | 37 | return clk->parent->rate / pfc_divisors[idx]; |
38 | } | 38 | } |
39 | 39 | ||
40 | static struct clk_ops sh7780_module_clk_ops = { | 40 | static struct sh_clk_ops sh7780_module_clk_ops = { |
41 | .recalc = module_clk_recalc, | 41 | .recalc = module_clk_recalc, |
42 | }; | 42 | }; |
43 | 43 | ||
@@ -47,7 +47,7 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
47 | return clk->parent->rate / bfc_divisors[idx]; | 47 | return clk->parent->rate / bfc_divisors[idx]; |
48 | } | 48 | } |
49 | 49 | ||
50 | static struct clk_ops sh7780_bus_clk_ops = { | 50 | static struct sh_clk_ops sh7780_bus_clk_ops = { |
51 | .recalc = bus_clk_recalc, | 51 | .recalc = bus_clk_recalc, |
52 | }; | 52 | }; |
53 | 53 | ||
@@ -57,18 +57,18 @@ static unsigned long cpu_clk_recalc(struct clk *clk) | |||
57 | return clk->parent->rate / ifc_divisors[idx]; | 57 | return clk->parent->rate / ifc_divisors[idx]; |
58 | } | 58 | } |
59 | 59 | ||
60 | static struct clk_ops sh7780_cpu_clk_ops = { | 60 | static struct sh_clk_ops sh7780_cpu_clk_ops = { |
61 | .recalc = cpu_clk_recalc, | 61 | .recalc = cpu_clk_recalc, |
62 | }; | 62 | }; |
63 | 63 | ||
64 | static struct clk_ops *sh7780_clk_ops[] = { | 64 | static struct sh_clk_ops *sh7780_clk_ops[] = { |
65 | &sh7780_master_clk_ops, | 65 | &sh7780_master_clk_ops, |
66 | &sh7780_module_clk_ops, | 66 | &sh7780_module_clk_ops, |
67 | &sh7780_bus_clk_ops, | 67 | &sh7780_bus_clk_ops, |
68 | &sh7780_cpu_clk_ops, | 68 | &sh7780_cpu_clk_ops, |
69 | }; | 69 | }; |
70 | 70 | ||
71 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 71 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
72 | { | 72 | { |
73 | if (idx < ARRAY_SIZE(sh7780_clk_ops)) | 73 | if (idx < ARRAY_SIZE(sh7780_clk_ops)) |
74 | *ops = sh7780_clk_ops[idx]; | 74 | *ops = sh7780_clk_ops[idx]; |
@@ -80,7 +80,7 @@ static unsigned long shyway_clk_recalc(struct clk *clk) | |||
80 | return clk->parent->rate / cfc_divisors[idx]; | 80 | return clk->parent->rate / cfc_divisors[idx]; |
81 | } | 81 | } |
82 | 82 | ||
83 | static struct clk_ops sh7780_shyway_clk_ops = { | 83 | static struct sh_clk_ops sh7780_shyway_clk_ops = { |
84 | .recalc = shyway_clk_recalc, | 84 | .recalc = shyway_clk_recalc, |
85 | }; | 85 | }; |
86 | 86 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c index 2b314439d359..ab1c58f2d101 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c | |||
@@ -36,7 +36,7 @@ static unsigned long pll_recalc(struct clk *clk) | |||
36 | return clk->parent->rate * multiplier; | 36 | return clk->parent->rate * multiplier; |
37 | } | 37 | } |
38 | 38 | ||
39 | static struct clk_ops pll_clk_ops = { | 39 | static struct sh_clk_ops pll_clk_ops = { |
40 | .recalc = pll_recalc, | 40 | .recalc = pll_recalc, |
41 | }; | 41 | }; |
42 | 42 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7786.c b/arch/sh/kernel/cpu/sh4a/clock-sh7786.c index f6c0c3d5599f..491709483e10 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7786.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7786.c | |||
@@ -38,7 +38,7 @@ static unsigned long pll_recalc(struct clk *clk) | |||
38 | return clk->parent->rate * multiplier; | 38 | return clk->parent->rate * multiplier; |
39 | } | 39 | } |
40 | 40 | ||
41 | static struct clk_ops pll_clk_ops = { | 41 | static struct sh_clk_ops pll_clk_ops = { |
42 | .recalc = pll_recalc, | 42 | .recalc = pll_recalc, |
43 | }; | 43 | }; |
44 | 44 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/clock-shx3.c b/arch/sh/kernel/cpu/sh4a/clock-shx3.c index bf2d00b8b908..0f11b392bf46 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-shx3.c +++ b/arch/sh/kernel/cpu/sh4a/clock-shx3.c | |||
@@ -32,7 +32,7 @@ static unsigned long pll_recalc(struct clk *clk) | |||
32 | return clk->parent->rate * 72; | 32 | return clk->parent->rate * 72; |
33 | } | 33 | } |
34 | 34 | ||
35 | static struct clk_ops pll_clk_ops = { | 35 | static struct sh_clk_ops pll_clk_ops = { |
36 | .recalc = pll_recalc, | 36 | .recalc = pll_recalc, |
37 | }; | 37 | }; |
38 | 38 | ||
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c index 2875e8be4f72..c8836cffa216 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c | |||
@@ -680,6 +680,25 @@ static struct platform_device spi1_device = { | |||
680 | .resource = spi1_resources, | 680 | .resource = spi1_resources, |
681 | }; | 681 | }; |
682 | 682 | ||
683 | static struct resource rspi_resources[] = { | ||
684 | { | ||
685 | .start = 0xfe480000, | ||
686 | .end = 0xfe4800ff, | ||
687 | .flags = IORESOURCE_MEM, | ||
688 | }, | ||
689 | { | ||
690 | .start = 220, | ||
691 | .flags = IORESOURCE_IRQ, | ||
692 | }, | ||
693 | }; | ||
694 | |||
695 | static struct platform_device rspi_device = { | ||
696 | .name = "rspi", | ||
697 | .id = 2, | ||
698 | .num_resources = ARRAY_SIZE(rspi_resources), | ||
699 | .resource = rspi_resources, | ||
700 | }; | ||
701 | |||
683 | static struct resource usb_ehci_resources[] = { | 702 | static struct resource usb_ehci_resources[] = { |
684 | [0] = { | 703 | [0] = { |
685 | .start = 0xfe4f1000, | 704 | .start = 0xfe4f1000, |
@@ -740,6 +759,7 @@ static struct platform_device *sh7757_devices[] __initdata = { | |||
740 | &dma3_device, | 759 | &dma3_device, |
741 | &spi0_device, | 760 | &spi0_device, |
742 | &spi1_device, | 761 | &spi1_device, |
762 | &rspi_device, | ||
743 | &usb_ehci_device, | 763 | &usb_ehci_device, |
744 | &usb_ohci_device, | 764 | &usb_ohci_device, |
745 | }; | 765 | }; |
diff --git a/arch/sh/kernel/cpu/sh5/clock-sh5.c b/arch/sh/kernel/cpu/sh5/clock-sh5.c index 9cfc19b8dbe4..c48b93d4c081 100644 --- a/arch/sh/kernel/cpu/sh5/clock-sh5.c +++ b/arch/sh/kernel/cpu/sh5/clock-sh5.c | |||
@@ -28,7 +28,7 @@ static void master_clk_init(struct clk *clk) | |||
28 | clk->rate *= ifc_table[idx]; | 28 | clk->rate *= ifc_table[idx]; |
29 | } | 29 | } |
30 | 30 | ||
31 | static struct clk_ops sh5_master_clk_ops = { | 31 | static struct sh_clk_ops sh5_master_clk_ops = { |
32 | .init = master_clk_init, | 32 | .init = master_clk_init, |
33 | }; | 33 | }; |
34 | 34 | ||
@@ -38,7 +38,7 @@ static unsigned long module_clk_recalc(struct clk *clk) | |||
38 | return clk->parent->rate / ifc_table[idx]; | 38 | return clk->parent->rate / ifc_table[idx]; |
39 | } | 39 | } |
40 | 40 | ||
41 | static struct clk_ops sh5_module_clk_ops = { | 41 | static struct sh_clk_ops sh5_module_clk_ops = { |
42 | .recalc = module_clk_recalc, | 42 | .recalc = module_clk_recalc, |
43 | }; | 43 | }; |
44 | 44 | ||
@@ -48,7 +48,7 @@ static unsigned long bus_clk_recalc(struct clk *clk) | |||
48 | return clk->parent->rate / ifc_table[idx]; | 48 | return clk->parent->rate / ifc_table[idx]; |
49 | } | 49 | } |
50 | 50 | ||
51 | static struct clk_ops sh5_bus_clk_ops = { | 51 | static struct sh_clk_ops sh5_bus_clk_ops = { |
52 | .recalc = bus_clk_recalc, | 52 | .recalc = bus_clk_recalc, |
53 | }; | 53 | }; |
54 | 54 | ||
@@ -58,18 +58,18 @@ static unsigned long cpu_clk_recalc(struct clk *clk) | |||
58 | return clk->parent->rate / ifc_table[idx]; | 58 | return clk->parent->rate / ifc_table[idx]; |
59 | } | 59 | } |
60 | 60 | ||
61 | static struct clk_ops sh5_cpu_clk_ops = { | 61 | static struct sh_clk_ops sh5_cpu_clk_ops = { |
62 | .recalc = cpu_clk_recalc, | 62 | .recalc = cpu_clk_recalc, |
63 | }; | 63 | }; |
64 | 64 | ||
65 | static struct clk_ops *sh5_clk_ops[] = { | 65 | static struct sh_clk_ops *sh5_clk_ops[] = { |
66 | &sh5_master_clk_ops, | 66 | &sh5_master_clk_ops, |
67 | &sh5_module_clk_ops, | 67 | &sh5_module_clk_ops, |
68 | &sh5_bus_clk_ops, | 68 | &sh5_bus_clk_ops, |
69 | &sh5_cpu_clk_ops, | 69 | &sh5_cpu_clk_ops, |
70 | }; | 70 | }; |
71 | 71 | ||
72 | void __init arch_init_clk_ops(struct clk_ops **ops, int idx) | 72 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
73 | { | 73 | { |
74 | cprc_base = (unsigned long)ioremap_nocache(CPRC_BASE, 1024); | 74 | cprc_base = (unsigned long)ioremap_nocache(CPRC_BASE, 1024); |
75 | BUG_ON(!cprc_base); | 75 | BUG_ON(!cprc_base); |
diff --git a/arch/sh/kernel/cpufreq.c b/arch/sh/kernel/cpufreq.c index 0fffacea6ed9..e68b45b6f3f9 100644 --- a/arch/sh/kernel/cpufreq.c +++ b/arch/sh/kernel/cpufreq.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * cpufreq driver for the SuperH processors. | 4 | * cpufreq driver for the SuperH processors. |
5 | * | 5 | * |
6 | * Copyright (C) 2002 - 2007 Paul Mundt | 6 | * Copyright (C) 2002 - 2012 Paul Mundt |
7 | * Copyright (C) 2002 M. R. Brown | 7 | * Copyright (C) 2002 M. R. Brown |
8 | * | 8 | * |
9 | * Clock framework bits from arch/avr32/mach-at32ap/cpufreq.c | 9 | * Clock framework bits from arch/avr32/mach-at32ap/cpufreq.c |
@@ -14,6 +14,8 @@ | |||
14 | * License. See the file "COPYING" in the main directory of this archive | 14 | * License. See the file "COPYING" in the main directory of this archive |
15 | * for more details. | 15 | * for more details. |
16 | */ | 16 | */ |
17 | #define pr_fmt(fmt) "cpufreq: " fmt | ||
18 | |||
17 | #include <linux/types.h> | 19 | #include <linux/types.h> |
18 | #include <linux/cpufreq.h> | 20 | #include <linux/cpufreq.h> |
19 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
@@ -21,15 +23,18 @@ | |||
21 | #include <linux/init.h> | 23 | #include <linux/init.h> |
22 | #include <linux/err.h> | 24 | #include <linux/err.h> |
23 | #include <linux/cpumask.h> | 25 | #include <linux/cpumask.h> |
26 | #include <linux/cpu.h> | ||
24 | #include <linux/smp.h> | 27 | #include <linux/smp.h> |
25 | #include <linux/sched.h> /* set_cpus_allowed() */ | 28 | #include <linux/sched.h> /* set_cpus_allowed() */ |
26 | #include <linux/clk.h> | 29 | #include <linux/clk.h> |
30 | #include <linux/percpu.h> | ||
31 | #include <linux/sh_clk.h> | ||
27 | 32 | ||
28 | static struct clk *cpuclk; | 33 | static DEFINE_PER_CPU(struct clk, sh_cpuclk); |
29 | 34 | ||
30 | static unsigned int sh_cpufreq_get(unsigned int cpu) | 35 | static unsigned int sh_cpufreq_get(unsigned int cpu) |
31 | { | 36 | { |
32 | return (clk_get_rate(cpuclk) + 500) / 1000; | 37 | return (clk_get_rate(&per_cpu(sh_cpuclk, cpu)) + 500) / 1000; |
33 | } | 38 | } |
34 | 39 | ||
35 | /* | 40 | /* |
@@ -40,8 +45,10 @@ static int sh_cpufreq_target(struct cpufreq_policy *policy, | |||
40 | unsigned int relation) | 45 | unsigned int relation) |
41 | { | 46 | { |
42 | unsigned int cpu = policy->cpu; | 47 | unsigned int cpu = policy->cpu; |
48 | struct clk *cpuclk = &per_cpu(sh_cpuclk, cpu); | ||
43 | cpumask_t cpus_allowed; | 49 | cpumask_t cpus_allowed; |
44 | struct cpufreq_freqs freqs; | 50 | struct cpufreq_freqs freqs; |
51 | struct device *dev; | ||
45 | long freq; | 52 | long freq; |
46 | 53 | ||
47 | if (!cpu_online(cpu)) | 54 | if (!cpu_online(cpu)) |
@@ -52,13 +59,15 @@ static int sh_cpufreq_target(struct cpufreq_policy *policy, | |||
52 | 59 | ||
53 | BUG_ON(smp_processor_id() != cpu); | 60 | BUG_ON(smp_processor_id() != cpu); |
54 | 61 | ||
62 | dev = get_cpu_device(cpu); | ||
63 | |||
55 | /* Convert target_freq from kHz to Hz */ | 64 | /* Convert target_freq from kHz to Hz */ |
56 | freq = clk_round_rate(cpuclk, target_freq * 1000); | 65 | freq = clk_round_rate(cpuclk, target_freq * 1000); |
57 | 66 | ||
58 | if (freq < (policy->min * 1000) || freq > (policy->max * 1000)) | 67 | if (freq < (policy->min * 1000) || freq > (policy->max * 1000)) |
59 | return -EINVAL; | 68 | return -EINVAL; |
60 | 69 | ||
61 | pr_debug("cpufreq: requested frequency %u Hz\n", target_freq * 1000); | 70 | dev_dbg(dev, "requested frequency %u Hz\n", target_freq * 1000); |
62 | 71 | ||
63 | freqs.cpu = cpu; | 72 | freqs.cpu = cpu; |
64 | freqs.old = sh_cpufreq_get(cpu); | 73 | freqs.old = sh_cpufreq_get(cpu); |
@@ -70,78 +79,112 @@ static int sh_cpufreq_target(struct cpufreq_policy *policy, | |||
70 | clk_set_rate(cpuclk, freq); | 79 | clk_set_rate(cpuclk, freq); |
71 | cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); | 80 | cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); |
72 | 81 | ||
73 | pr_debug("cpufreq: set frequency %lu Hz\n", freq); | 82 | dev_dbg(dev, "set frequency %lu Hz\n", freq); |
83 | |||
84 | return 0; | ||
85 | } | ||
86 | |||
87 | static int sh_cpufreq_verify(struct cpufreq_policy *policy) | ||
88 | { | ||
89 | struct clk *cpuclk = &per_cpu(sh_cpuclk, policy->cpu); | ||
90 | struct cpufreq_frequency_table *freq_table; | ||
91 | |||
92 | freq_table = cpuclk->nr_freqs ? cpuclk->freq_table : NULL; | ||
93 | if (freq_table) | ||
94 | return cpufreq_frequency_table_verify(policy, freq_table); | ||
95 | |||
96 | cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, | ||
97 | policy->cpuinfo.max_freq); | ||
98 | |||
99 | policy->min = (clk_round_rate(cpuclk, 1) + 500) / 1000; | ||
100 | policy->max = (clk_round_rate(cpuclk, ~0UL) + 500) / 1000; | ||
101 | |||
102 | cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, | ||
103 | policy->cpuinfo.max_freq); | ||
74 | 104 | ||
75 | return 0; | 105 | return 0; |
76 | } | 106 | } |
77 | 107 | ||
78 | static int sh_cpufreq_cpu_init(struct cpufreq_policy *policy) | 108 | static int sh_cpufreq_cpu_init(struct cpufreq_policy *policy) |
79 | { | 109 | { |
80 | if (!cpu_online(policy->cpu)) | 110 | unsigned int cpu = policy->cpu; |
111 | struct clk *cpuclk = &per_cpu(sh_cpuclk, cpu); | ||
112 | struct cpufreq_frequency_table *freq_table; | ||
113 | struct device *dev; | ||
114 | |||
115 | if (!cpu_online(cpu)) | ||
81 | return -ENODEV; | 116 | return -ENODEV; |
82 | 117 | ||
83 | cpuclk = clk_get(NULL, "cpu_clk"); | 118 | dev = get_cpu_device(cpu); |
119 | |||
120 | cpuclk = clk_get(dev, "cpu_clk"); | ||
84 | if (IS_ERR(cpuclk)) { | 121 | if (IS_ERR(cpuclk)) { |
85 | printk(KERN_ERR "cpufreq: couldn't get CPU#%d clk\n", | 122 | dev_err(dev, "couldn't get CPU clk\n"); |
86 | policy->cpu); | ||
87 | return PTR_ERR(cpuclk); | 123 | return PTR_ERR(cpuclk); |
88 | } | 124 | } |
89 | 125 | ||
90 | /* cpuinfo and default policy values */ | 126 | policy->cur = policy->min = policy->max = sh_cpufreq_get(cpu); |
91 | policy->cpuinfo.min_freq = (clk_round_rate(cpuclk, 1) + 500) / 1000; | ||
92 | policy->cpuinfo.max_freq = (clk_round_rate(cpuclk, ~0UL) + 500) / 1000; | ||
93 | policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL; | ||
94 | 127 | ||
95 | policy->cur = sh_cpufreq_get(policy->cpu); | 128 | freq_table = cpuclk->nr_freqs ? cpuclk->freq_table : NULL; |
96 | policy->min = policy->cpuinfo.min_freq; | 129 | if (freq_table) { |
97 | policy->max = policy->cpuinfo.max_freq; | 130 | int result; |
98 | 131 | ||
99 | /* | 132 | result = cpufreq_frequency_table_cpuinfo(policy, freq_table); |
100 | * Catch the cases where the clock framework hasn't been wired up | 133 | if (!result) |
101 | * properly to support scaling. | 134 | cpufreq_frequency_table_get_attr(freq_table, cpu); |
102 | */ | 135 | } else { |
103 | if (unlikely(policy->min == policy->max)) { | 136 | dev_notice(dev, "no frequency table found, falling back " |
104 | printk(KERN_ERR "cpufreq: clock framework rate rounding " | 137 | "to rate rounding.\n"); |
105 | "not supported on CPU#%d.\n", policy->cpu); | ||
106 | 138 | ||
107 | clk_put(cpuclk); | 139 | policy->cpuinfo.min_freq = |
108 | return -EINVAL; | 140 | (clk_round_rate(cpuclk, 1) + 500) / 1000; |
141 | policy->cpuinfo.max_freq = | ||
142 | (clk_round_rate(cpuclk, ~0UL) + 500) / 1000; | ||
109 | } | 143 | } |
110 | 144 | ||
111 | printk(KERN_INFO "cpufreq: CPU#%d Frequencies - Minimum %u.%03u MHz, " | 145 | policy->min = policy->cpuinfo.min_freq; |
146 | policy->max = policy->cpuinfo.max_freq; | ||
147 | |||
148 | policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL; | ||
149 | |||
150 | dev_info(dev, "CPU Frequencies - Minimum %u.%03u MHz, " | ||
112 | "Maximum %u.%03u MHz.\n", | 151 | "Maximum %u.%03u MHz.\n", |
113 | policy->cpu, policy->min / 1000, policy->min % 1000, | 152 | policy->min / 1000, policy->min % 1000, |
114 | policy->max / 1000, policy->max % 1000); | 153 | policy->max / 1000, policy->max % 1000); |
115 | 154 | ||
116 | return 0; | 155 | return 0; |
117 | } | 156 | } |
118 | 157 | ||
119 | static int sh_cpufreq_verify(struct cpufreq_policy *policy) | 158 | static int sh_cpufreq_cpu_exit(struct cpufreq_policy *policy) |
120 | { | 159 | { |
121 | cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, | 160 | unsigned int cpu = policy->cpu; |
122 | policy->cpuinfo.max_freq); | 161 | struct clk *cpuclk = &per_cpu(sh_cpuclk, cpu); |
123 | return 0; | ||
124 | } | ||
125 | 162 | ||
126 | static int sh_cpufreq_exit(struct cpufreq_policy *policy) | 163 | cpufreq_frequency_table_put_attr(cpu); |
127 | { | ||
128 | clk_put(cpuclk); | 164 | clk_put(cpuclk); |
165 | |||
129 | return 0; | 166 | return 0; |
130 | } | 167 | } |
131 | 168 | ||
169 | static struct freq_attr *sh_freq_attr[] = { | ||
170 | &cpufreq_freq_attr_scaling_available_freqs, | ||
171 | NULL, | ||
172 | }; | ||
173 | |||
132 | static struct cpufreq_driver sh_cpufreq_driver = { | 174 | static struct cpufreq_driver sh_cpufreq_driver = { |
133 | .owner = THIS_MODULE, | 175 | .owner = THIS_MODULE, |
134 | .name = "sh", | 176 | .name = "sh", |
135 | .init = sh_cpufreq_cpu_init, | ||
136 | .verify = sh_cpufreq_verify, | ||
137 | .target = sh_cpufreq_target, | ||
138 | .get = sh_cpufreq_get, | 177 | .get = sh_cpufreq_get, |
139 | .exit = sh_cpufreq_exit, | 178 | .target = sh_cpufreq_target, |
179 | .verify = sh_cpufreq_verify, | ||
180 | .init = sh_cpufreq_cpu_init, | ||
181 | .exit = sh_cpufreq_cpu_exit, | ||
182 | .attr = sh_freq_attr, | ||
140 | }; | 183 | }; |
141 | 184 | ||
142 | static int __init sh_cpufreq_module_init(void) | 185 | static int __init sh_cpufreq_module_init(void) |
143 | { | 186 | { |
144 | printk(KERN_INFO "cpufreq: SuperH CPU frequency driver.\n"); | 187 | pr_notice("SuperH CPU frequency driver.\n"); |
145 | return cpufreq_register_driver(&sh_cpufreq_driver); | 188 | return cpufreq_register_driver(&sh_cpufreq_driver); |
146 | } | 189 | } |
147 | 190 | ||
diff --git a/arch/sh/kernel/hw_breakpoint.c b/arch/sh/kernel/hw_breakpoint.c index efae6ab3d54c..f9173766ec4b 100644 --- a/arch/sh/kernel/hw_breakpoint.c +++ b/arch/sh/kernel/hw_breakpoint.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <asm/hw_breakpoint.h> | 22 | #include <asm/hw_breakpoint.h> |
23 | #include <asm/mmu_context.h> | 23 | #include <asm/mmu_context.h> |
24 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
25 | #include <asm/traps.h> | ||
25 | 26 | ||
26 | /* | 27 | /* |
27 | * Stores the breakpoints currently in use on each breakpoint address | 28 | * Stores the breakpoints currently in use on each breakpoint address |
diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c index 406508d4ce74..64852ecc6881 100644 --- a/arch/sh/kernel/idle.c +++ b/arch/sh/kernel/idle.c | |||
@@ -18,9 +18,9 @@ | |||
18 | #include <linux/smp.h> | 18 | #include <linux/smp.h> |
19 | #include <linux/cpuidle.h> | 19 | #include <linux/cpuidle.h> |
20 | #include <asm/pgalloc.h> | 20 | #include <asm/pgalloc.h> |
21 | #include <asm/system.h> | ||
22 | #include <linux/atomic.h> | 21 | #include <linux/atomic.h> |
23 | #include <asm/smp.h> | 22 | #include <asm/smp.h> |
23 | #include <asm/bl_bit.h> | ||
24 | 24 | ||
25 | void (*pm_idle)(void); | 25 | void (*pm_idle)(void); |
26 | 26 | ||
@@ -114,9 +114,7 @@ void cpu_idle(void) | |||
114 | 114 | ||
115 | rcu_idle_exit(); | 115 | rcu_idle_exit(); |
116 | tick_nohz_idle_exit(); | 116 | tick_nohz_idle_exit(); |
117 | preempt_enable_no_resched(); | 117 | schedule_preempt_disabled(); |
118 | schedule(); | ||
119 | preempt_disable(); | ||
120 | } | 118 | } |
121 | } | 119 | } |
122 | 120 | ||
diff --git a/arch/sh/kernel/io_trapped.c b/arch/sh/kernel/io_trapped.c index 0f62f4672754..c0a9761f2f8a 100644 --- a/arch/sh/kernel/io_trapped.c +++ b/arch/sh/kernel/io_trapped.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/vmalloc.h> | 15 | #include <linux/vmalloc.h> |
16 | #include <linux/module.h> | 16 | #include <linux/module.h> |
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/mmu_context.h> | 18 | #include <asm/mmu_context.h> |
20 | #include <asm/uaccess.h> | 19 | #include <asm/uaccess.h> |
21 | #include <asm/io.h> | 20 | #include <asm/io.h> |
diff --git a/arch/sh/kernel/perf_event.c b/arch/sh/kernel/perf_event.c index 10b14e3a7eb8..068b8a2759b5 100644 --- a/arch/sh/kernel/perf_event.c +++ b/arch/sh/kernel/perf_event.c | |||
@@ -310,6 +310,10 @@ static int sh_pmu_event_init(struct perf_event *event) | |||
310 | { | 310 | { |
311 | int err; | 311 | int err; |
312 | 312 | ||
313 | /* does not support taken branch sampling */ | ||
314 | if (has_branch_stack(event)) | ||
315 | return -EOPNOTSUPP; | ||
316 | |||
313 | switch (event->attr.type) { | 317 | switch (event->attr.type) { |
314 | case PERF_TYPE_RAW: | 318 | case PERF_TYPE_RAW: |
315 | case PERF_TYPE_HW_CACHE: | 319 | case PERF_TYPE_HW_CACHE: |
diff --git a/arch/sh/kernel/process_32.c b/arch/sh/kernel/process_32.c index 7ec665178125..f72e3a951588 100644 --- a/arch/sh/kernel/process_32.c +++ b/arch/sh/kernel/process_32.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/prefetch.h> | 24 | #include <linux/prefetch.h> |
25 | #include <asm/uaccess.h> | 25 | #include <asm/uaccess.h> |
26 | #include <asm/mmu_context.h> | 26 | #include <asm/mmu_context.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/fpu.h> | 27 | #include <asm/fpu.h> |
29 | #include <asm/syscalls.h> | 28 | #include <asm/syscalls.h> |
30 | 29 | ||
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c index cbd4e4bb9fc5..4264583eabac 100644 --- a/arch/sh/kernel/process_64.c +++ b/arch/sh/kernel/process_64.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
31 | #include <asm/mmu_context.h> | 31 | #include <asm/mmu_context.h> |
32 | #include <asm/fpu.h> | 32 | #include <asm/fpu.h> |
33 | #include <asm/switch_to.h> | ||
33 | 34 | ||
34 | struct task_struct *last_task_used_math = NULL; | 35 | struct task_struct *last_task_used_math = NULL; |
35 | 36 | ||
diff --git a/arch/sh/kernel/ptrace_32.c b/arch/sh/kernel/ptrace_32.c index a3e651563763..9698671444e6 100644 --- a/arch/sh/kernel/ptrace_32.c +++ b/arch/sh/kernel/ptrace_32.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/hw_breakpoint.h> | 28 | #include <linux/hw_breakpoint.h> |
29 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
30 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
33 | #include <asm/mmu_context.h> | 32 | #include <asm/mmu_context.h> |
34 | #include <asm/syscalls.h> | 33 | #include <asm/syscalls.h> |
diff --git a/arch/sh/kernel/ptrace_64.c b/arch/sh/kernel/ptrace_64.c index 3d0080b5c976..bc81e07dc098 100644 --- a/arch/sh/kernel/ptrace_64.c +++ b/arch/sh/kernel/ptrace_64.c | |||
@@ -34,11 +34,11 @@ | |||
34 | #include <asm/io.h> | 34 | #include <asm/io.h> |
35 | #include <asm/uaccess.h> | 35 | #include <asm/uaccess.h> |
36 | #include <asm/pgtable.h> | 36 | #include <asm/pgtable.h> |
37 | #include <asm/system.h> | ||
38 | #include <asm/processor.h> | 37 | #include <asm/processor.h> |
39 | #include <asm/mmu_context.h> | 38 | #include <asm/mmu_context.h> |
40 | #include <asm/syscalls.h> | 39 | #include <asm/syscalls.h> |
41 | #include <asm/fpu.h> | 40 | #include <asm/fpu.h> |
41 | #include <asm/traps.h> | ||
42 | 42 | ||
43 | #define CREATE_TRACE_POINTS | 43 | #define CREATE_TRACE_POINTS |
44 | #include <trace/events/syscalls.h> | 44 | #include <trace/events/syscalls.h> |
diff --git a/arch/sh/kernel/reboot.c b/arch/sh/kernel/reboot.c index ca6a5ca64015..04afe5b20663 100644 --- a/arch/sh/kernel/reboot.c +++ b/arch/sh/kernel/reboot.c | |||
@@ -8,8 +8,8 @@ | |||
8 | #endif | 8 | #endif |
9 | #include <asm/addrspace.h> | 9 | #include <asm/addrspace.h> |
10 | #include <asm/reboot.h> | 10 | #include <asm/reboot.h> |
11 | #include <asm/system.h> | ||
12 | #include <asm/tlbflush.h> | 11 | #include <asm/tlbflush.h> |
12 | #include <asm/traps.h> | ||
13 | 13 | ||
14 | void (*pm_power_off)(void); | 14 | void (*pm_power_off)(void); |
15 | EXPORT_SYMBOL(pm_power_off); | 15 | EXPORT_SYMBOL(pm_power_off); |
diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c index a7a55ed43a59..5901fba3176e 100644 --- a/arch/sh/kernel/signal_32.c +++ b/arch/sh/kernel/signal_32.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/freezer.h> | 25 | #include <linux/freezer.h> |
26 | #include <linux/io.h> | 26 | #include <linux/io.h> |
27 | #include <linux/tracehook.h> | 27 | #include <linux/tracehook.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/ucontext.h> | 28 | #include <asm/ucontext.h> |
30 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
31 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
@@ -58,12 +57,13 @@ sys_sigsuspend(old_sigset_t mask, | |||
58 | unsigned long r5, unsigned long r6, unsigned long r7, | 57 | unsigned long r5, unsigned long r6, unsigned long r7, |
59 | struct pt_regs __regs) | 58 | struct pt_regs __regs) |
60 | { | 59 | { |
61 | mask &= _BLOCKABLE; | 60 | sigset_t blocked; |
62 | spin_lock_irq(¤t->sighand->siglock); | 61 | |
63 | current->saved_sigmask = current->blocked; | 62 | current->saved_sigmask = current->blocked; |
64 | siginitset(¤t->blocked, mask); | 63 | |
65 | recalc_sigpending(); | 64 | mask &= _BLOCKABLE; |
66 | spin_unlock_irq(¤t->sighand->siglock); | 65 | siginitset(&blocked, mask); |
66 | set_current_blocked(&blocked); | ||
67 | 67 | ||
68 | current->state = TASK_INTERRUPTIBLE; | 68 | current->state = TASK_INTERRUPTIBLE; |
69 | schedule(); | 69 | schedule(); |
@@ -240,11 +240,7 @@ asmlinkage int sys_sigreturn(unsigned long r4, unsigned long r5, | |||
240 | goto badframe; | 240 | goto badframe; |
241 | 241 | ||
242 | sigdelsetmask(&set, ~_BLOCKABLE); | 242 | sigdelsetmask(&set, ~_BLOCKABLE); |
243 | 243 | set_current_blocked(&set); | |
244 | spin_lock_irq(¤t->sighand->siglock); | ||
245 | current->blocked = set; | ||
246 | recalc_sigpending(); | ||
247 | spin_unlock_irq(¤t->sighand->siglock); | ||
248 | 244 | ||
249 | if (restore_sigcontext(regs, &frame->sc, &r0)) | 245 | if (restore_sigcontext(regs, &frame->sc, &r0)) |
250 | goto badframe; | 246 | goto badframe; |
@@ -274,10 +270,7 @@ asmlinkage int sys_rt_sigreturn(unsigned long r4, unsigned long r5, | |||
274 | goto badframe; | 270 | goto badframe; |
275 | 271 | ||
276 | sigdelsetmask(&set, ~_BLOCKABLE); | 272 | sigdelsetmask(&set, ~_BLOCKABLE); |
277 | spin_lock_irq(¤t->sighand->siglock); | 273 | set_current_blocked(&set); |
278 | current->blocked = set; | ||
279 | recalc_sigpending(); | ||
280 | spin_unlock_irq(¤t->sighand->siglock); | ||
281 | 274 | ||
282 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &r0)) | 275 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &r0)) |
283 | goto badframe; | 276 | goto badframe; |
@@ -548,17 +541,8 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info, | |||
548 | else | 541 | else |
549 | ret = setup_frame(sig, ka, oldset, regs); | 542 | ret = setup_frame(sig, ka, oldset, regs); |
550 | 543 | ||
551 | if (ka->sa.sa_flags & SA_ONESHOT) | 544 | if (ret == 0) |
552 | ka->sa.sa_handler = SIG_DFL; | 545 | block_sigmask(ka, sig); |
553 | |||
554 | if (ret == 0) { | ||
555 | spin_lock_irq(¤t->sighand->siglock); | ||
556 | sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask); | ||
557 | if (!(ka->sa.sa_flags & SA_NODEFER)) | ||
558 | sigaddset(¤t->blocked,sig); | ||
559 | recalc_sigpending(); | ||
560 | spin_unlock_irq(¤t->sighand->siglock); | ||
561 | } | ||
562 | 546 | ||
563 | return ret; | 547 | return ret; |
564 | } | 548 | } |
diff --git a/arch/sh/kernel/signal_64.c b/arch/sh/kernel/signal_64.c index 6b5603fe274b..3c9a6f7dcdce 100644 --- a/arch/sh/kernel/signal_64.c +++ b/arch/sh/kernel/signal_64.c | |||
@@ -159,14 +159,13 @@ sys_sigsuspend(old_sigset_t mask, | |||
159 | unsigned long r6, unsigned long r7, | 159 | unsigned long r6, unsigned long r7, |
160 | struct pt_regs * regs) | 160 | struct pt_regs * regs) |
161 | { | 161 | { |
162 | sigset_t saveset; | 162 | sigset_t saveset, blocked; |
163 | 163 | ||
164 | mask &= _BLOCKABLE; | ||
165 | spin_lock_irq(¤t->sighand->siglock); | ||
166 | saveset = current->blocked; | 164 | saveset = current->blocked; |
167 | siginitset(¤t->blocked, mask); | 165 | |
168 | recalc_sigpending(); | 166 | mask &= _BLOCKABLE; |
169 | spin_unlock_irq(¤t->sighand->siglock); | 167 | siginitset(&blocked, mask); |
168 | set_current_blocked(&blocked); | ||
170 | 169 | ||
171 | REF_REG_RET = -EINTR; | 170 | REF_REG_RET = -EINTR; |
172 | while (1) { | 171 | while (1) { |
@@ -198,11 +197,8 @@ sys_rt_sigsuspend(sigset_t *unewset, size_t sigsetsize, | |||
198 | if (copy_from_user(&newset, unewset, sizeof(newset))) | 197 | if (copy_from_user(&newset, unewset, sizeof(newset))) |
199 | return -EFAULT; | 198 | return -EFAULT; |
200 | sigdelsetmask(&newset, ~_BLOCKABLE); | 199 | sigdelsetmask(&newset, ~_BLOCKABLE); |
201 | spin_lock_irq(¤t->sighand->siglock); | ||
202 | saveset = current->blocked; | 200 | saveset = current->blocked; |
203 | current->blocked = newset; | 201 | set_current_blocked(&newset); |
204 | recalc_sigpending(); | ||
205 | spin_unlock_irq(¤t->sighand->siglock); | ||
206 | 202 | ||
207 | REF_REG_RET = -EINTR; | 203 | REF_REG_RET = -EINTR; |
208 | while (1) { | 204 | while (1) { |
@@ -408,11 +404,7 @@ asmlinkage int sys_sigreturn(unsigned long r2, unsigned long r3, | |||
408 | goto badframe; | 404 | goto badframe; |
409 | 405 | ||
410 | sigdelsetmask(&set, ~_BLOCKABLE); | 406 | sigdelsetmask(&set, ~_BLOCKABLE); |
411 | 407 | set_current_blocked(&set); | |
412 | spin_lock_irq(¤t->sighand->siglock); | ||
413 | current->blocked = set; | ||
414 | recalc_sigpending(); | ||
415 | spin_unlock_irq(¤t->sighand->siglock); | ||
416 | 408 | ||
417 | if (restore_sigcontext(regs, &frame->sc, &ret)) | 409 | if (restore_sigcontext(regs, &frame->sc, &ret)) |
418 | goto badframe; | 410 | goto badframe; |
@@ -445,10 +437,7 @@ asmlinkage int sys_rt_sigreturn(unsigned long r2, unsigned long r3, | |||
445 | goto badframe; | 437 | goto badframe; |
446 | 438 | ||
447 | sigdelsetmask(&set, ~_BLOCKABLE); | 439 | sigdelsetmask(&set, ~_BLOCKABLE); |
448 | spin_lock_irq(¤t->sighand->siglock); | 440 | set_current_blocked(&set); |
449 | current->blocked = set; | ||
450 | recalc_sigpending(); | ||
451 | spin_unlock_irq(¤t->sighand->siglock); | ||
452 | 441 | ||
453 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &ret)) | 442 | if (restore_sigcontext(regs, &frame->uc.uc_mcontext, &ret)) |
454 | goto badframe; | 443 | goto badframe; |
@@ -734,17 +723,8 @@ handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka, | |||
734 | else | 723 | else |
735 | ret = setup_frame(sig, ka, oldset, regs); | 724 | ret = setup_frame(sig, ka, oldset, regs); |
736 | 725 | ||
737 | if (ka->sa.sa_flags & SA_ONESHOT) | 726 | if (ret == 0) |
738 | ka->sa.sa_handler = SIG_DFL; | 727 | block_sigmask(ka, sig); |
739 | |||
740 | if (ret == 0) { | ||
741 | spin_lock_irq(¤t->sighand->siglock); | ||
742 | sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask); | ||
743 | if (!(ka->sa.sa_flags & SA_NODEFER)) | ||
744 | sigaddset(¤t->blocked,sig); | ||
745 | recalc_sigpending(); | ||
746 | spin_unlock_irq(¤t->sighand->siglock); | ||
747 | } | ||
748 | 728 | ||
749 | return ret; | 729 | return ret; |
750 | } | 730 | } |
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index f624174bf239..a17a14d32340 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/sched.h> | 23 | #include <linux/sched.h> |
24 | #include <linux/atomic.h> | 24 | #include <linux/atomic.h> |
25 | #include <asm/processor.h> | 25 | #include <asm/processor.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/mmu_context.h> | 26 | #include <asm/mmu_context.h> |
28 | #include <asm/smp.h> | 27 | #include <asm/smp.h> |
29 | #include <asm/cacheflush.h> | 28 | #include <asm/cacheflush.h> |
diff --git a/arch/sh/kernel/syscalls_32.S b/arch/sh/kernel/syscalls_32.S index ee56a9b1a981..4b68f0f79761 100644 --- a/arch/sh/kernel/syscalls_32.S +++ b/arch/sh/kernel/syscalls_32.S | |||
@@ -204,8 +204,8 @@ ENTRY(sys_call_table) | |||
204 | .long sys_capset /* 185 */ | 204 | .long sys_capset /* 185 */ |
205 | .long sys_sigaltstack | 205 | .long sys_sigaltstack |
206 | .long sys_sendfile | 206 | .long sys_sendfile |
207 | .long sys_ni_syscall /* streams1 */ | 207 | .long sys_ni_syscall /* getpmsg */ |
208 | .long sys_ni_syscall /* streams2 */ | 208 | .long sys_ni_syscall /* putpmsg */ |
209 | .long sys_vfork /* 190 */ | 209 | .long sys_vfork /* 190 */ |
210 | .long sys_getrlimit | 210 | .long sys_getrlimit |
211 | .long sys_mmap2 | 211 | .long sys_mmap2 |
@@ -259,8 +259,8 @@ ENTRY(sys_call_table) | |||
259 | .long sys_futex /* 240 */ | 259 | .long sys_futex /* 240 */ |
260 | .long sys_sched_setaffinity | 260 | .long sys_sched_setaffinity |
261 | .long sys_sched_getaffinity | 261 | .long sys_sched_getaffinity |
262 | .long sys_ni_syscall | 262 | .long sys_ni_syscall /* reserved for set_thread_area */ |
263 | .long sys_ni_syscall | 263 | .long sys_ni_syscall /* reserved for get_thread_area */ |
264 | .long sys_io_setup /* 245 */ | 264 | .long sys_io_setup /* 245 */ |
265 | .long sys_io_destroy | 265 | .long sys_io_destroy |
266 | .long sys_io_getevents | 266 | .long sys_io_getevents |
diff --git a/arch/sh/kernel/syscalls_64.S b/arch/sh/kernel/syscalls_64.S index 9af7de26fb71..0956345b36ef 100644 --- a/arch/sh/kernel/syscalls_64.S +++ b/arch/sh/kernel/syscalls_64.S | |||
@@ -208,8 +208,8 @@ sys_call_table: | |||
208 | .long sys_capset /* 185 */ | 208 | .long sys_capset /* 185 */ |
209 | .long sys_sigaltstack | 209 | .long sys_sigaltstack |
210 | .long sys_sendfile | 210 | .long sys_sendfile |
211 | .long sys_ni_syscall /* streams1 */ | 211 | .long sys_ni_syscall /* getpmsg */ |
212 | .long sys_ni_syscall /* streams2 */ | 212 | .long sys_ni_syscall /* putpmsg */ |
213 | .long sys_vfork /* 190 */ | 213 | .long sys_vfork /* 190 */ |
214 | .long sys_getrlimit | 214 | .long sys_getrlimit |
215 | .long sys_mmap2 | 215 | .long sys_mmap2 |
@@ -296,8 +296,8 @@ sys_call_table: | |||
296 | .long sys_futex | 296 | .long sys_futex |
297 | .long sys_sched_setaffinity | 297 | .long sys_sched_setaffinity |
298 | .long sys_sched_getaffinity /* 270 */ | 298 | .long sys_sched_getaffinity /* 270 */ |
299 | .long sys_ni_syscall | 299 | .long sys_ni_syscall /* reserved for set_thread_area */ |
300 | .long sys_ni_syscall | 300 | .long sys_ni_syscall /* reserved for get_thread_area */ |
301 | .long sys_io_setup | 301 | .long sys_io_setup |
302 | .long sys_io_destroy | 302 | .long sys_io_destroy |
303 | .long sys_io_getevents /* 275 */ | 303 | .long sys_io_getevents /* 275 */ |
diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c index 0830c2a9f712..a87e58a9e38f 100644 --- a/arch/sh/kernel/traps.c +++ b/arch/sh/kernel/traps.c | |||
@@ -7,7 +7,7 @@ | |||
7 | #include <linux/uaccess.h> | 7 | #include <linux/uaccess.h> |
8 | #include <linux/hardirq.h> | 8 | #include <linux/hardirq.h> |
9 | #include <asm/unwinder.h> | 9 | #include <asm/unwinder.h> |
10 | #include <asm/system.h> | 10 | #include <asm/traps.h> |
11 | 11 | ||
12 | #ifdef CONFIG_GENERIC_BUG | 12 | #ifdef CONFIG_GENERIC_BUG |
13 | static void handle_BUG(struct pt_regs *regs) | 13 | static void handle_BUG(struct pt_regs *regs) |
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c index 7bbef95c9d1b..a37175deb73f 100644 --- a/arch/sh/kernel/traps_32.c +++ b/arch/sh/kernel/traps_32.c | |||
@@ -27,10 +27,11 @@ | |||
27 | #include <linux/sysfs.h> | 27 | #include <linux/sysfs.h> |
28 | #include <linux/uaccess.h> | 28 | #include <linux/uaccess.h> |
29 | #include <linux/perf_event.h> | 29 | #include <linux/perf_event.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/alignment.h> | 30 | #include <asm/alignment.h> |
32 | #include <asm/fpu.h> | 31 | #include <asm/fpu.h> |
33 | #include <asm/kprobes.h> | 32 | #include <asm/kprobes.h> |
33 | #include <asm/traps.h> | ||
34 | #include <asm/bl_bit.h> | ||
34 | 35 | ||
35 | #ifdef CONFIG_CPU_SH2 | 36 | #ifdef CONFIG_CPU_SH2 |
36 | # define TRAP_RESERVED_INST 4 | 37 | # define TRAP_RESERVED_INST 4 |
diff --git a/arch/sh/kernel/traps_64.c b/arch/sh/kernel/traps_64.c index cd3a40483299..6c0486094e48 100644 --- a/arch/sh/kernel/traps_64.c +++ b/arch/sh/kernel/traps_64.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/sysctl.h> | 25 | #include <linux/sysctl.h> |
26 | #include <linux/module.h> | 26 | #include <linux/module.h> |
27 | #include <linux/perf_event.h> | 27 | #include <linux/perf_event.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
30 | #include <asm/io.h> | 29 | #include <asm/io.h> |
31 | #include <linux/atomic.h> | 30 | #include <linux/atomic.h> |
diff --git a/arch/sh/kernel/vsyscall/vsyscall.c b/arch/sh/kernel/vsyscall/vsyscall.c index 1d6d51a1ce79..5ca579720a09 100644 --- a/arch/sh/kernel/vsyscall/vsyscall.c +++ b/arch/sh/kernel/vsyscall/vsyscall.c | |||
@@ -73,8 +73,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | |||
73 | 73 | ||
74 | ret = install_special_mapping(mm, addr, PAGE_SIZE, | 74 | ret = install_special_mapping(mm, addr, PAGE_SIZE, |
75 | VM_READ | VM_EXEC | | 75 | VM_READ | VM_EXEC | |
76 | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC | | 76 | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC, |
77 | VM_ALWAYSDUMP, | ||
78 | syscall_pages); | 77 | syscall_pages); |
79 | if (unlikely(ret)) | 78 | if (unlikely(ret)) |
80 | goto up_fail; | 79 | goto up_fail; |
diff --git a/arch/sh/math-emu/math.c b/arch/sh/math-emu/math.c index 977195210653..b876780c1e1c 100644 --- a/arch/sh/math-emu/math.c +++ b/arch/sh/math-emu/math.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/signal.h> | 14 | #include <linux/signal.h> |
15 | #include <linux/perf_event.h> | 15 | #include <linux/perf_event.h> |
16 | 16 | ||
17 | #include <asm/system.h> | ||
18 | #include <asm/uaccess.h> | 17 | #include <asm/uaccess.h> |
19 | #include <asm/processor.h> | 18 | #include <asm/processor.h> |
20 | #include <asm/io.h> | 19 | #include <asm/io.h> |
diff --git a/arch/sh/mm/cache-sh4.c b/arch/sh/mm/cache-sh4.c index 92eb98633ab0..112fea12522a 100644 --- a/arch/sh/mm/cache-sh4.c +++ b/arch/sh/mm/cache-sh4.c | |||
@@ -244,7 +244,7 @@ static void sh4_flush_cache_page(void *args) | |||
244 | if (map_coherent) | 244 | if (map_coherent) |
245 | vaddr = kmap_coherent(page, address); | 245 | vaddr = kmap_coherent(page, address); |
246 | else | 246 | else |
247 | vaddr = kmap_atomic(page, KM_USER0); | 247 | vaddr = kmap_atomic(page); |
248 | 248 | ||
249 | address = (unsigned long)vaddr; | 249 | address = (unsigned long)vaddr; |
250 | } | 250 | } |
@@ -259,7 +259,7 @@ static void sh4_flush_cache_page(void *args) | |||
259 | if (map_coherent) | 259 | if (map_coherent) |
260 | kunmap_coherent(vaddr); | 260 | kunmap_coherent(vaddr); |
261 | else | 261 | else |
262 | kunmap_atomic(vaddr, KM_USER0); | 262 | kunmap_atomic(vaddr); |
263 | } | 263 | } |
264 | } | 264 | } |
265 | 265 | ||
diff --git a/arch/sh/mm/cache.c b/arch/sh/mm/cache.c index 5a580ea04429..616966a96cba 100644 --- a/arch/sh/mm/cache.c +++ b/arch/sh/mm/cache.c | |||
@@ -95,7 +95,7 @@ void copy_user_highpage(struct page *to, struct page *from, | |||
95 | { | 95 | { |
96 | void *vfrom, *vto; | 96 | void *vfrom, *vto; |
97 | 97 | ||
98 | vto = kmap_atomic(to, KM_USER1); | 98 | vto = kmap_atomic(to); |
99 | 99 | ||
100 | if (boot_cpu_data.dcache.n_aliases && page_mapped(from) && | 100 | if (boot_cpu_data.dcache.n_aliases && page_mapped(from) && |
101 | test_bit(PG_dcache_clean, &from->flags)) { | 101 | test_bit(PG_dcache_clean, &from->flags)) { |
@@ -103,16 +103,16 @@ void copy_user_highpage(struct page *to, struct page *from, | |||
103 | copy_page(vto, vfrom); | 103 | copy_page(vto, vfrom); |
104 | kunmap_coherent(vfrom); | 104 | kunmap_coherent(vfrom); |
105 | } else { | 105 | } else { |
106 | vfrom = kmap_atomic(from, KM_USER0); | 106 | vfrom = kmap_atomic(from); |
107 | copy_page(vto, vfrom); | 107 | copy_page(vto, vfrom); |
108 | kunmap_atomic(vfrom, KM_USER0); | 108 | kunmap_atomic(vfrom); |
109 | } | 109 | } |
110 | 110 | ||
111 | if (pages_do_alias((unsigned long)vto, vaddr & PAGE_MASK) || | 111 | if (pages_do_alias((unsigned long)vto, vaddr & PAGE_MASK) || |
112 | (vma->vm_flags & VM_EXEC)) | 112 | (vma->vm_flags & VM_EXEC)) |
113 | __flush_purge_region(vto, PAGE_SIZE); | 113 | __flush_purge_region(vto, PAGE_SIZE); |
114 | 114 | ||
115 | kunmap_atomic(vto, KM_USER1); | 115 | kunmap_atomic(vto); |
116 | /* Make sure this page is cleared on other CPU's too before using it */ | 116 | /* Make sure this page is cleared on other CPU's too before using it */ |
117 | smp_wmb(); | 117 | smp_wmb(); |
118 | } | 118 | } |
@@ -120,14 +120,14 @@ EXPORT_SYMBOL(copy_user_highpage); | |||
120 | 120 | ||
121 | void clear_user_highpage(struct page *page, unsigned long vaddr) | 121 | void clear_user_highpage(struct page *page, unsigned long vaddr) |
122 | { | 122 | { |
123 | void *kaddr = kmap_atomic(page, KM_USER0); | 123 | void *kaddr = kmap_atomic(page); |
124 | 124 | ||
125 | clear_page(kaddr); | 125 | clear_page(kaddr); |
126 | 126 | ||
127 | if (pages_do_alias((unsigned long)kaddr, vaddr & PAGE_MASK)) | 127 | if (pages_do_alias((unsigned long)kaddr, vaddr & PAGE_MASK)) |
128 | __flush_purge_region(kaddr, PAGE_SIZE); | 128 | __flush_purge_region(kaddr, PAGE_SIZE); |
129 | 129 | ||
130 | kunmap_atomic(kaddr, KM_USER0); | 130 | kunmap_atomic(kaddr); |
131 | } | 131 | } |
132 | EXPORT_SYMBOL(clear_user_highpage); | 132 | EXPORT_SYMBOL(clear_user_highpage); |
133 | 133 | ||
diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c index 7bebd044f2a1..324eef93c900 100644 --- a/arch/sh/mm/fault_32.c +++ b/arch/sh/mm/fault_32.c | |||
@@ -17,9 +17,9 @@ | |||
17 | #include <linux/kprobes.h> | 17 | #include <linux/kprobes.h> |
18 | #include <linux/perf_event.h> | 18 | #include <linux/perf_event.h> |
19 | #include <asm/io_trapped.h> | 19 | #include <asm/io_trapped.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/mmu_context.h> | 20 | #include <asm/mmu_context.h> |
22 | #include <asm/tlbflush.h> | 21 | #include <asm/tlbflush.h> |
22 | #include <asm/traps.h> | ||
23 | 23 | ||
24 | static inline int notify_page_fault(struct pt_regs *regs, int trap) | 24 | static inline int notify_page_fault(struct pt_regs *regs, int trap) |
25 | { | 25 | { |
diff --git a/arch/sh/mm/fault_64.c b/arch/sh/mm/fault_64.c index 2b356cec2489..44a341029e7b 100644 --- a/arch/sh/mm/fault_64.c +++ b/arch/sh/mm/fault_64.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/mm.h> | 33 | #include <linux/mm.h> |
34 | #include <linux/smp.h> | 34 | #include <linux/smp.h> |
35 | #include <linux/interrupt.h> | 35 | #include <linux/interrupt.h> |
36 | #include <asm/system.h> | ||
37 | #include <asm/tlb.h> | 36 | #include <asm/tlb.h> |
38 | #include <asm/io.h> | 37 | #include <asm/io.h> |
39 | #include <asm/uaccess.h> | 38 | #include <asm/uaccess.h> |
diff --git a/arch/sh/mm/flush-sh4.c b/arch/sh/mm/flush-sh4.c index cef402678f42..75a17f5bfa14 100644 --- a/arch/sh/mm/flush-sh4.c +++ b/arch/sh/mm/flush-sh4.c | |||
@@ -1,6 +1,7 @@ | |||
1 | #include <linux/mm.h> | 1 | #include <linux/mm.h> |
2 | #include <asm/mmu_context.h> | 2 | #include <asm/mmu_context.h> |
3 | #include <asm/cacheflush.h> | 3 | #include <asm/cacheflush.h> |
4 | #include <asm/traps.h> | ||
4 | 5 | ||
5 | /* | 6 | /* |
6 | * Write back the dirty D-caches, but not invalidate them. | 7 | * Write back the dirty D-caches, but not invalidate them. |
diff --git a/arch/sh/mm/pmb.c b/arch/sh/mm/pmb.c index fad52f1f6812..7160c9fd6fe3 100644 --- a/arch/sh/mm/pmb.c +++ b/arch/sh/mm/pmb.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/vmalloc.h> | 25 | #include <linux/vmalloc.h> |
26 | #include <asm/cacheflush.h> | 26 | #include <asm/cacheflush.h> |
27 | #include <asm/sizes.h> | 27 | #include <asm/sizes.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
30 | #include <asm/pgtable.h> | 29 | #include <asm/pgtable.h> |
31 | #include <asm/page.h> | 30 | #include <asm/page.h> |
diff --git a/arch/sh/mm/tlb-pteaex.c b/arch/sh/mm/tlb-pteaex.c index b71db6af8060..4db21adfe5de 100644 --- a/arch/sh/mm/tlb-pteaex.c +++ b/arch/sh/mm/tlb-pteaex.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/mmu_context.h> | 15 | #include <asm/mmu_context.h> |
17 | #include <asm/cacheflush.h> | 16 | #include <asm/cacheflush.h> |
18 | 17 | ||
diff --git a/arch/sh/mm/tlb-sh3.c b/arch/sh/mm/tlb-sh3.c index 7a940dbfc2e9..6554fb439f0e 100644 --- a/arch/sh/mm/tlb-sh3.c +++ b/arch/sh/mm/tlb-sh3.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/smp.h> | 20 | #include <linux/smp.h> |
21 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
22 | 22 | ||
23 | #include <asm/system.h> | ||
24 | #include <asm/io.h> | 23 | #include <asm/io.h> |
25 | #include <asm/uaccess.h> | 24 | #include <asm/uaccess.h> |
26 | #include <asm/pgalloc.h> | 25 | #include <asm/pgalloc.h> |
diff --git a/arch/sh/mm/tlb-sh4.c b/arch/sh/mm/tlb-sh4.c index cfdf7930d294..d42dd7e443d5 100644 --- a/arch/sh/mm/tlb-sh4.c +++ b/arch/sh/mm/tlb-sh4.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
13 | #include <linux/io.h> | 13 | #include <linux/io.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/mmu_context.h> | 14 | #include <asm/mmu_context.h> |
16 | #include <asm/cacheflush.h> | 15 | #include <asm/cacheflush.h> |
17 | 16 | ||
diff --git a/arch/sh/mm/tlbflush_64.c b/arch/sh/mm/tlbflush_64.c index e3430e093d43..11c5a18f10ed 100644 --- a/arch/sh/mm/tlbflush_64.c +++ b/arch/sh/mm/tlbflush_64.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/smp.h> | 22 | #include <linux/smp.h> |
23 | #include <linux/perf_event.h> | 23 | #include <linux/perf_event.h> |
24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/io.h> | 25 | #include <asm/io.h> |
27 | #include <asm/tlb.h> | 26 | #include <asm/tlb.h> |
28 | #include <asm/uaccess.h> | 27 | #include <asm/uaccess.h> |