diff options
Diffstat (limited to 'arch')
221 files changed, 13709 insertions, 2943 deletions
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c index e1c470752ebc..2d00a08d3f08 100644 --- a/arch/alpha/kernel/pci_iommu.c +++ b/arch/alpha/kernel/pci_iommu.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <linux/pci.h> | 7 | #include <linux/pci.h> |
8 | #include <linux/slab.h> | 8 | #include <linux/slab.h> |
9 | #include <linux/bootmem.h> | 9 | #include <linux/bootmem.h> |
10 | #include <linux/scatterlist.h> | ||
10 | #include <linux/log2.h> | 11 | #include <linux/log2.h> |
11 | 12 | ||
12 | #include <asm/io.h> | 13 | #include <asm/io.h> |
@@ -465,7 +466,7 @@ EXPORT_SYMBOL(pci_free_consistent); | |||
465 | Write dma_length of each leader with the combined lengths of | 466 | Write dma_length of each leader with the combined lengths of |
466 | the mergable followers. */ | 467 | the mergable followers. */ |
467 | 468 | ||
468 | #define SG_ENT_VIRT_ADDRESS(SG) (page_address((SG)->page) + (SG)->offset) | 469 | #define SG_ENT_VIRT_ADDRESS(SG) (sg_virt((SG))) |
469 | #define SG_ENT_PHYS_ADDRESS(SG) __pa(SG_ENT_VIRT_ADDRESS(SG)) | 470 | #define SG_ENT_PHYS_ADDRESS(SG) __pa(SG_ENT_VIRT_ADDRESS(SG)) |
470 | 471 | ||
471 | static void | 472 | static void |
diff --git a/arch/arm/common/dmabounce.c b/arch/arm/common/dmabounce.c index 44ab0dad4035..52fc6a883281 100644 --- a/arch/arm/common/dmabounce.c +++ b/arch/arm/common/dmabounce.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/dma-mapping.h> | 29 | #include <linux/dma-mapping.h> |
30 | #include <linux/dmapool.h> | 30 | #include <linux/dmapool.h> |
31 | #include <linux/list.h> | 31 | #include <linux/list.h> |
32 | #include <linux/scatterlist.h> | ||
32 | 33 | ||
33 | #include <asm/cacheflush.h> | 34 | #include <asm/cacheflush.h> |
34 | 35 | ||
@@ -442,7 +443,7 @@ dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, | |||
442 | BUG_ON(dir == DMA_NONE); | 443 | BUG_ON(dir == DMA_NONE); |
443 | 444 | ||
444 | for (i = 0; i < nents; i++, sg++) { | 445 | for (i = 0; i < nents; i++, sg++) { |
445 | struct page *page = sg->page; | 446 | struct page *page = sg_page(sg); |
446 | unsigned int offset = sg->offset; | 447 | unsigned int offset = sg->offset; |
447 | unsigned int length = sg->length; | 448 | unsigned int length = sg->length; |
448 | void *ptr = page_address(page) + offset; | 449 | void *ptr = page_address(page) + offset; |
diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c index 6b9e466104ad..5be0d13f4b03 100644 --- a/arch/avr32/boards/atstk1000/atstk1002.c +++ b/arch/avr32/boards/atstk1000/atstk1002.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/string.h> | 16 | #include <linux/string.h> |
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | #include <linux/spi/spi.h> | 18 | #include <linux/spi/spi.h> |
19 | #include <linux/spi/at73c213.h> | ||
19 | 20 | ||
20 | #include <video/atmel_lcdc.h> | 21 | #include <video/atmel_lcdc.h> |
21 | 22 | ||
@@ -49,7 +50,26 @@ static struct eth_platform_data __initdata eth_data[2] = { | |||
49 | }; | 50 | }; |
50 | 51 | ||
51 | #ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM | 52 | #ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM |
53 | #ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM | ||
54 | static struct at73c213_board_info at73c213_data = { | ||
55 | .ssc_id = 0, | ||
56 | .shortname = "AVR32 STK1000 external DAC", | ||
57 | }; | ||
58 | #endif | ||
59 | #endif | ||
60 | |||
61 | #ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM | ||
52 | static struct spi_board_info spi0_board_info[] __initdata = { | 62 | static struct spi_board_info spi0_board_info[] __initdata = { |
63 | #ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM | ||
64 | { | ||
65 | /* AT73C213 */ | ||
66 | .modalias = "at73c213", | ||
67 | .max_speed_hz = 200000, | ||
68 | .chip_select = 0, | ||
69 | .mode = SPI_MODE_1, | ||
70 | .platform_data = &at73c213_data, | ||
71 | }, | ||
72 | #endif | ||
53 | { | 73 | { |
54 | /* QVGA display */ | 74 | /* QVGA display */ |
55 | .modalias = "ltv350qv", | 75 | .modalias = "ltv350qv", |
@@ -180,6 +200,38 @@ static void setup_j2_leds(void) | |||
180 | } | 200 | } |
181 | #endif | 201 | #endif |
182 | 202 | ||
203 | #ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM | ||
204 | #ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM | ||
205 | static void __init at73c213_set_clk(struct at73c213_board_info *info) | ||
206 | { | ||
207 | struct clk *gclk; | ||
208 | struct clk *pll; | ||
209 | |||
210 | gclk = clk_get(NULL, "gclk0"); | ||
211 | if (IS_ERR(gclk)) | ||
212 | goto err_gclk; | ||
213 | pll = clk_get(NULL, "pll0"); | ||
214 | if (IS_ERR(pll)) | ||
215 | goto err_pll; | ||
216 | |||
217 | if (clk_set_parent(gclk, pll)) { | ||
218 | pr_debug("STK1000: failed to set pll0 as parent for DAC clock\n"); | ||
219 | goto err_set_clk; | ||
220 | } | ||
221 | |||
222 | at32_select_periph(GPIO_PIN_PA(30), GPIO_PERIPH_A, 0); | ||
223 | info->dac_clk = gclk; | ||
224 | |||
225 | err_set_clk: | ||
226 | clk_put(pll); | ||
227 | err_pll: | ||
228 | clk_put(gclk); | ||
229 | err_gclk: | ||
230 | return; | ||
231 | } | ||
232 | #endif | ||
233 | #endif | ||
234 | |||
183 | void __init setup_board(void) | 235 | void __init setup_board(void) |
184 | { | 236 | { |
185 | #ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM | 237 | #ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM |
@@ -248,6 +300,12 @@ static int __init atstk1002_init(void) | |||
248 | 300 | ||
249 | setup_j2_leds(); | 301 | setup_j2_leds(); |
250 | 302 | ||
303 | #ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM | ||
304 | #ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM | ||
305 | at73c213_set_clk(&at73c213_data); | ||
306 | #endif | ||
307 | #endif | ||
308 | |||
251 | return 0; | 309 | return 0; |
252 | } | 310 | } |
253 | postcore_initcall(atstk1002_init); | 311 | postcore_initcall(atstk1002_init); |
diff --git a/arch/avr32/mach-at32ap/at32ap7000.c b/arch/avr32/mach-at32ap/at32ap7000.c index f6d154ca4d24..a9d9ec081e3d 100644 --- a/arch/avr32/mach-at32ap/at32ap7000.c +++ b/arch/avr32/mach-at32ap/at32ap7000.c | |||
@@ -556,6 +556,17 @@ static struct clk pico_clk = { | |||
556 | .users = 1, | 556 | .users = 1, |
557 | }; | 557 | }; |
558 | 558 | ||
559 | static struct resource dmaca0_resource[] = { | ||
560 | { | ||
561 | .start = 0xff200000, | ||
562 | .end = 0xff20ffff, | ||
563 | .flags = IORESOURCE_MEM, | ||
564 | }, | ||
565 | IRQ(2), | ||
566 | }; | ||
567 | DEFINE_DEV(dmaca, 0); | ||
568 | DEV_CLK(hclk, dmaca0, hsb, 10); | ||
569 | |||
559 | /* -------------------------------------------------------------------- | 570 | /* -------------------------------------------------------------------- |
560 | * HMATRIX | 571 | * HMATRIX |
561 | * -------------------------------------------------------------------- */ | 572 | * -------------------------------------------------------------------- */ |
@@ -655,6 +666,7 @@ void __init at32_add_system_devices(void) | |||
655 | platform_device_register(&at32_eic0_device); | 666 | platform_device_register(&at32_eic0_device); |
656 | platform_device_register(&smc0_device); | 667 | platform_device_register(&smc0_device); |
657 | platform_device_register(&pdc_device); | 668 | platform_device_register(&pdc_device); |
669 | platform_device_register(&dmaca0_device); | ||
658 | 670 | ||
659 | platform_device_register(&at32_systc0_device); | 671 | platform_device_register(&at32_systc0_device); |
660 | 672 | ||
@@ -960,6 +972,96 @@ at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n) | |||
960 | } | 972 | } |
961 | 973 | ||
962 | /* -------------------------------------------------------------------- | 974 | /* -------------------------------------------------------------------- |
975 | * TWI | ||
976 | * -------------------------------------------------------------------- */ | ||
977 | static struct resource atmel_twi0_resource[] __initdata = { | ||
978 | PBMEM(0xffe00800), | ||
979 | IRQ(5), | ||
980 | }; | ||
981 | static struct clk atmel_twi0_pclk = { | ||
982 | .name = "twi_pclk", | ||
983 | .parent = &pba_clk, | ||
984 | .mode = pba_clk_mode, | ||
985 | .get_rate = pba_clk_get_rate, | ||
986 | .index = 2, | ||
987 | }; | ||
988 | |||
989 | struct platform_device *__init at32_add_device_twi(unsigned int id) | ||
990 | { | ||
991 | struct platform_device *pdev; | ||
992 | |||
993 | if (id != 0) | ||
994 | return NULL; | ||
995 | |||
996 | pdev = platform_device_alloc("atmel_twi", id); | ||
997 | if (!pdev) | ||
998 | return NULL; | ||
999 | |||
1000 | if (platform_device_add_resources(pdev, atmel_twi0_resource, | ||
1001 | ARRAY_SIZE(atmel_twi0_resource))) | ||
1002 | goto err_add_resources; | ||
1003 | |||
1004 | select_peripheral(PA(6), PERIPH_A, 0); /* SDA */ | ||
1005 | select_peripheral(PA(7), PERIPH_A, 0); /* SDL */ | ||
1006 | |||
1007 | atmel_twi0_pclk.dev = &pdev->dev; | ||
1008 | |||
1009 | platform_device_add(pdev); | ||
1010 | return pdev; | ||
1011 | |||
1012 | err_add_resources: | ||
1013 | platform_device_put(pdev); | ||
1014 | return NULL; | ||
1015 | } | ||
1016 | |||
1017 | /* -------------------------------------------------------------------- | ||
1018 | * MMC | ||
1019 | * -------------------------------------------------------------------- */ | ||
1020 | static struct resource atmel_mci0_resource[] __initdata = { | ||
1021 | PBMEM(0xfff02400), | ||
1022 | IRQ(28), | ||
1023 | }; | ||
1024 | static struct clk atmel_mci0_pclk = { | ||
1025 | .name = "mci_clk", | ||
1026 | .parent = &pbb_clk, | ||
1027 | .mode = pbb_clk_mode, | ||
1028 | .get_rate = pbb_clk_get_rate, | ||
1029 | .index = 9, | ||
1030 | }; | ||
1031 | |||
1032 | struct platform_device *__init at32_add_device_mci(unsigned int id) | ||
1033 | { | ||
1034 | struct platform_device *pdev; | ||
1035 | |||
1036 | if (id != 0) | ||
1037 | return NULL; | ||
1038 | |||
1039 | pdev = platform_device_alloc("atmel_mci", id); | ||
1040 | if (!pdev) | ||
1041 | return NULL; | ||
1042 | |||
1043 | if (platform_device_add_resources(pdev, atmel_mci0_resource, | ||
1044 | ARRAY_SIZE(atmel_mci0_resource))) | ||
1045 | goto err_add_resources; | ||
1046 | |||
1047 | select_peripheral(PA(10), PERIPH_A, 0); /* CLK */ | ||
1048 | select_peripheral(PA(11), PERIPH_A, 0); /* CMD */ | ||
1049 | select_peripheral(PA(12), PERIPH_A, 0); /* DATA0 */ | ||
1050 | select_peripheral(PA(13), PERIPH_A, 0); /* DATA1 */ | ||
1051 | select_peripheral(PA(14), PERIPH_A, 0); /* DATA2 */ | ||
1052 | select_peripheral(PA(15), PERIPH_A, 0); /* DATA3 */ | ||
1053 | |||
1054 | atmel_mci0_pclk.dev = &pdev->dev; | ||
1055 | |||
1056 | platform_device_add(pdev); | ||
1057 | return pdev; | ||
1058 | |||
1059 | err_add_resources: | ||
1060 | platform_device_put(pdev); | ||
1061 | return NULL; | ||
1062 | } | ||
1063 | |||
1064 | /* -------------------------------------------------------------------- | ||
963 | * LCDC | 1065 | * LCDC |
964 | * -------------------------------------------------------------------- */ | 1066 | * -------------------------------------------------------------------- */ |
965 | static struct atmel_lcdfb_info atmel_lcdfb0_data; | 1067 | static struct atmel_lcdfb_info atmel_lcdfb0_data; |
@@ -1228,6 +1330,241 @@ out_free_pdev: | |||
1228 | } | 1330 | } |
1229 | 1331 | ||
1230 | /* -------------------------------------------------------------------- | 1332 | /* -------------------------------------------------------------------- |
1333 | * IDE / CompactFlash | ||
1334 | * -------------------------------------------------------------------- */ | ||
1335 | static struct resource at32_smc_cs4_resource[] __initdata = { | ||
1336 | { | ||
1337 | .start = 0x04000000, | ||
1338 | .end = 0x07ffffff, | ||
1339 | .flags = IORESOURCE_MEM, | ||
1340 | }, | ||
1341 | IRQ(~0UL), /* Magic IRQ will be overridden */ | ||
1342 | }; | ||
1343 | static struct resource at32_smc_cs5_resource[] __initdata = { | ||
1344 | { | ||
1345 | .start = 0x20000000, | ||
1346 | .end = 0x23ffffff, | ||
1347 | .flags = IORESOURCE_MEM, | ||
1348 | }, | ||
1349 | IRQ(~0UL), /* Magic IRQ will be overridden */ | ||
1350 | }; | ||
1351 | |||
1352 | static int __init at32_init_ide_or_cf(struct platform_device *pdev, | ||
1353 | unsigned int cs, unsigned int extint) | ||
1354 | { | ||
1355 | static unsigned int extint_pin_map[4] __initdata = { | ||
1356 | GPIO_PIN_PB(25), | ||
1357 | GPIO_PIN_PB(26), | ||
1358 | GPIO_PIN_PB(27), | ||
1359 | GPIO_PIN_PB(28), | ||
1360 | }; | ||
1361 | static bool common_pins_initialized __initdata = false; | ||
1362 | unsigned int extint_pin; | ||
1363 | int ret; | ||
1364 | |||
1365 | if (extint >= ARRAY_SIZE(extint_pin_map)) | ||
1366 | return -EINVAL; | ||
1367 | extint_pin = extint_pin_map[extint]; | ||
1368 | |||
1369 | switch (cs) { | ||
1370 | case 4: | ||
1371 | ret = platform_device_add_resources(pdev, | ||
1372 | at32_smc_cs4_resource, | ||
1373 | ARRAY_SIZE(at32_smc_cs4_resource)); | ||
1374 | if (ret) | ||
1375 | return ret; | ||
1376 | |||
1377 | select_peripheral(PE(21), PERIPH_A, 0); /* NCS4 -> OE_N */ | ||
1378 | set_ebi_sfr_bits(HMATRIX_BIT(CS4A)); | ||
1379 | break; | ||
1380 | case 5: | ||
1381 | ret = platform_device_add_resources(pdev, | ||
1382 | at32_smc_cs5_resource, | ||
1383 | ARRAY_SIZE(at32_smc_cs5_resource)); | ||
1384 | if (ret) | ||
1385 | return ret; | ||
1386 | |||
1387 | select_peripheral(PE(22), PERIPH_A, 0); /* NCS5 -> OE_N */ | ||
1388 | set_ebi_sfr_bits(HMATRIX_BIT(CS5A)); | ||
1389 | break; | ||
1390 | default: | ||
1391 | return -EINVAL; | ||
1392 | } | ||
1393 | |||
1394 | if (!common_pins_initialized) { | ||
1395 | select_peripheral(PE(19), PERIPH_A, 0); /* CFCE1 -> CS0_N */ | ||
1396 | select_peripheral(PE(20), PERIPH_A, 0); /* CFCE2 -> CS1_N */ | ||
1397 | select_peripheral(PE(23), PERIPH_A, 0); /* CFRNW -> DIR */ | ||
1398 | select_peripheral(PE(24), PERIPH_A, 0); /* NWAIT <- IORDY */ | ||
1399 | common_pins_initialized = true; | ||
1400 | } | ||
1401 | |||
1402 | at32_select_periph(extint_pin, GPIO_PERIPH_A, AT32_GPIOF_DEGLITCH); | ||
1403 | |||
1404 | pdev->resource[1].start = EIM_IRQ_BASE + extint; | ||
1405 | pdev->resource[1].end = pdev->resource[1].start; | ||
1406 | |||
1407 | return 0; | ||
1408 | } | ||
1409 | |||
1410 | struct platform_device *__init | ||
1411 | at32_add_device_ide(unsigned int id, unsigned int extint, | ||
1412 | struct ide_platform_data *data) | ||
1413 | { | ||
1414 | struct platform_device *pdev; | ||
1415 | |||
1416 | pdev = platform_device_alloc("at32_ide", id); | ||
1417 | if (!pdev) | ||
1418 | goto fail; | ||
1419 | |||
1420 | if (platform_device_add_data(pdev, data, | ||
1421 | sizeof(struct ide_platform_data))) | ||
1422 | goto fail; | ||
1423 | |||
1424 | if (at32_init_ide_or_cf(pdev, data->cs, extint)) | ||
1425 | goto fail; | ||
1426 | |||
1427 | platform_device_add(pdev); | ||
1428 | return pdev; | ||
1429 | |||
1430 | fail: | ||
1431 | platform_device_put(pdev); | ||
1432 | return NULL; | ||
1433 | } | ||
1434 | |||
1435 | struct platform_device *__init | ||
1436 | at32_add_device_cf(unsigned int id, unsigned int extint, | ||
1437 | struct cf_platform_data *data) | ||
1438 | { | ||
1439 | struct platform_device *pdev; | ||
1440 | |||
1441 | pdev = platform_device_alloc("at32_cf", id); | ||
1442 | if (!pdev) | ||
1443 | goto fail; | ||
1444 | |||
1445 | if (platform_device_add_data(pdev, data, | ||
1446 | sizeof(struct cf_platform_data))) | ||
1447 | goto fail; | ||
1448 | |||
1449 | if (at32_init_ide_or_cf(pdev, data->cs, extint)) | ||
1450 | goto fail; | ||
1451 | |||
1452 | if (data->detect_pin != GPIO_PIN_NONE) | ||
1453 | at32_select_gpio(data->detect_pin, AT32_GPIOF_DEGLITCH); | ||
1454 | if (data->reset_pin != GPIO_PIN_NONE) | ||
1455 | at32_select_gpio(data->reset_pin, 0); | ||
1456 | if (data->vcc_pin != GPIO_PIN_NONE) | ||
1457 | at32_select_gpio(data->vcc_pin, 0); | ||
1458 | /* READY is used as extint, so we can't select it as gpio */ | ||
1459 | |||
1460 | platform_device_add(pdev); | ||
1461 | return pdev; | ||
1462 | |||
1463 | fail: | ||
1464 | platform_device_put(pdev); | ||
1465 | return NULL; | ||
1466 | } | ||
1467 | |||
1468 | /* -------------------------------------------------------------------- | ||
1469 | * AC97C | ||
1470 | * -------------------------------------------------------------------- */ | ||
1471 | static struct resource atmel_ac97c0_resource[] __initdata = { | ||
1472 | PBMEM(0xfff02800), | ||
1473 | IRQ(29), | ||
1474 | }; | ||
1475 | static struct clk atmel_ac97c0_pclk = { | ||
1476 | .name = "pclk", | ||
1477 | .parent = &pbb_clk, | ||
1478 | .mode = pbb_clk_mode, | ||
1479 | .get_rate = pbb_clk_get_rate, | ||
1480 | .index = 10, | ||
1481 | }; | ||
1482 | |||
1483 | struct platform_device *__init at32_add_device_ac97c(unsigned int id) | ||
1484 | { | ||
1485 | struct platform_device *pdev; | ||
1486 | |||
1487 | if (id != 0) | ||
1488 | return NULL; | ||
1489 | |||
1490 | pdev = platform_device_alloc("atmel_ac97c", id); | ||
1491 | if (!pdev) | ||
1492 | return NULL; | ||
1493 | |||
1494 | if (platform_device_add_resources(pdev, atmel_ac97c0_resource, | ||
1495 | ARRAY_SIZE(atmel_ac97c0_resource))) | ||
1496 | goto err_add_resources; | ||
1497 | |||
1498 | select_peripheral(PB(20), PERIPH_B, 0); /* SYNC */ | ||
1499 | select_peripheral(PB(21), PERIPH_B, 0); /* SDO */ | ||
1500 | select_peripheral(PB(22), PERIPH_B, 0); /* SDI */ | ||
1501 | select_peripheral(PB(23), PERIPH_B, 0); /* SCLK */ | ||
1502 | |||
1503 | atmel_ac97c0_pclk.dev = &pdev->dev; | ||
1504 | |||
1505 | platform_device_add(pdev); | ||
1506 | return pdev; | ||
1507 | |||
1508 | err_add_resources: | ||
1509 | platform_device_put(pdev); | ||
1510 | return NULL; | ||
1511 | } | ||
1512 | |||
1513 | /* -------------------------------------------------------------------- | ||
1514 | * ABDAC | ||
1515 | * -------------------------------------------------------------------- */ | ||
1516 | static struct resource abdac0_resource[] __initdata = { | ||
1517 | PBMEM(0xfff02000), | ||
1518 | IRQ(27), | ||
1519 | }; | ||
1520 | static struct clk abdac0_pclk = { | ||
1521 | .name = "pclk", | ||
1522 | .parent = &pbb_clk, | ||
1523 | .mode = pbb_clk_mode, | ||
1524 | .get_rate = pbb_clk_get_rate, | ||
1525 | .index = 8, | ||
1526 | }; | ||
1527 | static struct clk abdac0_sample_clk = { | ||
1528 | .name = "sample_clk", | ||
1529 | .mode = genclk_mode, | ||
1530 | .get_rate = genclk_get_rate, | ||
1531 | .set_rate = genclk_set_rate, | ||
1532 | .set_parent = genclk_set_parent, | ||
1533 | .index = 6, | ||
1534 | }; | ||
1535 | |||
1536 | struct platform_device *__init at32_add_device_abdac(unsigned int id) | ||
1537 | { | ||
1538 | struct platform_device *pdev; | ||
1539 | |||
1540 | if (id != 0) | ||
1541 | return NULL; | ||
1542 | |||
1543 | pdev = platform_device_alloc("abdac", id); | ||
1544 | if (!pdev) | ||
1545 | return NULL; | ||
1546 | |||
1547 | if (platform_device_add_resources(pdev, abdac0_resource, | ||
1548 | ARRAY_SIZE(abdac0_resource))) | ||
1549 | goto err_add_resources; | ||
1550 | |||
1551 | select_peripheral(PB(20), PERIPH_A, 0); /* DATA1 */ | ||
1552 | select_peripheral(PB(21), PERIPH_A, 0); /* DATA0 */ | ||
1553 | select_peripheral(PB(22), PERIPH_A, 0); /* DATAN1 */ | ||
1554 | select_peripheral(PB(23), PERIPH_A, 0); /* DATAN0 */ | ||
1555 | |||
1556 | abdac0_pclk.dev = &pdev->dev; | ||
1557 | abdac0_sample_clk.dev = &pdev->dev; | ||
1558 | |||
1559 | platform_device_add(pdev); | ||
1560 | return pdev; | ||
1561 | |||
1562 | err_add_resources: | ||
1563 | platform_device_put(pdev); | ||
1564 | return NULL; | ||
1565 | } | ||
1566 | |||
1567 | /* -------------------------------------------------------------------- | ||
1231 | * GCLK | 1568 | * GCLK |
1232 | * -------------------------------------------------------------------- */ | 1569 | * -------------------------------------------------------------------- */ |
1233 | static struct clk gclk0 = { | 1570 | static struct clk gclk0 = { |
@@ -1290,6 +1627,7 @@ struct clk *at32_clock_list[] = { | |||
1290 | &smc0_mck, | 1627 | &smc0_mck, |
1291 | &pdc_hclk, | 1628 | &pdc_hclk, |
1292 | &pdc_pclk, | 1629 | &pdc_pclk, |
1630 | &dmaca0_hclk, | ||
1293 | &pico_clk, | 1631 | &pico_clk, |
1294 | &pio0_mck, | 1632 | &pio0_mck, |
1295 | &pio1_mck, | 1633 | &pio1_mck, |
@@ -1307,6 +1645,8 @@ struct clk *at32_clock_list[] = { | |||
1307 | &macb1_pclk, | 1645 | &macb1_pclk, |
1308 | &atmel_spi0_spi_clk, | 1646 | &atmel_spi0_spi_clk, |
1309 | &atmel_spi1_spi_clk, | 1647 | &atmel_spi1_spi_clk, |
1648 | &atmel_twi0_pclk, | ||
1649 | &atmel_mci0_pclk, | ||
1310 | &atmel_lcdfb0_hck1, | 1650 | &atmel_lcdfb0_hck1, |
1311 | &atmel_lcdfb0_pixclk, | 1651 | &atmel_lcdfb0_pixclk, |
1312 | &ssc0_pclk, | 1652 | &ssc0_pclk, |
@@ -1314,6 +1654,9 @@ struct clk *at32_clock_list[] = { | |||
1314 | &ssc2_pclk, | 1654 | &ssc2_pclk, |
1315 | &usba0_hclk, | 1655 | &usba0_hclk, |
1316 | &usba0_pclk, | 1656 | &usba0_pclk, |
1657 | &atmel_ac97c0_pclk, | ||
1658 | &abdac0_pclk, | ||
1659 | &abdac0_sample_clk, | ||
1317 | &gclk0, | 1660 | &gclk0, |
1318 | &gclk1, | 1661 | &gclk1, |
1319 | &gclk2, | 1662 | &gclk2, |
@@ -1355,6 +1698,7 @@ void __init at32_clock_init(void) | |||
1355 | genclk_init_parent(&gclk3); | 1698 | genclk_init_parent(&gclk3); |
1356 | genclk_init_parent(&gclk4); | 1699 | genclk_init_parent(&gclk4); |
1357 | genclk_init_parent(&atmel_lcdfb0_pixclk); | 1700 | genclk_init_parent(&atmel_lcdfb0_pixclk); |
1701 | genclk_init_parent(&abdac0_sample_clk); | ||
1358 | 1702 | ||
1359 | /* | 1703 | /* |
1360 | * Turn on all clocks that have at least one user already, and | 1704 | * Turn on all clocks that have at least one user already, and |
diff --git a/arch/avr32/mach-at32ap/extint.c b/arch/avr32/mach-at32ap/extint.c index 8acd01090031..f5bfd4c81fe7 100644 --- a/arch/avr32/mach-at32ap/extint.c +++ b/arch/avr32/mach-at32ap/extint.c | |||
@@ -142,7 +142,7 @@ static int eic_set_irq_type(unsigned int irq, unsigned int flow_type) | |||
142 | return ret; | 142 | return ret; |
143 | } | 143 | } |
144 | 144 | ||
145 | struct irq_chip eic_chip = { | 145 | static struct irq_chip eic_chip = { |
146 | .name = "eic", | 146 | .name = "eic", |
147 | .ack = eic_ack_irq, | 147 | .ack = eic_ack_irq, |
148 | .mask = eic_mask_irq, | 148 | .mask = eic_mask_irq, |
diff --git a/arch/avr32/mach-at32ap/pm.h b/arch/avr32/mach-at32ap/pm.h index 47efd0d1951f..694d521edc2f 100644 --- a/arch/avr32/mach-at32ap/pm.h +++ b/arch/avr32/mach-at32ap/pm.h | |||
@@ -113,8 +113,8 @@ | |||
113 | 113 | ||
114 | /* Register access macros */ | 114 | /* Register access macros */ |
115 | #define pm_readl(reg) \ | 115 | #define pm_readl(reg) \ |
116 | __raw_readl((void __iomem *)AT32_PM_BASE + PM_##reg) | 116 | __raw_readl((void __iomem __force *)AT32_PM_BASE + PM_##reg) |
117 | #define pm_writel(reg,value) \ | 117 | #define pm_writel(reg,value) \ |
118 | __raw_writel((value), (void __iomem *)AT32_PM_BASE + PM_##reg) | 118 | __raw_writel((value), (void __iomem __force *)AT32_PM_BASE + PM_##reg) |
119 | 119 | ||
120 | #endif /* __ARCH_AVR32_MACH_AT32AP_PM_H__ */ | 120 | #endif /* __ARCH_AVR32_MACH_AT32AP_PM_H__ */ |
diff --git a/arch/avr32/mach-at32ap/time-tc.c b/arch/avr32/mach-at32ap/time-tc.c index e3070bdd4bb9..10265863c982 100644 --- a/arch/avr32/mach-at32ap/time-tc.c +++ b/arch/avr32/mach-at32ap/time-tc.c | |||
@@ -79,7 +79,7 @@ static int avr32_timer_calc_div_and_set_jiffies(struct clk *pclk) | |||
79 | { | 79 | { |
80 | unsigned int cycles_max = (clocksource_avr32.mask + 1) / 2; | 80 | unsigned int cycles_max = (clocksource_avr32.mask + 1) / 2; |
81 | unsigned int divs[] = { 4, 8, 16, 32 }; | 81 | unsigned int divs[] = { 4, 8, 16, 32 }; |
82 | int divs_size = sizeof(divs) / sizeof(*divs); | 82 | int divs_size = ARRAY_SIZE(divs); |
83 | int i = 0; | 83 | int i = 0; |
84 | unsigned long count_hz; | 84 | unsigned long count_hz; |
85 | unsigned long shift; | 85 | unsigned long shift; |
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index ad28dc76fc97..7888551ed939 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
@@ -71,7 +71,7 @@ config GENERIC_CALIBRATE_DELAY | |||
71 | 71 | ||
72 | config IRQCHIP_DEMUX_GPIO | 72 | config IRQCHIP_DEMUX_GPIO |
73 | bool | 73 | bool |
74 | depends on (BF53x || BF561 || BF54x) | 74 | depends on (BF52x || BF53x || BF561 || BF54x) |
75 | default y | 75 | default y |
76 | 76 | ||
77 | source "init/Kconfig" | 77 | source "init/Kconfig" |
@@ -85,6 +85,21 @@ choice | |||
85 | prompt "CPU" | 85 | prompt "CPU" |
86 | default BF533 | 86 | default BF533 |
87 | 87 | ||
88 | config BF522 | ||
89 | bool "BF522" | ||
90 | help | ||
91 | BF522 Processor Support. | ||
92 | |||
93 | config BF525 | ||
94 | bool "BF525" | ||
95 | help | ||
96 | BF525 Processor Support. | ||
97 | |||
98 | config BF527 | ||
99 | bool "BF527" | ||
100 | help | ||
101 | BF527 Processor Support. | ||
102 | |||
88 | config BF531 | 103 | config BF531 |
89 | bool "BF531" | 104 | bool "BF531" |
90 | help | 105 | help |
@@ -144,13 +159,18 @@ endchoice | |||
144 | 159 | ||
145 | choice | 160 | choice |
146 | prompt "Silicon Rev" | 161 | prompt "Silicon Rev" |
162 | default BF_REV_0_1 if BF527 | ||
147 | default BF_REV_0_2 if BF537 | 163 | default BF_REV_0_2 if BF537 |
148 | default BF_REV_0_3 if BF533 | 164 | default BF_REV_0_3 if BF533 |
149 | default BF_REV_0_0 if BF549 | 165 | default BF_REV_0_0 if BF549 |
150 | 166 | ||
151 | config BF_REV_0_0 | 167 | config BF_REV_0_0 |
152 | bool "0.0" | 168 | bool "0.0" |
153 | depends on (BF549) | 169 | depends on (BF549 || BF527) |
170 | |||
171 | config BF_REV_0_1 | ||
172 | bool "0.2" | ||
173 | depends on (BF549 || BF527) | ||
154 | 174 | ||
155 | config BF_REV_0_2 | 175 | config BF_REV_0_2 |
156 | bool "0.2" | 176 | bool "0.2" |
@@ -176,6 +196,11 @@ config BF_REV_NONE | |||
176 | 196 | ||
177 | endchoice | 197 | endchoice |
178 | 198 | ||
199 | config BF52x | ||
200 | bool | ||
201 | depends on (BF522 || BF525 || BF527) | ||
202 | default y | ||
203 | |||
179 | config BF53x | 204 | config BF53x |
180 | bool | 205 | bool |
181 | depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537) | 206 | depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537) |
@@ -204,6 +229,12 @@ choice | |||
204 | configuration to ensure that all the other settings are | 229 | configuration to ensure that all the other settings are |
205 | correct. | 230 | correct. |
206 | 231 | ||
232 | config BFIN527_EZKIT | ||
233 | bool "BF527-EZKIT" | ||
234 | depends on (BF522 || BF525 || BF527) | ||
235 | help | ||
236 | BF533-EZKIT-LITE board Support. | ||
237 | |||
207 | config BFIN533_EZKIT | 238 | config BFIN533_EZKIT |
208 | bool "BF533-EZKIT" | 239 | bool "BF533-EZKIT" |
209 | depends on (BF533 || BF532 || BF531) | 240 | depends on (BF533 || BF532 || BF531) |
@@ -299,11 +330,17 @@ config MEM_MT48LC8M32B2B5_7 | |||
299 | depends on (BFIN561_BLUETECHNIX_CM) | 330 | depends on (BFIN561_BLUETECHNIX_CM) |
300 | default y | 331 | default y |
301 | 332 | ||
333 | config MEM_MT48LC32M16A2TG_75 | ||
334 | bool | ||
335 | depends on (BFIN527_EZKIT) | ||
336 | default y | ||
337 | |||
302 | config BFIN_SHARED_FLASH_ENET | 338 | config BFIN_SHARED_FLASH_ENET |
303 | bool | 339 | bool |
304 | depends on (BFIN533_STAMP) | 340 | depends on (BFIN533_STAMP) |
305 | default y | 341 | default y |
306 | 342 | ||
343 | source "arch/blackfin/mach-bf527/Kconfig" | ||
307 | source "arch/blackfin/mach-bf533/Kconfig" | 344 | source "arch/blackfin/mach-bf533/Kconfig" |
308 | source "arch/blackfin/mach-bf561/Kconfig" | 345 | source "arch/blackfin/mach-bf561/Kconfig" |
309 | source "arch/blackfin/mach-bf537/Kconfig" | 346 | source "arch/blackfin/mach-bf537/Kconfig" |
@@ -329,7 +366,7 @@ config CLKIN_HZ | |||
329 | int "Crystal Frequency in Hz" | 366 | int "Crystal Frequency in Hz" |
330 | default "11059200" if BFIN533_STAMP | 367 | default "11059200" if BFIN533_STAMP |
331 | default "27000000" if BFIN533_EZKIT | 368 | default "27000000" if BFIN533_EZKIT |
332 | default "25000000" if BFIN537_STAMP | 369 | default "25000000" if (BFIN537_STAMP || BFIN527_EZKIT) |
333 | default "30000000" if BFIN561_EZKIT | 370 | default "30000000" if BFIN561_EZKIT |
334 | default "24576000" if PNAV10 | 371 | default "24576000" if PNAV10 |
335 | help | 372 | help |
@@ -362,7 +399,7 @@ config VCO_MULT | |||
362 | range 1 64 | 399 | range 1 64 |
363 | default "22" if BFIN533_EZKIT | 400 | default "22" if BFIN533_EZKIT |
364 | default "45" if BFIN533_STAMP | 401 | default "45" if BFIN533_STAMP |
365 | default "20" if BFIN537_STAMP | 402 | default "20" if (BFIN537_STAMP || BFIN527_EZKIT) |
366 | default "22" if BFIN533_BLUETECHNIX_CM | 403 | default "22" if BFIN533_BLUETECHNIX_CM |
367 | default "20" if BFIN537_BLUETECHNIX_CM | 404 | default "20" if BFIN537_BLUETECHNIX_CM |
368 | default "20" if BFIN561_BLUETECHNIX_CM | 405 | default "20" if BFIN561_BLUETECHNIX_CM |
@@ -398,7 +435,7 @@ config SCLK_DIV | |||
398 | range 1 15 | 435 | range 1 15 |
399 | default 5 if BFIN533_EZKIT | 436 | default 5 if BFIN533_EZKIT |
400 | default 5 if BFIN533_STAMP | 437 | default 5 if BFIN533_STAMP |
401 | default 4 if BFIN537_STAMP | 438 | default 4 if (BFIN537_STAMP || BFIN527_EZKIT) |
402 | default 5 if BFIN533_BLUETECHNIX_CM | 439 | default 5 if BFIN533_BLUETECHNIX_CM |
403 | default 4 if BFIN537_BLUETECHNIX_CM | 440 | default 4 if BFIN537_BLUETECHNIX_CM |
404 | default 4 if BFIN561_BLUETECHNIX_CM | 441 | default 4 if BFIN561_BLUETECHNIX_CM |
@@ -450,6 +487,7 @@ comment "Memory Setup" | |||
450 | config MEM_SIZE | 487 | config MEM_SIZE |
451 | int "SDRAM Memory Size in MBytes" | 488 | int "SDRAM Memory Size in MBytes" |
452 | default 32 if BFIN533_EZKIT | 489 | default 32 if BFIN533_EZKIT |
490 | default 64 if BFIN527_EZKIT | ||
453 | default 64 if BFIN537_STAMP | 491 | default 64 if BFIN537_STAMP |
454 | default 64 if BFIN561_EZKIT | 492 | default 64 if BFIN561_EZKIT |
455 | default 128 if BFIN533_STAMP | 493 | default 128 if BFIN533_STAMP |
@@ -459,6 +497,7 @@ config MEM_ADD_WIDTH | |||
459 | int "SDRAM Memory Address Width" | 497 | int "SDRAM Memory Address Width" |
460 | default 9 if BFIN533_EZKIT | 498 | default 9 if BFIN533_EZKIT |
461 | default 9 if BFIN561_EZKIT | 499 | default 9 if BFIN561_EZKIT |
500 | default 10 if BFIN527_EZKIT | ||
462 | default 10 if BFIN537_STAMP | 501 | default 10 if BFIN537_STAMP |
463 | default 11 if BFIN533_STAMP | 502 | default 11 if BFIN533_STAMP |
464 | default 10 if PNAV10 | 503 | default 10 if PNAV10 |
@@ -749,9 +788,19 @@ config LARGE_ALLOCS | |||
749 | a lot of RAM, and you need to able to allocate very large | 788 | a lot of RAM, and you need to able to allocate very large |
750 | contiguous chunks. If unsure, say N. | 789 | contiguous chunks. If unsure, say N. |
751 | 790 | ||
791 | config BFIN_GPTIMERS | ||
792 | tristate "Enable Blackfin General Purpose Timers API" | ||
793 | default n | ||
794 | help | ||
795 | Enable support for the General Purpose Timers API. If you | ||
796 | are unsure, say N. | ||
797 | |||
798 | To compile this driver as a module, choose M here: the module | ||
799 | will be called gptimers.ko. | ||
800 | |||
752 | config BFIN_DMA_5XX | 801 | config BFIN_DMA_5XX |
753 | bool "Enable DMA Support" | 802 | bool "Enable DMA Support" |
754 | depends on (BF533 || BF532 || BF531 || BF537 || BF536 || BF534 || BF561 || BF54x) | 803 | depends on (BF52x || BF53x || BF561 || BF54x) |
755 | default y | 804 | default y |
756 | help | 805 | help |
757 | DMA driver for BF5xx. | 806 | DMA driver for BF5xx. |
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile index 368933760d28..f7cac7c51e7e 100644 --- a/arch/blackfin/Makefile +++ b/arch/blackfin/Makefile | |||
@@ -12,12 +12,17 @@ LDFLAGS_vmlinux := -X | |||
12 | OBJCOPYFLAGS := -O binary -R .note -R .comment -S | 12 | OBJCOPYFLAGS := -O binary -R .note -R .comment -S |
13 | GZFLAGS := -9 | 13 | GZFLAGS := -9 |
14 | 14 | ||
15 | KBUILD_CFLAGS += $(call cc-option,-mno-fdpic) | ||
16 | KBUILD_AFLAGS += $(call cc-option,-mno-fdpic) | ||
15 | CFLAGS_MODULE += -mlong-calls | 17 | CFLAGS_MODULE += -mlong-calls |
16 | KALLSYMS += --symbol-prefix=_ | 18 | KALLSYMS += --symbol-prefix=_ |
17 | 19 | ||
18 | KBUILD_DEFCONFIG := BF537-STAMP_defconfig | 20 | KBUILD_DEFCONFIG := BF537-STAMP_defconfig |
19 | 21 | ||
20 | # setup the machine name and the machine dependent settings | 22 | # setup the machine name and the machine dependent settings |
23 | machine-$(CONFIG_BF522) := bf527 | ||
24 | machine-$(CONFIG_BF525) := bf527 | ||
25 | machine-$(CONFIG_BF527) := bf527 | ||
21 | machine-$(CONFIG_BF531) := bf533 | 26 | machine-$(CONFIG_BF531) := bf533 |
22 | machine-$(CONFIG_BF532) := bf533 | 27 | machine-$(CONFIG_BF532) := bf533 |
23 | machine-$(CONFIG_BF533) := bf533 | 28 | machine-$(CONFIG_BF533) := bf533 |
@@ -32,6 +37,9 @@ machine-$(CONFIG_BF561) := bf561 | |||
32 | MACHINE := $(machine-y) | 37 | MACHINE := $(machine-y) |
33 | export MACHINE | 38 | export MACHINE |
34 | 39 | ||
40 | cpu-$(CONFIG_BF522) := bf522 | ||
41 | cpu-$(CONFIG_BF525) := bf525 | ||
42 | cpu-$(CONFIG_BF527) := bf527 | ||
35 | cpu-$(CONFIG_BF531) := bf531 | 43 | cpu-$(CONFIG_BF531) := bf531 |
36 | cpu-$(CONFIG_BF532) := bf532 | 44 | cpu-$(CONFIG_BF532) := bf532 |
37 | cpu-$(CONFIG_BF533) := bf533 | 45 | cpu-$(CONFIG_BF533) := bf533 |
@@ -97,12 +105,23 @@ archclean: | |||
97 | $(Q)$(MAKE) $(clean)=$(boot) | 105 | $(Q)$(MAKE) $(clean)=$(boot) |
98 | 106 | ||
99 | 107 | ||
100 | all: vmImage | ||
101 | boot := arch/$(ARCH)/boot | 108 | boot := arch/$(ARCH)/boot |
102 | BOOT_TARGETS = vmImage | 109 | BOOT_TARGETS = vmImage |
103 | .PHONY: $(BOOT_TARGETS) | 110 | PHONY += $(BOOT_TARGETS) install |
111 | KBUILD_IMAGE := $(boot)/vmImage | ||
112 | |||
113 | all: vmImage | ||
114 | |||
104 | $(BOOT_TARGETS): vmlinux | 115 | $(BOOT_TARGETS): vmlinux |
105 | $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ | 116 | $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ |
117 | |||
118 | install: | ||
119 | $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install | ||
120 | |||
106 | define archhelp | 121 | define archhelp |
107 | echo '* vmImage - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage)' | 122 | echo '* vmImage - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage)' |
123 | echo ' install - Install kernel using' | ||
124 | echo ' (your) ~/bin/$(CROSS_COMPILE)installkernel or' | ||
125 | echo ' (distribution) PATH: $(CROSS_COMPILE)installkernel or' | ||
126 | echo ' install to $$(INSTALL_PATH)' | ||
108 | endef | 127 | endef |
diff --git a/arch/blackfin/boot/Makefile b/arch/blackfin/boot/Makefile index 8cd33560e817..522f3c124060 100644 --- a/arch/blackfin/boot/Makefile +++ b/arch/blackfin/boot/Makefile | |||
@@ -26,3 +26,6 @@ $(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE | |||
26 | $(obj)/vmImage: $(obj)/vmlinux.gz | 26 | $(obj)/vmImage: $(obj)/vmlinux.gz |
27 | $(call if_changed,uimage) | 27 | $(call if_changed,uimage) |
28 | @echo 'Kernel: $@ is ready' | 28 | @echo 'Kernel: $@ is ready' |
29 | |||
30 | install: | ||
31 | sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)" | ||
diff --git a/arch/blackfin/boot/install.sh b/arch/blackfin/boot/install.sh new file mode 100644 index 000000000000..9560a6b29100 --- /dev/null +++ b/arch/blackfin/boot/install.sh | |||
@@ -0,0 +1,57 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # arch/blackfin/boot/install.sh | ||
4 | # | ||
5 | # This file is subject to the terms and conditions of the GNU General Public | ||
6 | # License. See the file "COPYING" in the main directory of this archive | ||
7 | # for more details. | ||
8 | # | ||
9 | # Copyright (C) 1995 by Linus Torvalds | ||
10 | # | ||
11 | # Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin | ||
12 | # Adapted from code in arch/i386/boot/install.sh by Mike Frysinger | ||
13 | # | ||
14 | # "make install" script for Blackfin architecture | ||
15 | # | ||
16 | # Arguments: | ||
17 | # $1 - kernel version | ||
18 | # $2 - kernel image file | ||
19 | # $3 - kernel map file | ||
20 | # $4 - default install path (blank if root directory) | ||
21 | # | ||
22 | |||
23 | verify () { | ||
24 | if [ ! -f "$1" ]; then | ||
25 | echo "" 1>&2 | ||
26 | echo " *** Missing file: $1" 1>&2 | ||
27 | echo ' *** You need to run "make" before "make install".' 1>&2 | ||
28 | echo "" 1>&2 | ||
29 | exit 1 | ||
30 | fi | ||
31 | } | ||
32 | |||
33 | # Make sure the files actually exist | ||
34 | verify "$2" | ||
35 | verify "$3" | ||
36 | |||
37 | # User may have a custom install script | ||
38 | |||
39 | if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi | ||
40 | if which ${CROSS_COMPILE}installkernel >/dev/null 2>&1; then | ||
41 | exec ${CROSS_COMPILE}installkernel "$@" | ||
42 | fi | ||
43 | |||
44 | # Default install - same as make zlilo | ||
45 | |||
46 | back_it_up() { | ||
47 | local file=$1 | ||
48 | [ -f ${file} ] || return 0 | ||
49 | local stamp=$(stat -c %Y ${file} 2>/dev/null) | ||
50 | mv ${file} ${file}.${stamp:-old} | ||
51 | } | ||
52 | |||
53 | back_it_up $4/uImage | ||
54 | back_it_up $4/System.map | ||
55 | |||
56 | cat $2 > $4/uImage | ||
57 | cp $3 $4/System.map | ||
diff --git a/arch/blackfin/configs/BF527-EZKIT_defconfig b/arch/blackfin/configs/BF527-EZKIT_defconfig new file mode 100644 index 000000000000..df974e785ee2 --- /dev/null +++ b/arch/blackfin/configs/BF527-EZKIT_defconfig | |||
@@ -0,0 +1,1241 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.22.9 | ||
4 | # | ||
5 | # CONFIG_MMU is not set | ||
6 | # CONFIG_FPU is not set | ||
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
8 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | ||
9 | CONFIG_BLACKFIN=y | ||
10 | CONFIG_ZONE_DMA=y | ||
11 | CONFIG_BFIN=y | ||
12 | CONFIG_SEMAPHORE_SLEEPERS=y | ||
13 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
14 | CONFIG_GENERIC_HWEIGHT=y | ||
15 | CONFIG_GENERIC_HARDIRQS=y | ||
16 | CONFIG_GENERIC_IRQ_PROBE=y | ||
17 | # CONFIG_GENERIC_TIME is not set | ||
18 | CONFIG_GENERIC_GPIO=y | ||
19 | CONFIG_FORCE_MAX_ZONEORDER=14 | ||
20 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
21 | CONFIG_IRQCHIP_DEMUX_GPIO=y | ||
22 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
23 | |||
24 | # | ||
25 | # Code maturity level options | ||
26 | # | ||
27 | CONFIG_EXPERIMENTAL=y | ||
28 | CONFIG_BROKEN_ON_SMP=y | ||
29 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
30 | |||
31 | # | ||
32 | # General setup | ||
33 | # | ||
34 | CONFIG_LOCALVERSION="" | ||
35 | CONFIG_LOCALVERSION_AUTO=y | ||
36 | CONFIG_SYSVIPC=y | ||
37 | # CONFIG_IPC_NS is not set | ||
38 | CONFIG_SYSVIPC_SYSCTL=y | ||
39 | # CONFIG_POSIX_MQUEUE is not set | ||
40 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
41 | # CONFIG_TASKSTATS is not set | ||
42 | # CONFIG_UTS_NS is not set | ||
43 | # CONFIG_AUDIT is not set | ||
44 | CONFIG_IKCONFIG=y | ||
45 | CONFIG_IKCONFIG_PROC=y | ||
46 | CONFIG_LOG_BUF_SHIFT=14 | ||
47 | CONFIG_SYSFS_DEPRECATED=y | ||
48 | # CONFIG_RELAY is not set | ||
49 | CONFIG_BLK_DEV_INITRD=y | ||
50 | CONFIG_INITRAMFS_SOURCE="" | ||
51 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
52 | CONFIG_SYSCTL=y | ||
53 | CONFIG_EMBEDDED=y | ||
54 | CONFIG_UID16=y | ||
55 | CONFIG_SYSCTL_SYSCALL=y | ||
56 | CONFIG_KALLSYMS=y | ||
57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
58 | CONFIG_HOTPLUG=y | ||
59 | CONFIG_PRINTK=y | ||
60 | CONFIG_BUG=y | ||
61 | CONFIG_ELF_CORE=y | ||
62 | CONFIG_BASE_FULL=y | ||
63 | CONFIG_FUTEX=y | ||
64 | CONFIG_ANON_INODES=y | ||
65 | CONFIG_EPOLL=y | ||
66 | CONFIG_SIGNALFD=y | ||
67 | CONFIG_EVENTFD=y | ||
68 | CONFIG_VM_EVENT_COUNTERS=y | ||
69 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | ||
70 | # CONFIG_NP2 is not set | ||
71 | CONFIG_SLAB=y | ||
72 | # CONFIG_SLUB is not set | ||
73 | # CONFIG_SLOB is not set | ||
74 | CONFIG_RT_MUTEXES=y | ||
75 | CONFIG_TINY_SHMEM=y | ||
76 | CONFIG_BASE_SMALL=0 | ||
77 | |||
78 | # | ||
79 | # Loadable module support | ||
80 | # | ||
81 | CONFIG_MODULES=y | ||
82 | CONFIG_MODULE_UNLOAD=y | ||
83 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
84 | # CONFIG_MODVERSIONS is not set | ||
85 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
86 | CONFIG_KMOD=y | ||
87 | |||
88 | # | ||
89 | # Block layer | ||
90 | # | ||
91 | CONFIG_BLOCK=y | ||
92 | # CONFIG_LBD is not set | ||
93 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
94 | # CONFIG_LSF is not set | ||
95 | |||
96 | # | ||
97 | # IO Schedulers | ||
98 | # | ||
99 | CONFIG_IOSCHED_NOOP=y | ||
100 | CONFIG_IOSCHED_AS=y | ||
101 | # CONFIG_IOSCHED_DEADLINE is not set | ||
102 | CONFIG_IOSCHED_CFQ=y | ||
103 | CONFIG_DEFAULT_AS=y | ||
104 | # CONFIG_DEFAULT_DEADLINE is not set | ||
105 | # CONFIG_DEFAULT_CFQ is not set | ||
106 | # CONFIG_DEFAULT_NOOP is not set | ||
107 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
108 | # CONFIG_PREEMPT_NONE is not set | ||
109 | CONFIG_PREEMPT_VOLUNTARY=y | ||
110 | # CONFIG_PREEMPT is not set | ||
111 | |||
112 | # | ||
113 | # Blackfin Processor Options | ||
114 | # | ||
115 | |||
116 | # | ||
117 | # Processor and Board Settings | ||
118 | # | ||
119 | # CONFIG_BF522 is not set | ||
120 | # CONFIG_BF525 is not set | ||
121 | CONFIG_BF527=y | ||
122 | # CONFIG_BF531 is not set | ||
123 | # CONFIG_BF532 is not set | ||
124 | # CONFIG_BF533 is not set | ||
125 | # CONFIG_BF534 is not set | ||
126 | # CONFIG_BF536 is not set | ||
127 | # CONFIG_BF537 is not set | ||
128 | # CONFIG_BF542 is not set | ||
129 | # CONFIG_BF544 is not set | ||
130 | # CONFIG_BF548 is not set | ||
131 | # CONFIG_BF549 is not set | ||
132 | # CONFIG_BF561 is not set | ||
133 | CONFIG_BF_REV_0_0=y | ||
134 | # CONFIG_BF_REV_0_1 is not set | ||
135 | # CONFIG_BF_REV_0_2 is not set | ||
136 | # CONFIG_BF_REV_0_3 is not set | ||
137 | # CONFIG_BF_REV_0_4 is not set | ||
138 | # CONFIG_BF_REV_0_5 is not set | ||
139 | # CONFIG_BF_REV_ANY is not set | ||
140 | # CONFIG_BF_REV_NONE is not set | ||
141 | CONFIG_BF52x=y | ||
142 | CONFIG_BFIN_SINGLE_CORE=y | ||
143 | CONFIG_BFIN527_EZKIT=y | ||
144 | # CONFIG_BFIN533_EZKIT is not set | ||
145 | # CONFIG_BFIN533_STAMP is not set | ||
146 | # CONFIG_BFIN537_STAMP is not set | ||
147 | # CONFIG_BFIN533_BLUETECHNIX_CM is not set | ||
148 | # CONFIG_BFIN537_BLUETECHNIX_CM is not set | ||
149 | # CONFIG_BFIN548_EZKIT is not set | ||
150 | # CONFIG_BFIN561_BLUETECHNIX_CM is not set | ||
151 | # CONFIG_BFIN561_EZKIT is not set | ||
152 | # CONFIG_BFIN561_TEPLA is not set | ||
153 | # CONFIG_PNAV10 is not set | ||
154 | # CONFIG_GENERIC_BOARD is not set | ||
155 | CONFIG_MEM_MT48LC32M16A2TG_75=y | ||
156 | |||
157 | # | ||
158 | # BF527 Specific Configuration | ||
159 | # | ||
160 | |||
161 | # | ||
162 | # Alternative Multiplexing Scheme | ||
163 | # | ||
164 | # CONFIG_BF527_SPORT0_PORTF is not set | ||
165 | CONFIG_BF527_SPORT0_PORTG=y | ||
166 | CONFIG_BF527_SPORT0_TSCLK_PG10=y | ||
167 | # CONFIG_BF527_SPORT0_TSCLK_PG14 is not set | ||
168 | # CONFIG_BF527_UART1_PORTF is not set | ||
169 | CONFIG_BF527_UART1_PORTG=y | ||
170 | # CONFIG_BF527_NAND_D_PORTF is not set | ||
171 | CONFIG_BF527_NAND_D_PORTH=y | ||
172 | |||
173 | # | ||
174 | # Interrupt Priority Assignment | ||
175 | # | ||
176 | |||
177 | # | ||
178 | # Priority | ||
179 | # | ||
180 | CONFIG_IRQ_PLL_WAKEUP=7 | ||
181 | CONFIG_IRQ_DMA0_ERROR=7 | ||
182 | CONFIG_IRQ_DMAR0_BLK=7 | ||
183 | CONFIG_IRQ_DMAR1_BLK=7 | ||
184 | CONFIG_IRQ_DMAR0_OVR=7 | ||
185 | CONFIG_IRQ_DMAR1_OVR=7 | ||
186 | CONFIG_IRQ_PPI_ERROR=7 | ||
187 | CONFIG_IRQ_MAC_ERROR=7 | ||
188 | CONFIG_IRQ_SPORT0_ERROR=7 | ||
189 | CONFIG_IRQ_SPORT1_ERROR=7 | ||
190 | CONFIG_IRQ_UART0_ERROR=7 | ||
191 | CONFIG_IRQ_UART1_ERROR=7 | ||
192 | CONFIG_IRQ_RTC=8 | ||
193 | CONFIG_IRQ_PPI=8 | ||
194 | CONFIG_IRQ_SPORT0_RX=9 | ||
195 | CONFIG_IRQ_SPORT0_TX=9 | ||
196 | CONFIG_IRQ_SPORT1_RX=9 | ||
197 | CONFIG_IRQ_SPORT1_TX=9 | ||
198 | CONFIG_IRQ_TWI=10 | ||
199 | CONFIG_IRQ_SPI=10 | ||
200 | CONFIG_IRQ_UART0_RX=10 | ||
201 | CONFIG_IRQ_UART0_TX=10 | ||
202 | CONFIG_IRQ_UART1_RX=10 | ||
203 | CONFIG_IRQ_UART1_TX=10 | ||
204 | CONFIG_IRQ_OPTSEC=11 | ||
205 | CONFIG_IRQ_CNT=11 | ||
206 | CONFIG_IRQ_MAC_RX=11 | ||
207 | CONFIG_IRQ_PORTH_INTA=11 | ||
208 | CONFIG_IRQ_MAC_TX=11 | ||
209 | CONFIG_IRQ_PORTH_INTB=11 | ||
210 | CONFIG_IRQ_TMR0=12 | ||
211 | CONFIG_IRQ_TMR1=12 | ||
212 | CONFIG_IRQ_TMR2=12 | ||
213 | CONFIG_IRQ_TMR3=12 | ||
214 | CONFIG_IRQ_TMR4=12 | ||
215 | CONFIG_IRQ_TMR5=12 | ||
216 | CONFIG_IRQ_TMR6=12 | ||
217 | CONFIG_IRQ_TMR7=12 | ||
218 | CONFIG_IRQ_PORTG_INTA=12 | ||
219 | CONFIG_IRQ_PORTG_INTB=12 | ||
220 | CONFIG_IRQ_MEM_DMA0=13 | ||
221 | CONFIG_IRQ_MEM_DMA1=13 | ||
222 | CONFIG_IRQ_WATCH=13 | ||
223 | CONFIG_IRQ_PORTF_INTA=13 | ||
224 | CONFIG_IRQ_PORTF_INTB=13 | ||
225 | CONFIG_IRQ_SPI_ERROR=7 | ||
226 | CONFIG_IRQ_NFC_ERROR=7 | ||
227 | CONFIG_IRQ_HDMA_ERROR=7 | ||
228 | CONFIG_IRQ_HDMA=7 | ||
229 | CONFIG_IRQ_USB_EINT=10 | ||
230 | CONFIG_IRQ_USB_INT0=11 | ||
231 | CONFIG_IRQ_USB_INT1=11 | ||
232 | CONFIG_IRQ_USB_INT2=11 | ||
233 | CONFIG_IRQ_USB_DMA=11 | ||
234 | |||
235 | # | ||
236 | # Board customizations | ||
237 | # | ||
238 | # CONFIG_CMDLINE_BOOL is not set | ||
239 | |||
240 | # | ||
241 | # Clock/PLL Setup | ||
242 | # | ||
243 | CONFIG_CLKIN_HZ=25000000 | ||
244 | # CONFIG_BFIN_KERNEL_CLOCK is not set | ||
245 | CONFIG_MAX_VCO_HZ=600000000 | ||
246 | CONFIG_MIN_VCO_HZ=50000000 | ||
247 | CONFIG_MAX_SCLK_HZ=133000000 | ||
248 | CONFIG_MIN_SCLK_HZ=27000000 | ||
249 | |||
250 | # | ||
251 | # Kernel Timer/Scheduler | ||
252 | # | ||
253 | # CONFIG_HZ_100 is not set | ||
254 | CONFIG_HZ_250=y | ||
255 | # CONFIG_HZ_300 is not set | ||
256 | # CONFIG_HZ_1000 is not set | ||
257 | CONFIG_HZ=250 | ||
258 | |||
259 | # | ||
260 | # Memory Setup | ||
261 | # | ||
262 | CONFIG_MEM_SIZE=64 | ||
263 | CONFIG_MEM_ADD_WIDTH=10 | ||
264 | CONFIG_BOOT_LOAD=0x1000 | ||
265 | CONFIG_BFIN_SCRATCH_REG_RETN=y | ||
266 | # CONFIG_BFIN_SCRATCH_REG_RETE is not set | ||
267 | # CONFIG_BFIN_SCRATCH_REG_CYCLES is not set | ||
268 | |||
269 | # | ||
270 | # Blackfin Kernel Optimizations | ||
271 | # | ||
272 | |||
273 | # | ||
274 | # Memory Optimizations | ||
275 | # | ||
276 | CONFIG_I_ENTRY_L1=y | ||
277 | CONFIG_EXCPT_IRQ_SYSC_L1=y | ||
278 | CONFIG_DO_IRQ_L1=y | ||
279 | CONFIG_CORE_TIMER_IRQ_L1=y | ||
280 | CONFIG_IDLE_L1=y | ||
281 | # CONFIG_SCHEDULE_L1 is not set | ||
282 | CONFIG_ARITHMETIC_OPS_L1=y | ||
283 | CONFIG_ACCESS_OK_L1=y | ||
284 | # CONFIG_MEMSET_L1 is not set | ||
285 | # CONFIG_MEMCPY_L1 is not set | ||
286 | # CONFIG_SYS_BFIN_SPINLOCK_L1 is not set | ||
287 | # CONFIG_IP_CHECKSUM_L1 is not set | ||
288 | CONFIG_CACHELINE_ALIGNED_L1=y | ||
289 | # CONFIG_SYSCALL_TAB_L1 is not set | ||
290 | # CONFIG_CPLB_SWITCH_TAB_L1 is not set | ||
291 | CONFIG_RAMKERNEL=y | ||
292 | # CONFIG_ROMKERNEL is not set | ||
293 | CONFIG_SELECT_MEMORY_MODEL=y | ||
294 | CONFIG_FLATMEM_MANUAL=y | ||
295 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
296 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
297 | CONFIG_FLATMEM=y | ||
298 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
299 | # CONFIG_SPARSEMEM_STATIC is not set | ||
300 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
301 | # CONFIG_RESOURCES_64BIT is not set | ||
302 | CONFIG_ZONE_DMA_FLAG=1 | ||
303 | CONFIG_LARGE_ALLOCS=y | ||
304 | CONFIG_BFIN_DMA_5XX=y | ||
305 | # CONFIG_DMA_UNCACHED_2M is not set | ||
306 | CONFIG_DMA_UNCACHED_1M=y | ||
307 | # CONFIG_DMA_UNCACHED_NONE is not set | ||
308 | |||
309 | # | ||
310 | # Cache Support | ||
311 | # | ||
312 | CONFIG_BFIN_ICACHE=y | ||
313 | CONFIG_BFIN_DCACHE=y | ||
314 | # CONFIG_BFIN_DCACHE_BANKA is not set | ||
315 | # CONFIG_BFIN_ICACHE_LOCK is not set | ||
316 | # CONFIG_BFIN_WB is not set | ||
317 | CONFIG_BFIN_WT=y | ||
318 | CONFIG_L1_MAX_PIECE=16 | ||
319 | |||
320 | # | ||
321 | # Asynchonous Memory Configuration | ||
322 | # | ||
323 | |||
324 | # | ||
325 | # EBIU_AMBCTL Global Control | ||
326 | # | ||
327 | CONFIG_C_AMCKEN=y | ||
328 | CONFIG_C_CDPRIO=y | ||
329 | # CONFIG_C_AMBEN is not set | ||
330 | # CONFIG_C_AMBEN_B0 is not set | ||
331 | # CONFIG_C_AMBEN_B0_B1 is not set | ||
332 | # CONFIG_C_AMBEN_B0_B1_B2 is not set | ||
333 | CONFIG_C_AMBEN_ALL=y | ||
334 | |||
335 | # | ||
336 | # EBIU_AMBCTL Control | ||
337 | # | ||
338 | CONFIG_BANK_0=0x7BB0 | ||
339 | CONFIG_BANK_1=0x5554 | ||
340 | CONFIG_BANK_2=0x7BB0 | ||
341 | CONFIG_BANK_3=0xFFC0 | ||
342 | |||
343 | # | ||
344 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | ||
345 | # | ||
346 | # CONFIG_PCI is not set | ||
347 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
348 | |||
349 | # | ||
350 | # PCCARD (PCMCIA/CardBus) support | ||
351 | # | ||
352 | # CONFIG_PCCARD is not set | ||
353 | |||
354 | # | ||
355 | # Executable file formats | ||
356 | # | ||
357 | CONFIG_BINFMT_ELF_FDPIC=y | ||
358 | CONFIG_BINFMT_FLAT=y | ||
359 | CONFIG_BINFMT_ZFLAT=y | ||
360 | # CONFIG_BINFMT_SHARED_FLAT is not set | ||
361 | # CONFIG_BINFMT_MISC is not set | ||
362 | |||
363 | # | ||
364 | # Power management options | ||
365 | # | ||
366 | # CONFIG_PM is not set | ||
367 | |||
368 | # | ||
369 | # Networking | ||
370 | # | ||
371 | CONFIG_NET=y | ||
372 | |||
373 | # | ||
374 | # Networking options | ||
375 | # | ||
376 | CONFIG_PACKET=y | ||
377 | # CONFIG_PACKET_MMAP is not set | ||
378 | CONFIG_UNIX=y | ||
379 | CONFIG_XFRM=y | ||
380 | # CONFIG_XFRM_USER is not set | ||
381 | # CONFIG_XFRM_SUB_POLICY is not set | ||
382 | # CONFIG_XFRM_MIGRATE is not set | ||
383 | # CONFIG_NET_KEY is not set | ||
384 | CONFIG_INET=y | ||
385 | # CONFIG_IP_MULTICAST is not set | ||
386 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
387 | CONFIG_IP_FIB_HASH=y | ||
388 | CONFIG_IP_PNP=y | ||
389 | # CONFIG_IP_PNP_DHCP is not set | ||
390 | # CONFIG_IP_PNP_BOOTP is not set | ||
391 | # CONFIG_IP_PNP_RARP is not set | ||
392 | # CONFIG_NET_IPIP is not set | ||
393 | # CONFIG_NET_IPGRE is not set | ||
394 | # CONFIG_ARPD is not set | ||
395 | CONFIG_SYN_COOKIES=y | ||
396 | # CONFIG_INET_AH is not set | ||
397 | # CONFIG_INET_ESP is not set | ||
398 | # CONFIG_INET_IPCOMP is not set | ||
399 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
400 | # CONFIG_INET_TUNNEL is not set | ||
401 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
402 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
403 | CONFIG_INET_XFRM_MODE_BEET=y | ||
404 | CONFIG_INET_DIAG=y | ||
405 | CONFIG_INET_TCP_DIAG=y | ||
406 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
407 | CONFIG_TCP_CONG_CUBIC=y | ||
408 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
409 | # CONFIG_TCP_MD5SIG is not set | ||
410 | # CONFIG_IPV6 is not set | ||
411 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
412 | # CONFIG_INET6_TUNNEL is not set | ||
413 | # CONFIG_NETLABEL is not set | ||
414 | # CONFIG_NETWORK_SECMARK is not set | ||
415 | # CONFIG_NETFILTER is not set | ||
416 | # CONFIG_IP_DCCP is not set | ||
417 | # CONFIG_IP_SCTP is not set | ||
418 | # CONFIG_TIPC is not set | ||
419 | # CONFIG_ATM is not set | ||
420 | # CONFIG_BRIDGE is not set | ||
421 | # CONFIG_VLAN_8021Q is not set | ||
422 | # CONFIG_DECNET is not set | ||
423 | # CONFIG_LLC2 is not set | ||
424 | # CONFIG_IPX is not set | ||
425 | # CONFIG_ATALK is not set | ||
426 | # CONFIG_X25 is not set | ||
427 | # CONFIG_LAPB is not set | ||
428 | # CONFIG_ECONET is not set | ||
429 | # CONFIG_WAN_ROUTER is not set | ||
430 | |||
431 | # | ||
432 | # QoS and/or fair queueing | ||
433 | # | ||
434 | # CONFIG_NET_SCHED is not set | ||
435 | |||
436 | # | ||
437 | # Network testing | ||
438 | # | ||
439 | # CONFIG_NET_PKTGEN is not set | ||
440 | # CONFIG_HAMRADIO is not set | ||
441 | # CONFIG_IRDA is not set | ||
442 | # CONFIG_BT is not set | ||
443 | # CONFIG_AF_RXRPC is not set | ||
444 | |||
445 | # | ||
446 | # Wireless | ||
447 | # | ||
448 | # CONFIG_CFG80211 is not set | ||
449 | # CONFIG_WIRELESS_EXT is not set | ||
450 | # CONFIG_MAC80211 is not set | ||
451 | # CONFIG_IEEE80211 is not set | ||
452 | # CONFIG_RFKILL is not set | ||
453 | |||
454 | # | ||
455 | # Device Drivers | ||
456 | # | ||
457 | |||
458 | # | ||
459 | # Generic Driver Options | ||
460 | # | ||
461 | CONFIG_STANDALONE=y | ||
462 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
463 | # CONFIG_FW_LOADER is not set | ||
464 | # CONFIG_SYS_HYPERVISOR is not set | ||
465 | |||
466 | # | ||
467 | # Connector - unified userspace <-> kernelspace linker | ||
468 | # | ||
469 | # CONFIG_CONNECTOR is not set | ||
470 | CONFIG_MTD=y | ||
471 | # CONFIG_MTD_DEBUG is not set | ||
472 | # CONFIG_MTD_CONCAT is not set | ||
473 | CONFIG_MTD_PARTITIONS=y | ||
474 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
475 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
476 | |||
477 | # | ||
478 | # User Modules And Translation Layers | ||
479 | # | ||
480 | CONFIG_MTD_CHAR=m | ||
481 | CONFIG_MTD_BLKDEVS=y | ||
482 | CONFIG_MTD_BLOCK=y | ||
483 | # CONFIG_FTL is not set | ||
484 | # CONFIG_NFTL is not set | ||
485 | # CONFIG_INFTL is not set | ||
486 | # CONFIG_RFD_FTL is not set | ||
487 | # CONFIG_SSFDC is not set | ||
488 | |||
489 | # | ||
490 | # RAM/ROM/Flash chip drivers | ||
491 | # | ||
492 | # CONFIG_MTD_CFI is not set | ||
493 | CONFIG_MTD_JEDECPROBE=m | ||
494 | CONFIG_MTD_GEN_PROBE=m | ||
495 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
496 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
497 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
498 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
499 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
500 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
501 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
502 | CONFIG_MTD_CFI_I1=y | ||
503 | CONFIG_MTD_CFI_I2=y | ||
504 | # CONFIG_MTD_CFI_I4 is not set | ||
505 | # CONFIG_MTD_CFI_I8 is not set | ||
506 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
507 | # CONFIG_MTD_CFI_AMDSTD is not set | ||
508 | # CONFIG_MTD_CFI_STAA is not set | ||
509 | CONFIG_MTD_MW320D=m | ||
510 | CONFIG_MTD_RAM=y | ||
511 | CONFIG_MTD_ROM=m | ||
512 | # CONFIG_MTD_ABSENT is not set | ||
513 | |||
514 | # | ||
515 | # Mapping drivers for chip access | ||
516 | # | ||
517 | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||
518 | # CONFIG_MTD_PHYSMAP is not set | ||
519 | CONFIG_MTD_BF5xx=m | ||
520 | CONFIG_BFIN_FLASH_SIZE=0x400000 | ||
521 | CONFIG_EBIU_FLASH_BASE=0x20000000 | ||
522 | # CONFIG_MTD_UCLINUX is not set | ||
523 | # CONFIG_MTD_PLATRAM is not set | ||
524 | |||
525 | # | ||
526 | # Self-contained MTD device drivers | ||
527 | # | ||
528 | # CONFIG_MTD_DATAFLASH is not set | ||
529 | # CONFIG_MTD_M25P80 is not set | ||
530 | # CONFIG_MTD_SLRAM is not set | ||
531 | # CONFIG_MTD_PHRAM is not set | ||
532 | # CONFIG_MTD_MTDRAM is not set | ||
533 | # CONFIG_MTD_BLOCK2MTD is not set | ||
534 | |||
535 | # | ||
536 | # Disk-On-Chip Device Drivers | ||
537 | # | ||
538 | # CONFIG_MTD_DOC2000 is not set | ||
539 | # CONFIG_MTD_DOC2001 is not set | ||
540 | # CONFIG_MTD_DOC2001PLUS is not set | ||
541 | CONFIG_MTD_NAND=m | ||
542 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
543 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
544 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
545 | CONFIG_MTD_NAND_BFIN=m | ||
546 | CONFIG_BFIN_NAND_BASE=0x20212000 | ||
547 | CONFIG_BFIN_NAND_CLE=2 | ||
548 | CONFIG_BFIN_NAND_ALE=1 | ||
549 | CONFIG_BFIN_NAND_READY=3 | ||
550 | CONFIG_MTD_NAND_IDS=m | ||
551 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
552 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
553 | # CONFIG_MTD_NAND_PLATFORM is not set | ||
554 | # CONFIG_MTD_ONENAND is not set | ||
555 | |||
556 | # | ||
557 | # UBI - Unsorted block images | ||
558 | # | ||
559 | # CONFIG_MTD_UBI is not set | ||
560 | |||
561 | # | ||
562 | # Parallel port support | ||
563 | # | ||
564 | # CONFIG_PARPORT is not set | ||
565 | |||
566 | # | ||
567 | # Plug and Play support | ||
568 | # | ||
569 | # CONFIG_PNPACPI is not set | ||
570 | |||
571 | # | ||
572 | # Block devices | ||
573 | # | ||
574 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
575 | # CONFIG_BLK_DEV_LOOP is not set | ||
576 | # CONFIG_BLK_DEV_NBD is not set | ||
577 | CONFIG_BLK_DEV_RAM=y | ||
578 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
579 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
580 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
581 | # CONFIG_CDROM_PKTCDVD is not set | ||
582 | # CONFIG_ATA_OVER_ETH is not set | ||
583 | |||
584 | # | ||
585 | # Misc devices | ||
586 | # | ||
587 | # CONFIG_IDE is not set | ||
588 | |||
589 | # | ||
590 | # SCSI device support | ||
591 | # | ||
592 | # CONFIG_RAID_ATTRS is not set | ||
593 | # CONFIG_SCSI is not set | ||
594 | # CONFIG_SCSI_NETLINK is not set | ||
595 | # CONFIG_ATA is not set | ||
596 | |||
597 | # | ||
598 | # Multi-device support (RAID and LVM) | ||
599 | # | ||
600 | # CONFIG_MD is not set | ||
601 | |||
602 | # | ||
603 | # Network device support | ||
604 | # | ||
605 | CONFIG_NETDEVICES=y | ||
606 | # CONFIG_DUMMY is not set | ||
607 | # CONFIG_BONDING is not set | ||
608 | # CONFIG_EQUALIZER is not set | ||
609 | # CONFIG_TUN is not set | ||
610 | CONFIG_PHYLIB=y | ||
611 | |||
612 | # | ||
613 | # MII PHY device drivers | ||
614 | # | ||
615 | # CONFIG_MARVELL_PHY is not set | ||
616 | # CONFIG_DAVICOM_PHY is not set | ||
617 | # CONFIG_QSEMI_PHY is not set | ||
618 | # CONFIG_LXT_PHY is not set | ||
619 | # CONFIG_CICADA_PHY is not set | ||
620 | # CONFIG_VITESSE_PHY is not set | ||
621 | # CONFIG_SMSC_PHY is not set | ||
622 | # CONFIG_BROADCOM_PHY is not set | ||
623 | # CONFIG_FIXED_PHY is not set | ||
624 | |||
625 | # | ||
626 | # Ethernet (10 or 100Mbit) | ||
627 | # | ||
628 | CONFIG_NET_ETHERNET=y | ||
629 | CONFIG_MII=y | ||
630 | # CONFIG_SMC91X is not set | ||
631 | CONFIG_BFIN_MAC=y | ||
632 | CONFIG_BFIN_MAC_USE_L1=y | ||
633 | CONFIG_BFIN_TX_DESC_NUM=10 | ||
634 | CONFIG_BFIN_RX_DESC_NUM=20 | ||
635 | CONFIG_BFIN_MAC_RMII=y | ||
636 | # CONFIG_SMSC911X is not set | ||
637 | # CONFIG_DM9000 is not set | ||
638 | CONFIG_NETDEV_1000=y | ||
639 | CONFIG_NETDEV_10000=y | ||
640 | |||
641 | # | ||
642 | # Wireless LAN | ||
643 | # | ||
644 | # CONFIG_WLAN_PRE80211 is not set | ||
645 | # CONFIG_WLAN_80211 is not set | ||
646 | # CONFIG_WAN is not set | ||
647 | # CONFIG_PPP is not set | ||
648 | # CONFIG_SLIP is not set | ||
649 | # CONFIG_SHAPER is not set | ||
650 | # CONFIG_NETCONSOLE is not set | ||
651 | # CONFIG_NETPOLL is not set | ||
652 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
653 | |||
654 | # | ||
655 | # ISDN subsystem | ||
656 | # | ||
657 | # CONFIG_ISDN is not set | ||
658 | |||
659 | # | ||
660 | # Telephony Support | ||
661 | # | ||
662 | # CONFIG_PHONE is not set | ||
663 | |||
664 | # | ||
665 | # Input device support | ||
666 | # | ||
667 | CONFIG_INPUT=y | ||
668 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
669 | # CONFIG_INPUT_POLLDEV is not set | ||
670 | |||
671 | # | ||
672 | # Userland interfaces | ||
673 | # | ||
674 | # CONFIG_INPUT_MOUSEDEV is not set | ||
675 | # CONFIG_INPUT_JOYDEV is not set | ||
676 | # CONFIG_INPUT_TSDEV is not set | ||
677 | # CONFIG_INPUT_EVDEV is not set | ||
678 | # CONFIG_INPUT_EVBUG is not set | ||
679 | |||
680 | # | ||
681 | # Input Device Drivers | ||
682 | # | ||
683 | # CONFIG_INPUT_KEYBOARD is not set | ||
684 | # CONFIG_INPUT_MOUSE is not set | ||
685 | # CONFIG_INPUT_JOYSTICK is not set | ||
686 | # CONFIG_INPUT_TABLET is not set | ||
687 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
688 | CONFIG_INPUT_MISC=y | ||
689 | # CONFIG_INPUT_ATI_REMOTE is not set | ||
690 | # CONFIG_INPUT_ATI_REMOTE2 is not set | ||
691 | # CONFIG_INPUT_KEYSPAN_REMOTE is not set | ||
692 | # CONFIG_INPUT_POWERMATE is not set | ||
693 | # CONFIG_INPUT_YEALINK is not set | ||
694 | # CONFIG_INPUT_UINPUT is not set | ||
695 | # CONFIG_BF53X_PFBUTTONS is not set | ||
696 | # CONFIG_TWI_KEYPAD is not set | ||
697 | |||
698 | # | ||
699 | # Hardware I/O ports | ||
700 | # | ||
701 | # CONFIG_SERIO is not set | ||
702 | # CONFIG_GAMEPORT is not set | ||
703 | |||
704 | # | ||
705 | # Character devices | ||
706 | # | ||
707 | # CONFIG_AD9960 is not set | ||
708 | # CONFIG_SPI_ADC_BF533 is not set | ||
709 | # CONFIG_BF5xx_PFLAGS is not set | ||
710 | # CONFIG_BF5xx_PPIFCD is not set | ||
711 | # CONFIG_BF5xx_TIMERS is not set | ||
712 | # CONFIG_BF5xx_PPI is not set | ||
713 | # CONFIG_BFIN_SPORT is not set | ||
714 | # CONFIG_BFIN_TIMER_LATENCY is not set | ||
715 | # CONFIG_TWI_LCD is not set | ||
716 | # CONFIG_AD5304 is not set | ||
717 | # CONFIG_BF5xx_TEA5764 is not set | ||
718 | # CONFIG_BF5xx_FBDMA is not set | ||
719 | # CONFIG_VT is not set | ||
720 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
721 | |||
722 | # | ||
723 | # Serial drivers | ||
724 | # | ||
725 | # CONFIG_SERIAL_8250 is not set | ||
726 | |||
727 | # | ||
728 | # Non-8250 serial port support | ||
729 | # | ||
730 | CONFIG_SERIAL_BFIN=y | ||
731 | CONFIG_SERIAL_BFIN_CONSOLE=y | ||
732 | # CONFIG_SERIAL_BFIN_DMA is not set | ||
733 | CONFIG_SERIAL_BFIN_PIO=y | ||
734 | # CONFIG_SERIAL_BFIN_UART0 is not set | ||
735 | CONFIG_SERIAL_BFIN_UART1=y | ||
736 | # CONFIG_BFIN_UART1_CTSRTS is not set | ||
737 | CONFIG_SERIAL_CORE=y | ||
738 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
739 | # CONFIG_SERIAL_BFIN_SPORT is not set | ||
740 | CONFIG_UNIX98_PTYS=y | ||
741 | # CONFIG_LEGACY_PTYS is not set | ||
742 | |||
743 | # | ||
744 | # CAN, the car bus and industrial fieldbus | ||
745 | # | ||
746 | # CONFIG_CAN4LINUX is not set | ||
747 | |||
748 | # | ||
749 | # IPMI | ||
750 | # | ||
751 | # CONFIG_IPMI_HANDLER is not set | ||
752 | CONFIG_WATCHDOG=y | ||
753 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
754 | |||
755 | # | ||
756 | # Watchdog Device Drivers | ||
757 | # | ||
758 | # CONFIG_SOFT_WATCHDOG is not set | ||
759 | CONFIG_BFIN_WDT=y | ||
760 | CONFIG_HW_RANDOM=y | ||
761 | # CONFIG_GEN_RTC is not set | ||
762 | # CONFIG_R3964 is not set | ||
763 | # CONFIG_RAW_DRIVER is not set | ||
764 | |||
765 | # | ||
766 | # TPM devices | ||
767 | # | ||
768 | # CONFIG_TCG_TPM is not set | ||
769 | CONFIG_I2C=y | ||
770 | CONFIG_I2C_BOARDINFO=y | ||
771 | CONFIG_I2C_CHARDEV=m | ||
772 | |||
773 | # | ||
774 | # I2C Algorithms | ||
775 | # | ||
776 | # CONFIG_I2C_ALGOBIT is not set | ||
777 | # CONFIG_I2C_ALGOPCF is not set | ||
778 | # CONFIG_I2C_ALGOPCA is not set | ||
779 | |||
780 | # | ||
781 | # I2C Hardware Bus support | ||
782 | # | ||
783 | # CONFIG_I2C_BLACKFIN_GPIO is not set | ||
784 | CONFIG_I2C_BLACKFIN_TWI=m | ||
785 | CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50 | ||
786 | # CONFIG_I2C_GPIO is not set | ||
787 | # CONFIG_I2C_OCORES is not set | ||
788 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
789 | # CONFIG_I2C_SIMTEC is not set | ||
790 | # CONFIG_I2C_STUB is not set | ||
791 | |||
792 | # | ||
793 | # Miscellaneous I2C Chip support | ||
794 | # | ||
795 | # CONFIG_SENSORS_DS1337 is not set | ||
796 | # CONFIG_SENSORS_DS1374 is not set | ||
797 | # CONFIG_SENSORS_AD5252 is not set | ||
798 | # CONFIG_SENSORS_EEPROM is not set | ||
799 | # CONFIG_SENSORS_PCF8574 is not set | ||
800 | # CONFIG_SENSORS_PCF8575 is not set | ||
801 | # CONFIG_SENSORS_PCA9543 is not set | ||
802 | # CONFIG_SENSORS_PCA9539 is not set | ||
803 | # CONFIG_SENSORS_PCF8591 is not set | ||
804 | # CONFIG_SENSORS_MAX6875 is not set | ||
805 | # CONFIG_I2C_DEBUG_CORE is not set | ||
806 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
807 | # CONFIG_I2C_DEBUG_BUS is not set | ||
808 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
809 | |||
810 | # | ||
811 | # SPI support | ||
812 | # | ||
813 | CONFIG_SPI=y | ||
814 | CONFIG_SPI_MASTER=y | ||
815 | |||
816 | # | ||
817 | # SPI Master Controller Drivers | ||
818 | # | ||
819 | CONFIG_SPI_BFIN=y | ||
820 | # CONFIG_SPI_BITBANG is not set | ||
821 | |||
822 | # | ||
823 | # SPI Protocol Masters | ||
824 | # | ||
825 | # CONFIG_SPI_AT25 is not set | ||
826 | # CONFIG_SPI_SPIDEV is not set | ||
827 | |||
828 | # | ||
829 | # Dallas's 1-wire bus | ||
830 | # | ||
831 | # CONFIG_W1 is not set | ||
832 | CONFIG_HWMON=y | ||
833 | # CONFIG_HWMON_VID is not set | ||
834 | # CONFIG_SENSORS_ABITUGURU is not set | ||
835 | # CONFIG_SENSORS_AD7418 is not set | ||
836 | # CONFIG_SENSORS_ADM1021 is not set | ||
837 | # CONFIG_SENSORS_ADM1025 is not set | ||
838 | # CONFIG_SENSORS_ADM1026 is not set | ||
839 | # CONFIG_SENSORS_ADM1029 is not set | ||
840 | # CONFIG_SENSORS_ADM1031 is not set | ||
841 | # CONFIG_SENSORS_ADM9240 is not set | ||
842 | # CONFIG_SENSORS_ASB100 is not set | ||
843 | # CONFIG_SENSORS_ATXP1 is not set | ||
844 | # CONFIG_SENSORS_DS1621 is not set | ||
845 | # CONFIG_SENSORS_F71805F is not set | ||
846 | # CONFIG_SENSORS_FSCHER is not set | ||
847 | # CONFIG_SENSORS_FSCPOS is not set | ||
848 | # CONFIG_SENSORS_GL518SM is not set | ||
849 | # CONFIG_SENSORS_GL520SM is not set | ||
850 | # CONFIG_SENSORS_IT87 is not set | ||
851 | # CONFIG_SENSORS_LM63 is not set | ||
852 | # CONFIG_SENSORS_LM70 is not set | ||
853 | # CONFIG_SENSORS_LM75 is not set | ||
854 | # CONFIG_SENSORS_LM77 is not set | ||
855 | # CONFIG_SENSORS_LM78 is not set | ||
856 | # CONFIG_SENSORS_LM80 is not set | ||
857 | # CONFIG_SENSORS_LM83 is not set | ||
858 | # CONFIG_SENSORS_LM85 is not set | ||
859 | # CONFIG_SENSORS_LM87 is not set | ||
860 | # CONFIG_SENSORS_LM90 is not set | ||
861 | # CONFIG_SENSORS_LM92 is not set | ||
862 | # CONFIG_SENSORS_MAX1619 is not set | ||
863 | # CONFIG_SENSORS_MAX6650 is not set | ||
864 | # CONFIG_SENSORS_PC87360 is not set | ||
865 | # CONFIG_SENSORS_PC87427 is not set | ||
866 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
867 | # CONFIG_SENSORS_SMSC47M192 is not set | ||
868 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
869 | # CONFIG_SENSORS_VT1211 is not set | ||
870 | # CONFIG_SENSORS_W83781D is not set | ||
871 | # CONFIG_SENSORS_W83791D is not set | ||
872 | # CONFIG_SENSORS_W83792D is not set | ||
873 | # CONFIG_SENSORS_W83793 is not set | ||
874 | # CONFIG_SENSORS_W83L785TS is not set | ||
875 | # CONFIG_SENSORS_W83627HF is not set | ||
876 | # CONFIG_SENSORS_W83627EHF is not set | ||
877 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
878 | |||
879 | # | ||
880 | # Multifunction device drivers | ||
881 | # | ||
882 | # CONFIG_MFD_SM501 is not set | ||
883 | |||
884 | # | ||
885 | # Multimedia devices | ||
886 | # | ||
887 | # CONFIG_VIDEO_DEV is not set | ||
888 | # CONFIG_DVB_CORE is not set | ||
889 | # CONFIG_DAB is not set | ||
890 | |||
891 | # | ||
892 | # Graphics support | ||
893 | # | ||
894 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
895 | |||
896 | # | ||
897 | # Display device support | ||
898 | # | ||
899 | # CONFIG_DISPLAY_SUPPORT is not set | ||
900 | # CONFIG_VGASTATE is not set | ||
901 | # CONFIG_FB is not set | ||
902 | |||
903 | # | ||
904 | # Sound | ||
905 | # | ||
906 | # CONFIG_SOUND is not set | ||
907 | |||
908 | # | ||
909 | # HID Devices | ||
910 | # | ||
911 | CONFIG_HID=y | ||
912 | # CONFIG_HID_DEBUG is not set | ||
913 | |||
914 | # | ||
915 | # USB support | ||
916 | # | ||
917 | CONFIG_USB_ARCH_HAS_HCD=y | ||
918 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
919 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
920 | # CONFIG_USB is not set | ||
921 | |||
922 | # | ||
923 | # Enable Host or Gadget support to see Inventra options | ||
924 | # | ||
925 | |||
926 | # | ||
927 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
928 | # | ||
929 | |||
930 | # | ||
931 | # USB Gadget Support | ||
932 | # | ||
933 | # CONFIG_USB_GADGET is not set | ||
934 | # CONFIG_MMC is not set | ||
935 | |||
936 | # | ||
937 | # LED devices | ||
938 | # | ||
939 | # CONFIG_NEW_LEDS is not set | ||
940 | |||
941 | # | ||
942 | # LED drivers | ||
943 | # | ||
944 | |||
945 | # | ||
946 | # LED Triggers | ||
947 | # | ||
948 | |||
949 | # | ||
950 | # InfiniBand support | ||
951 | # | ||
952 | |||
953 | # | ||
954 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
955 | # | ||
956 | |||
957 | # | ||
958 | # Real Time Clock | ||
959 | # | ||
960 | CONFIG_RTC_LIB=y | ||
961 | CONFIG_RTC_CLASS=y | ||
962 | CONFIG_RTC_HCTOSYS=y | ||
963 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | ||
964 | # CONFIG_RTC_DEBUG is not set | ||
965 | |||
966 | # | ||
967 | # RTC interfaces | ||
968 | # | ||
969 | CONFIG_RTC_INTF_SYSFS=y | ||
970 | CONFIG_RTC_INTF_PROC=y | ||
971 | CONFIG_RTC_INTF_DEV=y | ||
972 | # CONFIG_RTC_INTF_DEV_UIE_EMUL is not set | ||
973 | # CONFIG_RTC_DRV_TEST is not set | ||
974 | |||
975 | # | ||
976 | # I2C RTC drivers | ||
977 | # | ||
978 | # CONFIG_RTC_DRV_DS1307 is not set | ||
979 | # CONFIG_RTC_DRV_DS1672 is not set | ||
980 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
981 | # CONFIG_RTC_DRV_RS5C372 is not set | ||
982 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
983 | # CONFIG_RTC_DRV_X1205 is not set | ||
984 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
985 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
986 | |||
987 | # | ||
988 | # SPI RTC drivers | ||
989 | # | ||
990 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
991 | # CONFIG_RTC_DRV_MAX6902 is not set | ||
992 | |||
993 | # | ||
994 | # Platform RTC drivers | ||
995 | # | ||
996 | # CONFIG_RTC_DRV_DS1553 is not set | ||
997 | # CONFIG_RTC_DRV_DS1742 is not set | ||
998 | # CONFIG_RTC_DRV_M48T86 is not set | ||
999 | # CONFIG_RTC_DRV_V3020 is not set | ||
1000 | |||
1001 | # | ||
1002 | # on-CPU RTC drivers | ||
1003 | # | ||
1004 | CONFIG_RTC_DRV_BFIN=y | ||
1005 | |||
1006 | # | ||
1007 | # DMA Engine support | ||
1008 | # | ||
1009 | # CONFIG_DMA_ENGINE is not set | ||
1010 | |||
1011 | # | ||
1012 | # DMA Clients | ||
1013 | # | ||
1014 | |||
1015 | # | ||
1016 | # DMA Devices | ||
1017 | # | ||
1018 | |||
1019 | # | ||
1020 | # PBX support | ||
1021 | # | ||
1022 | # CONFIG_PBX is not set | ||
1023 | |||
1024 | # | ||
1025 | # File systems | ||
1026 | # | ||
1027 | # CONFIG_EXT2_FS is not set | ||
1028 | # CONFIG_EXT3_FS is not set | ||
1029 | # CONFIG_EXT4DEV_FS is not set | ||
1030 | # CONFIG_REISERFS_FS is not set | ||
1031 | # CONFIG_JFS_FS is not set | ||
1032 | # CONFIG_FS_POSIX_ACL is not set | ||
1033 | # CONFIG_XFS_FS is not set | ||
1034 | # CONFIG_GFS2_FS is not set | ||
1035 | # CONFIG_OCFS2_FS is not set | ||
1036 | # CONFIG_MINIX_FS is not set | ||
1037 | # CONFIG_ROMFS_FS is not set | ||
1038 | CONFIG_INOTIFY=y | ||
1039 | CONFIG_INOTIFY_USER=y | ||
1040 | # CONFIG_QUOTA is not set | ||
1041 | # CONFIG_DNOTIFY is not set | ||
1042 | # CONFIG_AUTOFS_FS is not set | ||
1043 | # CONFIG_AUTOFS4_FS is not set | ||
1044 | # CONFIG_FUSE_FS is not set | ||
1045 | |||
1046 | # | ||
1047 | # CD-ROM/DVD Filesystems | ||
1048 | # | ||
1049 | # CONFIG_ISO9660_FS is not set | ||
1050 | # CONFIG_UDF_FS is not set | ||
1051 | |||
1052 | # | ||
1053 | # DOS/FAT/NT Filesystems | ||
1054 | # | ||
1055 | # CONFIG_MSDOS_FS is not set | ||
1056 | # CONFIG_VFAT_FS is not set | ||
1057 | # CONFIG_NTFS_FS is not set | ||
1058 | |||
1059 | # | ||
1060 | # Pseudo filesystems | ||
1061 | # | ||
1062 | CONFIG_PROC_FS=y | ||
1063 | CONFIG_PROC_SYSCTL=y | ||
1064 | CONFIG_SYSFS=y | ||
1065 | # CONFIG_TMPFS is not set | ||
1066 | # CONFIG_HUGETLB_PAGE is not set | ||
1067 | CONFIG_RAMFS=y | ||
1068 | # CONFIG_CONFIGFS_FS is not set | ||
1069 | |||
1070 | # | ||
1071 | # Miscellaneous filesystems | ||
1072 | # | ||
1073 | # CONFIG_ADFS_FS is not set | ||
1074 | # CONFIG_AFFS_FS is not set | ||
1075 | # CONFIG_HFS_FS is not set | ||
1076 | # CONFIG_HFSPLUS_FS is not set | ||
1077 | # CONFIG_BEFS_FS is not set | ||
1078 | # CONFIG_BFS_FS is not set | ||
1079 | # CONFIG_EFS_FS is not set | ||
1080 | CONFIG_YAFFS_FS=m | ||
1081 | CONFIG_YAFFS_YAFFS1=y | ||
1082 | # CONFIG_YAFFS_DOES_ECC is not set | ||
1083 | CONFIG_YAFFS_YAFFS2=y | ||
1084 | CONFIG_YAFFS_AUTO_YAFFS2=y | ||
1085 | # CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set | ||
1086 | CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10 | ||
1087 | # CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set | ||
1088 | # CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set | ||
1089 | CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y | ||
1090 | CONFIG_JFFS2_FS=m | ||
1091 | CONFIG_JFFS2_FS_DEBUG=0 | ||
1092 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
1093 | # CONFIG_JFFS2_SUMMARY is not set | ||
1094 | # CONFIG_JFFS2_FS_XATTR is not set | ||
1095 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
1096 | CONFIG_JFFS2_ZLIB=y | ||
1097 | CONFIG_JFFS2_RTIME=y | ||
1098 | # CONFIG_JFFS2_RUBIN is not set | ||
1099 | # CONFIG_CRAMFS is not set | ||
1100 | # CONFIG_VXFS_FS is not set | ||
1101 | # CONFIG_HPFS_FS is not set | ||
1102 | # CONFIG_QNX4FS_FS is not set | ||
1103 | # CONFIG_SYSV_FS is not set | ||
1104 | # CONFIG_UFS_FS is not set | ||
1105 | |||
1106 | # | ||
1107 | # Network File Systems | ||
1108 | # | ||
1109 | CONFIG_NFS_FS=m | ||
1110 | CONFIG_NFS_V3=y | ||
1111 | # CONFIG_NFS_V3_ACL is not set | ||
1112 | # CONFIG_NFS_V4 is not set | ||
1113 | # CONFIG_NFS_DIRECTIO is not set | ||
1114 | # CONFIG_NFSD is not set | ||
1115 | CONFIG_LOCKD=m | ||
1116 | CONFIG_LOCKD_V4=y | ||
1117 | CONFIG_NFS_COMMON=y | ||
1118 | CONFIG_SUNRPC=m | ||
1119 | # CONFIG_SUNRPC_BIND34 is not set | ||
1120 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
1121 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
1122 | CONFIG_SMB_FS=m | ||
1123 | # CONFIG_SMB_NLS_DEFAULT is not set | ||
1124 | # CONFIG_CIFS is not set | ||
1125 | # CONFIG_NCP_FS is not set | ||
1126 | # CONFIG_CODA_FS is not set | ||
1127 | # CONFIG_AFS_FS is not set | ||
1128 | # CONFIG_9P_FS is not set | ||
1129 | |||
1130 | # | ||
1131 | # Partition Types | ||
1132 | # | ||
1133 | # CONFIG_PARTITION_ADVANCED is not set | ||
1134 | CONFIG_MSDOS_PARTITION=y | ||
1135 | |||
1136 | # | ||
1137 | # Native Language Support | ||
1138 | # | ||
1139 | CONFIG_NLS=m | ||
1140 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
1141 | # CONFIG_NLS_CODEPAGE_437 is not set | ||
1142 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
1143 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
1144 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
1145 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
1146 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
1147 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
1148 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
1149 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
1150 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
1151 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
1152 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
1153 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
1154 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
1155 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
1156 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
1157 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
1158 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
1159 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
1160 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
1161 | # CONFIG_NLS_ISO8859_8 is not set | ||
1162 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
1163 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
1164 | # CONFIG_NLS_ASCII is not set | ||
1165 | # CONFIG_NLS_ISO8859_1 is not set | ||
1166 | # CONFIG_NLS_ISO8859_2 is not set | ||
1167 | # CONFIG_NLS_ISO8859_3 is not set | ||
1168 | # CONFIG_NLS_ISO8859_4 is not set | ||
1169 | # CONFIG_NLS_ISO8859_5 is not set | ||
1170 | # CONFIG_NLS_ISO8859_6 is not set | ||
1171 | # CONFIG_NLS_ISO8859_7 is not set | ||
1172 | # CONFIG_NLS_ISO8859_9 is not set | ||
1173 | # CONFIG_NLS_ISO8859_13 is not set | ||
1174 | # CONFIG_NLS_ISO8859_14 is not set | ||
1175 | # CONFIG_NLS_ISO8859_15 is not set | ||
1176 | # CONFIG_NLS_KOI8_R is not set | ||
1177 | # CONFIG_NLS_KOI8_U is not set | ||
1178 | # CONFIG_NLS_UTF8 is not set | ||
1179 | |||
1180 | # | ||
1181 | # Distributed Lock Manager | ||
1182 | # | ||
1183 | # CONFIG_DLM is not set | ||
1184 | |||
1185 | # | ||
1186 | # Profiling support | ||
1187 | # | ||
1188 | # CONFIG_PROFILING is not set | ||
1189 | |||
1190 | # | ||
1191 | # Kernel hacking | ||
1192 | # | ||
1193 | # CONFIG_PRINTK_TIME is not set | ||
1194 | CONFIG_ENABLE_MUST_CHECK=y | ||
1195 | CONFIG_MAGIC_SYSRQ=y | ||
1196 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1197 | CONFIG_DEBUG_FS=y | ||
1198 | # CONFIG_HEADERS_CHECK is not set | ||
1199 | # CONFIG_DEBUG_KERNEL is not set | ||
1200 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
1201 | CONFIG_DEBUG_MMRS=y | ||
1202 | CONFIG_DEBUG_HUNT_FOR_ZERO=y | ||
1203 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y | ||
1204 | CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF=y | ||
1205 | # CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE is not set | ||
1206 | # CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set | ||
1207 | CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0 | ||
1208 | # CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set | ||
1209 | # CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set | ||
1210 | CONFIG_EARLY_PRINTK=y | ||
1211 | CONFIG_CPLB_INFO=y | ||
1212 | CONFIG_ACCESS_CHECK=y | ||
1213 | |||
1214 | # | ||
1215 | # Security options | ||
1216 | # | ||
1217 | # CONFIG_KEYS is not set | ||
1218 | CONFIG_SECURITY=y | ||
1219 | # CONFIG_SECURITY_NETWORK is not set | ||
1220 | CONFIG_SECURITY_CAPABILITIES=y | ||
1221 | |||
1222 | # | ||
1223 | # Cryptographic options | ||
1224 | # | ||
1225 | # CONFIG_CRYPTO is not set | ||
1226 | |||
1227 | # | ||
1228 | # Library routines | ||
1229 | # | ||
1230 | CONFIG_BITREVERSE=y | ||
1231 | # CONFIG_CRC_CCITT is not set | ||
1232 | # CONFIG_CRC16 is not set | ||
1233 | # CONFIG_CRC_ITU_T is not set | ||
1234 | CONFIG_CRC32=y | ||
1235 | # CONFIG_LIBCRC32C is not set | ||
1236 | CONFIG_ZLIB_INFLATE=y | ||
1237 | CONFIG_ZLIB_DEFLATE=m | ||
1238 | CONFIG_PLIST=y | ||
1239 | CONFIG_HAS_IOMEM=y | ||
1240 | CONFIG_HAS_IOPORT=y | ||
1241 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/blackfin/configs/BF548-EZKIT_defconfig b/arch/blackfin/configs/BF548-EZKIT_defconfig index e80f3d59c283..d8569888a1c8 100644 --- a/arch/blackfin/configs/BF548-EZKIT_defconfig +++ b/arch/blackfin/configs/BF548-EZKIT_defconfig | |||
@@ -809,7 +809,14 @@ CONFIG_UNIX98_PTYS=y | |||
809 | # IPMI | 809 | # IPMI |
810 | # | 810 | # |
811 | # CONFIG_IPMI_HANDLER is not set | 811 | # CONFIG_IPMI_HANDLER is not set |
812 | # CONFIG_WATCHDOG is not set | 812 | CONFIG_WATCHDOG=y |
813 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
814 | |||
815 | # | ||
816 | # Watchdog Device Drivers | ||
817 | # | ||
818 | # CONFIG_SOFT_WATCHDOG is not set | ||
819 | CONFIG_BFIN_WDT=y | ||
813 | CONFIG_HW_RANDOM=y | 820 | CONFIG_HW_RANDOM=y |
814 | # CONFIG_GEN_RTC is not set | 821 | # CONFIG_GEN_RTC is not set |
815 | # CONFIG_R3964 is not set | 822 | # CONFIG_R3964 is not set |
diff --git a/arch/blackfin/kernel/Makefile b/arch/blackfin/kernel/Makefile index 8aeb6066b19b..8a4cfb293b27 100644 --- a/arch/blackfin/kernel/Makefile +++ b/arch/blackfin/kernel/Makefile | |||
@@ -9,6 +9,7 @@ obj-y := \ | |||
9 | sys_bfin.o time.o traps.o irqchip.o dma-mapping.o flat.o \ | 9 | sys_bfin.o time.o traps.o irqchip.o dma-mapping.o flat.o \ |
10 | fixed_code.o cplbinit.o cacheinit.o reboot.o bfin_gpio.o | 10 | fixed_code.o cplbinit.o cacheinit.o reboot.o bfin_gpio.o |
11 | 11 | ||
12 | obj-$(CONFIG_BFIN_GPTIMERS) += gptimers.o | ||
12 | obj-$(CONFIG_MODULES) += module.o | 13 | obj-$(CONFIG_MODULES) += module.o |
13 | obj-$(CONFIG_BFIN_DMA_5XX) += bfin_dma_5xx.o | 14 | obj-$(CONFIG_BFIN_DMA_5XX) += bfin_dma_5xx.o |
14 | obj-$(CONFIG_DUAL_CORE_TEST_MODULE) += dualcore_test.o | 15 | obj-$(CONFIG_DUAL_CORE_TEST_MODULE) += dualcore_test.o |
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c index e19164fb4cd1..503eef4c7fec 100644 --- a/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/arch/blackfin/kernel/bfin_dma_5xx.c | |||
@@ -420,6 +420,32 @@ unsigned short get_dma_curr_ycount(unsigned int channel) | |||
420 | } | 420 | } |
421 | EXPORT_SYMBOL(get_dma_curr_ycount); | 421 | EXPORT_SYMBOL(get_dma_curr_ycount); |
422 | 422 | ||
423 | unsigned long get_dma_next_desc_ptr(unsigned int channel) | ||
424 | { | ||
425 | BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE | ||
426 | && channel < MAX_BLACKFIN_DMA_CHANNEL)); | ||
427 | |||
428 | return dma_ch[channel].regs->next_desc_ptr; | ||
429 | } | ||
430 | EXPORT_SYMBOL(get_dma_next_desc_ptr); | ||
431 | |||
432 | unsigned long get_dma_curr_desc_ptr(unsigned int channel) | ||
433 | { | ||
434 | BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE | ||
435 | && channel < MAX_BLACKFIN_DMA_CHANNEL)); | ||
436 | |||
437 | return dma_ch[channel].regs->curr_desc_ptr; | ||
438 | } | ||
439 | |||
440 | unsigned long get_dma_curr_addr(unsigned int channel) | ||
441 | { | ||
442 | BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE | ||
443 | && channel < MAX_BLACKFIN_DMA_CHANNEL)); | ||
444 | |||
445 | return dma_ch[channel].regs->curr_addr_ptr; | ||
446 | } | ||
447 | EXPORT_SYMBOL(get_dma_curr_addr); | ||
448 | |||
423 | static void *__dma_memcpy(void *dest, const void *src, size_t size) | 449 | static void *__dma_memcpy(void *dest, const void *src, size_t size) |
424 | { | 450 | { |
425 | int direction; /* 1 - address decrease, 0 - address increase */ | 451 | int direction; /* 1 - address decrease, 0 - address increase */ |
diff --git a/arch/blackfin/kernel/bfin_gpio.c b/arch/blackfin/kernel/bfin_gpio.c index 3fe0cd49e8db..ce85d4bf34ca 100644 --- a/arch/blackfin/kernel/bfin_gpio.c +++ b/arch/blackfin/kernel/bfin_gpio.c | |||
@@ -124,7 +124,7 @@ static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = { | |||
124 | }; | 124 | }; |
125 | #endif | 125 | #endif |
126 | 126 | ||
127 | #ifdef BF537_FAMILY | 127 | #if defined(BF527_FAMILY) || defined(BF537_FAMILY) |
128 | static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = { | 128 | static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = { |
129 | (struct gpio_port_t *) PORTFIO, | 129 | (struct gpio_port_t *) PORTFIO, |
130 | (struct gpio_port_t *) PORTGIO, | 130 | (struct gpio_port_t *) PORTGIO, |
@@ -139,6 +139,21 @@ static unsigned short *port_fer[gpio_bank(MAX_BLACKFIN_GPIOS)] = { | |||
139 | 139 | ||
140 | #endif | 140 | #endif |
141 | 141 | ||
142 | #ifdef BF527_FAMILY | ||
143 | static unsigned short *port_mux[gpio_bank(MAX_BLACKFIN_GPIOS)] = { | ||
144 | (unsigned short *) PORTF_MUX, | ||
145 | (unsigned short *) PORTG_MUX, | ||
146 | (unsigned short *) PORTH_MUX, | ||
147 | }; | ||
148 | |||
149 | static const | ||
150 | u8 pmux_offset[][16] = | ||
151 | {{ 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10 }, /* PORTF */ | ||
152 | { 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 8, 10, 10, 10, 12, 12 }, /* PORTG */ | ||
153 | { 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4 }, /* PORTH */ | ||
154 | }; | ||
155 | #endif | ||
156 | |||
142 | #ifdef BF561_FAMILY | 157 | #ifdef BF561_FAMILY |
143 | static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = { | 158 | static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = { |
144 | (struct gpio_port_t *) FIO0_FLAG_D, | 159 | (struct gpio_port_t *) FIO0_FLAG_D, |
@@ -186,6 +201,10 @@ static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG_INTB | |||
186 | static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX}; | 201 | static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX}; |
187 | #endif | 202 | #endif |
188 | 203 | ||
204 | #ifdef BF527_FAMILY | ||
205 | static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PORTF_INTB, IRQ_PORTG_INTB, IRQ_PORTH_INTB}; | ||
206 | #endif | ||
207 | |||
189 | #ifdef BF561_FAMILY | 208 | #ifdef BF561_FAMILY |
190 | static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB}; | 209 | static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB}; |
191 | #endif | 210 | #endif |
@@ -238,7 +257,7 @@ static int cmp_label(unsigned short ident, const char *label) | |||
238 | return -EINVAL; | 257 | return -EINVAL; |
239 | } | 258 | } |
240 | 259 | ||
241 | #ifdef BF537_FAMILY | 260 | #if defined(BF527_FAMILY) || defined(BF537_FAMILY) |
242 | static void port_setup(unsigned short gpio, unsigned short usage) | 261 | static void port_setup(unsigned short gpio, unsigned short usage) |
243 | { | 262 | { |
244 | if (!check_gpio(gpio)) { | 263 | if (!check_gpio(gpio)) { |
@@ -354,6 +373,18 @@ inline u16 get_portmux(unsigned short portno) | |||
354 | 373 | ||
355 | return (pmux >> (2 * gpio_sub_n(portno)) & 0x3); | 374 | return (pmux >> (2 * gpio_sub_n(portno)) & 0x3); |
356 | } | 375 | } |
376 | #elif defined(BF527_FAMILY) | ||
377 | inline void portmux_setup(unsigned short portno, unsigned short function) | ||
378 | { | ||
379 | u16 pmux, ident = P_IDENT(portno); | ||
380 | u8 offset = pmux_offset[gpio_bank(ident)][gpio_sub_n(ident)]; | ||
381 | |||
382 | pmux = *port_mux[gpio_bank(ident)]; | ||
383 | pmux &= ~(3 << offset); | ||
384 | pmux |= (function & 3) << offset; | ||
385 | *port_mux[gpio_bank(ident)] = pmux; | ||
386 | SSYNC(); | ||
387 | } | ||
357 | #else | 388 | #else |
358 | # define portmux_setup(...) do { } while (0) | 389 | # define portmux_setup(...) do { } while (0) |
359 | #endif | 390 | #endif |
diff --git a/arch/blackfin/kernel/dma-mapping.c b/arch/blackfin/kernel/dma-mapping.c index 94d7b119b71e..a16cb03c5291 100644 --- a/arch/blackfin/kernel/dma-mapping.c +++ b/arch/blackfin/kernel/dma-mapping.c | |||
@@ -160,8 +160,7 @@ dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, | |||
160 | BUG_ON(direction == DMA_NONE); | 160 | BUG_ON(direction == DMA_NONE); |
161 | 161 | ||
162 | for (i = 0; i < nents; i++, sg++) { | 162 | for (i = 0; i < nents; i++, sg++) { |
163 | sg->dma_address = (dma_addr_t)(page_address(sg->page) + | 163 | sg->dma_address = (dma_addr_t) sg_virt(sg); |
164 | sg->offset); | ||
165 | 164 | ||
166 | invalidate_dcache_range(sg_dma_address(sg), | 165 | invalidate_dcache_range(sg_dma_address(sg), |
167 | sg_dma_address(sg) + | 166 | sg_dma_address(sg) + |
diff --git a/arch/blackfin/kernel/gptimers.c b/arch/blackfin/kernel/gptimers.c new file mode 100644 index 000000000000..cb7ba9bfc79c --- /dev/null +++ b/arch/blackfin/kernel/gptimers.c | |||
@@ -0,0 +1,250 @@ | |||
1 | /* | ||
2 | * bfin_gptimers.c - derived from bf53x_timers.c | ||
3 | * Driver for General Purpose Timer functions on the Blackfin processor | ||
4 | * | ||
5 | * Copyright (C) 2005 John DeHority | ||
6 | * Copyright (C) 2006 Hella Aglaia GmbH (awe@aglaia-gmbh.de) | ||
7 | * | ||
8 | * Licensed under the GPLv2. | ||
9 | */ | ||
10 | |||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/module.h> | ||
13 | |||
14 | #include <asm/io.h> | ||
15 | #include <asm/blackfin.h> | ||
16 | #include <asm/gptimers.h> | ||
17 | |||
18 | #ifdef DEBUG | ||
19 | # define tassert(expr) | ||
20 | #else | ||
21 | # define tassert(expr) \ | ||
22 | if (!(expr)) \ | ||
23 | printk(KERN_DEBUG "%s:%s:%i: Assertion failed: " #expr "\n", \ | ||
24 | __FILE__, __func__, __LINE__); | ||
25 | #endif | ||
26 | |||
27 | #define BFIN_TIMER_NUM_GROUP (BFIN_TIMER_OCTET(MAX_BLACKFIN_GPTIMERS - 1) + 1) | ||
28 | |||
29 | typedef struct { | ||
30 | uint16_t config; | ||
31 | uint16_t __pad; | ||
32 | uint32_t counter; | ||
33 | uint32_t period; | ||
34 | uint32_t width; | ||
35 | } GPTIMER_timer_regs; | ||
36 | |||
37 | typedef struct { | ||
38 | uint16_t enable; | ||
39 | uint16_t __pad0; | ||
40 | uint16_t disable; | ||
41 | uint16_t __pad1; | ||
42 | uint32_t status; | ||
43 | } GPTIMER_group_regs; | ||
44 | |||
45 | static volatile GPTIMER_timer_regs *const timer_regs[MAX_BLACKFIN_GPTIMERS] = | ||
46 | { | ||
47 | (GPTIMER_timer_regs *)TIMER0_CONFIG, | ||
48 | (GPTIMER_timer_regs *)TIMER1_CONFIG, | ||
49 | (GPTIMER_timer_regs *)TIMER2_CONFIG, | ||
50 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
51 | (GPTIMER_timer_regs *)TIMER3_CONFIG, | ||
52 | (GPTIMER_timer_regs *)TIMER4_CONFIG, | ||
53 | (GPTIMER_timer_regs *)TIMER5_CONFIG, | ||
54 | (GPTIMER_timer_regs *)TIMER6_CONFIG, | ||
55 | (GPTIMER_timer_regs *)TIMER7_CONFIG, | ||
56 | #endif | ||
57 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
58 | (GPTIMER_timer_regs *)TIMER8_CONFIG, | ||
59 | (GPTIMER_timer_regs *)TIMER9_CONFIG, | ||
60 | (GPTIMER_timer_regs *)TIMER10_CONFIG, | ||
61 | (GPTIMER_timer_regs *)TIMER11_CONFIG, | ||
62 | #endif | ||
63 | }; | ||
64 | |||
65 | static volatile GPTIMER_group_regs *const group_regs[BFIN_TIMER_NUM_GROUP] = | ||
66 | { | ||
67 | (GPTIMER_group_regs *)TIMER0_GROUP_REG, | ||
68 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
69 | (GPTIMER_group_regs *)TIMER8_GROUP_REG, | ||
70 | #endif | ||
71 | }; | ||
72 | |||
73 | static uint32_t const dis_mask[MAX_BLACKFIN_GPTIMERS] = | ||
74 | { | ||
75 | TIMER_STATUS_TRUN0, | ||
76 | TIMER_STATUS_TRUN1, | ||
77 | TIMER_STATUS_TRUN2, | ||
78 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
79 | TIMER_STATUS_TRUN3, | ||
80 | TIMER_STATUS_TRUN4, | ||
81 | TIMER_STATUS_TRUN5, | ||
82 | TIMER_STATUS_TRUN6, | ||
83 | TIMER_STATUS_TRUN7, | ||
84 | #endif | ||
85 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
86 | TIMER_STATUS_TRUN8, | ||
87 | TIMER_STATUS_TRUN9, | ||
88 | TIMER_STATUS_TRUN10, | ||
89 | TIMER_STATUS_TRUN11, | ||
90 | #endif | ||
91 | }; | ||
92 | |||
93 | static uint32_t const irq_mask[MAX_BLACKFIN_GPTIMERS] = | ||
94 | { | ||
95 | TIMER_STATUS_TIMIL0, | ||
96 | TIMER_STATUS_TIMIL1, | ||
97 | TIMER_STATUS_TIMIL2, | ||
98 | #if (MAX_BLACKFIN_GPTIMERS > 3) | ||
99 | TIMER_STATUS_TIMIL3, | ||
100 | TIMER_STATUS_TIMIL4, | ||
101 | TIMER_STATUS_TIMIL5, | ||
102 | TIMER_STATUS_TIMIL6, | ||
103 | TIMER_STATUS_TIMIL7, | ||
104 | #endif | ||
105 | #if (MAX_BLACKFIN_GPTIMERS > 8) | ||
106 | TIMER_STATUS_TIMIL8, | ||
107 | TIMER_STATUS_TIMIL9, | ||
108 | TIMER_STATUS_TIMIL10, | ||
109 | TIMER_STATUS_TIMIL11, | ||
110 | #endif | ||
111 | }; | ||
112 | |||
113 | void set_gptimer_pwidth(int timer_id, uint32_t value) | ||
114 | { | ||
115 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
116 | timer_regs[timer_id]->width = value; | ||
117 | SSYNC(); | ||
118 | } | ||
119 | EXPORT_SYMBOL(set_gptimer_pwidth); | ||
120 | |||
121 | uint32_t get_gptimer_pwidth(int timer_id) | ||
122 | { | ||
123 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
124 | return timer_regs[timer_id]->width; | ||
125 | } | ||
126 | EXPORT_SYMBOL(get_gptimer_pwidth); | ||
127 | |||
128 | void set_gptimer_period(int timer_id, uint32_t period) | ||
129 | { | ||
130 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
131 | timer_regs[timer_id]->period = period; | ||
132 | SSYNC(); | ||
133 | } | ||
134 | EXPORT_SYMBOL(set_gptimer_period); | ||
135 | |||
136 | uint32_t get_gptimer_period(int timer_id) | ||
137 | { | ||
138 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
139 | return timer_regs[timer_id]->period; | ||
140 | } | ||
141 | EXPORT_SYMBOL(get_gptimer_period); | ||
142 | |||
143 | uint32_t get_gptimer_count(int timer_id) | ||
144 | { | ||
145 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
146 | return timer_regs[timer_id]->counter; | ||
147 | } | ||
148 | EXPORT_SYMBOL(get_gptimer_count); | ||
149 | |||
150 | uint32_t get_gptimer_status(int group) | ||
151 | { | ||
152 | tassert(group < BFIN_TIMER_NUM_GROUP); | ||
153 | return group_regs[group]->status; | ||
154 | } | ||
155 | EXPORT_SYMBOL(get_gptimer_status); | ||
156 | |||
157 | void set_gptimer_status(int group, uint32_t value) | ||
158 | { | ||
159 | tassert(group < BFIN_TIMER_NUM_GROUP); | ||
160 | group_regs[group]->status = value; | ||
161 | SSYNC(); | ||
162 | } | ||
163 | EXPORT_SYMBOL(set_gptimer_status); | ||
164 | |||
165 | uint16_t get_gptimer_intr(int timer_id) | ||
166 | { | ||
167 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
168 | return (group_regs[BFIN_TIMER_OCTET(timer_id)]->status & irq_mask[timer_id]) ? 1 : 0; | ||
169 | } | ||
170 | EXPORT_SYMBOL(get_gptimer_intr); | ||
171 | |||
172 | void clear_gptimer_intr(int timer_id) | ||
173 | { | ||
174 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
175 | group_regs[BFIN_TIMER_OCTET(timer_id)]->status = irq_mask[timer_id]; | ||
176 | } | ||
177 | EXPORT_SYMBOL(clear_gptimer_intr); | ||
178 | |||
179 | void set_gptimer_config(int timer_id, uint16_t config) | ||
180 | { | ||
181 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
182 | timer_regs[timer_id]->config = config; | ||
183 | SSYNC(); | ||
184 | } | ||
185 | EXPORT_SYMBOL(set_gptimer_config); | ||
186 | |||
187 | uint16_t get_gptimer_config(int timer_id) | ||
188 | { | ||
189 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
190 | return timer_regs[timer_id]->config; | ||
191 | } | ||
192 | EXPORT_SYMBOL(get_gptimer_config); | ||
193 | |||
194 | void enable_gptimers(uint16_t mask) | ||
195 | { | ||
196 | int i; | ||
197 | tassert((mask & ~BLACKFIN_GPTIMER_IDMASK) == 0); | ||
198 | for (i = 0; i < BFIN_TIMER_NUM_GROUP; ++i) { | ||
199 | group_regs[i]->enable = mask & 0xFF; | ||
200 | mask >>= 8; | ||
201 | } | ||
202 | SSYNC(); | ||
203 | } | ||
204 | EXPORT_SYMBOL(enable_gptimers); | ||
205 | |||
206 | void disable_gptimers(uint16_t mask) | ||
207 | { | ||
208 | int i; | ||
209 | uint16_t m = mask; | ||
210 | tassert((mask & ~BLACKFIN_GPTIMER_IDMASK) == 0); | ||
211 | for (i = 0; i < BFIN_TIMER_NUM_GROUP; ++i) { | ||
212 | group_regs[i]->disable = m & 0xFF; | ||
213 | m >>= 8; | ||
214 | } | ||
215 | for (i = 0; i < MAX_BLACKFIN_GPTIMERS; ++i) | ||
216 | if (mask & (1 << i)) | ||
217 | group_regs[BFIN_TIMER_OCTET(i)]->status |= dis_mask[i]; | ||
218 | SSYNC(); | ||
219 | } | ||
220 | EXPORT_SYMBOL(disable_gptimers); | ||
221 | |||
222 | void set_gptimer_pulse_hi(int timer_id) | ||
223 | { | ||
224 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
225 | timer_regs[timer_id]->config |= TIMER_PULSE_HI; | ||
226 | SSYNC(); | ||
227 | } | ||
228 | EXPORT_SYMBOL(set_gptimer_pulse_hi); | ||
229 | |||
230 | void clear_gptimer_pulse_hi(int timer_id) | ||
231 | { | ||
232 | tassert(timer_id < MAX_BLACKFIN_GPTIMERS); | ||
233 | timer_regs[timer_id]->config &= ~TIMER_PULSE_HI; | ||
234 | SSYNC(); | ||
235 | } | ||
236 | EXPORT_SYMBOL(clear_gptimer_pulse_hi); | ||
237 | |||
238 | uint16_t get_enabled_gptimers(void) | ||
239 | { | ||
240 | int i; | ||
241 | uint16_t result = 0; | ||
242 | for (i = 0; i < BFIN_TIMER_NUM_GROUP; ++i) | ||
243 | result |= (group_regs[i]->enable << (i << 3)); | ||
244 | return result; | ||
245 | } | ||
246 | EXPORT_SYMBOL(get_enabled_gptimers); | ||
247 | |||
248 | MODULE_AUTHOR("Axel Weiss (awe@aglaia-gmbh.de)"); | ||
249 | MODULE_DESCRIPTION("Blackfin General Purpose Timers API"); | ||
250 | MODULE_LICENSE("GPL"); | ||
diff --git a/arch/blackfin/kernel/reboot.c b/arch/blackfin/kernel/reboot.c index 356078ec462b..ae28aac6fec1 100644 --- a/arch/blackfin/kernel/reboot.c +++ b/arch/blackfin/kernel/reboot.c | |||
@@ -11,7 +11,7 @@ | |||
11 | #include <asm/reboot.h> | 11 | #include <asm/reboot.h> |
12 | #include <asm/system.h> | 12 | #include <asm/system.h> |
13 | 13 | ||
14 | #if defined(BF537_FAMILY) || defined(BF533_FAMILY) | 14 | #if defined(BF537_FAMILY) || defined(BF533_FAMILY) || defined(BF527_FAMILY) |
15 | #define SYSCR_VAL 0x0 | 15 | #define SYSCR_VAL 0x0 |
16 | #elif defined(BF561_FAMILY) | 16 | #elif defined(BF561_FAMILY) |
17 | #define SYSCR_VAL 0x20 | 17 | #define SYSCR_VAL 0x20 |
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index 8dcd76e87ed5..f1b059e5a06c 100644 --- a/arch/blackfin/kernel/setup.c +++ b/arch/blackfin/kernel/setup.c | |||
@@ -459,7 +459,7 @@ static u_long get_vco(void) | |||
459 | return vco; | 459 | return vco; |
460 | } | 460 | } |
461 | 461 | ||
462 | /*Get the Core clock*/ | 462 | /* Get the Core clock */ |
463 | u_long get_cclk(void) | 463 | u_long get_cclk(void) |
464 | { | 464 | { |
465 | u_long csel, ssel; | 465 | u_long csel, ssel; |
@@ -493,12 +493,24 @@ u_long get_sclk(void) | |||
493 | } | 493 | } |
494 | EXPORT_SYMBOL(get_sclk); | 494 | EXPORT_SYMBOL(get_sclk); |
495 | 495 | ||
496 | unsigned long sclk_to_usecs(unsigned long sclk) | ||
497 | { | ||
498 | return (USEC_PER_SEC * (u64)sclk) / get_sclk(); | ||
499 | } | ||
500 | EXPORT_SYMBOL(sclk_to_usecs); | ||
501 | |||
502 | unsigned long usecs_to_sclk(unsigned long usecs) | ||
503 | { | ||
504 | return (get_sclk() * (u64)usecs) / USEC_PER_SEC; | ||
505 | } | ||
506 | EXPORT_SYMBOL(usecs_to_sclk); | ||
507 | |||
496 | /* | 508 | /* |
497 | * Get CPU information for use by the procfs. | 509 | * Get CPU information for use by the procfs. |
498 | */ | 510 | */ |
499 | static int show_cpuinfo(struct seq_file *m, void *v) | 511 | static int show_cpuinfo(struct seq_file *m, void *v) |
500 | { | 512 | { |
501 | char *cpu, *mmu, *fpu, *name; | 513 | char *cpu, *mmu, *fpu, *vendor, *cache; |
502 | uint32_t revid; | 514 | uint32_t revid; |
503 | 515 | ||
504 | u_long cclk = 0, sclk = 0; | 516 | u_long cclk = 0, sclk = 0; |
@@ -508,70 +520,83 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
508 | mmu = "none"; | 520 | mmu = "none"; |
509 | fpu = "none"; | 521 | fpu = "none"; |
510 | revid = bfin_revid(); | 522 | revid = bfin_revid(); |
511 | name = bfin_board_name; | ||
512 | 523 | ||
513 | cclk = get_cclk(); | 524 | cclk = get_cclk(); |
514 | sclk = get_sclk(); | 525 | sclk = get_sclk(); |
515 | 526 | ||
516 | seq_printf(m, "CPU:\t\tADSP-%s Rev. 0.%d\n" | 527 | switch (bfin_read_CHIPID() & CHIPID_MANUFACTURE) { |
517 | "MMU:\t\t%s\n" | 528 | case 0xca: |
518 | "FPU:\t\t%s\n" | 529 | vendor = "Analog Devices"; |
519 | "Core Clock:\t%9lu Hz\n" | 530 | break; |
520 | "System Clock:\t%9lu Hz\n" | 531 | default: |
521 | "BogoMips:\t%lu.%02lu\n" | 532 | vendor = "unknown"; |
522 | "Calibration:\t%lu loops\n", | 533 | break; |
523 | cpu, revid, mmu, fpu, | 534 | } |
524 | cclk, | ||
525 | sclk, | ||
526 | (loops_per_jiffy * HZ) / 500000, | ||
527 | ((loops_per_jiffy * HZ) / 5000) % 100, | ||
528 | (loops_per_jiffy * HZ)); | ||
529 | seq_printf(m, "Board Name:\t%s\n", name); | ||
530 | seq_printf(m, "Board Memory:\t%ld MB\n", physical_mem_end >> 20); | ||
531 | seq_printf(m, "Kernel Memory:\t%ld MB\n", (unsigned long)_ramend >> 20); | ||
532 | if (bfin_read_IMEM_CONTROL() & (ENICPLB | IMC)) | ||
533 | seq_printf(m, "I-CACHE:\tON\n"); | ||
534 | else | ||
535 | seq_printf(m, "I-CACHE:\tOFF\n"); | ||
536 | if ((bfin_read_DMEM_CONTROL()) & (ENDCPLB | DMC_ENABLE)) | ||
537 | seq_printf(m, "D-CACHE:\tON" | ||
538 | #if defined CONFIG_BFIN_WB | ||
539 | " (write-back)" | ||
540 | #elif defined CONFIG_BFIN_WT | ||
541 | " (write-through)" | ||
542 | #endif | ||
543 | "\n"); | ||
544 | else | ||
545 | seq_printf(m, "D-CACHE:\tOFF\n"); | ||
546 | |||
547 | 535 | ||
536 | seq_printf(m, "processor\t: %d\n" | ||
537 | "vendor_id\t: %s\n" | ||
538 | "cpu family\t: 0x%x\n" | ||
539 | "model name\t: ADSP-%s %lu(MHz CCLK) %lu(MHz SCLK)\n" | ||
540 | "stepping\t: %d\n", | ||
541 | 0, | ||
542 | vendor, | ||
543 | (bfin_read_CHIPID() & CHIPID_FAMILY), | ||
544 | cpu, cclk/1000000, sclk/1000000, | ||
545 | revid); | ||
546 | |||
547 | seq_printf(m, "cpu MHz\t\t: %lu.%03lu/%lu.%03lu\n", | ||
548 | cclk/1000000, cclk%1000000, | ||
549 | sclk/1000000, sclk%1000000); | ||
550 | seq_printf(m, "bogomips\t: %lu.%02lu\n" | ||
551 | "Calibration\t: %lu loops\n", | ||
552 | (loops_per_jiffy * HZ) / 500000, | ||
553 | ((loops_per_jiffy * HZ) / 5000) % 100, | ||
554 | (loops_per_jiffy * HZ)); | ||
555 | |||
556 | /* Check Cache configutation */ | ||
548 | switch (bfin_read_DMEM_CONTROL() & (1 << DMC0_P | 1 << DMC1_P)) { | 557 | switch (bfin_read_DMEM_CONTROL() & (1 << DMC0_P | 1 << DMC1_P)) { |
549 | case ACACHE_BSRAM: | 558 | case ACACHE_BSRAM: |
550 | seq_printf(m, "DBANK-A:\tCACHE\n" "DBANK-B:\tSRAM\n"); | 559 | cache = "dbank-A/B\t: cache/sram"; |
551 | dcache_size = 16; | 560 | dcache_size = 16; |
552 | dsup_banks = 1; | 561 | dsup_banks = 1; |
553 | break; | 562 | break; |
554 | case ACACHE_BCACHE: | 563 | case ACACHE_BCACHE: |
555 | seq_printf(m, "DBANK-A:\tCACHE\n" "DBANK-B:\tCACHE\n"); | 564 | cache = "dbank-A/B\t: cache/cache"; |
556 | dcache_size = 32; | 565 | dcache_size = 32; |
557 | dsup_banks = 2; | 566 | dsup_banks = 2; |
558 | break; | 567 | break; |
559 | case ASRAM_BSRAM: | 568 | case ASRAM_BSRAM: |
560 | seq_printf(m, "DBANK-A:\tSRAM\n" "DBANK-B:\tSRAM\n"); | 569 | cache = "dbank-A/B\t: sram/sram"; |
561 | dcache_size = 0; | 570 | dcache_size = 0; |
562 | dsup_banks = 0; | 571 | dsup_banks = 0; |
563 | break; | 572 | break; |
564 | default: | 573 | default: |
574 | cache = "unknown"; | ||
575 | dcache_size = 0; | ||
576 | dsup_banks = 0; | ||
565 | break; | 577 | break; |
566 | } | 578 | } |
567 | 579 | ||
580 | /* Is it turned on? */ | ||
581 | if (!((bfin_read_DMEM_CONTROL()) & (ENDCPLB | DMC_ENABLE))) | ||
582 | dcache_size = 0; | ||
568 | 583 | ||
569 | seq_printf(m, "I-CACHE Size:\t%dKB\n", BFIN_ICACHESIZE / 1024); | 584 | seq_printf(m, "cache size\t: %d KB(L1 icache) " |
570 | seq_printf(m, "D-CACHE Size:\t%dKB\n", dcache_size); | 585 | "%d KB(L1 dcache-%s) %d KB(L2 cache)\n", |
571 | seq_printf(m, "I-CACHE Setup:\t%d Sub-banks/%d Ways, %d Lines/Way\n", | 586 | BFIN_ICACHESIZE / 1024, dcache_size, |
587 | #if defined CONFIG_BFIN_WB | ||
588 | "wb" | ||
589 | #elif defined CONFIG_BFIN_WT | ||
590 | "wt" | ||
591 | #endif | ||
592 | "", 0); | ||
593 | |||
594 | seq_printf(m, "%s\n", cache); | ||
595 | |||
596 | seq_printf(m, "icache setup\t: %d Sub-banks/%d Ways, %d Lines/Way\n", | ||
572 | BFIN_ISUBBANKS, BFIN_IWAYS, BFIN_ILINES); | 597 | BFIN_ISUBBANKS, BFIN_IWAYS, BFIN_ILINES); |
573 | seq_printf(m, | 598 | seq_printf(m, |
574 | "D-CACHE Setup:\t%d Super-banks/%d Sub-banks/%d Ways, %d Lines/Way\n", | 599 | "dcache setup\t: %d Super-banks/%d Sub-banks/%d Ways, %d Lines/Way\n", |
575 | dsup_banks, BFIN_DSUBBANKS, BFIN_DWAYS, | 600 | dsup_banks, BFIN_DSUBBANKS, BFIN_DWAYS, |
576 | BFIN_DLINES); | 601 | BFIN_DLINES); |
577 | #ifdef CONFIG_BFIN_ICACHE_LOCK | 602 | #ifdef CONFIG_BFIN_ICACHE_LOCK |
@@ -625,6 +650,15 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
625 | seq_printf(m, "No Ways are locked\n"); | 650 | seq_printf(m, "No Ways are locked\n"); |
626 | } | 651 | } |
627 | #endif | 652 | #endif |
653 | |||
654 | seq_printf(m, "board name\t: %s\n", bfin_board_name); | ||
655 | seq_printf(m, "board memory\t: %ld kB (0x%p -> 0x%p)\n", | ||
656 | physical_mem_end >> 10, (void *)0, (void *)physical_mem_end); | ||
657 | seq_printf(m, "kernel memory\t: %d kB (0x%p -> 0x%p)\n", | ||
658 | ((int)memory_end - (int)_stext) >> 10, | ||
659 | _stext, | ||
660 | (void *)memory_end); | ||
661 | |||
628 | return 0; | 662 | return 0; |
629 | } | 663 | } |
630 | 664 | ||
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index 8823e9ade584..afd044e78af6 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c | |||
@@ -118,12 +118,14 @@ static int printk_address(unsigned long address) | |||
118 | offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT); | 118 | offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT); |
119 | 119 | ||
120 | write_unlock_irq(&tasklist_lock); | 120 | write_unlock_irq(&tasklist_lock); |
121 | mmput(mm); | ||
121 | return printk("<0x%p> [ %s + 0x%lx ]", | 122 | return printk("<0x%p> [ %s + 0x%lx ]", |
122 | (void *)address, name, offset); | 123 | (void *)address, name, offset); |
123 | } | 124 | } |
124 | 125 | ||
125 | vml = vml->next; | 126 | vml = vml->next; |
126 | } | 127 | } |
128 | mmput(mm); | ||
127 | } | 129 | } |
128 | write_unlock_irq(&tasklist_lock); | 130 | write_unlock_irq(&tasklist_lock); |
129 | 131 | ||
diff --git a/arch/blackfin/lib/Makefile b/arch/blackfin/lib/Makefile index 635288fc5f54..bfdad52c570b 100644 --- a/arch/blackfin/lib/Makefile +++ b/arch/blackfin/lib/Makefile | |||
@@ -4,7 +4,7 @@ | |||
4 | 4 | ||
5 | lib-y := \ | 5 | lib-y := \ |
6 | ashldi3.o ashrdi3.o lshrdi3.o \ | 6 | ashldi3.o ashrdi3.o lshrdi3.o \ |
7 | muldi3.o divsi3.o udivsi3.o modsi3.o umodsi3.o \ | 7 | muldi3.o divsi3.o udivsi3.o udivdi3.o modsi3.o umodsi3.o \ |
8 | checksum.o memcpy.o memset.o memcmp.o memchr.o memmove.o \ | 8 | checksum.o memcpy.o memset.o memcmp.o memchr.o memmove.o \ |
9 | strcmp.o strcpy.o strncmp.o strncpy.o \ | 9 | strcmp.o strcpy.o strncmp.o strncpy.o \ |
10 | umulsi3_highpart.o smulsi3_highpart.o \ | 10 | umulsi3_highpart.o smulsi3_highpart.o \ |
diff --git a/arch/blackfin/lib/udivdi3.S b/arch/blackfin/lib/udivdi3.S new file mode 100644 index 000000000000..ad1ebee675e1 --- /dev/null +++ b/arch/blackfin/lib/udivdi3.S | |||
@@ -0,0 +1,375 @@ | |||
1 | /* | ||
2 | * udivdi3.S - unsigned long long division | ||
3 | * | ||
4 | * Copyright 2003-2007 Analog Devices Inc. | ||
5 | * Enter bugs at http://blackfin.uclinux.org/ | ||
6 | * | ||
7 | * Licensed under the GPLv2 or later. | ||
8 | */ | ||
9 | |||
10 | #include <linux/linkage.h> | ||
11 | |||
12 | #define CARRY AC0 | ||
13 | |||
14 | #ifdef CONFIG_ARITHMETIC_OPS_L1 | ||
15 | .section .l1.text | ||
16 | #else | ||
17 | .text | ||
18 | #endif | ||
19 | |||
20 | |||
21 | ENTRY(___udivdi3) | ||
22 | R3 = [SP + 12]; | ||
23 | [--SP] = (R7:4, P5:3); | ||
24 | |||
25 | /* Attempt to use divide primitive first; these will handle | ||
26 | ** most cases, and they're quick - avoids stalls incurred by | ||
27 | ** testing for identities. | ||
28 | */ | ||
29 | |||
30 | R4 = R2 | R3; | ||
31 | CC = R4 == 0; | ||
32 | IF CC JUMP .LDIV_BY_ZERO; | ||
33 | |||
34 | R4.H = 0x8000; | ||
35 | R4 >>>= 16; // R4 now 0xFFFF8000 | ||
36 | R5 = R0 | R2; // If either dividend or | ||
37 | R4 = R5 & R4; // divisor have bits in | ||
38 | CC = R4; // top half or low half's sign | ||
39 | IF CC JUMP .LIDENTS; // bit, skip builtins. | ||
40 | R4 = R1 | R3; // Also check top halves | ||
41 | CC = R4; | ||
42 | IF CC JUMP .LIDENTS; | ||
43 | |||
44 | /* Can use the builtins. */ | ||
45 | |||
46 | AQ = CC; // Clear AQ (CC==0) | ||
47 | DIVQ(R0, R2); | ||
48 | DIVQ(R0, R2); | ||
49 | DIVQ(R0, R2); | ||
50 | DIVQ(R0, R2); | ||
51 | DIVQ(R0, R2); | ||
52 | DIVQ(R0, R2); | ||
53 | DIVQ(R0, R2); | ||
54 | DIVQ(R0, R2); | ||
55 | DIVQ(R0, R2); | ||
56 | DIVQ(R0, R2); | ||
57 | DIVQ(R0, R2); | ||
58 | DIVQ(R0, R2); | ||
59 | DIVQ(R0, R2); | ||
60 | DIVQ(R0, R2); | ||
61 | DIVQ(R0, R2); | ||
62 | DIVQ(R0, R2); | ||
63 | DIVQ(R0, R2); | ||
64 | R0 = R0.L (Z); | ||
65 | R1 = 0; | ||
66 | (R7:4, P5:3) = [SP++]; | ||
67 | RTS; | ||
68 | |||
69 | .LIDENTS: | ||
70 | /* Test for common identities. Value to be returned is | ||
71 | ** placed in R6,R7. | ||
72 | */ | ||
73 | // Check for 0/y, return 0 | ||
74 | R4 = R0 | R1; | ||
75 | CC = R4 == 0; | ||
76 | IF CC JUMP .LRETURN_R0; | ||
77 | |||
78 | // Check for x/x, return 1 | ||
79 | R6 = R0 - R2; // If x == y, then both R6 and R7 will be zero | ||
80 | R7 = R1 - R3; | ||
81 | R4 = R6 | R7; // making R4 zero. | ||
82 | R6 += 1; // which would now make R6:R7==1. | ||
83 | CC = R4 == 0; | ||
84 | IF CC JUMP .LRETURN_IDENT; | ||
85 | |||
86 | // Check for x/1, return x | ||
87 | R6 = R0; | ||
88 | R7 = R1; | ||
89 | CC = R3 == 0; | ||
90 | IF !CC JUMP .Lnexttest; | ||
91 | CC = R2 == 1; | ||
92 | IF CC JUMP .LRETURN_IDENT; | ||
93 | |||
94 | .Lnexttest: | ||
95 | R4.L = ONES R2; // check for div by power of two which | ||
96 | R5.L = ONES R3; // can be done using a shift | ||
97 | R6 = PACK (R5.L, R4.L); | ||
98 | CC = R6 == 1; | ||
99 | IF CC JUMP .Lpower_of_two_upper_zero; | ||
100 | R6 = PACK (R4.L, R5.L); | ||
101 | CC = R6 == 1; | ||
102 | IF CC JUMP .Lpower_of_two_lower_zero; | ||
103 | |||
104 | // Check for x < y, return 0 | ||
105 | R6 = 0; | ||
106 | R7 = R6; | ||
107 | CC = R1 < R3 (IU); | ||
108 | IF CC JUMP .LRETURN_IDENT; | ||
109 | CC = R1 == R3; | ||
110 | IF !CC JUMP .Lno_idents; | ||
111 | CC = R0 < R2 (IU); | ||
112 | IF CC JUMP .LRETURN_IDENT; | ||
113 | |||
114 | .Lno_idents: // Idents don't match. Go for the full operation | ||
115 | |||
116 | |||
117 | // If X, or X and Y have high bit set, it'll affect the | ||
118 | // results, so shift right one to stop this. Note: we've already | ||
119 | // checked that X >= Y, so Y's msb won't be set unless X's | ||
120 | // is. | ||
121 | |||
122 | R4 = 0; | ||
123 | CC = R1 < 0; | ||
124 | IF !CC JUMP .Lx_msb_clear; | ||
125 | CC = !CC; // 1 -> 0; | ||
126 | R1 = ROT R1 BY -1; // Shift X >> 1 | ||
127 | R0 = ROT R0 BY -1; // lsb -> CC | ||
128 | BITSET(R4,31); // to record only x msb was set | ||
129 | CC = R3 < 0; | ||
130 | IF !CC JUMP .Ly_msb_clear; | ||
131 | CC = !CC; | ||
132 | R3 = ROT R3 BY -1; // Shift Y >> 1 | ||
133 | R2 = ROT R2 BY -1; | ||
134 | BITCLR(R4,31); // clear bit to record only x msb was set | ||
135 | |||
136 | .Ly_msb_clear: | ||
137 | .Lx_msb_clear: | ||
138 | // Bit 31 in R4 indicates X msb set, but Y msb wasn't, and no bits | ||
139 | // were lost, so we should shift result left by one. | ||
140 | |||
141 | [--SP] = R4; // save for later | ||
142 | |||
143 | // In the loop that follows, each iteration we add | ||
144 | // either Y' or -Y' to the Remainder. We compute the | ||
145 | // negated Y', and store, for convenience. Y' goes | ||
146 | // into P0:P1, while -Y' goes into P2:P3. | ||
147 | |||
148 | P0 = R2; | ||
149 | P1 = R3; | ||
150 | R2 = -R2; | ||
151 | CC = CARRY; | ||
152 | CC = !CC; | ||
153 | R4 = CC; | ||
154 | R3 = -R3; | ||
155 | R3 = R3 - R4; | ||
156 | |||
157 | R6 = 0; // remainder = 0 | ||
158 | R7 = R6; | ||
159 | |||
160 | [--SP] = R2; P2 = SP; | ||
161 | [--SP] = R3; P3 = SP; | ||
162 | [--SP] = R6; P5 = SP; // AQ = 0 | ||
163 | [--SP] = P1; | ||
164 | |||
165 | /* In the loop that follows, we use the following | ||
166 | ** register assignments: | ||
167 | ** R0,R1 X, workspace | ||
168 | ** R2,R3 Y, workspace | ||
169 | ** R4,R5 partial Div | ||
170 | ** R6,R7 partial remainder | ||
171 | ** P5 AQ | ||
172 | ** The remainder and div form a 128-bit number, with | ||
173 | ** the remainder in the high 64-bits. | ||
174 | */ | ||
175 | R4 = R0; // Div = X' | ||
176 | R5 = R1; | ||
177 | R3 = 0; | ||
178 | |||
179 | P4 = 64; // Iterate once per bit | ||
180 | LSETUP(.LULST,.LULEND) LC0 = P4; | ||
181 | .LULST: | ||
182 | /* Shift Div and remainder up by one. The bit shifted | ||
183 | ** out of the top of the quotient is shifted into the bottom | ||
184 | ** of the remainder. | ||
185 | */ | ||
186 | CC = R3; | ||
187 | R4 = ROT R4 BY 1; | ||
188 | R5 = ROT R5 BY 1 || // low q to high q | ||
189 | R2 = [P5]; // load saved AQ | ||
190 | R6 = ROT R6 BY 1 || // high q to low r | ||
191 | R0 = [P2]; // load -Y' | ||
192 | R7 = ROT R7 BY 1 || // low r to high r | ||
193 | R1 = [P3]; | ||
194 | |||
195 | // Assume add -Y' | ||
196 | CC = R2 < 0; // But if AQ is set... | ||
197 | IF CC R0 = P0; // then add Y' instead | ||
198 | IF CC R1 = P1; | ||
199 | |||
200 | R6 = R6 + R0; // Rem += (Y' or -Y') | ||
201 | CC = CARRY; | ||
202 | R0 = CC; | ||
203 | R7 = R7 + R1; | ||
204 | R7 = R7 + R0 (NS) || | ||
205 | R1 = [SP]; | ||
206 | // Set the next AQ bit | ||
207 | R1 = R7 ^ R1; // from Remainder and Y' | ||
208 | R1 = R1 >> 31 || // Negate AQ's value, and | ||
209 | [P5] = R1; // save next AQ | ||
210 | BITTGL(R1, 0); // add neg AQ to the Div | ||
211 | .LULEND: R4 = R4 + R1; | ||
212 | |||
213 | R6 = [SP + 16]; | ||
214 | |||
215 | R0 = R4; | ||
216 | R1 = R5; | ||
217 | CC = BITTST(R6,30); // Just set CC=0 | ||
218 | R4 = ROT R0 BY 1; // but if we had to shift X, | ||
219 | R5 = ROT R1 BY 1; // and didn't shift any bits out, | ||
220 | CC = BITTST(R6,31); // then the result will be half as | ||
221 | IF CC R0 = R4; // much as required, so shift left | ||
222 | IF CC R1 = R5; // one space. | ||
223 | |||
224 | SP += 20; | ||
225 | (R7:4, P5:3) = [SP++]; | ||
226 | RTS; | ||
227 | |||
228 | .Lpower_of_two: | ||
229 | /* Y has a single bit set, which means it's a power of two. | ||
230 | ** That means we can perform the division just by shifting | ||
231 | ** X to the right the appropriate number of bits | ||
232 | */ | ||
233 | |||
234 | /* signbits returns the number of sign bits, minus one. | ||
235 | ** 1=>30, 2=>29, ..., 0x40000000=>0. Which means we need | ||
236 | ** to shift right n-signbits spaces. It also means 0x80000000 | ||
237 | ** is a special case, because that *also* gives a signbits of 0 | ||
238 | */ | ||
239 | .Lpower_of_two_lower_zero: | ||
240 | R7 = 0; | ||
241 | R6 = R1 >> 31; | ||
242 | CC = R3 < 0; | ||
243 | IF CC JUMP .LRETURN_IDENT; | ||
244 | |||
245 | R2.L = SIGNBITS R3; | ||
246 | R2 = R2.L (Z); | ||
247 | R2 += -62; | ||
248 | (R7:4, P5:3) = [SP++]; | ||
249 | JUMP ___lshftli; | ||
250 | |||
251 | .Lpower_of_two_upper_zero: | ||
252 | CC = R2 < 0; | ||
253 | IF CC JUMP .Lmaxint_shift; | ||
254 | |||
255 | R2.L = SIGNBITS R2; | ||
256 | R2 = R2.L (Z); | ||
257 | R2 += -30; | ||
258 | (R7:4, P5:3) = [SP++]; | ||
259 | JUMP ___lshftli; | ||
260 | |||
261 | .Lmaxint_shift: | ||
262 | R2 = -31; | ||
263 | (R7:4, P5:3) = [SP++]; | ||
264 | JUMP ___lshftli; | ||
265 | |||
266 | .LRETURN_IDENT: | ||
267 | R0 = R6; | ||
268 | R1 = R7; | ||
269 | .LRETURN_R0: | ||
270 | (R7:4, P5:3) = [SP++]; | ||
271 | RTS; | ||
272 | .LDIV_BY_ZERO: | ||
273 | R0 = ~R2; | ||
274 | R1 = R0; | ||
275 | (R7:4, P5:3) = [SP++]; | ||
276 | RTS; | ||
277 | |||
278 | ENDPROC(___udivdi3) | ||
279 | |||
280 | |||
281 | ENTRY(___lshftli) | ||
282 | CC = R2 == 0; | ||
283 | IF CC JUMP .Lfinished; // nothing to do | ||
284 | CC = R2 < 0; | ||
285 | IF CC JUMP .Lrshift; | ||
286 | R3 = 64; | ||
287 | CC = R2 < R3; | ||
288 | IF !CC JUMP .Lretzero; | ||
289 | |||
290 | // We're shifting left, and it's less than 64 bits, so | ||
291 | // a valid result will be returned. | ||
292 | |||
293 | R3 >>= 1; // R3 now 32 | ||
294 | CC = R2 < R3; | ||
295 | |||
296 | IF !CC JUMP .Lzerohalf; | ||
297 | |||
298 | // We're shifting left, between 1 and 31 bits, which means | ||
299 | // some of the low half will be shifted into the high half. | ||
300 | // Work out how much. | ||
301 | |||
302 | R3 = R3 - R2; | ||
303 | |||
304 | // Save that much data from the bottom half. | ||
305 | |||
306 | P1 = R7; | ||
307 | R7 = R0; | ||
308 | R7 >>= R3; | ||
309 | |||
310 | // Adjust both parts of the parameter. | ||
311 | |||
312 | R0 <<= R2; | ||
313 | R1 <<= R2; | ||
314 | |||
315 | // And include the bits moved across. | ||
316 | |||
317 | R1 = R1 | R7; | ||
318 | R7 = P1; | ||
319 | RTS; | ||
320 | |||
321 | .Lzerohalf: | ||
322 | // We're shifting left, between 32 and 63 bits, so the | ||
323 | // bottom half will become zero, and the top half will | ||
324 | // lose some bits. How many? | ||
325 | |||
326 | R2 = R2 - R3; // N - 32 | ||
327 | R1 = LSHIFT R0 BY R2.L; | ||
328 | R0 = R0 - R0; | ||
329 | RTS; | ||
330 | |||
331 | .Lretzero: | ||
332 | R0 = R0 - R0; | ||
333 | R1 = R0; | ||
334 | .Lfinished: | ||
335 | RTS; | ||
336 | |||
337 | .Lrshift: | ||
338 | // We're shifting right, but by how much? | ||
339 | R2 = -R2; | ||
340 | R3 = 64; | ||
341 | CC = R2 < R3; | ||
342 | IF !CC JUMP .Lretzero; | ||
343 | |||
344 | // Shifting right less than 64 bits, so some result bits will | ||
345 | // be retained. | ||
346 | |||
347 | R3 >>= 1; // R3 now 32 | ||
348 | CC = R2 < R3; | ||
349 | IF !CC JUMP .Lsignhalf; | ||
350 | |||
351 | // Shifting right between 1 and 31 bits, so need to copy | ||
352 | // data across words. | ||
353 | |||
354 | P1 = R7; | ||
355 | R3 = R3 - R2; | ||
356 | R7 = R1; | ||
357 | R7 <<= R3; | ||
358 | R1 >>= R2; | ||
359 | R0 >>= R2; | ||
360 | R0 = R7 | R0; | ||
361 | R7 = P1; | ||
362 | RTS; | ||
363 | |||
364 | .Lsignhalf: | ||
365 | // Shifting right between 32 and 63 bits, so the top half | ||
366 | // will become all zero-bits, and the bottom half is some | ||
367 | // of the top half. But how much? | ||
368 | |||
369 | R2 = R2 - R3; | ||
370 | R0 = R1; | ||
371 | R0 >>= R2; | ||
372 | R1 = 0; | ||
373 | RTS; | ||
374 | |||
375 | ENDPROC(___lshftli) | ||
diff --git a/arch/blackfin/mach-bf527/Kconfig b/arch/blackfin/mach-bf527/Kconfig new file mode 100644 index 000000000000..50321f723dee --- /dev/null +++ b/arch/blackfin/mach-bf527/Kconfig | |||
@@ -0,0 +1,251 @@ | |||
1 | if (BF52x) | ||
2 | |||
3 | menu "BF527 Specific Configuration" | ||
4 | |||
5 | comment "Alternative Multiplexing Scheme" | ||
6 | |||
7 | choice | ||
8 | prompt "SPORT0" | ||
9 | default BF527_SPORT0_PORTG | ||
10 | help | ||
11 | Select PORT used for SPORT0. See Hardware Reference Manual | ||
12 | |||
13 | config BF527_SPORT0_PORTF | ||
14 | bool "PORT F" | ||
15 | help | ||
16 | PORT F | ||
17 | |||
18 | config BF527_SPORT0_PORTG | ||
19 | bool "PORT G" | ||
20 | help | ||
21 | PORT G | ||
22 | endchoice | ||
23 | |||
24 | choice | ||
25 | prompt "SPORT0 TSCLK Location" | ||
26 | depends on BF527_SPORT0_PORTG | ||
27 | default BF527_SPORT0_TSCLK_PG10 | ||
28 | help | ||
29 | Select PIN used for SPORT0_TSCLK. See Hardware Reference Manual | ||
30 | |||
31 | config BF527_SPORT0_TSCLK_PG10 | ||
32 | bool "PORT PG10" | ||
33 | help | ||
34 | PORT PG10 | ||
35 | |||
36 | config BF527_SPORT0_TSCLK_PG14 | ||
37 | bool "PORT PG14" | ||
38 | help | ||
39 | PORT PG14 | ||
40 | endchoice | ||
41 | |||
42 | choice | ||
43 | prompt "UART1" | ||
44 | default BF527_UART1_PORTG | ||
45 | help | ||
46 | Select PORT used for UART1. See Hardware Reference Manual | ||
47 | |||
48 | config BF527_UART1_PORTF | ||
49 | bool "PORT F" | ||
50 | help | ||
51 | PORT F | ||
52 | |||
53 | config BF527_UART1_PORTG | ||
54 | bool "PORT G" | ||
55 | help | ||
56 | PORT G | ||
57 | endchoice | ||
58 | |||
59 | choice | ||
60 | prompt "NAND (NFC) Data" | ||
61 | default BF527_NAND_D_PORTH | ||
62 | help | ||
63 | Select PORT used for NAND Data Bus. See Hardware Reference Manual | ||
64 | |||
65 | config BF527_NAND_D_PORTF | ||
66 | bool "PORT F" | ||
67 | help | ||
68 | PORT F | ||
69 | |||
70 | config BF527_NAND_D_PORTH | ||
71 | bool "PORT H" | ||
72 | help | ||
73 | PORT H | ||
74 | endchoice | ||
75 | |||
76 | comment "Interrupt Priority Assignment" | ||
77 | menu "Priority" | ||
78 | |||
79 | config IRQ_PLL_WAKEUP | ||
80 | int "IRQ_PLL_WAKEUP" | ||
81 | default 7 | ||
82 | config IRQ_DMA0_ERROR | ||
83 | int "IRQ_DMA0_ERROR" | ||
84 | default 7 | ||
85 | config IRQ_DMAR0_BLK | ||
86 | int "IRQ_DMAR0_BLK" | ||
87 | default 7 | ||
88 | config IRQ_DMAR1_BLK | ||
89 | int "IRQ_DMAR1_BLK" | ||
90 | default 7 | ||
91 | config IRQ_DMAR0_OVR | ||
92 | int "IRQ_DMAR0_OVR" | ||
93 | default 7 | ||
94 | config IRQ_DMAR1_OVR | ||
95 | int "IRQ_DMAR1_OVR" | ||
96 | default 7 | ||
97 | config IRQ_PPI_ERROR | ||
98 | int "IRQ_PPI_ERROR" | ||
99 | default 7 | ||
100 | config IRQ_MAC_ERROR | ||
101 | int "IRQ_MAC_ERROR" | ||
102 | default 7 | ||
103 | config IRQ_SPORT0_ERROR | ||
104 | int "IRQ_SPORT0_ERROR" | ||
105 | default 7 | ||
106 | config IRQ_SPORT1_ERROR | ||
107 | int "IRQ_SPORT1_ERROR" | ||
108 | default 7 | ||
109 | config IRQ_UART0_ERROR | ||
110 | int "IRQ_UART0_ERROR" | ||
111 | default 7 | ||
112 | config IRQ_UART1_ERROR | ||
113 | int "IRQ_UART1_ERROR" | ||
114 | default 7 | ||
115 | config IRQ_RTC | ||
116 | int "IRQ_RTC" | ||
117 | default 8 | ||
118 | config IRQ_PPI | ||
119 | int "IRQ_PPI" | ||
120 | default 8 | ||
121 | config IRQ_SPORT0_RX | ||
122 | int "IRQ_SPORT0_RX" | ||
123 | default 9 | ||
124 | config IRQ_SPORT0_TX | ||
125 | int "IRQ_SPORT0_TX" | ||
126 | default 9 | ||
127 | config IRQ_SPORT1_RX | ||
128 | int "IRQ_SPORT1_RX" | ||
129 | default 9 | ||
130 | config IRQ_SPORT1_TX | ||
131 | int "IRQ_SPORT1_TX" | ||
132 | default 9 | ||
133 | config IRQ_TWI | ||
134 | int "IRQ_TWI" | ||
135 | default 10 | ||
136 | config IRQ_SPI | ||
137 | int "IRQ_SPI" | ||
138 | default 10 | ||
139 | config IRQ_UART0_RX | ||
140 | int "IRQ_UART0_RX" | ||
141 | default 10 | ||
142 | config IRQ_UART0_TX | ||
143 | int "IRQ_UART0_TX" | ||
144 | default 10 | ||
145 | config IRQ_UART1_RX | ||
146 | int "IRQ_UART1_RX" | ||
147 | default 10 | ||
148 | config IRQ_UART1_TX | ||
149 | int "IRQ_UART1_TX" | ||
150 | default 10 | ||
151 | config IRQ_OPTSEC | ||
152 | int "IRQ_OPTSEC" | ||
153 | default 11 | ||
154 | config IRQ_CNT | ||
155 | int "IRQ_CNT" | ||
156 | default 11 | ||
157 | config IRQ_MAC_RX | ||
158 | int "IRQ_MAC_RX" | ||
159 | default 11 | ||
160 | config IRQ_PORTH_INTA | ||
161 | int "IRQ_PORTH_INTA" | ||
162 | default 11 | ||
163 | config IRQ_MAC_TX | ||
164 | int "IRQ_MAC_TX/NFC" | ||
165 | default 11 | ||
166 | config IRQ_PORTH_INTB | ||
167 | int "IRQ_PORTH_INTB" | ||
168 | default 11 | ||
169 | config IRQ_TMR0 | ||
170 | int "IRQ_TMR0" | ||
171 | default 12 | ||
172 | config IRQ_TMR1 | ||
173 | int "IRQ_TMR1" | ||
174 | default 12 | ||
175 | config IRQ_TMR2 | ||
176 | int "IRQ_TMR2" | ||
177 | default 12 | ||
178 | config IRQ_TMR3 | ||
179 | int "IRQ_TMR3" | ||
180 | default 12 | ||
181 | config IRQ_TMR4 | ||
182 | int "IRQ_TMR4" | ||
183 | default 12 | ||
184 | config IRQ_TMR5 | ||
185 | int "IRQ_TMR5" | ||
186 | default 12 | ||
187 | config IRQ_TMR6 | ||
188 | int "IRQ_TMR6" | ||
189 | default 12 | ||
190 | config IRQ_TMR7 | ||
191 | int "IRQ_TMR7" | ||
192 | default 12 | ||
193 | config IRQ_PORTG_INTA | ||
194 | int "IRQ_PORTG_INTA" | ||
195 | default 12 | ||
196 | config IRQ_PORTG_INTB | ||
197 | int "IRQ_PORTG_INTB" | ||
198 | default 12 | ||
199 | config IRQ_MEM_DMA0 | ||
200 | int "IRQ_MEM_DMA0" | ||
201 | default 13 | ||
202 | config IRQ_MEM_DMA1 | ||
203 | int "IRQ_MEM_DMA1" | ||
204 | default 13 | ||
205 | config IRQ_WATCH | ||
206 | int "IRQ_WATCH" | ||
207 | default 13 | ||
208 | config IRQ_PORTF_INTA | ||
209 | int "IRQ_PORTF_INTA" | ||
210 | default 13 | ||
211 | config IRQ_PORTF_INTB | ||
212 | int "IRQ_PORTF_INTB" | ||
213 | default 13 | ||
214 | config IRQ_SPI_ERROR | ||
215 | int "IRQ_SPI_ERROR" | ||
216 | default 7 | ||
217 | config IRQ_NFC_ERROR | ||
218 | int "IRQ_NFC_ERROR" | ||
219 | default 7 | ||
220 | config IRQ_HDMA_ERROR | ||
221 | int "IRQ_HDMA_ERROR" | ||
222 | default 7 | ||
223 | config IRQ_HDMA | ||
224 | int "IRQ_HDMA" | ||
225 | default 7 | ||
226 | config IRQ_USB_EINT | ||
227 | int "IRQ_USB_EINT" | ||
228 | default 10 | ||
229 | config IRQ_USB_INT0 | ||
230 | int "IRQ_USB_INT0" | ||
231 | default 10 | ||
232 | config IRQ_USB_INT1 | ||
233 | int "IRQ_USB_INT1" | ||
234 | default 10 | ||
235 | config IRQ_USB_INT2 | ||
236 | int "IRQ_USB_INT2" | ||
237 | default 10 | ||
238 | config IRQ_USB_DMA | ||
239 | int "IRQ_USB_DMA" | ||
240 | default 10 | ||
241 | |||
242 | help | ||
243 | Enter the priority numbers between 7-13 ONLY. Others are Reserved. | ||
244 | This applies to all the above. It is not recommended to assign the | ||
245 | highest priority number 7 to UART or any other device. | ||
246 | |||
247 | endmenu | ||
248 | |||
249 | endmenu | ||
250 | |||
251 | endif | ||
diff --git a/arch/blackfin/mach-bf527/Makefile b/arch/blackfin/mach-bf527/Makefile new file mode 100644 index 000000000000..9f99f5d0bcd1 --- /dev/null +++ b/arch/blackfin/mach-bf527/Makefile | |||
@@ -0,0 +1,9 @@ | |||
1 | # | ||
2 | # arch/blackfin/mach-bf527/Makefile | ||
3 | # | ||
4 | |||
5 | extra-y := head.o | ||
6 | |||
7 | obj-y := ints-priority.o dma.o | ||
8 | |||
9 | obj-$(CONFIG_CPU_FREQ) += cpu.o | ||
diff --git a/arch/blackfin/mach-bf527/boards/Makefile b/arch/blackfin/mach-bf527/boards/Makefile new file mode 100644 index 000000000000..912ac8ebc889 --- /dev/null +++ b/arch/blackfin/mach-bf527/boards/Makefile | |||
@@ -0,0 +1,7 @@ | |||
1 | # | ||
2 | # arch/blackfin/mach-bf532/boards/Makefile | ||
3 | # | ||
4 | |||
5 | obj-y += eth_mac.o | ||
6 | obj-$(CONFIG_BFIN527_EZKIT) += ezkit.o | ||
7 | |||
diff --git a/arch/blackfin/mach-bf527/boards/eth_mac.c b/arch/blackfin/mach-bf527/boards/eth_mac.c new file mode 100644 index 000000000000..a725cc8a9290 --- /dev/null +++ b/arch/blackfin/mach-bf527/boards/eth_mac.c | |||
@@ -0,0 +1,50 @@ | |||
1 | /* | ||
2 | * arch/blackfin/mach-bf537/board/eth_mac.c | ||
3 | * | ||
4 | * Copyright (C) 2007 Analog Devices, Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | #include <linux/module.h> | ||
21 | #include <asm/blackfin.h> | ||
22 | |||
23 | #if defined(CONFIG_GENERIC_BOARD) || defined(CONFIG_BFIN537_STAMP) | ||
24 | |||
25 | /* | ||
26 | * Currently the MAC address is saved in Flash by U-Boot | ||
27 | */ | ||
28 | #define FLASH_MAC 0x203f0000 | ||
29 | |||
30 | void get_bf537_ether_addr(char *addr) | ||
31 | { | ||
32 | unsigned int flash_mac = (unsigned int) FLASH_MAC; | ||
33 | *(u32 *)(&(addr[0])) = bfin_read32(flash_mac); | ||
34 | flash_mac += 4; | ||
35 | *(u16 *)(&(addr[4])) = bfin_read16(flash_mac); | ||
36 | } | ||
37 | |||
38 | #else | ||
39 | |||
40 | /* | ||
41 | * Provide MAC address function for other specific board setting | ||
42 | */ | ||
43 | void get_bf537_ether_addr(char *addr) | ||
44 | { | ||
45 | printk(KERN_WARNING "%s: No valid Ethernet MAC address found\n", __FILE__); | ||
46 | } | ||
47 | |||
48 | #endif | ||
49 | |||
50 | EXPORT_SYMBOL(get_bf537_ether_addr); | ||
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c new file mode 100644 index 000000000000..3e884f3a8182 --- /dev/null +++ b/arch/blackfin/mach-bf527/boards/ezkit.c | |||
@@ -0,0 +1,737 @@ | |||
1 | /* | ||
2 | * File: arch/blackfin/mach-bf527/boards/ezkit.c | ||
3 | * Based on: arch/blackfin/mach-bf537/boards/stamp.c | ||
4 | * Author: Aidan Williams <aidan@nicta.com.au> | ||
5 | * | ||
6 | * Created: | ||
7 | * Description: | ||
8 | * | ||
9 | * Modified: | ||
10 | * Copyright 2005 National ICT Australia (NICTA) | ||
11 | * Copyright 2004-2007 Analog Devices Inc. | ||
12 | * | ||
13 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or modify | ||
16 | * it under the terms of the GNU General Public License as published by | ||
17 | * the Free Software Foundation; either version 2 of the License, or | ||
18 | * (at your option) any later version. | ||
19 | * | ||
20 | * This program is distributed in the hope that it will be useful, | ||
21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
22 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
23 | * GNU General Public License for more details. | ||
24 | * | ||
25 | * You should have received a copy of the GNU General Public License | ||
26 | * along with this program; if not, see the file COPYING, or write | ||
27 | * to the Free Software Foundation, Inc., | ||
28 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
29 | */ | ||
30 | |||
31 | #include <linux/device.h> | ||
32 | #include <linux/platform_device.h> | ||
33 | #include <linux/mtd/mtd.h> | ||
34 | #include <linux/mtd/partitions.h> | ||
35 | #include <linux/spi/spi.h> | ||
36 | #include <linux/spi/flash.h> | ||
37 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | ||
38 | #include <linux/usb_isp1362.h> | ||
39 | #endif | ||
40 | #include <linux/pata_platform.h> | ||
41 | #include <linux/irq.h> | ||
42 | #include <linux/interrupt.h> | ||
43 | #include <linux/usb_sl811.h> | ||
44 | #include <asm/dma.h> | ||
45 | #include <asm/bfin5xx_spi.h> | ||
46 | #include <asm/reboot.h> | ||
47 | #include <linux/spi/ad7877.h> | ||
48 | |||
49 | /* | ||
50 | * Name the Board for the /proc/cpuinfo | ||
51 | */ | ||
52 | const char bfin_board_name[] = "ADDS-BF527-EZKIT"; | ||
53 | |||
54 | /* | ||
55 | * Driver needs to know address, irq and flag pin. | ||
56 | */ | ||
57 | |||
58 | #define ISP1761_BASE 0x203C0000 | ||
59 | #define ISP1761_IRQ IRQ_PF7 | ||
60 | |||
61 | #if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE) | ||
62 | static struct resource bfin_isp1761_resources[] = { | ||
63 | [0] = { | ||
64 | .name = "isp1761-regs", | ||
65 | .start = ISP1761_BASE + 0x00000000, | ||
66 | .end = ISP1761_BASE + 0x000fffff, | ||
67 | .flags = IORESOURCE_MEM, | ||
68 | }, | ||
69 | [1] = { | ||
70 | .start = ISP1761_IRQ, | ||
71 | .end = ISP1761_IRQ, | ||
72 | .flags = IORESOURCE_IRQ, | ||
73 | }, | ||
74 | }; | ||
75 | |||
76 | static struct platform_device bfin_isp1761_device = { | ||
77 | .name = "isp1761", | ||
78 | .id = 0, | ||
79 | .num_resources = ARRAY_SIZE(bfin_isp1761_resources), | ||
80 | .resource = bfin_isp1761_resources, | ||
81 | }; | ||
82 | |||
83 | static struct platform_device *bfin_isp1761_devices[] = { | ||
84 | &bfin_isp1761_device, | ||
85 | }; | ||
86 | |||
87 | int __init bfin_isp1761_init(void) | ||
88 | { | ||
89 | unsigned int num_devices = ARRAY_SIZE(bfin_isp1761_devices); | ||
90 | |||
91 | printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); | ||
92 | set_irq_type(ISP1761_IRQ, IRQF_TRIGGER_FALLING); | ||
93 | |||
94 | return platform_add_devices(bfin_isp1761_devices, num_devices); | ||
95 | } | ||
96 | |||
97 | void __exit bfin_isp1761_exit(void) | ||
98 | { | ||
99 | platform_device_unregister(&bfin_isp1761_device); | ||
100 | } | ||
101 | |||
102 | arch_initcall(bfin_isp1761_init); | ||
103 | #endif | ||
104 | |||
105 | #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) | ||
106 | static struct resource bfin_pcmcia_cf_resources[] = { | ||
107 | { | ||
108 | .start = 0x20310000, /* IO PORT */ | ||
109 | .end = 0x20312000, | ||
110 | .flags = IORESOURCE_MEM, | ||
111 | }, { | ||
112 | .start = 0x20311000, /* Attribute Memory */ | ||
113 | .end = 0x20311FFF, | ||
114 | .flags = IORESOURCE_MEM, | ||
115 | }, { | ||
116 | .start = IRQ_PF4, | ||
117 | .end = IRQ_PF4, | ||
118 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL, | ||
119 | }, { | ||
120 | .start = 6, /* Card Detect PF6 */ | ||
121 | .end = 6, | ||
122 | .flags = IORESOURCE_IRQ, | ||
123 | }, | ||
124 | }; | ||
125 | |||
126 | static struct platform_device bfin_pcmcia_cf_device = { | ||
127 | .name = "bfin_cf_pcmcia", | ||
128 | .id = -1, | ||
129 | .num_resources = ARRAY_SIZE(bfin_pcmcia_cf_resources), | ||
130 | .resource = bfin_pcmcia_cf_resources, | ||
131 | }; | ||
132 | #endif | ||
133 | |||
134 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | ||
135 | static struct platform_device rtc_device = { | ||
136 | .name = "rtc-bfin", | ||
137 | .id = -1, | ||
138 | }; | ||
139 | #endif | ||
140 | |||
141 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) | ||
142 | static struct resource smc91x_resources[] = { | ||
143 | { | ||
144 | .name = "smc91x-regs", | ||
145 | .start = 0x20300300, | ||
146 | .end = 0x20300300 + 16, | ||
147 | .flags = IORESOURCE_MEM, | ||
148 | }, { | ||
149 | |||
150 | .start = IRQ_PF7, | ||
151 | .end = IRQ_PF7, | ||
152 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
153 | }, | ||
154 | }; | ||
155 | static struct platform_device smc91x_device = { | ||
156 | .name = "smc91x", | ||
157 | .id = 0, | ||
158 | .num_resources = ARRAY_SIZE(smc91x_resources), | ||
159 | .resource = smc91x_resources, | ||
160 | }; | ||
161 | #endif | ||
162 | |||
163 | #if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) | ||
164 | static struct resource dm9000_resources[] = { | ||
165 | [0] = { | ||
166 | .start = 0x203FB800, | ||
167 | .end = 0x203FB800 + 8, | ||
168 | .flags = IORESOURCE_MEM, | ||
169 | }, | ||
170 | [1] = { | ||
171 | .start = IRQ_PF9, | ||
172 | .end = IRQ_PF9, | ||
173 | .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE), | ||
174 | }, | ||
175 | }; | ||
176 | |||
177 | static struct platform_device dm9000_device = { | ||
178 | .name = "dm9000", | ||
179 | .id = -1, | ||
180 | .num_resources = ARRAY_SIZE(dm9000_resources), | ||
181 | .resource = dm9000_resources, | ||
182 | }; | ||
183 | #endif | ||
184 | |||
185 | #if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE) | ||
186 | static struct resource sl811_hcd_resources[] = { | ||
187 | { | ||
188 | .start = 0x20340000, | ||
189 | .end = 0x20340000, | ||
190 | .flags = IORESOURCE_MEM, | ||
191 | }, { | ||
192 | .start = 0x20340004, | ||
193 | .end = 0x20340004, | ||
194 | .flags = IORESOURCE_MEM, | ||
195 | }, { | ||
196 | .start = CONFIG_USB_SL811_BFIN_IRQ, | ||
197 | .end = CONFIG_USB_SL811_BFIN_IRQ, | ||
198 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
199 | }, | ||
200 | }; | ||
201 | |||
202 | #if defined(CONFIG_USB_SL811_BFIN_USE_VBUS) | ||
203 | void sl811_port_power(struct device *dev, int is_on) | ||
204 | { | ||
205 | gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS"); | ||
206 | gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS); | ||
207 | |||
208 | if (is_on) | ||
209 | gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1); | ||
210 | else | ||
211 | gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0); | ||
212 | } | ||
213 | #endif | ||
214 | |||
215 | static struct sl811_platform_data sl811_priv = { | ||
216 | .potpg = 10, | ||
217 | .power = 250, /* == 500mA */ | ||
218 | #if defined(CONFIG_USB_SL811_BFIN_USE_VBUS) | ||
219 | .port_power = &sl811_port_power, | ||
220 | #endif | ||
221 | }; | ||
222 | |||
223 | static struct platform_device sl811_hcd_device = { | ||
224 | .name = "sl811-hcd", | ||
225 | .id = 0, | ||
226 | .dev = { | ||
227 | .platform_data = &sl811_priv, | ||
228 | }, | ||
229 | .num_resources = ARRAY_SIZE(sl811_hcd_resources), | ||
230 | .resource = sl811_hcd_resources, | ||
231 | }; | ||
232 | #endif | ||
233 | |||
234 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | ||
235 | static struct resource isp1362_hcd_resources[] = { | ||
236 | { | ||
237 | .start = 0x20360000, | ||
238 | .end = 0x20360000, | ||
239 | .flags = IORESOURCE_MEM, | ||
240 | }, { | ||
241 | .start = 0x20360004, | ||
242 | .end = 0x20360004, | ||
243 | .flags = IORESOURCE_MEM, | ||
244 | }, { | ||
245 | .start = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ, | ||
246 | .end = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ, | ||
247 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
248 | }, | ||
249 | }; | ||
250 | |||
251 | static struct isp1362_platform_data isp1362_priv = { | ||
252 | .sel15Kres = 1, | ||
253 | .clknotstop = 0, | ||
254 | .oc_enable = 0, | ||
255 | .int_act_high = 0, | ||
256 | .int_edge_triggered = 0, | ||
257 | .remote_wakeup_connected = 0, | ||
258 | .no_power_switching = 1, | ||
259 | .power_switching_mode = 0, | ||
260 | }; | ||
261 | |||
262 | static struct platform_device isp1362_hcd_device = { | ||
263 | .name = "isp1362-hcd", | ||
264 | .id = 0, | ||
265 | .dev = { | ||
266 | .platform_data = &isp1362_priv, | ||
267 | }, | ||
268 | .num_resources = ARRAY_SIZE(isp1362_hcd_resources), | ||
269 | .resource = isp1362_hcd_resources, | ||
270 | }; | ||
271 | #endif | ||
272 | |||
273 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) | ||
274 | static struct platform_device bfin_mac_device = { | ||
275 | .name = "bfin_mac", | ||
276 | }; | ||
277 | #endif | ||
278 | |||
279 | #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE) | ||
280 | static struct resource net2272_bfin_resources[] = { | ||
281 | { | ||
282 | .start = 0x20300000, | ||
283 | .end = 0x20300000 + 0x100, | ||
284 | .flags = IORESOURCE_MEM, | ||
285 | }, { | ||
286 | .start = IRQ_PF7, | ||
287 | .end = IRQ_PF7, | ||
288 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, | ||
289 | }, | ||
290 | }; | ||
291 | |||
292 | static struct platform_device net2272_bfin_device = { | ||
293 | .name = "net2272", | ||
294 | .id = -1, | ||
295 | .num_resources = ARRAY_SIZE(net2272_bfin_resources), | ||
296 | .resource = net2272_bfin_resources, | ||
297 | }; | ||
298 | #endif | ||
299 | |||
300 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
301 | /* all SPI peripherals info goes here */ | ||
302 | |||
303 | #if defined(CONFIG_MTD_M25P80) \ | ||
304 | || defined(CONFIG_MTD_M25P80_MODULE) | ||
305 | static struct mtd_partition bfin_spi_flash_partitions[] = { | ||
306 | { | ||
307 | .name = "bootloader", | ||
308 | .size = 0x00020000, | ||
309 | .offset = 0, | ||
310 | .mask_flags = MTD_CAP_ROM | ||
311 | }, { | ||
312 | .name = "kernel", | ||
313 | .size = 0xe0000, | ||
314 | .offset = 0x20000 | ||
315 | }, { | ||
316 | .name = "file system", | ||
317 | .size = 0x700000, | ||
318 | .offset = 0x00100000, | ||
319 | } | ||
320 | }; | ||
321 | |||
322 | static struct flash_platform_data bfin_spi_flash_data = { | ||
323 | .name = "m25p80", | ||
324 | .parts = bfin_spi_flash_partitions, | ||
325 | .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions), | ||
326 | .type = "m25p64", | ||
327 | }; | ||
328 | |||
329 | /* SPI flash chip (m25p64) */ | ||
330 | static struct bfin5xx_spi_chip spi_flash_chip_info = { | ||
331 | .enable_dma = 0, /* use dma transfer with this chip*/ | ||
332 | .bits_per_word = 8, | ||
333 | }; | ||
334 | #endif | ||
335 | |||
336 | #if defined(CONFIG_SPI_ADC_BF533) \ | ||
337 | || defined(CONFIG_SPI_ADC_BF533_MODULE) | ||
338 | /* SPI ADC chip */ | ||
339 | static struct bfin5xx_spi_chip spi_adc_chip_info = { | ||
340 | .enable_dma = 1, /* use dma transfer with this chip*/ | ||
341 | .bits_per_word = 16, | ||
342 | }; | ||
343 | #endif | ||
344 | |||
345 | #if defined(CONFIG_SND_BLACKFIN_AD1836) \ | ||
346 | || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) | ||
347 | static struct bfin5xx_spi_chip ad1836_spi_chip_info = { | ||
348 | .enable_dma = 0, | ||
349 | .bits_per_word = 16, | ||
350 | }; | ||
351 | #endif | ||
352 | |||
353 | #if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE) | ||
354 | static struct bfin5xx_spi_chip ad9960_spi_chip_info = { | ||
355 | .enable_dma = 0, | ||
356 | .bits_per_word = 16, | ||
357 | }; | ||
358 | #endif | ||
359 | |||
360 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) | ||
361 | static struct bfin5xx_spi_chip spi_mmc_chip_info = { | ||
362 | .enable_dma = 1, | ||
363 | .bits_per_word = 8, | ||
364 | }; | ||
365 | #endif | ||
366 | |||
367 | #if defined(CONFIG_PBX) | ||
368 | static struct bfin5xx_spi_chip spi_si3xxx_chip_info = { | ||
369 | .ctl_reg = 0x4, /* send zero */ | ||
370 | .enable_dma = 0, | ||
371 | .bits_per_word = 8, | ||
372 | .cs_change_per_word = 1, | ||
373 | }; | ||
374 | #endif | ||
375 | |||
376 | #if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE) | ||
377 | static struct bfin5xx_spi_chip ad5304_chip_info = { | ||
378 | .enable_dma = 0, | ||
379 | .bits_per_word = 16, | ||
380 | }; | ||
381 | #endif | ||
382 | |||
383 | #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) | ||
384 | static struct bfin5xx_spi_chip spi_ad7877_chip_info = { | ||
385 | .enable_dma = 0, | ||
386 | .bits_per_word = 16, | ||
387 | }; | ||
388 | |||
389 | static const struct ad7877_platform_data bfin_ad7877_ts_info = { | ||
390 | .model = 7877, | ||
391 | .vref_delay_usecs = 50, /* internal, no capacitor */ | ||
392 | .x_plate_ohms = 419, | ||
393 | .y_plate_ohms = 486, | ||
394 | .pressure_max = 1000, | ||
395 | .pressure_min = 0, | ||
396 | .stopacq_polarity = 1, | ||
397 | .first_conversion_delay = 3, | ||
398 | .acquisition_time = 1, | ||
399 | .averaging = 1, | ||
400 | .pen_down_acc_interval = 1, | ||
401 | }; | ||
402 | #endif | ||
403 | |||
404 | static struct spi_board_info bfin_spi_board_info[] __initdata = { | ||
405 | #if defined(CONFIG_MTD_M25P80) \ | ||
406 | || defined(CONFIG_MTD_M25P80_MODULE) | ||
407 | { | ||
408 | /* the modalias must be the same as spi device driver name */ | ||
409 | .modalias = "m25p80", /* Name of spi_driver for this device */ | ||
410 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | ||
411 | .bus_num = 0, /* Framework bus number */ | ||
412 | .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/ | ||
413 | .platform_data = &bfin_spi_flash_data, | ||
414 | .controller_data = &spi_flash_chip_info, | ||
415 | .mode = SPI_MODE_3, | ||
416 | }, | ||
417 | #endif | ||
418 | |||
419 | #if defined(CONFIG_SPI_ADC_BF533) \ | ||
420 | || defined(CONFIG_SPI_ADC_BF533_MODULE) | ||
421 | { | ||
422 | .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */ | ||
423 | .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */ | ||
424 | .bus_num = 0, /* Framework bus number */ | ||
425 | .chip_select = 1, /* Framework chip select. */ | ||
426 | .platform_data = NULL, /* No spi_driver specific config */ | ||
427 | .controller_data = &spi_adc_chip_info, | ||
428 | }, | ||
429 | #endif | ||
430 | |||
431 | #if defined(CONFIG_SND_BLACKFIN_AD1836) \ | ||
432 | || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE) | ||
433 | { | ||
434 | .modalias = "ad1836-spi", | ||
435 | .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */ | ||
436 | .bus_num = 0, | ||
437 | .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT, | ||
438 | .controller_data = &ad1836_spi_chip_info, | ||
439 | }, | ||
440 | #endif | ||
441 | #if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE) | ||
442 | { | ||
443 | .modalias = "ad9960-spi", | ||
444 | .max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */ | ||
445 | .bus_num = 0, | ||
446 | .chip_select = 1, | ||
447 | .controller_data = &ad9960_spi_chip_info, | ||
448 | }, | ||
449 | #endif | ||
450 | #if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) | ||
451 | { | ||
452 | .modalias = "spi_mmc_dummy", | ||
453 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | ||
454 | .bus_num = 0, | ||
455 | .chip_select = 0, | ||
456 | .platform_data = NULL, | ||
457 | .controller_data = &spi_mmc_chip_info, | ||
458 | .mode = SPI_MODE_3, | ||
459 | }, | ||
460 | { | ||
461 | .modalias = "spi_mmc", | ||
462 | .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */ | ||
463 | .bus_num = 0, | ||
464 | .chip_select = CONFIG_SPI_MMC_CS_CHAN, | ||
465 | .platform_data = NULL, | ||
466 | .controller_data = &spi_mmc_chip_info, | ||
467 | .mode = SPI_MODE_3, | ||
468 | }, | ||
469 | #endif | ||
470 | #if defined(CONFIG_PBX) | ||
471 | { | ||
472 | .modalias = "fxs-spi", | ||
473 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ | ||
474 | .bus_num = 0, | ||
475 | .chip_select = 8 - CONFIG_J11_JUMPER, | ||
476 | .controller_data = &spi_si3xxx_chip_info, | ||
477 | .mode = SPI_MODE_3, | ||
478 | }, | ||
479 | { | ||
480 | .modalias = "fxo-spi", | ||
481 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ | ||
482 | .bus_num = 0, | ||
483 | .chip_select = 8 - CONFIG_J19_JUMPER, | ||
484 | .controller_data = &spi_si3xxx_chip_info, | ||
485 | .mode = SPI_MODE_3, | ||
486 | }, | ||
487 | #endif | ||
488 | #if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE) | ||
489 | { | ||
490 | .modalias = "ad5304_spi", | ||
491 | .max_speed_hz = 1250000, /* max spi clock (SCK) speed in HZ */ | ||
492 | .bus_num = 0, | ||
493 | .chip_select = 2, | ||
494 | .platform_data = NULL, | ||
495 | .controller_data = &ad5304_chip_info, | ||
496 | .mode = SPI_MODE_2, | ||
497 | }, | ||
498 | #endif | ||
499 | #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) | ||
500 | { | ||
501 | .modalias = "ad7877", | ||
502 | .platform_data = &bfin_ad7877_ts_info, | ||
503 | .irq = IRQ_PF6, | ||
504 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ | ||
505 | .bus_num = 1, | ||
506 | .chip_select = 1, | ||
507 | .controller_data = &spi_ad7877_chip_info, | ||
508 | }, | ||
509 | #endif | ||
510 | }; | ||
511 | |||
512 | /* SPI controller data */ | ||
513 | static struct bfin5xx_spi_master bfin_spi0_info = { | ||
514 | .num_chipselect = 8, | ||
515 | .enable_dma = 1, /* master has the ability to do dma transfer */ | ||
516 | }; | ||
517 | |||
518 | /* SPI (0) */ | ||
519 | static struct resource bfin_spi0_resource[] = { | ||
520 | [0] = { | ||
521 | .start = SPI0_REGBASE, | ||
522 | .end = SPI0_REGBASE + 0xFF, | ||
523 | .flags = IORESOURCE_MEM, | ||
524 | }, | ||
525 | [1] = { | ||
526 | .start = CH_SPI, | ||
527 | .end = CH_SPI, | ||
528 | .flags = IORESOURCE_IRQ, | ||
529 | }, | ||
530 | }; | ||
531 | |||
532 | static struct platform_device bfin_spi0_device = { | ||
533 | .name = "bfin-spi", | ||
534 | .id = 0, /* Bus number */ | ||
535 | .num_resources = ARRAY_SIZE(bfin_spi0_resource), | ||
536 | .resource = bfin_spi0_resource, | ||
537 | .dev = { | ||
538 | .platform_data = &bfin_spi0_info, /* Passed to driver */ | ||
539 | }, | ||
540 | }; | ||
541 | #endif /* spi master and devices */ | ||
542 | |||
543 | #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE) | ||
544 | static struct platform_device bfin_fb_device = { | ||
545 | .name = "bf537-lq035", | ||
546 | }; | ||
547 | #endif | ||
548 | |||
549 | #if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE) | ||
550 | static struct platform_device bfin_fb_adv7393_device = { | ||
551 | .name = "bfin-adv7393", | ||
552 | }; | ||
553 | #endif | ||
554 | |||
555 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | ||
556 | static struct resource bfin_uart_resources[] = { | ||
557 | #ifdef CONFIG_SERIAL_BFIN_UART0 | ||
558 | { | ||
559 | .start = 0xFFC00400, | ||
560 | .end = 0xFFC004FF, | ||
561 | .flags = IORESOURCE_MEM, | ||
562 | }, | ||
563 | #endif | ||
564 | #ifdef CONFIG_SERIAL_BFIN_UART1 | ||
565 | { | ||
566 | .start = 0xFFC02000, | ||
567 | .end = 0xFFC020FF, | ||
568 | .flags = IORESOURCE_MEM, | ||
569 | }, | ||
570 | #endif | ||
571 | }; | ||
572 | |||
573 | static struct platform_device bfin_uart_device = { | ||
574 | .name = "bfin-uart", | ||
575 | .id = 1, | ||
576 | .num_resources = ARRAY_SIZE(bfin_uart_resources), | ||
577 | .resource = bfin_uart_resources, | ||
578 | }; | ||
579 | #endif | ||
580 | |||
581 | #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) | ||
582 | static struct resource bfin_twi0_resource[] = { | ||
583 | [0] = { | ||
584 | .start = TWI0_REGBASE, | ||
585 | .end = TWI0_REGBASE, | ||
586 | .flags = IORESOURCE_MEM, | ||
587 | }, | ||
588 | [1] = { | ||
589 | .start = IRQ_TWI, | ||
590 | .end = IRQ_TWI, | ||
591 | .flags = IORESOURCE_IRQ, | ||
592 | }, | ||
593 | }; | ||
594 | |||
595 | static struct platform_device i2c_bfin_twi_device = { | ||
596 | .name = "i2c-bfin-twi", | ||
597 | .id = 0, | ||
598 | .num_resources = ARRAY_SIZE(bfin_twi0_resource), | ||
599 | .resource = bfin_twi0_resource, | ||
600 | }; | ||
601 | #endif | ||
602 | |||
603 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | ||
604 | static struct platform_device bfin_sport0_uart_device = { | ||
605 | .name = "bfin-sport-uart", | ||
606 | .id = 0, | ||
607 | }; | ||
608 | |||
609 | static struct platform_device bfin_sport1_uart_device = { | ||
610 | .name = "bfin-sport-uart", | ||
611 | .id = 1, | ||
612 | }; | ||
613 | #endif | ||
614 | |||
615 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | ||
616 | #define PATA_INT 55 | ||
617 | |||
618 | static struct pata_platform_info bfin_pata_platform_data = { | ||
619 | .ioport_shift = 1, | ||
620 | .irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED, | ||
621 | }; | ||
622 | |||
623 | static struct resource bfin_pata_resources[] = { | ||
624 | { | ||
625 | .start = 0x20314020, | ||
626 | .end = 0x2031403F, | ||
627 | .flags = IORESOURCE_MEM, | ||
628 | }, | ||
629 | { | ||
630 | .start = 0x2031401C, | ||
631 | .end = 0x2031401F, | ||
632 | .flags = IORESOURCE_MEM, | ||
633 | }, | ||
634 | { | ||
635 | .start = PATA_INT, | ||
636 | .end = PATA_INT, | ||
637 | .flags = IORESOURCE_IRQ, | ||
638 | }, | ||
639 | }; | ||
640 | |||
641 | static struct platform_device bfin_pata_device = { | ||
642 | .name = "pata_platform", | ||
643 | .id = -1, | ||
644 | .num_resources = ARRAY_SIZE(bfin_pata_resources), | ||
645 | .resource = bfin_pata_resources, | ||
646 | .dev = { | ||
647 | .platform_data = &bfin_pata_platform_data, | ||
648 | } | ||
649 | }; | ||
650 | #endif | ||
651 | |||
652 | static struct platform_device *stamp_devices[] __initdata = { | ||
653 | #if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) | ||
654 | &bfin_pcmcia_cf_device, | ||
655 | #endif | ||
656 | |||
657 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | ||
658 | &rtc_device, | ||
659 | #endif | ||
660 | |||
661 | #if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE) | ||
662 | &sl811_hcd_device, | ||
663 | #endif | ||
664 | |||
665 | #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) | ||
666 | &isp1362_hcd_device, | ||
667 | #endif | ||
668 | |||
669 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) | ||
670 | &smc91x_device, | ||
671 | #endif | ||
672 | |||
673 | #if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE) | ||
674 | &dm9000_device, | ||
675 | #endif | ||
676 | |||
677 | #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) | ||
678 | &bfin_mac_device, | ||
679 | #endif | ||
680 | |||
681 | #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE) | ||
682 | &net2272_bfin_device, | ||
683 | #endif | ||
684 | |||
685 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
686 | &bfin_spi0_device, | ||
687 | #endif | ||
688 | |||
689 | #if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE) | ||
690 | &bfin_fb_device, | ||
691 | #endif | ||
692 | |||
693 | #if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE) | ||
694 | &bfin_fb_adv7393_device, | ||
695 | #endif | ||
696 | |||
697 | #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) | ||
698 | &bfin_uart_device, | ||
699 | #endif | ||
700 | |||
701 | #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE) | ||
702 | &i2c_bfin_twi_device, | ||
703 | #endif | ||
704 | |||
705 | #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE) | ||
706 | &bfin_sport0_uart_device, | ||
707 | &bfin_sport1_uart_device, | ||
708 | #endif | ||
709 | |||
710 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | ||
711 | &bfin_pata_device, | ||
712 | #endif | ||
713 | }; | ||
714 | |||
715 | static int __init stamp_init(void) | ||
716 | { | ||
717 | printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); | ||
718 | platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices)); | ||
719 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | ||
720 | spi_register_board_info(bfin_spi_board_info, | ||
721 | ARRAY_SIZE(bfin_spi_board_info)); | ||
722 | #endif | ||
723 | |||
724 | #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE) | ||
725 | irq_desc[PATA_INT].status |= IRQ_NOAUTOEN; | ||
726 | #endif | ||
727 | return 0; | ||
728 | } | ||
729 | |||
730 | arch_initcall(stamp_init); | ||
731 | |||
732 | void native_machine_restart(char *cmd) | ||
733 | { | ||
734 | /* workaround reboot hang when booting from SPI */ | ||
735 | if ((bfin_read_SYSCR() & 0x7) == 0x3) | ||
736 | bfin_gpio_reset_spi0_ssel1(); | ||
737 | } | ||
diff --git a/arch/blackfin/mach-bf527/cpu.c b/arch/blackfin/mach-bf527/cpu.c new file mode 100644 index 000000000000..1975402b1dbc --- /dev/null +++ b/arch/blackfin/mach-bf527/cpu.c | |||
@@ -0,0 +1,161 @@ | |||
1 | /* | ||
2 | * File: arch/blackfin/mach-bf527/cpu.c | ||
3 | * Based on: arch/blackfin/mach-bf537/cpu.c | ||
4 | * Author: michael.kang@analog.com | ||
5 | * | ||
6 | * Created: | ||
7 | * Description: clock scaling for the bf527 | ||
8 | * | ||
9 | * Modified: | ||
10 | * Copyright 2004-2007 Analog Devices Inc. | ||
11 | * | ||
12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or modify | ||
15 | * it under the terms of the GNU General Public License as published by | ||
16 | * the Free Software Foundation; either version 2 of the License, or | ||
17 | * (at your option) any later version. | ||
18 | * | ||
19 | * This program is distributed in the hope that it will be useful, | ||
20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
22 | * GNU General Public License for more details. | ||
23 | * | ||
24 | * You should have received a copy of the GNU General Public License | ||
25 | * along with this program; if not, see the file COPYING, or write | ||
26 | * to the Free Software Foundation, Inc., | ||
27 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
28 | */ | ||
29 | |||
30 | #include <linux/kernel.h> | ||
31 | #include <linux/types.h> | ||
32 | #include <linux/init.h> | ||
33 | #include <linux/cpufreq.h> | ||
34 | #include <asm/dpmc.h> | ||
35 | #include <linux/fs.h> | ||
36 | #include <asm/bfin-global.h> | ||
37 | |||
38 | /* CONFIG_CLKIN_HZ=11059200 */ | ||
39 | #define VCO5 (CONFIG_CLKIN_HZ*45) /*497664000 */ | ||
40 | #define VCO4 (CONFIG_CLKIN_HZ*36) /*398131200 */ | ||
41 | #define VCO3 (CONFIG_CLKIN_HZ*27) /*298598400 */ | ||
42 | #define VCO2 (CONFIG_CLKIN_HZ*18) /*199065600 */ | ||
43 | #define VCO1 (CONFIG_CLKIN_HZ*9) /*99532800 */ | ||
44 | #define VCO(x) VCO##x | ||
45 | |||
46 | #define MFREQ(x) {VCO(x), VCO(x)/4}, {VCO(x), VCO(x)/2}, {VCO(x), VCO(x)} | ||
47 | /* frequency */ | ||
48 | static struct cpufreq_frequency_table bf527_freq_table[] = { | ||
49 | MFREQ(1), | ||
50 | MFREQ(3), | ||
51 | {VCO4, VCO4 / 2}, {VCO4, VCO4}, | ||
52 | MFREQ(5), | ||
53 | {0, CPUFREQ_TABLE_END}, | ||
54 | }; | ||
55 | |||
56 | /* | ||
57 | * dpmc_fops->ioctl() | ||
58 | * static int dpmc_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) | ||
59 | */ | ||
60 | static int bf527_getfreq(unsigned int cpu) | ||
61 | { | ||
62 | unsigned long cclk_mhz; | ||
63 | |||
64 | /* The driver only support single cpu */ | ||
65 | if (cpu == 0) | ||
66 | dpmc_fops.ioctl(NULL, NULL, IOCTL_GET_CORECLOCK, &cclk_mhz); | ||
67 | else | ||
68 | cclk_mhz = -1; | ||
69 | |||
70 | return cclk_mhz; | ||
71 | } | ||
72 | |||
73 | static int bf527_target(struct cpufreq_policy *policy, | ||
74 | unsigned int target_freq, unsigned int relation) | ||
75 | { | ||
76 | unsigned long cclk_mhz; | ||
77 | unsigned long vco_mhz; | ||
78 | unsigned long flags; | ||
79 | unsigned int index; | ||
80 | struct cpufreq_freqs freqs; | ||
81 | |||
82 | if (cpufreq_frequency_table_target | ||
83 | (policy, bf527_freq_table, target_freq, relation, &index)) | ||
84 | return -EINVAL; | ||
85 | |||
86 | cclk_mhz = bf527_freq_table[index].frequency; | ||
87 | vco_mhz = bf527_freq_table[index].index; | ||
88 | |||
89 | dpmc_fops.ioctl(NULL, NULL, IOCTL_CHANGE_FREQUENCY, &vco_mhz); | ||
90 | freqs.old = bf527_getfreq(0); | ||
91 | freqs.new = cclk_mhz; | ||
92 | freqs.cpu = 0; | ||
93 | |||
94 | pr_debug | ||
95 | ("cclk begin change to cclk %d,vco=%d,index=%d,target=%d,oldfreq=%d\n", | ||
96 | cclk_mhz, vco_mhz, index, target_freq, freqs.old); | ||
97 | |||
98 | cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); | ||
99 | local_irq_save(flags); | ||
100 | dpmc_fops.ioctl(NULL, NULL, IOCTL_SET_CCLK, &cclk_mhz); | ||
101 | local_irq_restore(flags); | ||
102 | cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); | ||
103 | |||
104 | vco_mhz = get_vco(); | ||
105 | cclk_mhz = get_cclk(); | ||
106 | return 0; | ||
107 | } | ||
108 | |||
109 | /* make sure that only the "userspace" governor is run -- anything else wouldn't make sense on | ||
110 | * this platform, anyway. | ||
111 | */ | ||
112 | static int bf527_verify_speed(struct cpufreq_policy *policy) | ||
113 | { | ||
114 | return cpufreq_frequency_table_verify(policy, &bf527_freq_table); | ||
115 | } | ||
116 | |||
117 | static int __init __bf527_cpu_init(struct cpufreq_policy *policy) | ||
118 | { | ||
119 | if (policy->cpu != 0) | ||
120 | return -EINVAL; | ||
121 | |||
122 | policy->governor = CPUFREQ_DEFAULT_GOVERNOR; | ||
123 | |||
124 | policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL; | ||
125 | /*Now ,only support one cpu */ | ||
126 | policy->cur = bf527_getfreq(0); | ||
127 | cpufreq_frequency_table_get_attr(bf527_freq_table, policy->cpu); | ||
128 | return cpufreq_frequency_table_cpuinfo(policy, bf527_freq_table); | ||
129 | } | ||
130 | |||
131 | static struct freq_attr *bf527_freq_attr[] = { | ||
132 | &cpufreq_freq_attr_scaling_available_freqs, | ||
133 | NULL, | ||
134 | }; | ||
135 | |||
136 | static struct cpufreq_driver bf527_driver = { | ||
137 | .verify = bf527_verify_speed, | ||
138 | .target = bf527_target, | ||
139 | .get = bf527_getfreq, | ||
140 | .init = __bf527_cpu_init, | ||
141 | .name = "bf527", | ||
142 | .owner = THIS_MODULE, | ||
143 | .attr = bf527_freq_attr, | ||
144 | }; | ||
145 | |||
146 | static int __init bf527_cpu_init(void) | ||
147 | { | ||
148 | return cpufreq_register_driver(&bf527_driver); | ||
149 | } | ||
150 | |||
151 | static void __exit bf527_cpu_exit(void) | ||
152 | { | ||
153 | cpufreq_unregister_driver(&bf527_driver); | ||
154 | } | ||
155 | |||
156 | MODULE_AUTHOR("Mickael Kang"); | ||
157 | MODULE_DESCRIPTION("cpufreq driver for bf527 CPU"); | ||
158 | MODULE_LICENSE("GPL"); | ||
159 | |||
160 | module_init(bf527_cpu_init); | ||
161 | module_exit(bf527_cpu_exit); | ||
diff --git a/arch/blackfin/mach-bf527/dma.c b/arch/blackfin/mach-bf527/dma.c new file mode 100644 index 000000000000..522de24cc394 --- /dev/null +++ b/arch/blackfin/mach-bf527/dma.c | |||
@@ -0,0 +1,115 @@ | |||
1 | /* | ||
2 | * File: arch/blackfin/mach-bf527/dma.c | ||
3 | * Based on: | ||
4 | * Author: | ||
5 | * | ||
6 | * Created: | ||
7 | * Description: This file contains the simple DMA Implementation for Blackfin | ||
8 | * | ||
9 | * Modified: | ||
10 | * Copyright 2004-2007 Analog Devices Inc. | ||
11 | * | ||
12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or modify | ||
15 | * it under the terms of the GNU General Public License as published by | ||
16 | * the Free Software Foundation; either version 2 of the License, or | ||
17 | * (at your option) any later version. | ||
18 | * | ||
19 | * This program is distributed in the hope that it will be useful, | ||
20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
22 | * GNU General Public License for more details. | ||
23 | * | ||
24 | * You should have received a copy of the GNU General Public License | ||
25 | * along with this program; if not, see the file COPYING, or write | ||
26 | * to the Free Software Foundation, Inc., | ||
27 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
28 | */ | ||
29 | #include <asm/blackfin.h> | ||
30 | #include <asm/dma.h> | ||
31 | |||
32 | struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = { | ||
33 | (struct dma_register *) DMA0_NEXT_DESC_PTR, | ||
34 | (struct dma_register *) DMA1_NEXT_DESC_PTR, | ||
35 | (struct dma_register *) DMA2_NEXT_DESC_PTR, | ||
36 | (struct dma_register *) DMA3_NEXT_DESC_PTR, | ||
37 | (struct dma_register *) DMA4_NEXT_DESC_PTR, | ||
38 | (struct dma_register *) DMA5_NEXT_DESC_PTR, | ||
39 | (struct dma_register *) DMA6_NEXT_DESC_PTR, | ||
40 | (struct dma_register *) DMA7_NEXT_DESC_PTR, | ||
41 | (struct dma_register *) DMA8_NEXT_DESC_PTR, | ||
42 | (struct dma_register *) DMA9_NEXT_DESC_PTR, | ||
43 | (struct dma_register *) DMA10_NEXT_DESC_PTR, | ||
44 | (struct dma_register *) DMA11_NEXT_DESC_PTR, | ||
45 | (struct dma_register *) MDMA_D0_NEXT_DESC_PTR, | ||
46 | (struct dma_register *) MDMA_S0_NEXT_DESC_PTR, | ||
47 | (struct dma_register *) MDMA_D1_NEXT_DESC_PTR, | ||
48 | (struct dma_register *) MDMA_S1_NEXT_DESC_PTR, | ||
49 | }; | ||
50 | |||
51 | int channel2irq(unsigned int channel) | ||
52 | { | ||
53 | int ret_irq = -1; | ||
54 | |||
55 | switch (channel) { | ||
56 | case CH_PPI: | ||
57 | ret_irq = IRQ_PPI; | ||
58 | break; | ||
59 | |||
60 | case CH_EMAC_RX: | ||
61 | ret_irq = IRQ_MAC_RX; | ||
62 | break; | ||
63 | |||
64 | case CH_EMAC_TX: | ||
65 | ret_irq = IRQ_MAC_TX; | ||
66 | break; | ||
67 | |||
68 | case CH_UART1_RX: | ||
69 | ret_irq = IRQ_UART1_RX; | ||
70 | break; | ||
71 | |||
72 | case CH_UART1_TX: | ||
73 | ret_irq = IRQ_UART1_TX; | ||
74 | break; | ||
75 | |||
76 | case CH_SPORT0_RX: | ||
77 | ret_irq = IRQ_SPORT0_RX; | ||
78 | break; | ||
79 | |||
80 | case CH_SPORT0_TX: | ||
81 | ret_irq = IRQ_SPORT0_TX; | ||
82 | break; | ||
83 | |||
84 | case CH_SPORT1_RX: | ||
85 | ret_irq = IRQ_SPORT1_RX; | ||
86 | break; | ||
87 | |||
88 | case CH_SPORT1_TX: | ||
89 | ret_irq = IRQ_SPORT1_TX; | ||
90 | break; | ||
91 | |||
92 | case CH_SPI: | ||
93 | ret_irq = IRQ_SPI; | ||
94 | break; | ||
95 | |||
96 | case CH_UART0_RX: | ||
97 | ret_irq = IRQ_UART0_RX; | ||
98 | break; | ||
99 | |||
100 | case CH_UART0_TX: | ||
101 | ret_irq = IRQ_UART0_TX; | ||
102 | break; | ||
103 | |||
104 | case CH_MEM_STREAM0_SRC: | ||
105 | case CH_MEM_STREAM0_DEST: | ||
106 | ret_irq = IRQ_MEM_DMA0; | ||
107 | break; | ||
108 | |||
109 | case CH_MEM_STREAM1_SRC: | ||
110 | case CH_MEM_STREAM1_DEST: | ||
111 | ret_irq = IRQ_MEM_DMA1; | ||
112 | break; | ||
113 | } | ||
114 | return ret_irq; | ||
115 | } | ||
diff --git a/arch/blackfin/mach-bf527/head.S b/arch/blackfin/mach-bf527/head.S new file mode 100644 index 000000000000..cdb00a084965 --- /dev/null +++ b/arch/blackfin/mach-bf527/head.S | |||
@@ -0,0 +1,456 @@ | |||
1 | /* | ||
2 | * File: arch/blackfin/mach-bf527/head.S | ||
3 | * Based on: arch/blackfin/mach-bf533/head.S | ||
4 | * Author: Jeff Dionne <jeff@uclinux.org> COPYRIGHT 1998 D. Jeff Dionne | ||
5 | * | ||
6 | * Created: 1998 | ||
7 | * Description: Startup code for Blackfin BF537 | ||
8 | * | ||
9 | * Modified: | ||
10 | * Copyright 2004-2007 Analog Devices Inc. | ||
11 | * | ||
12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or modify | ||
15 | * it under the terms of the GNU General Public License as published by | ||
16 | * the Free Software Foundation; either version 2 of the License, or | ||
17 | * (at your option) any later version. | ||
18 | * | ||
19 | * This program is distributed in the hope that it will be useful, | ||
20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
22 | * GNU General Public License for more details. | ||
23 | * | ||
24 | * You should have received a copy of the GNU General Public License | ||
25 | * along with this program; if not, see the file COPYING, or write | ||
26 | * to the Free Software Foundation, Inc., | ||
27 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
28 | */ | ||
29 | |||
30 | #include <linux/linkage.h> | ||
31 | #include <linux/init.h> | ||
32 | #include <asm/blackfin.h> | ||
33 | #include <asm/trace.h> | ||
34 | |||
35 | #if CONFIG_BFIN_KERNEL_CLOCK | ||
36 | #include <asm/mach-common/clocks.h> | ||
37 | #include <asm/mach/mem_init.h> | ||
38 | #endif | ||
39 | |||
40 | .global __rambase | ||
41 | .global __ramstart | ||
42 | .global __ramend | ||
43 | .extern ___bss_stop | ||
44 | .extern ___bss_start | ||
45 | .extern _bf53x_relocate_l1_mem | ||
46 | |||
47 | #define INITIAL_STACK 0xFFB01000 | ||
48 | |||
49 | __INIT | ||
50 | |||
51 | ENTRY(__start) | ||
52 | /* R0: argument of command line string, passed from uboot, save it */ | ||
53 | R7 = R0; | ||
54 | /* Enable Cycle Counter and Nesting Of Interrupts */ | ||
55 | #ifdef CONFIG_BFIN_SCRATCH_REG_CYCLES | ||
56 | R0 = SYSCFG_SNEN; | ||
57 | #else | ||
58 | R0 = SYSCFG_SNEN | SYSCFG_CCEN; | ||
59 | #endif | ||
60 | SYSCFG = R0; | ||
61 | R0 = 0; | ||
62 | |||
63 | /* Clear Out All the data and pointer Registers */ | ||
64 | R1 = R0; | ||
65 | R2 = R0; | ||
66 | R3 = R0; | ||
67 | R4 = R0; | ||
68 | R5 = R0; | ||
69 | R6 = R0; | ||
70 | |||
71 | P0 = R0; | ||
72 | P1 = R0; | ||
73 | P2 = R0; | ||
74 | P3 = R0; | ||
75 | P4 = R0; | ||
76 | P5 = R0; | ||
77 | |||
78 | LC0 = r0; | ||
79 | LC1 = r0; | ||
80 | L0 = r0; | ||
81 | L1 = r0; | ||
82 | L2 = r0; | ||
83 | L3 = r0; | ||
84 | |||
85 | /* Clear Out All the DAG Registers */ | ||
86 | B0 = r0; | ||
87 | B1 = r0; | ||
88 | B2 = r0; | ||
89 | B3 = r0; | ||
90 | |||
91 | I0 = r0; | ||
92 | I1 = r0; | ||
93 | I2 = r0; | ||
94 | I3 = r0; | ||
95 | |||
96 | M0 = r0; | ||
97 | M1 = r0; | ||
98 | M2 = r0; | ||
99 | M3 = r0; | ||
100 | |||
101 | trace_buffer_init(p0,r0); | ||
102 | P0 = R1; | ||
103 | R0 = R1; | ||
104 | |||
105 | /* Turn off the icache */ | ||
106 | p0.l = LO(IMEM_CONTROL); | ||
107 | p0.h = HI(IMEM_CONTROL); | ||
108 | R1 = [p0]; | ||
109 | R0 = ~ENICPLB; | ||
110 | R0 = R0 & R1; | ||
111 | |||
112 | /* Anomaly 05000125 */ | ||
113 | #if ANOMALY_05000125 | ||
114 | CLI R2; | ||
115 | SSYNC; | ||
116 | #endif | ||
117 | [p0] = R0; | ||
118 | SSYNC; | ||
119 | #if ANOMALY_05000125 | ||
120 | STI R2; | ||
121 | #endif | ||
122 | |||
123 | /* Turn off the dcache */ | ||
124 | p0.l = LO(DMEM_CONTROL); | ||
125 | p0.h = HI(DMEM_CONTROL); | ||
126 | R1 = [p0]; | ||
127 | R0 = ~ENDCPLB; | ||
128 | R0 = R0 & R1; | ||
129 | |||
130 | /* Anomaly 05000125 */ | ||
131 | #if ANOMALY_05000125 | ||
132 | CLI R2; | ||
133 | SSYNC; | ||
134 | #endif | ||
135 | [p0] = R0; | ||
136 | SSYNC; | ||
137 | #if ANOMALY_05000125 | ||
138 | STI R2; | ||
139 | #endif | ||
140 | |||
141 | |||
142 | #if defined(CONFIG_BF527) | ||
143 | p0.h = hi(EMAC_SYSTAT); | ||
144 | p0.l = lo(EMAC_SYSTAT); | ||
145 | R0.h = 0xFFFF; /* Clear EMAC Interrupt Status bits */ | ||
146 | R0.l = 0xFFFF; | ||
147 | [P0] = R0; | ||
148 | SSYNC; | ||
149 | #endif | ||
150 | |||
151 | /* Initialise UART - when booting from u-boot, the UART is not disabled | ||
152 | * so if we dont initalize here, our serial console gets hosed */ | ||
153 | p0.h = hi(UART1_LCR); | ||
154 | p0.l = lo(UART1_LCR); | ||
155 | r0 = 0x0(Z); | ||
156 | w[p0] = r0.L; /* To enable DLL writes */ | ||
157 | ssync; | ||
158 | |||
159 | p0.h = hi(UART1_DLL); | ||
160 | p0.l = lo(UART1_DLL); | ||
161 | r0 = 0x0(Z); | ||
162 | w[p0] = r0.L; | ||
163 | ssync; | ||
164 | |||
165 | p0.h = hi(UART1_DLH); | ||
166 | p0.l = lo(UART1_DLH); | ||
167 | r0 = 0x00(Z); | ||
168 | w[p0] = r0.L; | ||
169 | ssync; | ||
170 | |||
171 | p0.h = hi(UART1_GCTL); | ||
172 | p0.l = lo(UART1_GCTL); | ||
173 | r0 = 0x0(Z); | ||
174 | w[p0] = r0.L; /* To enable UART clock */ | ||
175 | ssync; | ||
176 | |||
177 | /* Initialize stack pointer */ | ||
178 | sp.l = lo(INITIAL_STACK); | ||
179 | sp.h = hi(INITIAL_STACK); | ||
180 | fp = sp; | ||
181 | usp = sp; | ||
182 | |||
183 | #ifdef CONFIG_EARLY_PRINTK | ||
184 | SP += -12; | ||
185 | call _init_early_exception_vectors; | ||
186 | SP += 12; | ||
187 | #endif | ||
188 | |||
189 | /* Put The Code for PLL Programming and SDRAM Programming in L1 ISRAM */ | ||
190 | call _bf53x_relocate_l1_mem; | ||
191 | #if CONFIG_BFIN_KERNEL_CLOCK | ||
192 | call _start_dma_code; | ||
193 | #endif | ||
194 | |||
195 | /* Code for initializing Async memory banks */ | ||
196 | |||
197 | p2.h = hi(EBIU_AMBCTL1); | ||
198 | p2.l = lo(EBIU_AMBCTL1); | ||
199 | r0.h = hi(AMBCTL1VAL); | ||
200 | r0.l = lo(AMBCTL1VAL); | ||
201 | [p2] = r0; | ||
202 | ssync; | ||
203 | |||
204 | p2.h = hi(EBIU_AMBCTL0); | ||
205 | p2.l = lo(EBIU_AMBCTL0); | ||
206 | r0.h = hi(AMBCTL0VAL); | ||
207 | r0.l = lo(AMBCTL0VAL); | ||
208 | [p2] = r0; | ||
209 | ssync; | ||
210 | |||
211 | p2.h = hi(EBIU_AMGCTL); | ||
212 | p2.l = lo(EBIU_AMGCTL); | ||
213 | r0 = AMGCTLVAL; | ||
214 | w[p2] = r0; | ||
215 | ssync; | ||
216 | |||
217 | /* This section keeps the processor in supervisor mode | ||
218 | * during kernel boot. Switches to user mode at end of boot. | ||
219 | * See page 3-9 of Hardware Reference manual for documentation. | ||
220 | */ | ||
221 | |||
222 | /* EVT15 = _real_start */ | ||
223 | |||
224 | p0.l = lo(EVT15); | ||
225 | p0.h = hi(EVT15); | ||
226 | p1.l = _real_start; | ||
227 | p1.h = _real_start; | ||
228 | [p0] = p1; | ||
229 | csync; | ||
230 | |||
231 | p0.l = lo(IMASK); | ||
232 | p0.h = hi(IMASK); | ||
233 | p1.l = IMASK_IVG15; | ||
234 | p1.h = 0x0; | ||
235 | [p0] = p1; | ||
236 | csync; | ||
237 | |||
238 | raise 15; | ||
239 | p0.l = .LWAIT_HERE; | ||
240 | p0.h = .LWAIT_HERE; | ||
241 | reti = p0; | ||
242 | #if ANOMALY_05000281 | ||
243 | nop; nop; nop; | ||
244 | #endif | ||
245 | rti; | ||
246 | |||
247 | .LWAIT_HERE: | ||
248 | jump .LWAIT_HERE; | ||
249 | ENDPROC(__start) | ||
250 | |||
251 | ENTRY(_real_start) | ||
252 | [ -- sp ] = reti; | ||
253 | p0.l = lo(WDOG_CTL); | ||
254 | p0.h = hi(WDOG_CTL); | ||
255 | r0 = 0xAD6(z); | ||
256 | w[p0] = r0; /* watchdog off for now */ | ||
257 | ssync; | ||
258 | |||
259 | /* Code update for BSS size == 0 | ||
260 | * Zero out the bss region. | ||
261 | */ | ||
262 | |||
263 | p1.l = ___bss_start; | ||
264 | p1.h = ___bss_start; | ||
265 | p2.l = ___bss_stop; | ||
266 | p2.h = ___bss_stop; | ||
267 | r0 = 0; | ||
268 | p2 -= p1; | ||
269 | lsetup (.L_clear_bss, .L_clear_bss) lc0 = p2; | ||
270 | .L_clear_bss: | ||
271 | B[p1++] = r0; | ||
272 | |||
273 | /* In case there is a NULL pointer reference | ||
274 | * Zero out region before stext | ||
275 | */ | ||
276 | |||
277 | p1.l = 0x0; | ||
278 | p1.h = 0x0; | ||
279 | r0.l = __stext; | ||
280 | r0.h = __stext; | ||
281 | r0 = r0 >> 1; | ||
282 | p2 = r0; | ||
283 | r0 = 0; | ||
284 | lsetup (.L_clear_zero, .L_clear_zero) lc0 = p2; | ||
285 | .L_clear_zero: | ||
286 | W[p1++] = r0; | ||
287 | |||
288 | /* pass the uboot arguments to the global value command line */ | ||
289 | R0 = R7; | ||
290 | call _cmdline_init; | ||
291 | |||
292 | p1.l = __rambase; | ||
293 | p1.h = __rambase; | ||
294 | r0.l = __sdata; | ||
295 | r0.h = __sdata; | ||
296 | [p1] = r0; | ||
297 | |||
298 | p1.l = __ramstart; | ||
299 | p1.h = __ramstart; | ||
300 | p3.l = ___bss_stop; | ||
301 | p3.h = ___bss_stop; | ||
302 | |||
303 | r1 = p3; | ||
304 | [p1] = r1; | ||
305 | |||
306 | /* | ||
307 | * load the current thread pointer and stack | ||
308 | */ | ||
309 | r1.l = _init_thread_union; | ||
310 | r1.h = _init_thread_union; | ||
311 | |||
312 | r2.l = 0x2000; | ||
313 | r2.h = 0x0000; | ||
314 | r1 = r1 + r2; | ||
315 | sp = r1; | ||
316 | usp = sp; | ||
317 | fp = sp; | ||
318 | jump.l _start_kernel; | ||
319 | ENDPROC(_real_start) | ||
320 | |||
321 | __FINIT | ||
322 | |||
323 | .section .l1.text | ||
324 | #if CONFIG_BFIN_KERNEL_CLOCK | ||
325 | ENTRY(_start_dma_code) | ||
326 | |||
327 | /* Enable PHY CLK buffer output */ | ||
328 | p0.h = hi(VR_CTL); | ||
329 | p0.l = lo(VR_CTL); | ||
330 | r0.l = w[p0]; | ||
331 | bitset(r0, 14); | ||
332 | w[p0] = r0.l; | ||
333 | ssync; | ||
334 | |||
335 | p0.h = hi(SIC_IWR0); | ||
336 | p0.l = lo(SIC_IWR0); | ||
337 | r0.l = 0x1; | ||
338 | r0.h = 0x0; | ||
339 | [p0] = r0; | ||
340 | SSYNC; | ||
341 | |||
342 | /* | ||
343 | * Set PLL_CTL | ||
344 | * - [14:09] = MSEL[5:0] : CLKIN / VCO multiplication factors | ||
345 | * - [8] = BYPASS : BYPASS the PLL, run CLKIN into CCLK/SCLK | ||
346 | * - [7] = output delay (add 200ps of delay to mem signals) | ||
347 | * - [6] = input delay (add 200ps of input delay to mem signals) | ||
348 | * - [5] = PDWN : 1=All Clocks off | ||
349 | * - [3] = STOPCK : 1=Core Clock off | ||
350 | * - [1] = PLL_OFF : 1=Disable Power to PLL | ||
351 | * - [0] = DF : 1=Pass CLKIN/2 to PLL / 0=Pass CLKIN to PLL | ||
352 | * all other bits set to zero | ||
353 | */ | ||
354 | |||
355 | p0.h = hi(PLL_LOCKCNT); | ||
356 | p0.l = lo(PLL_LOCKCNT); | ||
357 | r0 = 0x300(Z); | ||
358 | w[p0] = r0.l; | ||
359 | ssync; | ||
360 | |||
361 | P2.H = hi(EBIU_SDGCTL); | ||
362 | P2.L = lo(EBIU_SDGCTL); | ||
363 | R0 = [P2]; | ||
364 | BITSET (R0, 24); | ||
365 | [P2] = R0; | ||
366 | SSYNC; | ||
367 | |||
368 | r0 = CONFIG_VCO_MULT & 63; /* Load the VCO multiplier */ | ||
369 | r0 = r0 << 9; /* Shift it over, */ | ||
370 | r1 = CLKIN_HALF; /* Do we need to divide CLKIN by 2?*/ | ||
371 | r0 = r1 | r0; | ||
372 | r1 = PLL_BYPASS; /* Bypass the PLL? */ | ||
373 | r1 = r1 << 8; /* Shift it over */ | ||
374 | r0 = r1 | r0; /* add them all together */ | ||
375 | |||
376 | p0.h = hi(PLL_CTL); | ||
377 | p0.l = lo(PLL_CTL); /* Load the address */ | ||
378 | cli r2; /* Disable interrupts */ | ||
379 | ssync; | ||
380 | w[p0] = r0.l; /* Set the value */ | ||
381 | idle; /* Wait for the PLL to stablize */ | ||
382 | sti r2; /* Enable interrupts */ | ||
383 | |||
384 | .Lcheck_again: | ||
385 | p0.h = hi(PLL_STAT); | ||
386 | p0.l = lo(PLL_STAT); | ||
387 | R0 = W[P0](Z); | ||
388 | CC = BITTST(R0,5); | ||
389 | if ! CC jump .Lcheck_again; | ||
390 | |||
391 | /* Configure SCLK & CCLK Dividers */ | ||
392 | r0 = (CONFIG_CCLK_ACT_DIV | CONFIG_SCLK_DIV); | ||
393 | p0.h = hi(PLL_DIV); | ||
394 | p0.l = lo(PLL_DIV); | ||
395 | w[p0] = r0.l; | ||
396 | ssync; | ||
397 | |||
398 | p0.l = lo(EBIU_SDRRC); | ||
399 | p0.h = hi(EBIU_SDRRC); | ||
400 | r0 = mem_SDRRC; | ||
401 | w[p0] = r0.l; | ||
402 | ssync; | ||
403 | |||
404 | p0.l = LO(EBIU_SDBCTL); | ||
405 | p0.h = HI(EBIU_SDBCTL); /* SDRAM Memory Bank Control Register */ | ||
406 | r0 = mem_SDBCTL; | ||
407 | w[p0] = r0.l; | ||
408 | ssync; | ||
409 | |||
410 | P2.H = hi(EBIU_SDGCTL); | ||
411 | P2.L = lo(EBIU_SDGCTL); | ||
412 | R0 = [P2]; | ||
413 | BITCLR (R0, 24); | ||
414 | p0.h = hi(EBIU_SDSTAT); | ||
415 | p0.l = lo(EBIU_SDSTAT); | ||
416 | r2.l = w[p0]; | ||
417 | cc = bittst(r2,3); | ||
418 | if !cc jump .Lskip; | ||
419 | NOP; | ||
420 | BITSET (R0, 23); | ||
421 | .Lskip: | ||
422 | [P2] = R0; | ||
423 | SSYNC; | ||
424 | |||
425 | R0.L = lo(mem_SDGCTL); | ||
426 | R0.H = hi(mem_SDGCTL); | ||
427 | R1 = [p2]; | ||
428 | R1 = R1 | R0; | ||
429 | [P2] = R1; | ||
430 | SSYNC; | ||
431 | |||
432 | p0.h = hi(SIC_IWR0); | ||
433 | p0.l = lo(SIC_IWR0); | ||
434 | r0.l = lo(IWR_ENABLE_ALL); | ||
435 | r0.h = hi(IWR_ENABLE_ALL); | ||
436 | [p0] = r0; | ||
437 | SSYNC; | ||
438 | |||
439 | RTS; | ||
440 | ENDPROC(_start_dma_code) | ||
441 | #endif /* CONFIG_BFIN_KERNEL_CLOCK */ | ||
442 | |||
443 | .data | ||
444 | |||
445 | /* | ||
446 | * Set up the usable of RAM stuff. Size of RAM is determined then | ||
447 | * an initial stack set up at the end. | ||
448 | */ | ||
449 | |||
450 | .align 4 | ||
451 | __rambase: | ||
452 | .long 0 | ||
453 | __ramstart: | ||
454 | .long 0 | ||
455 | __ramend: | ||
456 | .long 0 | ||
diff --git a/arch/blackfin/mach-bf527/ints-priority.c b/arch/blackfin/mach-bf527/ints-priority.c new file mode 100644 index 000000000000..1fa389793968 --- /dev/null +++ b/arch/blackfin/mach-bf527/ints-priority.c | |||
@@ -0,0 +1,100 @@ | |||
1 | /* | ||
2 | * File: arch/blackfin/mach-bf537/ints-priority.c | ||
3 | * Based on: arch/blackfin/mach-bf533/ints-priority.c | ||
4 | * Author: Michael Hennerich (michael.hennerich@analog.com) | ||
5 | * | ||
6 | * Created: | ||
7 | * Description: Set up the interrupt priorities | ||
8 | * | ||
9 | * Modified: | ||
10 | * Copyright 2004-2007 Analog Devices Inc. | ||
11 | * | ||
12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or modify | ||
15 | * it under the terms of the GNU General Public License as published by | ||
16 | * the Free Software Foundation; either version 2 of the License, or | ||
17 | * (at your option) any later version. | ||
18 | * | ||
19 | * This program is distributed in the hope that it will be useful, | ||
20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
22 | * GNU General Public License for more details. | ||
23 | * | ||
24 | * You should have received a copy of the GNU General Public License | ||
25 | * along with this program; if not, see the file COPYING, or write | ||
26 | * to the Free Software Foundation, Inc., | ||
27 | * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
28 | */ | ||
29 | |||
30 | #include <linux/module.h> | ||
31 | #include <linux/irq.h> | ||
32 | #include <asm/blackfin.h> | ||
33 | |||
34 | void program_IAR(void) | ||
35 | { | ||
36 | /* Program the IAR0 Register with the configured priority */ | ||
37 | bfin_write_SIC_IAR0(((CONFIG_IRQ_PLL_WAKEUP - 7) << IRQ_PLL_WAKEUP_POS) | | ||
38 | ((CONFIG_IRQ_DMA0_ERROR - 7) << IRQ_DMA0_ERROR_POS) | | ||
39 | ((CONFIG_IRQ_DMAR0_BLK - 7) << IRQ_DMAR0_BLK_POS) | | ||
40 | ((CONFIG_IRQ_DMAR1_BLK - 7) << IRQ_DMAR1_BLK_POS) | | ||
41 | ((CONFIG_IRQ_DMAR0_OVR - 7) << IRQ_DMAR0_OVR_POS) | | ||
42 | ((CONFIG_IRQ_DMAR1_OVR - 7) << IRQ_DMAR1_OVR_POS) | | ||
43 | ((CONFIG_IRQ_PPI_ERROR - 7) << IRQ_PPI_ERROR_POS) | | ||
44 | ((CONFIG_IRQ_MAC_ERROR - 7) << IRQ_MAC_ERROR_POS)); | ||
45 | |||
46 | |||
47 | bfin_write_SIC_IAR1(((CONFIG_IRQ_SPORT0_ERROR - 7) << IRQ_SPORT0_ERROR_POS) | | ||
48 | ((CONFIG_IRQ_SPORT1_ERROR - 7) << IRQ_SPORT1_ERROR_POS) | | ||
49 | ((CONFIG_IRQ_UART0_ERROR - 7) << IRQ_UART0_ERROR_POS) | | ||
50 | ((CONFIG_IRQ_UART1_ERROR - 7) << IRQ_UART1_ERROR_POS) | | ||
51 | ((CONFIG_IRQ_RTC - 7) << IRQ_RTC_POS) | | ||
52 | ((CONFIG_IRQ_PPI - 7) << IRQ_PPI_POS)); | ||
53 | |||
54 | bfin_write_SIC_IAR2(((CONFIG_IRQ_SPORT0_RX - 7) << IRQ_SPORT0_RX_POS) | | ||
55 | ((CONFIG_IRQ_SPORT0_TX - 7) << IRQ_SPORT0_TX_POS) | | ||
56 | ((CONFIG_IRQ_SPORT1_RX - 7) << IRQ_SPORT1_RX_POS) | | ||
57 | ((CONFIG_IRQ_SPORT1_TX - 7) << IRQ_SPORT1_TX_POS) | | ||
58 | ((CONFIG_IRQ_TWI - 7) << IRQ_TWI_POS) | | ||
59 | ((CONFIG_IRQ_SPI - 7) << IRQ_SPI_POS) | | ||
60 | ((CONFIG_IRQ_UART0_RX - 7) << IRQ_UART0_RX_POS) | | ||
61 | ((CONFIG_IRQ_UART0_TX - 7) << IRQ_UART0_TX_POS)); | ||
62 | |||
63 | bfin_write_SIC_IAR3(((CONFIG_IRQ_UART1_RX - 7) << IRQ_UART1_RX_POS) | | ||
64 | ((CONFIG_IRQ_UART1_TX - 7) << IRQ_UART1_TX_POS) | | ||
65 | ((CONFIG_IRQ_OPTSEC - 7) << IRQ_OPTSEC_POS) | | ||
66 | ((CONFIG_IRQ_CNT - 7) << IRQ_CNT_POS) | | ||
67 | ((CONFIG_IRQ_MAC_RX - 7) << IRQ_MAC_RX_POS) | | ||
68 | ((CONFIG_IRQ_PORTH_INTA - 7) << IRQ_PORTH_INTA_POS) | | ||
69 | ((CONFIG_IRQ_MAC_TX - 7) << IRQ_MAC_TX_POS) | | ||
70 | ((CONFIG_IRQ_PORTH_INTB - 7) << IRQ_PORTH_INTB_POS)); | ||
71 | |||
72 | bfin_write_SIC_IAR4(((CONFIG_IRQ_TMR0 - 7) << IRQ_TMR0_POS) | | ||
73 | ((CONFIG_IRQ_TMR1 - 7) << IRQ_TMR1_POS) | | ||
74 | ((CONFIG_IRQ_TMR2 - 7) << IRQ_TMR2_POS) | | ||
75 | ((CONFIG_IRQ_TMR3 - 7) << IRQ_TMR3_POS) | | ||
76 | ((CONFIG_IRQ_TMR4 - 7) << IRQ_TMR4_POS) | | ||
77 | ((CONFIG_IRQ_TMR5 - 7) << IRQ_TMR5_POS) | | ||
78 | ((CONFIG_IRQ_TMR6 - 7) << IRQ_TMR6_POS) | | ||
79 | ((CONFIG_IRQ_TMR7 - 7) << IRQ_TMR7_POS)); | ||
80 | |||
81 | bfin_write_SIC_IAR5(((CONFIG_IRQ_PORTG_INTA - 7) << IRQ_PORTG_INTA_POS) | | ||
82 | ((CONFIG_IRQ_PORTG_INTB - 7) << IRQ_PORTG_INTB_POS) | | ||
83 | ((CONFIG_IRQ_MEM_DMA0 - 7) << IRQ_MEM_DMA0_POS) | | ||
84 | ((CONFIG_IRQ_MEM_DMA1 - 7) << IRQ_MEM_DMA1_POS) | | ||
85 | ((CONFIG_IRQ_WATCH - 7) << IRQ_WATCH_POS) | | ||
86 | ((CONFIG_IRQ_PORTF_INTA - 7) << IRQ_PORTF_INTA_POS) | | ||
87 | ((CONFIG_IRQ_PORTF_INTB - 7) << IRQ_PORTF_INTB_POS) | | ||
88 | ((CONFIG_IRQ_SPI_ERROR - 7) << IRQ_SPI_ERROR_POS)); | ||
89 | |||
90 | bfin_write_SIC_IAR6(((CONFIG_IRQ_NFC_ERROR - 7) << IRQ_NFC_ERROR_POS) | | ||
91 | ((CONFIG_IRQ_HDMA_ERROR - 7) << IRQ_HDMA_ERROR_POS) | | ||
92 | ((CONFIG_IRQ_HDMA - 7) << IRQ_HDMA_POS) | | ||
93 | ((CONFIG_IRQ_USB_EINT - 7) << IRQ_USB_EINT_POS) | | ||
94 | ((CONFIG_IRQ_USB_INT0 - 7) << IRQ_USB_INT0_POS) | | ||
95 | ((CONFIG_IRQ_USB_INT1 - 7) << IRQ_USB_INT1_POS) | | ||
96 | ((CONFIG_IRQ_USB_INT2 - 7) << IRQ_USB_INT2_POS) | | ||
97 | ((CONFIG_IRQ_USB_DMA - 7) << IRQ_USB_DMA_POS)); | ||
98 | |||
99 | SSYNC(); | ||
100 | } | ||
diff --git a/arch/blackfin/mach-bf533/boards/cm_bf533.c b/arch/blackfin/mach-bf533/boards/cm_bf533.c index a57b52d207cd..1c5a86adfab7 100644 --- a/arch/blackfin/mach-bf533/boards/cm_bf533.c +++ b/arch/blackfin/mach-bf533/boards/cm_bf533.c | |||
@@ -42,7 +42,7 @@ | |||
42 | /* | 42 | /* |
43 | * Name the Board for the /proc/cpuinfo | 43 | * Name the Board for the /proc/cpuinfo |
44 | */ | 44 | */ |
45 | char *bfin_board_name = "Bluetechnix CM BF533"; | 45 | const char bfin_board_name[] = "Bluetechnix CM BF533"; |
46 | 46 | ||
47 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 47 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
48 | /* all SPI peripherals info goes here */ | 48 | /* all SPI peripherals info goes here */ |
diff --git a/arch/blackfin/mach-bf533/boards/ezkit.c b/arch/blackfin/mach-bf533/boards/ezkit.c index 5c1e35d3c012..34b63920e272 100644 --- a/arch/blackfin/mach-bf533/boards/ezkit.c +++ b/arch/blackfin/mach-bf533/boards/ezkit.c | |||
@@ -43,7 +43,7 @@ | |||
43 | /* | 43 | /* |
44 | * Name the Board for the /proc/cpuinfo | 44 | * Name the Board for the /proc/cpuinfo |
45 | */ | 45 | */ |
46 | char *bfin_board_name = "ADDS-BF533-EZKIT"; | 46 | const char bfin_board_name[] = "ADDS-BF533-EZKIT"; |
47 | 47 | ||
48 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | 48 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) |
49 | static struct platform_device rtc_device = { | 49 | static struct platform_device rtc_device = { |
diff --git a/arch/blackfin/mach-bf533/boards/generic_board.c b/arch/blackfin/mach-bf533/boards/generic_board.c index 9bc1f0d0ab50..310b7772c458 100644 --- a/arch/blackfin/mach-bf533/boards/generic_board.c +++ b/arch/blackfin/mach-bf533/boards/generic_board.c | |||
@@ -35,7 +35,7 @@ | |||
35 | /* | 35 | /* |
36 | * Name the Board for the /proc/cpuinfo | 36 | * Name the Board for the /proc/cpuinfo |
37 | */ | 37 | */ |
38 | char *bfin_board_name = "UNKNOWN BOARD"; | 38 | const char bfin_board_name[] = "UNKNOWN BOARD"; |
39 | 39 | ||
40 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | 40 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) |
41 | static struct platform_device rtc_device = { | 41 | static struct platform_device rtc_device = { |
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c index 8975e06ea158..f84be4eabfd1 100644 --- a/arch/blackfin/mach-bf533/boards/stamp.c +++ b/arch/blackfin/mach-bf533/boards/stamp.c | |||
@@ -46,7 +46,7 @@ | |||
46 | /* | 46 | /* |
47 | * Name the Board for the /proc/cpuinfo | 47 | * Name the Board for the /proc/cpuinfo |
48 | */ | 48 | */ |
49 | char *bfin_board_name = "ADDS-BF533-STAMP"; | 49 | const char bfin_board_name[] = "ADDS-BF533-STAMP"; |
50 | 50 | ||
51 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) | 51 | #if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) |
52 | static struct platform_device rtc_device = { | 52 | static struct platform_device rtc_device = { |
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537.c b/arch/blackfin/mach-bf537/boards/cm_bf537.c index 44dea05e1d03..52e2320307de 100644 --- a/arch/blackfin/mach-bf537/boards/cm_bf537.c +++ b/arch/blackfin/mach-bf537/boards/cm_bf537.c | |||
@@ -43,7 +43,7 @@ | |||
43 | /* | 43 | /* |
44 | * Name the Board for the /proc/cpuinfo | 44 | * Name the Board for the /proc/cpuinfo |
45 | */ | 45 | */ |
46 | char *bfin_board_name = "Bluetechnix CM BF537"; | 46 | const char bfin_board_name[] = "Bluetechnix CM BF537"; |
47 | 47 | ||
48 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 48 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
49 | /* all SPI peripherals info goes here */ | 49 | /* all SPI peripherals info goes here */ |
diff --git a/arch/blackfin/mach-bf537/boards/generic_board.c b/arch/blackfin/mach-bf537/boards/generic_board.c index 6668c8e4a3fc..255da7a98481 100644 --- a/arch/blackfin/mach-bf537/boards/generic_board.c +++ b/arch/blackfin/mach-bf537/boards/generic_board.c | |||
@@ -49,7 +49,7 @@ | |||
49 | /* | 49 | /* |
50 | * Name the Board for the /proc/cpuinfo | 50 | * Name the Board for the /proc/cpuinfo |
51 | */ | 51 | */ |
52 | char *bfin_board_name = "GENERIC Board"; | 52 | const char bfin_board_name[] = "GENERIC Board"; |
53 | 53 | ||
54 | /* | 54 | /* |
55 | * Driver needs to know address, irq and flag pin. | 55 | * Driver needs to know address, irq and flag pin. |
diff --git a/arch/blackfin/mach-bf537/boards/pnav10.c b/arch/blackfin/mach-bf537/boards/pnav10.c index f83a2544004d..87b808926789 100644 --- a/arch/blackfin/mach-bf537/boards/pnav10.c +++ b/arch/blackfin/mach-bf537/boards/pnav10.c | |||
@@ -47,7 +47,7 @@ | |||
47 | /* | 47 | /* |
48 | * Name the Board for the /proc/cpuinfo | 48 | * Name the Board for the /proc/cpuinfo |
49 | */ | 49 | */ |
50 | char *bfin_board_name = "PNAV-1.0"; | 50 | const char bfin_board_name[] = "PNAV-1.0"; |
51 | 51 | ||
52 | /* | 52 | /* |
53 | * Driver needs to know address, irq and flag pin. | 53 | * Driver needs to know address, irq and flag pin. |
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c index f42ba3aa86d7..cc41f6c2ef4f 100644 --- a/arch/blackfin/mach-bf537/boards/stamp.c +++ b/arch/blackfin/mach-bf537/boards/stamp.c | |||
@@ -49,7 +49,7 @@ | |||
49 | /* | 49 | /* |
50 | * Name the Board for the /proc/cpuinfo | 50 | * Name the Board for the /proc/cpuinfo |
51 | */ | 51 | */ |
52 | char *bfin_board_name = "ADDS-BF537-STAMP"; | 52 | const char bfin_board_name[] = "ADDS-BF537-STAMP"; |
53 | 53 | ||
54 | /* | 54 | /* |
55 | * Driver needs to know address, irq and flag pin. | 55 | * Driver needs to know address, irq and flag pin. |
diff --git a/arch/blackfin/mach-bf548/boards/ezkit.c b/arch/blackfin/mach-bf548/boards/ezkit.c index 046e6d84bbfc..6b6490e66b30 100644 --- a/arch/blackfin/mach-bf548/boards/ezkit.c +++ b/arch/blackfin/mach-bf548/boards/ezkit.c | |||
@@ -49,7 +49,7 @@ | |||
49 | /* | 49 | /* |
50 | * Name the Board for the /proc/cpuinfo | 50 | * Name the Board for the /proc/cpuinfo |
51 | */ | 51 | */ |
52 | char *bfin_board_name = "ADSP-BF548-EZKIT"; | 52 | const char bfin_board_name[] = "ADSP-BF548-EZKIT"; |
53 | 53 | ||
54 | /* | 54 | /* |
55 | * Driver needs to know address, irq and flag pin. | 55 | * Driver needs to know address, irq and flag pin. |
@@ -560,7 +560,7 @@ static struct platform_device *ezkit_devices[] __initdata = { | |||
560 | 560 | ||
561 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 561 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
562 | &bf54x_spi_master0, | 562 | &bf54x_spi_master0, |
563 | /* &bf54x_spi_master1,*/ | 563 | &bf54x_spi_master1, |
564 | #endif | 564 | #endif |
565 | 565 | ||
566 | #if defined(CONFIG_KEYBOARD_BFIN) || defined(CONFIG_KEYBOARD_BFIN_MODULE) | 566 | #if defined(CONFIG_KEYBOARD_BFIN) || defined(CONFIG_KEYBOARD_BFIN_MODULE) |
diff --git a/arch/blackfin/mach-bf548/dma.c b/arch/blackfin/mach-bf548/dma.c index a8184113be48..957bf1366eff 100644 --- a/arch/blackfin/mach-bf548/dma.c +++ b/arch/blackfin/mach-bf548/dma.c | |||
@@ -64,6 +64,7 @@ | |||
64 | (struct dma_register *) MDMA_D3_NEXT_DESC_PTR, | 64 | (struct dma_register *) MDMA_D3_NEXT_DESC_PTR, |
65 | (struct dma_register *) MDMA_S3_NEXT_DESC_PTR, | 65 | (struct dma_register *) MDMA_S3_NEXT_DESC_PTR, |
66 | }; | 66 | }; |
67 | EXPORT_SYMBOL(base_addr); | ||
67 | 68 | ||
68 | int channel2irq(unsigned int channel) | 69 | int channel2irq(unsigned int channel) |
69 | { | 70 | { |
diff --git a/arch/blackfin/mach-bf561/boards/cm_bf561.c b/arch/blackfin/mach-bf561/boards/cm_bf561.c index cd827a1b6ba1..97aeb43fd8b4 100644 --- a/arch/blackfin/mach-bf561/boards/cm_bf561.c +++ b/arch/blackfin/mach-bf561/boards/cm_bf561.c | |||
@@ -42,7 +42,7 @@ | |||
42 | /* | 42 | /* |
43 | * Name the Board for the /proc/cpuinfo | 43 | * Name the Board for the /proc/cpuinfo |
44 | */ | 44 | */ |
45 | char *bfin_board_name = "Bluetechnix CM BF561"; | 45 | const char bfin_board_name[] = "Bluetechnix CM BF561"; |
46 | 46 | ||
47 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 47 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
48 | /* all SPI peripherals info goes here */ | 48 | /* all SPI peripherals info goes here */ |
diff --git a/arch/blackfin/mach-bf561/boards/ezkit.c b/arch/blackfin/mach-bf561/boards/ezkit.c index 57e14edca8b1..059d516cec23 100644 --- a/arch/blackfin/mach-bf561/boards/ezkit.c +++ b/arch/blackfin/mach-bf561/boards/ezkit.c | |||
@@ -39,7 +39,7 @@ | |||
39 | /* | 39 | /* |
40 | * Name the Board for the /proc/cpuinfo | 40 | * Name the Board for the /proc/cpuinfo |
41 | */ | 41 | */ |
42 | char *bfin_board_name = "ADDS-BF561-EZKIT"; | 42 | const char bfin_board_name[] = "ADDS-BF561-EZKIT"; |
43 | 43 | ||
44 | #define ISP1761_BASE 0x2C0F0000 | 44 | #define ISP1761_BASE 0x2C0F0000 |
45 | #define ISP1761_IRQ IRQ_PF10 | 45 | #define ISP1761_IRQ IRQ_PF10 |
diff --git a/arch/blackfin/mach-bf561/boards/generic_board.c b/arch/blackfin/mach-bf561/boards/generic_board.c index 4dfea5da674c..46816be4b2ba 100644 --- a/arch/blackfin/mach-bf561/boards/generic_board.c +++ b/arch/blackfin/mach-bf561/boards/generic_board.c | |||
@@ -32,7 +32,7 @@ | |||
32 | #include <linux/platform_device.h> | 32 | #include <linux/platform_device.h> |
33 | #include <linux/irq.h> | 33 | #include <linux/irq.h> |
34 | 34 | ||
35 | char *bfin_board_name = "UNKNOWN BOARD"; | 35 | const char bfin_board_name[] = "UNKNOWN BOARD"; |
36 | 36 | ||
37 | /* | 37 | /* |
38 | * Driver needs to know address, irq and flag pin. | 38 | * Driver needs to know address, irq and flag pin. |
diff --git a/arch/blackfin/mach-bf561/boards/tepla.c b/arch/blackfin/mach-bf561/boards/tepla.c index c442eb23db5e..4a17c6da2a59 100644 --- a/arch/blackfin/mach-bf561/boards/tepla.c +++ b/arch/blackfin/mach-bf561/boards/tepla.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | #include <linux/irq.h> | 17 | #include <linux/irq.h> |
18 | 18 | ||
19 | char *bfin_board_name = "Tepla-BF561"; | 19 | const char bfin_board_name[] = "Tepla-BF561"; |
20 | 20 | ||
21 | /* | 21 | /* |
22 | * Driver needs to know address, irq and flag pin. | 22 | * Driver needs to know address, irq and flag pin. |
diff --git a/arch/blackfin/mach-common/ints-priority-dc.c b/arch/blackfin/mach-common/ints-priority-dc.c index 2db3546fc874..c2f05fabedc1 100644 --- a/arch/blackfin/mach-common/ints-priority-dc.c +++ b/arch/blackfin/mach-common/ints-priority-dc.c | |||
@@ -52,7 +52,13 @@ | |||
52 | * - | 52 | * - |
53 | */ | 53 | */ |
54 | 54 | ||
55 | unsigned long irq_flags = 0; | 55 | /* Initialize this to an actual value to force it into the .data |
56 | * section so that we know it is properly initialized at entry into | ||
57 | * the kernel but before bss is initialized to zero (which is where | ||
58 | * it would live otherwise). The 0x1f magic represents the IRQs we | ||
59 | * cannot actually mask out in hardware. | ||
60 | */ | ||
61 | unsigned long irq_flags = 0x1f; | ||
56 | 62 | ||
57 | /* The number of spurious interrupts */ | 63 | /* The number of spurious interrupts */ |
58 | atomic_t num_spurious; | 64 | atomic_t num_spurious; |
diff --git a/arch/blackfin/mach-common/ints-priority-sc.c b/arch/blackfin/mach-common/ints-priority-sc.c index d3b7672b2b94..2d2b63567b30 100644 --- a/arch/blackfin/mach-common/ints-priority-sc.c +++ b/arch/blackfin/mach-common/ints-priority-sc.c | |||
@@ -58,7 +58,13 @@ | |||
58 | * - | 58 | * - |
59 | */ | 59 | */ |
60 | 60 | ||
61 | unsigned long irq_flags = 0; | 61 | /* Initialize this to an actual value to force it into the .data |
62 | * section so that we know it is properly initialized at entry into | ||
63 | * the kernel but before bss is initialized to zero (which is where | ||
64 | * it would live otherwise). The 0x1f magic represents the IRQs we | ||
65 | * cannot actually mask out in hardware. | ||
66 | */ | ||
67 | unsigned long irq_flags = 0x1f; | ||
62 | 68 | ||
63 | /* The number of spurious interrupts */ | 69 | /* The number of spurious interrupts */ |
64 | atomic_t num_spurious; | 70 | atomic_t num_spurious; |
@@ -92,10 +98,15 @@ static void __init search_IAR(void) | |||
92 | 98 | ||
93 | for (irqn = 0; irqn < NR_PERI_INTS; irqn++) { | 99 | for (irqn = 0; irqn < NR_PERI_INTS; irqn++) { |
94 | int iar_shift = (irqn & 7) * 4; | 100 | int iar_shift = (irqn & 7) * 4; |
95 | if (ivg == | 101 | if (ivg == |
96 | (0xf & | 102 | (0xf & |
103 | #ifndef CONFIG_BF52x | ||
97 | bfin_read32((unsigned long *)SIC_IAR0 + | 104 | bfin_read32((unsigned long *)SIC_IAR0 + |
98 | (irqn >> 3)) >> iar_shift)) { | 105 | (irqn >> 3)) >> iar_shift)) { |
106 | #else | ||
107 | bfin_read32((unsigned long *)SIC_IAR0 + | ||
108 | ((irqn%32) >> 3) + ((irqn / 32) * 16)) >> iar_shift)) { | ||
109 | #endif | ||
99 | ivg_table[irq_pos].irqno = IVG7 + irqn; | 110 | ivg_table[irq_pos].irqno = IVG7 + irqn; |
100 | ivg_table[irq_pos].isrflag = 1 << (irqn % 32); | 111 | ivg_table[irq_pos].isrflag = 1 << (irqn % 32); |
101 | ivg7_13[ivg].istop++; | 112 | ivg7_13[ivg].istop++; |
@@ -140,7 +151,7 @@ static void bfin_core_unmask_irq(unsigned int irq) | |||
140 | 151 | ||
141 | static void bfin_internal_mask_irq(unsigned int irq) | 152 | static void bfin_internal_mask_irq(unsigned int irq) |
142 | { | 153 | { |
143 | #ifndef CONFIG_BF54x | 154 | #ifdef CONFIG_BF53x |
144 | bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() & | 155 | bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() & |
145 | ~(1 << (irq - (IRQ_CORETMR + 1)))); | 156 | ~(1 << (irq - (IRQ_CORETMR + 1)))); |
146 | #else | 157 | #else |
@@ -155,7 +166,7 @@ static void bfin_internal_mask_irq(unsigned int irq) | |||
155 | 166 | ||
156 | static void bfin_internal_unmask_irq(unsigned int irq) | 167 | static void bfin_internal_unmask_irq(unsigned int irq) |
157 | { | 168 | { |
158 | #ifndef CONFIG_BF54x | 169 | #ifdef CONFIG_BF53x |
159 | bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() | | 170 | bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() | |
160 | (1 << (irq - (IRQ_CORETMR + 1)))); | 171 | (1 << (irq - (IRQ_CORETMR + 1)))); |
161 | #else | 172 | #else |
@@ -750,13 +761,15 @@ int __init init_arch_irq(void) | |||
750 | int irq; | 761 | int irq; |
751 | unsigned long ilat = 0; | 762 | unsigned long ilat = 0; |
752 | /* Disable all the peripheral intrs - page 4-29 HW Ref manual */ | 763 | /* Disable all the peripheral intrs - page 4-29 HW Ref manual */ |
753 | #ifdef CONFIG_BF54x | 764 | #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) |
754 | bfin_write_SIC_IMASK0(SIC_UNMASK_ALL); | 765 | bfin_write_SIC_IMASK0(SIC_UNMASK_ALL); |
755 | bfin_write_SIC_IMASK1(SIC_UNMASK_ALL); | 766 | bfin_write_SIC_IMASK1(SIC_UNMASK_ALL); |
756 | bfin_write_SIC_IMASK2(SIC_UNMASK_ALL); | ||
757 | bfin_write_SIC_IWR0(IWR_ENABLE_ALL); | 767 | bfin_write_SIC_IWR0(IWR_ENABLE_ALL); |
758 | bfin_write_SIC_IWR1(IWR_ENABLE_ALL); | 768 | bfin_write_SIC_IWR1(IWR_ENABLE_ALL); |
769 | #ifdef CONFIG_BF54x | ||
770 | bfin_write_SIC_IMASK2(SIC_UNMASK_ALL); | ||
759 | bfin_write_SIC_IWR2(IWR_ENABLE_ALL); | 771 | bfin_write_SIC_IWR2(IWR_ENABLE_ALL); |
772 | #endif | ||
760 | #else | 773 | #else |
761 | bfin_write_SIC_IMASK(SIC_UNMASK_ALL); | 774 | bfin_write_SIC_IMASK(SIC_UNMASK_ALL); |
762 | bfin_write_SIC_IWR(IWR_ENABLE_ALL); | 775 | bfin_write_SIC_IWR(IWR_ENABLE_ALL); |
@@ -787,7 +800,7 @@ int __init init_arch_irq(void) | |||
787 | 800 | ||
788 | switch (irq) { | 801 | switch (irq) { |
789 | #ifdef CONFIG_IRQCHIP_DEMUX_GPIO | 802 | #ifdef CONFIG_IRQCHIP_DEMUX_GPIO |
790 | #ifndef CONFIG_BF54x | 803 | #if defined(CONFIG_BF53x) |
791 | case IRQ_PROG_INTA: | 804 | case IRQ_PROG_INTA: |
792 | set_irq_chained_handler(irq, | 805 | set_irq_chained_handler(irq, |
793 | bfin_demux_gpio_irq); | 806 | bfin_demux_gpio_irq); |
@@ -798,7 +811,7 @@ int __init init_arch_irq(void) | |||
798 | bfin_demux_gpio_irq); | 811 | bfin_demux_gpio_irq); |
799 | break; | 812 | break; |
800 | #endif | 813 | #endif |
801 | #else | 814 | #elif defined(CONFIG_BF54x) |
802 | case IRQ_PINT0: | 815 | case IRQ_PINT0: |
803 | set_irq_chained_handler(irq, | 816 | set_irq_chained_handler(irq, |
804 | bfin_demux_gpio_irq); | 817 | bfin_demux_gpio_irq); |
@@ -815,7 +828,20 @@ int __init init_arch_irq(void) | |||
815 | set_irq_chained_handler(irq, | 828 | set_irq_chained_handler(irq, |
816 | bfin_demux_gpio_irq); | 829 | bfin_demux_gpio_irq); |
817 | break; | 830 | break; |
818 | #endif /*CONFIG_BF54x */ | 831 | #elif defined(CONFIG_BF52x) |
832 | case IRQ_PORTF_INTA: | ||
833 | set_irq_chained_handler(irq, | ||
834 | bfin_demux_gpio_irq); | ||
835 | break; | ||
836 | case IRQ_PORTG_INTA: | ||
837 | set_irq_chained_handler(irq, | ||
838 | bfin_demux_gpio_irq); | ||
839 | break; | ||
840 | case IRQ_PORTH_INTA: | ||
841 | set_irq_chained_handler(irq, | ||
842 | bfin_demux_gpio_irq); | ||
843 | break; | ||
844 | #endif | ||
819 | #endif | 845 | #endif |
820 | default: | 846 | default: |
821 | set_irq_handler(irq, handle_simple_irq); | 847 | set_irq_handler(irq, handle_simple_irq); |
@@ -880,14 +906,15 @@ void do_irq(int vec, struct pt_regs *fp) | |||
880 | } else { | 906 | } else { |
881 | struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst; | 907 | struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst; |
882 | struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop; | 908 | struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop; |
883 | #ifdef CONFIG_BF54x | 909 | #if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) |
884 | unsigned long sic_status[3]; | 910 | unsigned long sic_status[3]; |
885 | 911 | ||
886 | SSYNC(); | 912 | SSYNC(); |
887 | sic_status[0] = bfin_read_SIC_ISR(0) & bfin_read_SIC_IMASK(0); | 913 | sic_status[0] = bfin_read_SIC_ISR0() & bfin_read_SIC_IMASK0(); |
888 | sic_status[1] = bfin_read_SIC_ISR(1) & bfin_read_SIC_IMASK(1); | 914 | sic_status[1] = bfin_read_SIC_ISR1() & bfin_read_SIC_IMASK1(); |
889 | sic_status[2] = bfin_read_SIC_ISR(2) & bfin_read_SIC_IMASK(2); | 915 | #ifdef CONFIG_BF54x |
890 | 916 | sic_status[2] = bfin_read_SIC_ISR2() & bfin_read_SIC_IMASK2(); | |
917 | #endif | ||
891 | for (;; ivg++) { | 918 | for (;; ivg++) { |
892 | if (ivg >= ivg_stop) { | 919 | if (ivg >= ivg_stop) { |
893 | atomic_inc(&num_spurious); | 920 | atomic_inc(&num_spurious); |
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig index f6e44fc5283c..5bed8be34ba5 100644 --- a/arch/i386/Kconfig +++ b/arch/i386/Kconfig | |||
@@ -227,28 +227,40 @@ config SCHED_NO_NO_OMIT_FRAME_POINTER | |||
227 | If in doubt, say "Y". | 227 | If in doubt, say "Y". |
228 | 228 | ||
229 | config PARAVIRT | 229 | config PARAVIRT |
230 | bool "Paravirtualization support (EXPERIMENTAL)" | 230 | bool |
231 | depends on EXPERIMENTAL | ||
232 | depends on !(X86_VISWS || X86_VOYAGER) | 231 | depends on !(X86_VISWS || X86_VOYAGER) |
233 | help | 232 | help |
234 | Paravirtualization is a way of running multiple instances of | 233 | This changes the kernel so it can modify itself when it is run |
235 | Linux on the same machine, under a hypervisor. This option | 234 | under a hypervisor, potentially improving performance significantly |
236 | changes the kernel so it can modify itself when it is run | 235 | over full virtualization. However, when run without a hypervisor |
237 | under a hypervisor, improving performance significantly. | 236 | the kernel is theoretically slower and slightly larger. |
238 | However, when run without a hypervisor the kernel is | 237 | |
239 | theoretically slower. If in doubt, say N. | 238 | menuconfig PARAVIRT_GUEST |
239 | bool "Paravirtualized guest support" | ||
240 | help | ||
241 | Say Y here to get to see options related to running Linux under | ||
242 | various hypervisors. This option alone does not add any kernel code. | ||
243 | |||
244 | If you say N, all options in this submenu will be skipped and disabled. | ||
245 | |||
246 | if PARAVIRT_GUEST | ||
240 | 247 | ||
241 | source "arch/x86/xen/Kconfig" | 248 | source "arch/x86/xen/Kconfig" |
242 | 249 | ||
243 | config VMI | 250 | config VMI |
244 | bool "VMI Paravirt-ops support" | 251 | bool "VMI Guest support" |
245 | depends on PARAVIRT | 252 | select PARAVIRT |
253 | depends on !(X86_VISWS || X86_VOYAGER) | ||
246 | help | 254 | help |
247 | VMI provides a paravirtualized interface to the VMware ESX server | 255 | VMI provides a paravirtualized interface to the VMware ESX server |
248 | (it could be used by other hypervisors in theory too, but is not | 256 | (it could be used by other hypervisors in theory too, but is not |
249 | at the moment), by linking the kernel to a GPL-ed ROM module | 257 | at the moment), by linking the kernel to a GPL-ed ROM module |
250 | provided by the hypervisor. | 258 | provided by the hypervisor. |
251 | 259 | ||
260 | source "arch/x86/lguest/Kconfig" | ||
261 | |||
262 | endif | ||
263 | |||
252 | config ACPI_SRAT | 264 | config ACPI_SRAT |
253 | bool | 265 | bool |
254 | default y | 266 | default y |
diff --git a/arch/i386/Makefile b/arch/i386/Makefile index b88e47ca3032..b81cb64d48e5 100644 --- a/arch/i386/Makefile +++ b/arch/i386/Makefile | |||
@@ -99,6 +99,9 @@ core-$(CONFIG_X86_ES7000) := arch/x86/mach-es7000/ | |||
99 | # Xen paravirtualization support | 99 | # Xen paravirtualization support |
100 | core-$(CONFIG_XEN) += arch/x86/xen/ | 100 | core-$(CONFIG_XEN) += arch/x86/xen/ |
101 | 101 | ||
102 | # lguest paravirtualization support | ||
103 | core-$(CONFIG_LGUEST_GUEST) += arch/x86/lguest/ | ||
104 | |||
102 | # default subarch .h files | 105 | # default subarch .h files |
103 | mflags-y += -Iinclude/asm-x86/mach-default | 106 | mflags-y += -Iinclude/asm-x86/mach-default |
104 | 107 | ||
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c index 3c95f4184b99..bc859a311eaf 100644 --- a/arch/ia64/hp/common/sba_iommu.c +++ b/arch/ia64/hp/common/sba_iommu.c | |||
@@ -246,7 +246,7 @@ static int reserve_sba_gart = 1; | |||
246 | static SBA_INLINE void sba_mark_invalid(struct ioc *, dma_addr_t, size_t); | 246 | static SBA_INLINE void sba_mark_invalid(struct ioc *, dma_addr_t, size_t); |
247 | static SBA_INLINE void sba_free_range(struct ioc *, dma_addr_t, size_t); | 247 | static SBA_INLINE void sba_free_range(struct ioc *, dma_addr_t, size_t); |
248 | 248 | ||
249 | #define sba_sg_address(sg) (page_address((sg)->page) + (sg)->offset) | 249 | #define sba_sg_address(sg) sg_virt((sg)) |
250 | 250 | ||
251 | #ifdef FULL_VALID_PDIR | 251 | #ifdef FULL_VALID_PDIR |
252 | static u64 prefetch_spill_page; | 252 | static u64 prefetch_spill_page; |
diff --git a/arch/ia64/hp/sim/simscsi.c b/arch/ia64/hp/sim/simscsi.c index a3a558a06757..6ef9b5219930 100644 --- a/arch/ia64/hp/sim/simscsi.c +++ b/arch/ia64/hp/sim/simscsi.c | |||
@@ -131,7 +131,7 @@ simscsi_sg_readwrite (struct scsi_cmnd *sc, int mode, unsigned long offset) | |||
131 | stat.fd = desc[sc->device->id]; | 131 | stat.fd = desc[sc->device->id]; |
132 | 132 | ||
133 | scsi_for_each_sg(sc, sl, scsi_sg_count(sc), i) { | 133 | scsi_for_each_sg(sc, sl, scsi_sg_count(sc), i) { |
134 | req.addr = __pa(page_address(sl->page) + sl->offset); | 134 | req.addr = __pa(sg_virt(sl)); |
135 | req.len = sl->length; | 135 | req.len = sl->length; |
136 | if (DBG) | 136 | if (DBG) |
137 | printk("simscsi_sg_%s @ %lx (off %lx) use_sg=%d len=%d\n", | 137 | printk("simscsi_sg_%s @ %lx (off %lx) use_sg=%d len=%d\n", |
@@ -212,7 +212,7 @@ static void simscsi_fillresult(struct scsi_cmnd *sc, char *buf, unsigned len) | |||
212 | if (!len) | 212 | if (!len) |
213 | break; | 213 | break; |
214 | thislen = min(len, slp->length); | 214 | thislen = min(len, slp->length); |
215 | memcpy(page_address(slp->page) + slp->offset, buf, thislen); | 215 | memcpy(sg_virt(slp), buf, thislen); |
216 | len -= thislen; | 216 | len -= thislen; |
217 | } | 217 | } |
218 | } | 218 | } |
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c index 8e4894b205e2..3f7ea13358e9 100644 --- a/arch/ia64/kernel/efi.c +++ b/arch/ia64/kernel/efi.c | |||
@@ -1090,7 +1090,8 @@ efi_memmap_init(unsigned long *s, unsigned long *e) | |||
1090 | 1090 | ||
1091 | void | 1091 | void |
1092 | efi_initialize_iomem_resources(struct resource *code_resource, | 1092 | efi_initialize_iomem_resources(struct resource *code_resource, |
1093 | struct resource *data_resource) | 1093 | struct resource *data_resource, |
1094 | struct resource *bss_resource) | ||
1094 | { | 1095 | { |
1095 | struct resource *res; | 1096 | struct resource *res; |
1096 | void *efi_map_start, *efi_map_end, *p; | 1097 | void *efi_map_start, *efi_map_end, *p; |
@@ -1171,6 +1172,7 @@ efi_initialize_iomem_resources(struct resource *code_resource, | |||
1171 | */ | 1172 | */ |
1172 | insert_resource(res, code_resource); | 1173 | insert_resource(res, code_resource); |
1173 | insert_resource(res, data_resource); | 1174 | insert_resource(res, data_resource); |
1175 | insert_resource(res, bss_resource); | ||
1174 | #ifdef CONFIG_KEXEC | 1176 | #ifdef CONFIG_KEXEC |
1175 | insert_resource(res, &efi_memmap_res); | 1177 | insert_resource(res, &efi_memmap_res); |
1176 | insert_resource(res, &boot_param_res); | 1178 | insert_resource(res, &boot_param_res); |
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index cbf67f1aa291..ae6c3c02e117 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
@@ -90,7 +90,12 @@ static struct resource code_resource = { | |||
90 | .name = "Kernel code", | 90 | .name = "Kernel code", |
91 | .flags = IORESOURCE_BUSY | IORESOURCE_MEM | 91 | .flags = IORESOURCE_BUSY | IORESOURCE_MEM |
92 | }; | 92 | }; |
93 | extern char _text[], _end[], _etext[]; | 93 | |
94 | static struct resource bss_resource = { | ||
95 | .name = "Kernel bss", | ||
96 | .flags = IORESOURCE_BUSY | IORESOURCE_MEM | ||
97 | }; | ||
98 | extern char _text[], _end[], _etext[], _edata[], _bss[]; | ||
94 | 99 | ||
95 | unsigned long ia64_max_cacheline_size; | 100 | unsigned long ia64_max_cacheline_size; |
96 | 101 | ||
@@ -200,8 +205,11 @@ static int __init register_memory(void) | |||
200 | code_resource.start = ia64_tpa(_text); | 205 | code_resource.start = ia64_tpa(_text); |
201 | code_resource.end = ia64_tpa(_etext) - 1; | 206 | code_resource.end = ia64_tpa(_etext) - 1; |
202 | data_resource.start = ia64_tpa(_etext); | 207 | data_resource.start = ia64_tpa(_etext); |
203 | data_resource.end = ia64_tpa(_end) - 1; | 208 | data_resource.end = ia64_tpa(_edata) - 1; |
204 | efi_initialize_iomem_resources(&code_resource, &data_resource); | 209 | bss_resource.start = ia64_tpa(_bss); |
210 | bss_resource.end = ia64_tpa(_end) - 1; | ||
211 | efi_initialize_iomem_resources(&code_resource, &data_resource, | ||
212 | &bss_resource); | ||
205 | 213 | ||
206 | return 0; | 214 | return 0; |
207 | } | 215 | } |
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c index ecd8a52b9b9e..511db2fd7bff 100644 --- a/arch/ia64/sn/pci/pci_dma.c +++ b/arch/ia64/sn/pci/pci_dma.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <asm/sn/pcidev.h> | 16 | #include <asm/sn/pcidev.h> |
17 | #include <asm/sn/sn_sal.h> | 17 | #include <asm/sn/sn_sal.h> |
18 | 18 | ||
19 | #define SG_ENT_VIRT_ADDRESS(sg) (page_address((sg)->page) + (sg)->offset) | 19 | #define SG_ENT_VIRT_ADDRESS(sg) (sg_virt((sg))) |
20 | #define SG_ENT_PHYS_ADDRESS(SG) virt_to_phys(SG_ENT_VIRT_ADDRESS(SG)) | 20 | #define SG_ENT_PHYS_ADDRESS(SG) virt_to_phys(SG_ENT_VIRT_ADDRESS(SG)) |
21 | 21 | ||
22 | /** | 22 | /** |
diff --git a/arch/m68k/kernel/dma.c b/arch/m68k/kernel/dma.c index 9d4e4b5b6bd8..ef490e1ce600 100644 --- a/arch/m68k/kernel/dma.c +++ b/arch/m68k/kernel/dma.c | |||
@@ -121,7 +121,7 @@ int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, | |||
121 | int i; | 121 | int i; |
122 | 122 | ||
123 | for (i = 0; i < nents; sg++, i++) { | 123 | for (i = 0; i < nents; sg++, i++) { |
124 | sg->dma_address = page_to_phys(sg->page) + sg->offset; | 124 | sg->dma_address = sg_phys(sg); |
125 | dma_sync_single_for_device(dev, sg->dma_address, sg->length, dir); | 125 | dma_sync_single_for_device(dev, sg->dma_address, sg->length, dir); |
126 | } | 126 | } |
127 | return nents; | 127 | return nents; |
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig index f52c627bdadd..f4b582cbb567 100644 --- a/arch/m68knommu/Kconfig +++ b/arch/m68knommu/Kconfig | |||
@@ -451,6 +451,12 @@ config MOD5272 | |||
451 | help | 451 | help |
452 | Support for the Netburner MOD-5272 board. | 452 | Support for the Netburner MOD-5272 board. |
453 | 453 | ||
454 | config SAVANTrosie1 | ||
455 | bool "Savant Rosie1 board support" | ||
456 | depends on M523x | ||
457 | help | ||
458 | Support for the Savant Rosie1 board. | ||
459 | |||
454 | config ROMFS_FROM_ROM | 460 | config ROMFS_FROM_ROM |
455 | bool "ROMFS image not RAM resident" | 461 | bool "ROMFS image not RAM resident" |
456 | depends on (NETtel || SNAPGEAR) | 462 | depends on (NETtel || SNAPGEAR) |
@@ -492,7 +498,12 @@ config SNEHA | |||
492 | bool | 498 | bool |
493 | default y | 499 | default y |
494 | depends on CPU16B | 500 | depends on CPU16B |
495 | 501 | ||
502 | config SAVANT | ||
503 | bool | ||
504 | default y | ||
505 | depends on SAVANTrosie1 | ||
506 | |||
496 | config AVNET | 507 | config AVNET |
497 | bool | 508 | bool |
498 | default y | 509 | default y |
diff --git a/arch/m68knommu/Makefile b/arch/m68knommu/Makefile index 92227aaaa26e..30aa2553693d 100644 --- a/arch/m68knommu/Makefile +++ b/arch/m68knommu/Makefile | |||
@@ -48,6 +48,7 @@ board-$(CONFIG_SNEHA) := SNEHA | |||
48 | board-$(CONFIG_M5208EVB) := M5208EVB | 48 | board-$(CONFIG_M5208EVB) := M5208EVB |
49 | board-$(CONFIG_MOD5272) := MOD5272 | 49 | board-$(CONFIG_MOD5272) := MOD5272 |
50 | board-$(CONFIG_AVNET) := AVNET | 50 | board-$(CONFIG_AVNET) := AVNET |
51 | board-$(CONFIG_SAVANT) := SAVANT | ||
51 | BOARD := $(board-y) | 52 | BOARD := $(board-y) |
52 | 53 | ||
53 | model-$(CONFIG_RAMKERNEL) := ram | 54 | model-$(CONFIG_RAMKERNEL) := ram |
@@ -117,4 +118,4 @@ core-y += arch/m68knommu/kernel/ \ | |||
117 | libs-y += arch/m68knommu/lib/ | 118 | libs-y += arch/m68knommu/lib/ |
118 | 119 | ||
119 | archclean: | 120 | archclean: |
120 | $(Q)$(MAKE) $(clean)=arch/m68knommu/boot | 121 | |
diff --git a/arch/m68knommu/defconfig b/arch/m68knommu/defconfig index 3891de09ac23..5a0ecaaee3b0 100644 --- a/arch/m68knommu/defconfig +++ b/arch/m68knommu/defconfig | |||
@@ -1,41 +1,48 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.17 | 3 | # Linux kernel version: 2.6.23 |
4 | # Tue Jun 27 12:57:06 2006 | 4 | # Thu Oct 18 13:17:38 2007 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | # CONFIG_MMU is not set | 7 | # CONFIG_MMU is not set |
8 | # CONFIG_FPU is not set | 8 | # CONFIG_FPU is not set |
9 | CONFIG_ZONE_DMA=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 10 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
10 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 11 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
12 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
13 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 14 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
12 | CONFIG_GENERIC_HWEIGHT=y | 15 | CONFIG_GENERIC_HWEIGHT=y |
16 | CONFIG_GENERIC_HARDIRQS=y | ||
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 17 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
14 | CONFIG_TIME_LOW_RES=y | 18 | CONFIG_TIME_LOW_RES=y |
19 | CONFIG_NO_IOPORT=y | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
15 | 21 | ||
16 | # | 22 | # |
17 | # Code maturity level options | 23 | # General setup |
18 | # | 24 | # |
19 | CONFIG_EXPERIMENTAL=y | 25 | CONFIG_EXPERIMENTAL=y |
20 | CONFIG_BROKEN_ON_SMP=y | 26 | CONFIG_BROKEN_ON_SMP=y |
21 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
22 | |||
23 | # | ||
24 | # General setup | ||
25 | # | ||
26 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
27 | CONFIG_LOCALVERSION_AUTO=y | 29 | CONFIG_LOCALVERSION_AUTO=y |
28 | # CONFIG_SYSVIPC is not set | 30 | # CONFIG_SYSVIPC is not set |
29 | # CONFIG_POSIX_MQUEUE is not set | 31 | # CONFIG_POSIX_MQUEUE is not set |
30 | # CONFIG_BSD_PROCESS_ACCT is not set | 32 | # CONFIG_BSD_PROCESS_ACCT is not set |
31 | # CONFIG_SYSCTL is not set | 33 | # CONFIG_TASKSTATS is not set |
34 | # CONFIG_USER_NS is not set | ||
32 | # CONFIG_AUDIT is not set | 35 | # CONFIG_AUDIT is not set |
33 | # CONFIG_IKCONFIG is not set | 36 | # CONFIG_IKCONFIG is not set |
37 | CONFIG_LOG_BUF_SHIFT=14 | ||
38 | # CONFIG_SYSFS_DEPRECATED is not set | ||
34 | # CONFIG_RELAY is not set | 39 | # CONFIG_RELAY is not set |
35 | CONFIG_INITRAMFS_SOURCE="" | 40 | # CONFIG_BLK_DEV_INITRD is not set |
36 | CONFIG_UID16=y | ||
37 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 41 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
42 | CONFIG_SYSCTL=y | ||
38 | CONFIG_EMBEDDED=y | 43 | CONFIG_EMBEDDED=y |
44 | CONFIG_UID16=y | ||
45 | CONFIG_SYSCTL_SYSCALL=y | ||
39 | # CONFIG_KALLSYMS is not set | 46 | # CONFIG_KALLSYMS is not set |
40 | # CONFIG_HOTPLUG is not set | 47 | # CONFIG_HOTPLUG is not set |
41 | CONFIG_PRINTK=y | 48 | CONFIG_PRINTK=y |
@@ -44,20 +51,25 @@ CONFIG_ELF_CORE=y | |||
44 | CONFIG_BASE_FULL=y | 51 | CONFIG_BASE_FULL=y |
45 | # CONFIG_FUTEX is not set | 52 | # CONFIG_FUTEX is not set |
46 | # CONFIG_EPOLL is not set | 53 | # CONFIG_EPOLL is not set |
54 | # CONFIG_SIGNALFD is not set | ||
55 | # CONFIG_EVENTFD is not set | ||
56 | # CONFIG_VM_EVENT_COUNTERS is not set | ||
47 | CONFIG_SLAB=y | 57 | CONFIG_SLAB=y |
58 | # CONFIG_SLUB is not set | ||
59 | # CONFIG_SLOB is not set | ||
48 | CONFIG_TINY_SHMEM=y | 60 | CONFIG_TINY_SHMEM=y |
49 | CONFIG_BASE_SMALL=0 | 61 | CONFIG_BASE_SMALL=0 |
50 | # CONFIG_SLOB is not set | 62 | CONFIG_MODULES=y |
51 | 63 | CONFIG_MODULE_UNLOAD=y | |
52 | # | 64 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
53 | # Loadable module support | 65 | # CONFIG_MODVERSIONS is not set |
54 | # | 66 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
55 | # CONFIG_MODULES is not set | 67 | # CONFIG_KMOD is not set |
56 | 68 | CONFIG_BLOCK=y | |
57 | # | 69 | # CONFIG_LBD is not set |
58 | # Block layer | ||
59 | # | ||
60 | # CONFIG_BLK_DEV_IO_TRACE is not set | 70 | # CONFIG_BLK_DEV_IO_TRACE is not set |
71 | # CONFIG_LSF is not set | ||
72 | # CONFIG_BLK_DEV_BSG is not set | ||
61 | 73 | ||
62 | # | 74 | # |
63 | # IO Schedulers | 75 | # IO Schedulers |
@@ -99,6 +111,7 @@ CONFIG_CLOCK_DIV=1 | |||
99 | # | 111 | # |
100 | # Platform | 112 | # Platform |
101 | # | 113 | # |
114 | # CONFIG_UC5272 is not set | ||
102 | CONFIG_M5272C3=y | 115 | CONFIG_M5272C3=y |
103 | # CONFIG_COBRA5272 is not set | 116 | # CONFIG_COBRA5272 is not set |
104 | # CONFIG_CANCam is not set | 117 | # CONFIG_CANCam is not set |
@@ -107,7 +120,6 @@ CONFIG_M5272C3=y | |||
107 | # CONFIG_CPU16B is not set | 120 | # CONFIG_CPU16B is not set |
108 | # CONFIG_MOD5272 is not set | 121 | # CONFIG_MOD5272 is not set |
109 | CONFIG_FREESCALE=y | 122 | CONFIG_FREESCALE=y |
110 | # CONFIG_LARGE_ALLOCS is not set | ||
111 | CONFIG_4KSTACKS=y | 123 | CONFIG_4KSTACKS=y |
112 | 124 | ||
113 | # | 125 | # |
@@ -121,6 +133,11 @@ CONFIG_RAMAUTOBIT=y | |||
121 | # CONFIG_RAM8BIT is not set | 133 | # CONFIG_RAM8BIT is not set |
122 | # CONFIG_RAM16BIT is not set | 134 | # CONFIG_RAM16BIT is not set |
123 | # CONFIG_RAM32BIT is not set | 135 | # CONFIG_RAM32BIT is not set |
136 | |||
137 | # | ||
138 | # ROM configuration | ||
139 | # | ||
140 | # CONFIG_ROM is not set | ||
124 | CONFIG_RAMKERNEL=y | 141 | CONFIG_RAMKERNEL=y |
125 | # CONFIG_ROMKERNEL is not set | 142 | # CONFIG_ROMKERNEL is not set |
126 | CONFIG_SELECT_MEMORY_MODEL=y | 143 | CONFIG_SELECT_MEMORY_MODEL=y |
@@ -131,20 +148,19 @@ CONFIG_FLATMEM=y | |||
131 | CONFIG_FLAT_NODE_MEM_MAP=y | 148 | CONFIG_FLAT_NODE_MEM_MAP=y |
132 | # CONFIG_SPARSEMEM_STATIC is not set | 149 | # CONFIG_SPARSEMEM_STATIC is not set |
133 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 150 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
151 | # CONFIG_RESOURCES_64BIT is not set | ||
152 | CONFIG_ZONE_DMA_FLAG=1 | ||
153 | CONFIG_VIRT_TO_BUS=y | ||
134 | 154 | ||
135 | # | 155 | # |
136 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | 156 | # Bus options (PCI, PCMCIA, EISA, MCA, ISA) |
137 | # | 157 | # |
138 | # CONFIG_PCI is not set | 158 | # CONFIG_PCI is not set |
159 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
139 | 160 | ||
140 | # | 161 | # |
141 | # PCCARD (PCMCIA/CardBus) support | 162 | # PCCARD (PCMCIA/CardBus) support |
142 | # | 163 | # |
143 | # CONFIG_PCCARD is not set | ||
144 | |||
145 | # | ||
146 | # PCI Hotplug Support | ||
147 | # | ||
148 | 164 | ||
149 | # | 165 | # |
150 | # Executable file formats | 166 | # Executable file formats |
@@ -168,7 +184,6 @@ CONFIG_NET=y | |||
168 | # | 184 | # |
169 | # Networking options | 185 | # Networking options |
170 | # | 186 | # |
171 | # CONFIG_NETDEBUG is not set | ||
172 | CONFIG_PACKET=y | 187 | CONFIG_PACKET=y |
173 | # CONFIG_PACKET_MMAP is not set | 188 | # CONFIG_PACKET_MMAP is not set |
174 | CONFIG_UNIX=y | 189 | CONFIG_UNIX=y |
@@ -187,27 +202,21 @@ CONFIG_IP_FIB_HASH=y | |||
187 | # CONFIG_INET_IPCOMP is not set | 202 | # CONFIG_INET_IPCOMP is not set |
188 | # CONFIG_INET_XFRM_TUNNEL is not set | 203 | # CONFIG_INET_XFRM_TUNNEL is not set |
189 | # CONFIG_INET_TUNNEL is not set | 204 | # CONFIG_INET_TUNNEL is not set |
205 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
206 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
207 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
190 | # CONFIG_INET_DIAG is not set | 208 | # CONFIG_INET_DIAG is not set |
191 | # CONFIG_TCP_CONG_ADVANCED is not set | 209 | # CONFIG_TCP_CONG_ADVANCED is not set |
192 | CONFIG_TCP_CONG_BIC=y | 210 | CONFIG_TCP_CONG_CUBIC=y |
211 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
212 | # CONFIG_TCP_MD5SIG is not set | ||
193 | # CONFIG_IPV6 is not set | 213 | # CONFIG_IPV6 is not set |
194 | # CONFIG_INET6_XFRM_TUNNEL is not set | 214 | # CONFIG_INET6_XFRM_TUNNEL is not set |
195 | # CONFIG_INET6_TUNNEL is not set | 215 | # CONFIG_INET6_TUNNEL is not set |
216 | # CONFIG_NETWORK_SECMARK is not set | ||
196 | # CONFIG_NETFILTER is not set | 217 | # CONFIG_NETFILTER is not set |
197 | |||
198 | # | ||
199 | # DCCP Configuration (EXPERIMENTAL) | ||
200 | # | ||
201 | # CONFIG_IP_DCCP is not set | 218 | # CONFIG_IP_DCCP is not set |
202 | |||
203 | # | ||
204 | # SCTP Configuration (EXPERIMENTAL) | ||
205 | # | ||
206 | # CONFIG_IP_SCTP is not set | 219 | # CONFIG_IP_SCTP is not set |
207 | |||
208 | # | ||
209 | # TIPC Configuration (EXPERIMENTAL) | ||
210 | # | ||
211 | # CONFIG_TIPC is not set | 220 | # CONFIG_TIPC is not set |
212 | # CONFIG_ATM is not set | 221 | # CONFIG_ATM is not set |
213 | # CONFIG_BRIDGE is not set | 222 | # CONFIG_BRIDGE is not set |
@@ -218,7 +227,6 @@ CONFIG_TCP_CONG_BIC=y | |||
218 | # CONFIG_ATALK is not set | 227 | # CONFIG_ATALK is not set |
219 | # CONFIG_X25 is not set | 228 | # CONFIG_X25 is not set |
220 | # CONFIG_LAPB is not set | 229 | # CONFIG_LAPB is not set |
221 | # CONFIG_NET_DIVERT is not set | ||
222 | # CONFIG_ECONET is not set | 230 | # CONFIG_ECONET is not set |
223 | # CONFIG_WAN_ROUTER is not set | 231 | # CONFIG_WAN_ROUTER is not set |
224 | 232 | ||
@@ -234,7 +242,17 @@ CONFIG_TCP_CONG_BIC=y | |||
234 | # CONFIG_HAMRADIO is not set | 242 | # CONFIG_HAMRADIO is not set |
235 | # CONFIG_IRDA is not set | 243 | # CONFIG_IRDA is not set |
236 | # CONFIG_BT is not set | 244 | # CONFIG_BT is not set |
245 | # CONFIG_AF_RXRPC is not set | ||
246 | |||
247 | # | ||
248 | # Wireless | ||
249 | # | ||
250 | # CONFIG_CFG80211 is not set | ||
251 | # CONFIG_WIRELESS_EXT is not set | ||
252 | # CONFIG_MAC80211 is not set | ||
237 | # CONFIG_IEEE80211 is not set | 253 | # CONFIG_IEEE80211 is not set |
254 | # CONFIG_RFKILL is not set | ||
255 | # CONFIG_NET_9P is not set | ||
238 | 256 | ||
239 | # | 257 | # |
240 | # Device Drivers | 258 | # Device Drivers |
@@ -245,16 +263,8 @@ CONFIG_TCP_CONG_BIC=y | |||
245 | # | 263 | # |
246 | CONFIG_STANDALONE=y | 264 | CONFIG_STANDALONE=y |
247 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 265 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
248 | # CONFIG_FW_LOADER is not set | 266 | # CONFIG_SYS_HYPERVISOR is not set |
249 | |||
250 | # | ||
251 | # Connector - unified userspace <-> kernelspace linker | ||
252 | # | ||
253 | # CONFIG_CONNECTOR is not set | 267 | # CONFIG_CONNECTOR is not set |
254 | |||
255 | # | ||
256 | # Memory Technology Devices (MTD) | ||
257 | # | ||
258 | CONFIG_MTD=y | 268 | CONFIG_MTD=y |
259 | # CONFIG_MTD_DEBUG is not set | 269 | # CONFIG_MTD_DEBUG is not set |
260 | # CONFIG_MTD_CONCAT is not set | 270 | # CONFIG_MTD_CONCAT is not set |
@@ -266,11 +276,13 @@ CONFIG_MTD_PARTITIONS=y | |||
266 | # User Modules And Translation Layers | 276 | # User Modules And Translation Layers |
267 | # | 277 | # |
268 | CONFIG_MTD_CHAR=y | 278 | CONFIG_MTD_CHAR=y |
279 | CONFIG_MTD_BLKDEVS=y | ||
269 | CONFIG_MTD_BLOCK=y | 280 | CONFIG_MTD_BLOCK=y |
270 | # CONFIG_FTL is not set | 281 | # CONFIG_FTL is not set |
271 | # CONFIG_NFTL is not set | 282 | # CONFIG_NFTL is not set |
272 | # CONFIG_INFTL is not set | 283 | # CONFIG_INFTL is not set |
273 | # CONFIG_RFD_FTL is not set | 284 | # CONFIG_RFD_FTL is not set |
285 | # CONFIG_SSFDC is not set | ||
274 | 286 | ||
275 | # | 287 | # |
276 | # RAM/ROM/Flash chip drivers | 288 | # RAM/ROM/Flash chip drivers |
@@ -290,7 +302,6 @@ CONFIG_MTD_CFI_I2=y | |||
290 | CONFIG_MTD_RAM=y | 302 | CONFIG_MTD_RAM=y |
291 | # CONFIG_MTD_ROM is not set | 303 | # CONFIG_MTD_ROM is not set |
292 | # CONFIG_MTD_ABSENT is not set | 304 | # CONFIG_MTD_ABSENT is not set |
293 | # CONFIG_MTD_OBSOLETE_CHIPS is not set | ||
294 | 305 | ||
295 | # | 306 | # |
296 | # Mapping drivers for chip access | 307 | # Mapping drivers for chip access |
@@ -313,42 +324,25 @@ CONFIG_MTD_UCLINUX=y | |||
313 | # CONFIG_MTD_DOC2000 is not set | 324 | # CONFIG_MTD_DOC2000 is not set |
314 | # CONFIG_MTD_DOC2001 is not set | 325 | # CONFIG_MTD_DOC2001 is not set |
315 | # CONFIG_MTD_DOC2001PLUS is not set | 326 | # CONFIG_MTD_DOC2001PLUS is not set |
316 | |||
317 | # | ||
318 | # NAND Flash Device Drivers | ||
319 | # | ||
320 | # CONFIG_MTD_NAND is not set | 327 | # CONFIG_MTD_NAND is not set |
321 | |||
322 | # | ||
323 | # OneNAND Flash Device Drivers | ||
324 | # | ||
325 | # CONFIG_MTD_ONENAND is not set | 328 | # CONFIG_MTD_ONENAND is not set |
326 | 329 | ||
327 | # | 330 | # |
328 | # Parallel port support | 331 | # UBI - Unsorted block images |
329 | # | 332 | # |
333 | # CONFIG_MTD_UBI is not set | ||
330 | # CONFIG_PARPORT is not set | 334 | # CONFIG_PARPORT is not set |
331 | 335 | CONFIG_BLK_DEV=y | |
332 | # | ||
333 | # Plug and Play support | ||
334 | # | ||
335 | |||
336 | # | ||
337 | # Block devices | ||
338 | # | ||
339 | # CONFIG_BLK_DEV_COW_COMMON is not set | 336 | # CONFIG_BLK_DEV_COW_COMMON is not set |
340 | # CONFIG_BLK_DEV_LOOP is not set | 337 | # CONFIG_BLK_DEV_LOOP is not set |
341 | # CONFIG_BLK_DEV_NBD is not set | 338 | # CONFIG_BLK_DEV_NBD is not set |
342 | CONFIG_BLK_DEV_RAM=y | 339 | CONFIG_BLK_DEV_RAM=y |
343 | CONFIG_BLK_DEV_RAM_COUNT=16 | 340 | CONFIG_BLK_DEV_RAM_COUNT=16 |
344 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 341 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
345 | # CONFIG_BLK_DEV_INITRD is not set | 342 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
346 | # CONFIG_CDROM_PKTCDVD is not set | 343 | # CONFIG_CDROM_PKTCDVD is not set |
347 | # CONFIG_ATA_OVER_ETH is not set | 344 | # CONFIG_ATA_OVER_ETH is not set |
348 | 345 | # CONFIG_MISC_DEVICES is not set | |
349 | # | ||
350 | # ATA/ATAPI/MFM/RLL support | ||
351 | # | ||
352 | # CONFIG_IDE is not set | 346 | # CONFIG_IDE is not set |
353 | 347 | ||
354 | # | 348 | # |
@@ -356,67 +350,29 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 | |||
356 | # | 350 | # |
357 | # CONFIG_RAID_ATTRS is not set | 351 | # CONFIG_RAID_ATTRS is not set |
358 | # CONFIG_SCSI is not set | 352 | # CONFIG_SCSI is not set |
359 | 353 | # CONFIG_SCSI_DMA is not set | |
360 | # | 354 | # CONFIG_SCSI_NETLINK is not set |
361 | # Multi-device support (RAID and LVM) | ||
362 | # | ||
363 | # CONFIG_MD is not set | 355 | # CONFIG_MD is not set |
364 | |||
365 | # | ||
366 | # Fusion MPT device support | ||
367 | # | ||
368 | # CONFIG_FUSION is not set | ||
369 | |||
370 | # | ||
371 | # IEEE 1394 (FireWire) support | ||
372 | # | ||
373 | |||
374 | # | ||
375 | # I2O device support | ||
376 | # | ||
377 | |||
378 | # | ||
379 | # Network device support | ||
380 | # | ||
381 | CONFIG_NETDEVICES=y | 356 | CONFIG_NETDEVICES=y |
357 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
382 | # CONFIG_DUMMY is not set | 358 | # CONFIG_DUMMY is not set |
383 | # CONFIG_BONDING is not set | 359 | # CONFIG_BONDING is not set |
360 | # CONFIG_MACVLAN is not set | ||
384 | # CONFIG_EQUALIZER is not set | 361 | # CONFIG_EQUALIZER is not set |
385 | # CONFIG_TUN is not set | 362 | # CONFIG_TUN is not set |
386 | |||
387 | # | ||
388 | # PHY device support | ||
389 | # | ||
390 | # CONFIG_PHYLIB is not set | 363 | # CONFIG_PHYLIB is not set |
391 | |||
392 | # | ||
393 | # Ethernet (10 or 100Mbit) | ||
394 | # | ||
395 | CONFIG_NET_ETHERNET=y | 364 | CONFIG_NET_ETHERNET=y |
396 | # CONFIG_MII is not set | 365 | # CONFIG_MII is not set |
397 | CONFIG_FEC=y | 366 | CONFIG_FEC=y |
398 | # CONFIG_FEC2 is not set | 367 | # CONFIG_FEC2 is not set |
368 | # CONFIG_NETDEV_1000 is not set | ||
369 | # CONFIG_NETDEV_10000 is not set | ||
399 | 370 | ||
400 | # | 371 | # |
401 | # Ethernet (1000 Mbit) | 372 | # Wireless LAN |
402 | # | ||
403 | |||
404 | # | ||
405 | # Ethernet (10000 Mbit) | ||
406 | # | ||
407 | |||
408 | # | ||
409 | # Token Ring devices | ||
410 | # | ||
411 | |||
412 | # | ||
413 | # Wireless LAN (non-hamradio) | ||
414 | # | ||
415 | # CONFIG_NET_RADIO is not set | ||
416 | |||
417 | # | ||
418 | # Wan interfaces | ||
419 | # | 373 | # |
374 | # CONFIG_WLAN_PRE80211 is not set | ||
375 | # CONFIG_WLAN_80211 is not set | ||
420 | # CONFIG_WAN is not set | 376 | # CONFIG_WAN is not set |
421 | CONFIG_PPP=y | 377 | CONFIG_PPP=y |
422 | # CONFIG_PPP_MULTILINK is not set | 378 | # CONFIG_PPP_MULTILINK is not set |
@@ -427,20 +383,14 @@ CONFIG_PPP=y | |||
427 | # CONFIG_PPP_BSDCOMP is not set | 383 | # CONFIG_PPP_BSDCOMP is not set |
428 | # CONFIG_PPP_MPPE is not set | 384 | # CONFIG_PPP_MPPE is not set |
429 | # CONFIG_PPPOE is not set | 385 | # CONFIG_PPPOE is not set |
386 | # CONFIG_PPPOL2TP is not set | ||
430 | # CONFIG_SLIP is not set | 387 | # CONFIG_SLIP is not set |
388 | CONFIG_SLHC=y | ||
431 | # CONFIG_SHAPER is not set | 389 | # CONFIG_SHAPER is not set |
432 | # CONFIG_NETCONSOLE is not set | 390 | # CONFIG_NETCONSOLE is not set |
433 | # CONFIG_NETPOLL is not set | 391 | # CONFIG_NETPOLL is not set |
434 | # CONFIG_NET_POLL_CONTROLLER is not set | 392 | # CONFIG_NET_POLL_CONTROLLER is not set |
435 | |||
436 | # | ||
437 | # ISDN subsystem | ||
438 | # | ||
439 | # CONFIG_ISDN is not set | 393 | # CONFIG_ISDN is not set |
440 | |||
441 | # | ||
442 | # Telephony Support | ||
443 | # | ||
444 | # CONFIG_PHONE is not set | 394 | # CONFIG_PHONE is not set |
445 | 395 | ||
446 | # | 396 | # |
@@ -472,34 +422,13 @@ CONFIG_SERIAL_COLDFIRE=y | |||
472 | # CONFIG_UNIX98_PTYS is not set | 422 | # CONFIG_UNIX98_PTYS is not set |
473 | CONFIG_LEGACY_PTYS=y | 423 | CONFIG_LEGACY_PTYS=y |
474 | CONFIG_LEGACY_PTY_COUNT=256 | 424 | CONFIG_LEGACY_PTY_COUNT=256 |
475 | |||
476 | # | ||
477 | # IPMI | ||
478 | # | ||
479 | # CONFIG_IPMI_HANDLER is not set | 425 | # CONFIG_IPMI_HANDLER is not set |
480 | |||
481 | # | ||
482 | # Watchdog Cards | ||
483 | # | ||
484 | # CONFIG_WATCHDOG is not set | 426 | # CONFIG_WATCHDOG is not set |
427 | # CONFIG_HW_RANDOM is not set | ||
485 | # CONFIG_GEN_RTC is not set | 428 | # CONFIG_GEN_RTC is not set |
486 | # CONFIG_DTLK is not set | ||
487 | # CONFIG_R3964 is not set | 429 | # CONFIG_R3964 is not set |
488 | |||
489 | # | ||
490 | # Ftape, the floppy tape device driver | ||
491 | # | ||
492 | # CONFIG_RAW_DRIVER is not set | 430 | # CONFIG_RAW_DRIVER is not set |
493 | |||
494 | # | ||
495 | # TPM devices | ||
496 | # | ||
497 | # CONFIG_TCG_TPM is not set | 431 | # CONFIG_TCG_TPM is not set |
498 | # CONFIG_TELCLOCK is not set | ||
499 | |||
500 | # | ||
501 | # I2C support | ||
502 | # | ||
503 | # CONFIG_I2C is not set | 432 | # CONFIG_I2C is not set |
504 | 433 | ||
505 | # | 434 | # |
@@ -507,101 +436,74 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
507 | # | 436 | # |
508 | # CONFIG_SPI is not set | 437 | # CONFIG_SPI is not set |
509 | # CONFIG_SPI_MASTER is not set | 438 | # CONFIG_SPI_MASTER is not set |
510 | |||
511 | # | ||
512 | # Dallas's 1-wire bus | ||
513 | # | ||
514 | # CONFIG_W1 is not set | 439 | # CONFIG_W1 is not set |
515 | 440 | # CONFIG_POWER_SUPPLY is not set | |
516 | # | ||
517 | # Hardware Monitoring support | ||
518 | # | ||
519 | # CONFIG_HWMON is not set | 441 | # CONFIG_HWMON is not set |
520 | # CONFIG_HWMON_VID is not set | ||
521 | 442 | ||
522 | # | 443 | # |
523 | # Misc devices | 444 | # Multifunction device drivers |
524 | # | 445 | # |
446 | # CONFIG_MFD_SM501 is not set | ||
525 | 447 | ||
526 | # | 448 | # |
527 | # Multimedia devices | 449 | # Multimedia devices |
528 | # | 450 | # |
529 | # CONFIG_VIDEO_DEV is not set | 451 | # CONFIG_VIDEO_DEV is not set |
530 | CONFIG_VIDEO_V4L2=y | 452 | # CONFIG_DVB_CORE is not set |
453 | CONFIG_DAB=y | ||
531 | 454 | ||
532 | # | 455 | # |
533 | # Digital Video Broadcasting Devices | 456 | # Graphics support |
534 | # | 457 | # |
535 | # CONFIG_DVB is not set | 458 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
536 | 459 | ||
537 | # | 460 | # |
538 | # Graphics support | 461 | # Display device support |
539 | # | 462 | # |
463 | # CONFIG_DISPLAY_SUPPORT is not set | ||
464 | # CONFIG_VGASTATE is not set | ||
465 | CONFIG_VIDEO_OUTPUT_CONTROL=y | ||
540 | # CONFIG_FB is not set | 466 | # CONFIG_FB is not set |
541 | 467 | ||
542 | # | 468 | # |
543 | # Sound | 469 | # Sound |
544 | # | 470 | # |
545 | # CONFIG_SOUND is not set | 471 | # CONFIG_SOUND is not set |
546 | 472 | # CONFIG_USB_SUPPORT is not set | |
547 | # | ||
548 | # USB support | ||
549 | # | ||
550 | # CONFIG_USB_ARCH_HAS_HCD is not set | ||
551 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
552 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
553 | |||
554 | # | ||
555 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
556 | # | ||
557 | |||
558 | # | ||
559 | # USB Gadget Support | ||
560 | # | ||
561 | # CONFIG_USB_GADGET is not set | ||
562 | |||
563 | # | ||
564 | # MMC/SD Card support | ||
565 | # | ||
566 | # CONFIG_MMC is not set | 473 | # CONFIG_MMC is not set |
567 | |||
568 | # | ||
569 | # LED devices | ||
570 | # | ||
571 | # CONFIG_NEW_LEDS is not set | 474 | # CONFIG_NEW_LEDS is not set |
475 | # CONFIG_RTC_CLASS is not set | ||
572 | 476 | ||
573 | # | 477 | # |
574 | # LED drivers | 478 | # DMA Engine support |
575 | # | 479 | # |
480 | # CONFIG_DMA_ENGINE is not set | ||
576 | 481 | ||
577 | # | 482 | # |
578 | # LED Triggers | 483 | # DMA Clients |
579 | # | 484 | # |
580 | 485 | ||
581 | # | 486 | # |
582 | # InfiniBand support | 487 | # DMA Devices |
583 | # | 488 | # |
584 | 489 | ||
585 | # | 490 | # |
586 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 491 | # Userspace I/O |
587 | # | 492 | # |
588 | 493 | # CONFIG_UIO is not set | |
589 | # | ||
590 | # Real Time Clock | ||
591 | # | ||
592 | # CONFIG_RTC_CLASS is not set | ||
593 | 494 | ||
594 | # | 495 | # |
595 | # File systems | 496 | # File systems |
596 | # | 497 | # |
597 | CONFIG_EXT2_FS=y | 498 | CONFIG_EXT2_FS=y |
598 | # CONFIG_EXT2_FS_XATTR is not set | 499 | # CONFIG_EXT2_FS_XATTR is not set |
599 | # CONFIG_EXT2_FS_XIP is not set | ||
600 | # CONFIG_EXT3_FS is not set | 500 | # CONFIG_EXT3_FS is not set |
501 | # CONFIG_EXT4DEV_FS is not set | ||
601 | # CONFIG_REISERFS_FS is not set | 502 | # CONFIG_REISERFS_FS is not set |
602 | # CONFIG_JFS_FS is not set | 503 | # CONFIG_JFS_FS is not set |
603 | # CONFIG_FS_POSIX_ACL is not set | 504 | # CONFIG_FS_POSIX_ACL is not set |
604 | # CONFIG_XFS_FS is not set | 505 | # CONFIG_XFS_FS is not set |
506 | # CONFIG_GFS2_FS is not set | ||
605 | # CONFIG_OCFS2_FS is not set | 507 | # CONFIG_OCFS2_FS is not set |
606 | # CONFIG_MINIX_FS is not set | 508 | # CONFIG_MINIX_FS is not set |
607 | CONFIG_ROMFS_FS=y | 509 | CONFIG_ROMFS_FS=y |
@@ -629,6 +531,7 @@ CONFIG_ROMFS_FS=y | |||
629 | # Pseudo filesystems | 531 | # Pseudo filesystems |
630 | # | 532 | # |
631 | CONFIG_PROC_FS=y | 533 | CONFIG_PROC_FS=y |
534 | CONFIG_PROC_SYSCTL=y | ||
632 | CONFIG_SYSFS=y | 535 | CONFIG_SYSFS=y |
633 | # CONFIG_TMPFS is not set | 536 | # CONFIG_TMPFS is not set |
634 | # CONFIG_HUGETLB_PAGE is not set | 537 | # CONFIG_HUGETLB_PAGE is not set |
@@ -645,7 +548,6 @@ CONFIG_RAMFS=y | |||
645 | # CONFIG_BEFS_FS is not set | 548 | # CONFIG_BEFS_FS is not set |
646 | # CONFIG_BFS_FS is not set | 549 | # CONFIG_BFS_FS is not set |
647 | # CONFIG_EFS_FS is not set | 550 | # CONFIG_EFS_FS is not set |
648 | # CONFIG_JFFS_FS is not set | ||
649 | # CONFIG_JFFS2_FS is not set | 551 | # CONFIG_JFFS2_FS is not set |
650 | # CONFIG_CRAMFS is not set | 552 | # CONFIG_CRAMFS is not set |
651 | # CONFIG_VXFS_FS is not set | 553 | # CONFIG_VXFS_FS is not set |
@@ -664,7 +566,6 @@ CONFIG_RAMFS=y | |||
664 | # CONFIG_NCP_FS is not set | 566 | # CONFIG_NCP_FS is not set |
665 | # CONFIG_CODA_FS is not set | 567 | # CONFIG_CODA_FS is not set |
666 | # CONFIG_AFS_FS is not set | 568 | # CONFIG_AFS_FS is not set |
667 | # CONFIG_9P_FS is not set | ||
668 | 569 | ||
669 | # | 570 | # |
670 | # Partition Types | 571 | # Partition Types |
@@ -678,15 +579,21 @@ CONFIG_MSDOS_PARTITION=y | |||
678 | # CONFIG_NLS is not set | 579 | # CONFIG_NLS is not set |
679 | 580 | ||
680 | # | 581 | # |
582 | # Distributed Lock Manager | ||
583 | # | ||
584 | # CONFIG_DLM is not set | ||
585 | |||
586 | # | ||
681 | # Kernel hacking | 587 | # Kernel hacking |
682 | # | 588 | # |
683 | # CONFIG_PRINTK_TIME is not set | 589 | # CONFIG_PRINTK_TIME is not set |
590 | # CONFIG_ENABLE_MUST_CHECK is not set | ||
684 | # CONFIG_MAGIC_SYSRQ is not set | 591 | # CONFIG_MAGIC_SYSRQ is not set |
592 | # CONFIG_UNUSED_SYMBOLS is not set | ||
593 | # CONFIG_DEBUG_FS is not set | ||
594 | # CONFIG_HEADERS_CHECK is not set | ||
685 | # CONFIG_DEBUG_KERNEL is not set | 595 | # CONFIG_DEBUG_KERNEL is not set |
686 | CONFIG_LOG_BUF_SHIFT=14 | ||
687 | # CONFIG_DEBUG_BUGVERBOSE is not set | 596 | # CONFIG_DEBUG_BUGVERBOSE is not set |
688 | # CONFIG_DEBUG_FS is not set | ||
689 | # CONFIG_UNWIND_INFO is not set | ||
690 | # CONFIG_FULLDEBUG is not set | 597 | # CONFIG_FULLDEBUG is not set |
691 | # CONFIG_HIGHPROFILE is not set | 598 | # CONFIG_HIGHPROFILE is not set |
692 | # CONFIG_BOOTPARAM is not set | 599 | # CONFIG_BOOTPARAM is not set |
@@ -699,20 +606,16 @@ CONFIG_LOG_BUF_SHIFT=14 | |||
699 | # | 606 | # |
700 | # CONFIG_KEYS is not set | 607 | # CONFIG_KEYS is not set |
701 | # CONFIG_SECURITY is not set | 608 | # CONFIG_SECURITY is not set |
702 | |||
703 | # | ||
704 | # Cryptographic options | ||
705 | # | ||
706 | # CONFIG_CRYPTO is not set | 609 | # CONFIG_CRYPTO is not set |
707 | 610 | ||
708 | # | 611 | # |
709 | # Hardware crypto devices | ||
710 | # | ||
711 | |||
712 | # | ||
713 | # Library routines | 612 | # Library routines |
714 | # | 613 | # |
715 | # CONFIG_CRC_CCITT is not set | 614 | # CONFIG_CRC_CCITT is not set |
716 | # CONFIG_CRC16 is not set | 615 | # CONFIG_CRC16 is not set |
616 | # CONFIG_CRC_ITU_T is not set | ||
717 | # CONFIG_CRC32 is not set | 617 | # CONFIG_CRC32 is not set |
618 | # CONFIG_CRC7 is not set | ||
718 | # CONFIG_LIBCRC32C is not set | 619 | # CONFIG_LIBCRC32C is not set |
620 | CONFIG_HAS_IOMEM=y | ||
621 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c index 3f86ade3a22a..74bf94948ec2 100644 --- a/arch/m68knommu/kernel/setup.c +++ b/arch/m68knommu/kernel/setup.c | |||
@@ -151,27 +151,15 @@ void setup_arch(char **cmdline_p) | |||
151 | #ifdef CONFIG_ELITE | 151 | #ifdef CONFIG_ELITE |
152 | printk(KERN_INFO "Modified for M5206eLITE by Rob Scott, rscott@mtrob.fdns.net\n"); | 152 | printk(KERN_INFO "Modified for M5206eLITE by Rob Scott, rscott@mtrob.fdns.net\n"); |
153 | #endif | 153 | #endif |
154 | #ifdef CONFIG_TELOS | ||
155 | printk(KERN_INFO "Modified for Omnia ToolVox by James D. Schettine, james@telos-systems.com\n"); | ||
156 | #endif | ||
157 | #endif | 154 | #endif |
158 | printk(KERN_INFO "Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne\n"); | 155 | printk(KERN_INFO "Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne\n"); |
159 | 156 | ||
160 | #if defined( CONFIG_PILOT ) && defined( CONFIG_M68328 ) | 157 | #if defined( CONFIG_PILOT ) && defined( CONFIG_M68328 ) |
161 | printk(KERN_INFO "TRG SuperPilot FLASH card support <info@trgnet.com>\n"); | 158 | printk(KERN_INFO "TRG SuperPilot FLASH card support <info@trgnet.com>\n"); |
162 | #endif | 159 | #endif |
163 | |||
164 | #if defined( CONFIG_PILOT ) && defined( CONFIG_M68EZ328 ) | 160 | #if defined( CONFIG_PILOT ) && defined( CONFIG_M68EZ328 ) |
165 | printk(KERN_INFO "PalmV support by Lineo Inc. <jeff@uclinux.com>\n"); | 161 | printk(KERN_INFO "PalmV support by Lineo Inc. <jeff@uclinux.com>\n"); |
166 | #endif | 162 | #endif |
167 | |||
168 | #ifdef CONFIG_M68EZ328ADS | ||
169 | printk(KERN_INFO "M68EZ328ADS board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n"); | ||
170 | #endif | ||
171 | |||
172 | #ifdef CONFIG_ALMA_ANS | ||
173 | printk(KERN_INFO "Alma Electronics board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n"); | ||
174 | #endif | ||
175 | #if defined (CONFIG_M68360) | 163 | #if defined (CONFIG_M68360) |
176 | printk(KERN_INFO "QUICC port done by SED Systems <hamilton@sedsystems.ca>,\n"); | 164 | printk(KERN_INFO "QUICC port done by SED Systems <hamilton@sedsystems.ca>,\n"); |
177 | printk(KERN_INFO "based on 2.0.38 port by Lineo Inc. <mleslie@lineo.com>.\n"); | 165 | printk(KERN_INFO "based on 2.0.38 port by Lineo Inc. <mleslie@lineo.com>.\n"); |
@@ -188,11 +176,9 @@ void setup_arch(char **cmdline_p) | |||
188 | "BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext, | 176 | "BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext, |
189 | (int) &_sdata, (int) &_edata, | 177 | (int) &_sdata, (int) &_edata, |
190 | (int) &_sbss, (int) &_ebss); | 178 | (int) &_sbss, (int) &_ebss); |
191 | printk(KERN_DEBUG "KERNEL -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x " | 179 | printk(KERN_DEBUG "MEMORY -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x\n ", |
192 | "STACK=0x%06x-0x%06x\n", | ||
193 | (int) &_ebss, (int) memory_start, | 180 | (int) &_ebss, (int) memory_start, |
194 | (int) memory_start, (int) memory_end, | 181 | (int) memory_start, (int) memory_end); |
195 | (int) memory_end, (int) _ramend); | ||
196 | #endif | 182 | #endif |
197 | 183 | ||
198 | /* Keep a copy of command line */ | 184 | /* Keep a copy of command line */ |
@@ -287,12 +273,3 @@ struct seq_operations cpuinfo_op = { | |||
287 | .show = show_cpuinfo, | 273 | .show = show_cpuinfo, |
288 | }; | 274 | }; |
289 | 275 | ||
290 | void arch_gettod(int *year, int *mon, int *day, int *hour, | ||
291 | int *min, int *sec) | ||
292 | { | ||
293 | if (mach_gettod) | ||
294 | mach_gettod(year, mon, day, hour, min, sec); | ||
295 | else | ||
296 | *year = *mon = *day = *hour = *min = *sec = 0; | ||
297 | } | ||
298 | |||
diff --git a/arch/m68knommu/kernel/signal.c b/arch/m68knommu/kernel/signal.c index 437f8c6c14a0..70371378db86 100644 --- a/arch/m68knommu/kernel/signal.c +++ b/arch/m68knommu/kernel/signal.c | |||
@@ -781,15 +781,7 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs *regs) | |||
781 | /* Did we come from a system call? */ | 781 | /* Did we come from a system call? */ |
782 | if (regs->orig_d0 >= 0) { | 782 | if (regs->orig_d0 >= 0) { |
783 | /* Restart the system call - no handlers present */ | 783 | /* Restart the system call - no handlers present */ |
784 | if (regs->d0 == -ERESTARTNOHAND | 784 | handle_restart(regs, NULL, 0); |
785 | || regs->d0 == -ERESTARTSYS | ||
786 | || regs->d0 == -ERESTARTNOINTR) { | ||
787 | regs->d0 = regs->orig_d0; | ||
788 | regs->pc -= 2; | ||
789 | } else if (regs->d0 == -ERESTART_RESTARTBLOCK) { | ||
790 | regs->d0 = __NR_restart_syscall; | ||
791 | regs->pc -= 2; | ||
792 | } | ||
793 | } | 785 | } |
794 | return 0; | 786 | return 0; |
795 | } | 787 | } |
diff --git a/arch/m68knommu/kernel/time.c b/arch/m68knommu/kernel/time.c index 467053da2d08..77e5375a2dd5 100644 --- a/arch/m68knommu/kernel/time.c +++ b/arch/m68knommu/kernel/time.c | |||
@@ -27,7 +27,6 @@ | |||
27 | 27 | ||
28 | #define TICK_SIZE (tick_nsec / 1000) | 28 | #define TICK_SIZE (tick_nsec / 1000) |
29 | 29 | ||
30 | |||
31 | static inline int set_rtc_mmss(unsigned long nowtime) | 30 | static inline int set_rtc_mmss(unsigned long nowtime) |
32 | { | 31 | { |
33 | if (mach_set_clock_mmss) | 32 | if (mach_set_clock_mmss) |
@@ -39,15 +38,11 @@ static inline int set_rtc_mmss(unsigned long nowtime) | |||
39 | * timer_interrupt() needs to keep up the real-time clock, | 38 | * timer_interrupt() needs to keep up the real-time clock, |
40 | * as well as call the "do_timer()" routine every clocktick | 39 | * as well as call the "do_timer()" routine every clocktick |
41 | */ | 40 | */ |
42 | static irqreturn_t timer_interrupt(int irq, void *dummy) | 41 | irqreturn_t arch_timer_interrupt(int irq, void *dummy) |
43 | { | 42 | { |
44 | /* last time the cmos clock got updated */ | 43 | /* last time the cmos clock got updated */ |
45 | static long last_rtc_update=0; | 44 | static long last_rtc_update=0; |
46 | 45 | ||
47 | /* may need to kick the hardware timer */ | ||
48 | if (mach_tick) | ||
49 | mach_tick(); | ||
50 | |||
51 | write_seqlock(&xtime_lock); | 46 | write_seqlock(&xtime_lock); |
52 | 47 | ||
53 | do_timer(1); | 48 | do_timer(1); |
@@ -103,10 +98,10 @@ void time_init(void) | |||
103 | { | 98 | { |
104 | unsigned int year, mon, day, hour, min, sec; | 99 | unsigned int year, mon, day, hour, min, sec; |
105 | 100 | ||
106 | extern void arch_gettod(int *year, int *mon, int *day, int *hour, | 101 | if (mach_gettod) |
107 | int *min, int *sec); | 102 | mach_gettod(&year, &mon, &day, &hour, &min, &sec); |
108 | 103 | else | |
109 | arch_gettod(&year, &mon, &day, &hour, &min, &sec); | 104 | year = mon = day = hour = min = sec = 0; |
110 | 105 | ||
111 | if ((year += 1900) < 1970) | 106 | if ((year += 1900) < 1970) |
112 | year += 100; | 107 | year += 100; |
@@ -114,7 +109,7 @@ void time_init(void) | |||
114 | xtime.tv_nsec = 0; | 109 | xtime.tv_nsec = 0; |
115 | wall_to_monotonic.tv_sec = -xtime.tv_sec; | 110 | wall_to_monotonic.tv_sec = -xtime.tv_sec; |
116 | 111 | ||
117 | mach_sched_init(timer_interrupt); | 112 | hw_timer_init(); |
118 | } | 113 | } |
119 | 114 | ||
120 | /* | 115 | /* |
@@ -128,7 +123,7 @@ void do_gettimeofday(struct timeval *tv) | |||
128 | 123 | ||
129 | do { | 124 | do { |
130 | seq = read_seqbegin_irqsave(&xtime_lock, flags); | 125 | seq = read_seqbegin_irqsave(&xtime_lock, flags); |
131 | usec = mach_gettimeoffset ? mach_gettimeoffset() : 0; | 126 | usec = hw_timer_offset(); |
132 | sec = xtime.tv_sec; | 127 | sec = xtime.tv_sec; |
133 | usec += (xtime.tv_nsec / 1000); | 128 | usec += (xtime.tv_nsec / 1000); |
134 | } while (read_seqretry_irqrestore(&xtime_lock, seq, flags)); | 129 | } while (read_seqretry_irqrestore(&xtime_lock, seq, flags)); |
@@ -160,8 +155,7 @@ int do_settimeofday(struct timespec *tv) | |||
160 | * Discover what correction gettimeofday | 155 | * Discover what correction gettimeofday |
161 | * would have done, and then undo it! | 156 | * would have done, and then undo it! |
162 | */ | 157 | */ |
163 | if (mach_gettimeoffset) | 158 | nsec -= (hw_timer_offset() * 1000); |
164 | nsec -= (mach_gettimeoffset() * 1000); | ||
165 | 159 | ||
166 | wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); | 160 | wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); |
167 | wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); | 161 | wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); |
diff --git a/arch/m68knommu/platform/5206/config.c b/arch/m68knommu/platform/5206/config.c index d0f2dc5cb5a1..b3c4dd4cc135 100644 --- a/arch/m68knommu/platform/5206/config.c +++ b/arch/m68knommu/platform/5206/config.c | |||
@@ -10,13 +10,10 @@ | |||
10 | /***************************************************************************/ | 10 | /***************************************************************************/ |
11 | 11 | ||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/sched.h> | ||
14 | #include <linux/param.h> | 13 | #include <linux/param.h> |
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
16 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
17 | #include <asm/irq.h> | ||
18 | #include <asm/dma.h> | 16 | #include <asm/dma.h> |
19 | #include <asm/traps.h> | ||
20 | #include <asm/machdep.h> | 17 | #include <asm/machdep.h> |
21 | #include <asm/coldfire.h> | 18 | #include <asm/coldfire.h> |
22 | #include <asm/mcftimer.h> | 19 | #include <asm/mcftimer.h> |
@@ -25,9 +22,6 @@ | |||
25 | 22 | ||
26 | /***************************************************************************/ | 23 | /***************************************************************************/ |
27 | 24 | ||
28 | void coldfire_tick(void); | ||
29 | void coldfire_timer_init(irq_handler_t handler); | ||
30 | unsigned long coldfire_timer_offset(void); | ||
31 | void coldfire_reset(void); | 25 | void coldfire_reset(void); |
32 | 26 | ||
33 | /***************************************************************************/ | 27 | /***************************************************************************/ |
@@ -97,9 +91,6 @@ int mcf_timerirqpending(int timer) | |||
97 | void config_BSP(char *commandp, int size) | 91 | void config_BSP(char *commandp, int size) |
98 | { | 92 | { |
99 | mcf_setimr(MCFSIM_IMR_MASKALL); | 93 | mcf_setimr(MCFSIM_IMR_MASKALL); |
100 | mach_sched_init = coldfire_timer_init; | ||
101 | mach_tick = coldfire_tick; | ||
102 | mach_gettimeoffset = coldfire_timer_offset; | ||
103 | mach_reset = coldfire_reset; | 94 | mach_reset = coldfire_reset; |
104 | } | 95 | } |
105 | 96 | ||
diff --git a/arch/m68knommu/platform/5206e/config.c b/arch/m68knommu/platform/5206e/config.c index 425703fb6cee..f84a4aea8cb6 100644 --- a/arch/m68knommu/platform/5206e/config.c +++ b/arch/m68knommu/platform/5206e/config.c | |||
@@ -9,23 +9,16 @@ | |||
9 | /***************************************************************************/ | 9 | /***************************************************************************/ |
10 | 10 | ||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/sched.h> | ||
13 | #include <linux/param.h> | 12 | #include <linux/param.h> |
14 | #include <linux/interrupt.h> | 13 | #include <linux/interrupt.h> |
15 | #include <asm/irq.h> | ||
16 | #include <asm/dma.h> | 14 | #include <asm/dma.h> |
17 | #include <asm/traps.h> | ||
18 | #include <asm/machdep.h> | 15 | #include <asm/machdep.h> |
19 | #include <asm/coldfire.h> | 16 | #include <asm/coldfire.h> |
20 | #include <asm/mcftimer.h> | ||
21 | #include <asm/mcfsim.h> | 17 | #include <asm/mcfsim.h> |
22 | #include <asm/mcfdma.h> | 18 | #include <asm/mcfdma.h> |
23 | 19 | ||
24 | /***************************************************************************/ | 20 | /***************************************************************************/ |
25 | 21 | ||
26 | void coldfire_tick(void); | ||
27 | void coldfire_timer_init(irq_handler_t handler); | ||
28 | unsigned long coldfire_timer_offset(void); | ||
29 | void coldfire_reset(void); | 22 | void coldfire_reset(void); |
30 | 23 | ||
31 | /***************************************************************************/ | 24 | /***************************************************************************/ |
@@ -102,9 +95,6 @@ void config_BSP(char *commandp, int size) | |||
102 | commandp[size-1] = 0; | 95 | commandp[size-1] = 0; |
103 | #endif /* CONFIG_NETtel */ | 96 | #endif /* CONFIG_NETtel */ |
104 | 97 | ||
105 | mach_sched_init = coldfire_timer_init; | ||
106 | mach_tick = coldfire_tick; | ||
107 | mach_gettimeoffset = coldfire_timer_offset; | ||
108 | mach_reset = coldfire_reset; | 98 | mach_reset = coldfire_reset; |
109 | } | 99 | } |
110 | 100 | ||
diff --git a/arch/m68knommu/platform/520x/config.c b/arch/m68knommu/platform/520x/config.c index a2c95bebd004..6edbd41261cc 100644 --- a/arch/m68knommu/platform/520x/config.c +++ b/arch/m68knommu/platform/520x/config.c | |||
@@ -27,9 +27,6 @@ unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS]; | |||
27 | 27 | ||
28 | /***************************************************************************/ | 28 | /***************************************************************************/ |
29 | 29 | ||
30 | void coldfire_pit_tick(void); | ||
31 | void coldfire_pit_init(irq_handler_t handler); | ||
32 | unsigned long coldfire_pit_offset(void); | ||
33 | void coldfire_reset(void); | 30 | void coldfire_reset(void); |
34 | 31 | ||
35 | /***************************************************************************/ | 32 | /***************************************************************************/ |
@@ -47,10 +44,7 @@ void mcf_autovector(unsigned int vec) | |||
47 | 44 | ||
48 | void config_BSP(char *commandp, int size) | 45 | void config_BSP(char *commandp, int size) |
49 | { | 46 | { |
50 | mach_sched_init = coldfire_pit_init; | 47 | mach_reset = coldfire_reset; |
51 | mach_tick = coldfire_pit_tick; | ||
52 | mach_gettimeoffset = coldfire_pit_offset; | ||
53 | mach_reset = coldfire_reset; | ||
54 | } | 48 | } |
55 | 49 | ||
56 | /***************************************************************************/ | 50 | /***************************************************************************/ |
diff --git a/arch/m68knommu/platform/523x/config.c b/arch/m68knommu/platform/523x/config.c index 0a3af05a434b..e7f80c8e8636 100644 --- a/arch/m68knommu/platform/523x/config.c +++ b/arch/m68knommu/platform/523x/config.c | |||
@@ -13,12 +13,10 @@ | |||
13 | /***************************************************************************/ | 13 | /***************************************************************************/ |
14 | 14 | ||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/sched.h> | ||
17 | #include <linux/param.h> | 16 | #include <linux/param.h> |
18 | #include <linux/init.h> | 17 | #include <linux/init.h> |
19 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
20 | #include <asm/dma.h> | 19 | #include <asm/dma.h> |
21 | #include <asm/traps.h> | ||
22 | #include <asm/machdep.h> | 20 | #include <asm/machdep.h> |
23 | #include <asm/coldfire.h> | 21 | #include <asm/coldfire.h> |
24 | #include <asm/mcfsim.h> | 22 | #include <asm/mcfsim.h> |
@@ -26,9 +24,6 @@ | |||
26 | 24 | ||
27 | /***************************************************************************/ | 25 | /***************************************************************************/ |
28 | 26 | ||
29 | void coldfire_pit_tick(void); | ||
30 | void coldfire_pit_init(irq_handler_t handler); | ||
31 | unsigned long coldfire_pit_offset(void); | ||
32 | void coldfire_reset(void); | 27 | void coldfire_reset(void); |
33 | 28 | ||
34 | /***************************************************************************/ | 29 | /***************************************************************************/ |
@@ -62,9 +57,6 @@ void mcf_autovector(unsigned int vec) | |||
62 | void config_BSP(char *commandp, int size) | 57 | void config_BSP(char *commandp, int size) |
63 | { | 58 | { |
64 | mcf_disableall(); | 59 | mcf_disableall(); |
65 | mach_sched_init = coldfire_pit_init; | ||
66 | mach_tick = coldfire_pit_tick; | ||
67 | mach_gettimeoffset = coldfire_pit_offset; | ||
68 | mach_reset = coldfire_reset; | 60 | mach_reset = coldfire_reset; |
69 | } | 61 | } |
70 | 62 | ||
diff --git a/arch/m68knommu/platform/5249/config.c b/arch/m68knommu/platform/5249/config.c index dc2c362590c2..d4d39435cb15 100644 --- a/arch/m68knommu/platform/5249/config.c +++ b/arch/m68knommu/platform/5249/config.c | |||
@@ -9,24 +9,17 @@ | |||
9 | /***************************************************************************/ | 9 | /***************************************************************************/ |
10 | 10 | ||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/sched.h> | ||
13 | #include <linux/param.h> | 12 | #include <linux/param.h> |
14 | #include <linux/init.h> | 13 | #include <linux/init.h> |
15 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
16 | #include <asm/irq.h> | ||
17 | #include <asm/dma.h> | 15 | #include <asm/dma.h> |
18 | #include <asm/traps.h> | ||
19 | #include <asm/machdep.h> | 16 | #include <asm/machdep.h> |
20 | #include <asm/coldfire.h> | 17 | #include <asm/coldfire.h> |
21 | #include <asm/mcftimer.h> | ||
22 | #include <asm/mcfsim.h> | 18 | #include <asm/mcfsim.h> |
23 | #include <asm/mcfdma.h> | 19 | #include <asm/mcfdma.h> |
24 | 20 | ||
25 | /***************************************************************************/ | 21 | /***************************************************************************/ |
26 | 22 | ||
27 | void coldfire_tick(void); | ||
28 | void coldfire_timer_init(irq_handler_t handler); | ||
29 | unsigned long coldfire_timer_offset(void); | ||
30 | void coldfire_reset(void); | 23 | void coldfire_reset(void); |
31 | 24 | ||
32 | /***************************************************************************/ | 25 | /***************************************************************************/ |
@@ -95,9 +88,6 @@ int mcf_timerirqpending(int timer) | |||
95 | void config_BSP(char *commandp, int size) | 88 | void config_BSP(char *commandp, int size) |
96 | { | 89 | { |
97 | mcf_setimr(MCFSIM_IMR_MASKALL); | 90 | mcf_setimr(MCFSIM_IMR_MASKALL); |
98 | mach_sched_init = coldfire_timer_init; | ||
99 | mach_tick = coldfire_tick; | ||
100 | mach_gettimeoffset = coldfire_timer_offset; | ||
101 | mach_reset = coldfire_reset; | 91 | mach_reset = coldfire_reset; |
102 | } | 92 | } |
103 | 93 | ||
diff --git a/arch/m68knommu/platform/5272/config.c b/arch/m68knommu/platform/5272/config.c index 1365a8300d5d..634a6375e4a5 100644 --- a/arch/m68knommu/platform/5272/config.c +++ b/arch/m68knommu/platform/5272/config.c | |||
@@ -10,24 +10,17 @@ | |||
10 | /***************************************************************************/ | 10 | /***************************************************************************/ |
11 | 11 | ||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/sched.h> | ||
14 | #include <linux/param.h> | 13 | #include <linux/param.h> |
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
16 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
17 | #include <asm/irq.h> | ||
18 | #include <asm/dma.h> | 16 | #include <asm/dma.h> |
19 | #include <asm/traps.h> | ||
20 | #include <asm/machdep.h> | 17 | #include <asm/machdep.h> |
21 | #include <asm/coldfire.h> | 18 | #include <asm/coldfire.h> |
22 | #include <asm/mcftimer.h> | ||
23 | #include <asm/mcfsim.h> | 19 | #include <asm/mcfsim.h> |
24 | #include <asm/mcfdma.h> | 20 | #include <asm/mcfdma.h> |
25 | 21 | ||
26 | /***************************************************************************/ | 22 | /***************************************************************************/ |
27 | 23 | ||
28 | void coldfire_tick(void); | ||
29 | void coldfire_timer_init(irq_handler_t handler); | ||
30 | unsigned long coldfire_timer_offset(void); | ||
31 | void coldfire_reset(void); | 24 | void coldfire_reset(void); |
32 | 25 | ||
33 | extern unsigned int mcf_timervector; | 26 | extern unsigned int mcf_timervector; |
@@ -128,9 +121,6 @@ void config_BSP(char *commandp, int size) | |||
128 | 121 | ||
129 | mcf_timervector = 69; | 122 | mcf_timervector = 69; |
130 | mcf_profilevector = 70; | 123 | mcf_profilevector = 70; |
131 | mach_sched_init = coldfire_timer_init; | ||
132 | mach_tick = coldfire_tick; | ||
133 | mach_gettimeoffset = coldfire_timer_offset; | ||
134 | mach_reset = coldfire_reset; | 124 | mach_reset = coldfire_reset; |
135 | } | 125 | } |
136 | 126 | ||
diff --git a/arch/m68knommu/platform/527x/config.c b/arch/m68knommu/platform/527x/config.c index 1b820441419a..9cbfbc68ae4f 100644 --- a/arch/m68knommu/platform/527x/config.c +++ b/arch/m68knommu/platform/527x/config.c | |||
@@ -13,12 +13,10 @@ | |||
13 | /***************************************************************************/ | 13 | /***************************************************************************/ |
14 | 14 | ||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/sched.h> | ||
17 | #include <linux/param.h> | 16 | #include <linux/param.h> |
18 | #include <linux/init.h> | 17 | #include <linux/init.h> |
19 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
20 | #include <asm/dma.h> | 19 | #include <asm/dma.h> |
21 | #include <asm/traps.h> | ||
22 | #include <asm/machdep.h> | 20 | #include <asm/machdep.h> |
23 | #include <asm/coldfire.h> | 21 | #include <asm/coldfire.h> |
24 | #include <asm/mcfsim.h> | 22 | #include <asm/mcfsim.h> |
@@ -26,9 +24,6 @@ | |||
26 | 24 | ||
27 | /***************************************************************************/ | 25 | /***************************************************************************/ |
28 | 26 | ||
29 | void coldfire_pit_tick(void); | ||
30 | void coldfire_pit_init(irq_handler_t handler); | ||
31 | unsigned long coldfire_pit_offset(void); | ||
32 | void coldfire_reset(void); | 27 | void coldfire_reset(void); |
33 | 28 | ||
34 | /***************************************************************************/ | 29 | /***************************************************************************/ |
@@ -62,9 +57,6 @@ void mcf_autovector(unsigned int vec) | |||
62 | void config_BSP(char *commandp, int size) | 57 | void config_BSP(char *commandp, int size) |
63 | { | 58 | { |
64 | mcf_disableall(); | 59 | mcf_disableall(); |
65 | mach_sched_init = coldfire_pit_init; | ||
66 | mach_tick = coldfire_pit_tick; | ||
67 | mach_gettimeoffset = coldfire_pit_offset; | ||
68 | mach_reset = coldfire_reset; | 60 | mach_reset = coldfire_reset; |
69 | } | 61 | } |
70 | 62 | ||
diff --git a/arch/m68knommu/platform/528x/config.c b/arch/m68knommu/platform/528x/config.c index a089e9513699..acbd43486d97 100644 --- a/arch/m68knommu/platform/528x/config.c +++ b/arch/m68knommu/platform/528x/config.c | |||
@@ -13,12 +13,10 @@ | |||
13 | /***************************************************************************/ | 13 | /***************************************************************************/ |
14 | 14 | ||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/sched.h> | ||
17 | #include <linux/param.h> | 16 | #include <linux/param.h> |
18 | #include <linux/init.h> | 17 | #include <linux/init.h> |
19 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
20 | #include <asm/dma.h> | 19 | #include <asm/dma.h> |
21 | #include <asm/traps.h> | ||
22 | #include <asm/machdep.h> | 20 | #include <asm/machdep.h> |
23 | #include <asm/coldfire.h> | 21 | #include <asm/coldfire.h> |
24 | #include <asm/mcfsim.h> | 22 | #include <asm/mcfsim.h> |
@@ -26,9 +24,6 @@ | |||
26 | 24 | ||
27 | /***************************************************************************/ | 25 | /***************************************************************************/ |
28 | 26 | ||
29 | void coldfire_pit_tick(void); | ||
30 | void coldfire_pit_init(irq_handler_t handler); | ||
31 | unsigned long coldfire_pit_offset(void); | ||
32 | void coldfire_reset(void); | 27 | void coldfire_reset(void); |
33 | 28 | ||
34 | /***************************************************************************/ | 29 | /***************************************************************************/ |
@@ -62,9 +57,6 @@ void mcf_autovector(unsigned int vec) | |||
62 | void config_BSP(char *commandp, int size) | 57 | void config_BSP(char *commandp, int size) |
63 | { | 58 | { |
64 | mcf_disableall(); | 59 | mcf_disableall(); |
65 | mach_sched_init = coldfire_pit_init; | ||
66 | mach_tick = coldfire_pit_tick; | ||
67 | mach_gettimeoffset = coldfire_pit_offset; | ||
68 | mach_reset = coldfire_reset; | 60 | mach_reset = coldfire_reset; |
69 | } | 61 | } |
70 | 62 | ||
diff --git a/arch/m68knommu/platform/5307/config.c b/arch/m68knommu/platform/5307/config.c index e3461619fd65..6040821e637d 100644 --- a/arch/m68knommu/platform/5307/config.c +++ b/arch/m68knommu/platform/5307/config.c | |||
@@ -10,25 +10,18 @@ | |||
10 | /***************************************************************************/ | 10 | /***************************************************************************/ |
11 | 11 | ||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/sched.h> | ||
14 | #include <linux/param.h> | 13 | #include <linux/param.h> |
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
16 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
17 | #include <asm/irq.h> | ||
18 | #include <asm/dma.h> | 16 | #include <asm/dma.h> |
19 | #include <asm/traps.h> | ||
20 | #include <asm/machdep.h> | 17 | #include <asm/machdep.h> |
21 | #include <asm/coldfire.h> | 18 | #include <asm/coldfire.h> |
22 | #include <asm/mcftimer.h> | ||
23 | #include <asm/mcfsim.h> | 19 | #include <asm/mcfsim.h> |
24 | #include <asm/mcfdma.h> | 20 | #include <asm/mcfdma.h> |
25 | #include <asm/mcfwdebug.h> | 21 | #include <asm/mcfwdebug.h> |
26 | 22 | ||
27 | /***************************************************************************/ | 23 | /***************************************************************************/ |
28 | 24 | ||
29 | void coldfire_tick(void); | ||
30 | void coldfire_timer_init(irq_handler_t handler); | ||
31 | unsigned long coldfire_timer_offset(void); | ||
32 | void coldfire_reset(void); | 25 | void coldfire_reset(void); |
33 | 26 | ||
34 | extern unsigned int mcf_timervector; | 27 | extern unsigned int mcf_timervector; |
@@ -122,9 +115,6 @@ void config_BSP(char *commandp, int size) | |||
122 | mcf_timerlevel = 6; | 115 | mcf_timerlevel = 6; |
123 | #endif | 116 | #endif |
124 | 117 | ||
125 | mach_sched_init = coldfire_timer_init; | ||
126 | mach_tick = coldfire_tick; | ||
127 | mach_gettimeoffset = coldfire_timer_offset; | ||
128 | mach_reset = coldfire_reset; | 118 | mach_reset = coldfire_reset; |
129 | 119 | ||
130 | #ifdef MCF_BDM_DISABLE | 120 | #ifdef MCF_BDM_DISABLE |
diff --git a/arch/m68knommu/platform/5307/entry.S b/arch/m68knommu/platform/5307/entry.S index a8cd867805ca..b333731b875a 100644 --- a/arch/m68knommu/platform/5307/entry.S +++ b/arch/m68knommu/platform/5307/entry.S | |||
@@ -74,7 +74,8 @@ ENTRY(system_call) | |||
74 | movel %sp,%d2 /* get thread_info pointer */ | 74 | movel %sp,%d2 /* get thread_info pointer */ |
75 | andl #-THREAD_SIZE,%d2 /* at start of kernel stack */ | 75 | andl #-THREAD_SIZE,%d2 /* at start of kernel stack */ |
76 | movel %d2,%a0 | 76 | movel %d2,%a0 |
77 | movel %sp,%a0@(THREAD_ESP0) /* save top of frame */ | 77 | movel %a0@,%a1 /* save top of frame */ |
78 | movel %sp,%a1@(TASK_THREAD+THREAD_ESP0) | ||
78 | btst #(TIF_SYSCALL_TRACE%8),%a0@(TI_FLAGS+(31-TIF_SYSCALL_TRACE)/8) | 79 | btst #(TIF_SYSCALL_TRACE%8),%a0@(TI_FLAGS+(31-TIF_SYSCALL_TRACE)/8) |
79 | bnes 1f | 80 | bnes 1f |
80 | 81 | ||
@@ -83,6 +84,8 @@ ENTRY(system_call) | |||
83 | movel %d0,%sp@(PT_D0) /* save the return value */ | 84 | movel %d0,%sp@(PT_D0) /* save the return value */ |
84 | jra ret_from_exception | 85 | jra ret_from_exception |
85 | 1: | 86 | 1: |
87 | movel #-ENOSYS,%d2 /* strace needs -ENOSYS in PT_D0 */ | ||
88 | movel %d2,PT_D0(%sp) /* on syscall entry */ | ||
86 | subql #4,%sp | 89 | subql #4,%sp |
87 | SAVE_SWITCH_STACK | 90 | SAVE_SWITCH_STACK |
88 | jbsr syscall_trace | 91 | jbsr syscall_trace |
diff --git a/arch/m68knommu/platform/5307/pit.c b/arch/m68knommu/platform/5307/pit.c index f18352fa35a6..173b754d1cda 100644 --- a/arch/m68knommu/platform/5307/pit.c +++ b/arch/m68knommu/platform/5307/pit.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
19 | #include <linux/irq.h> | 19 | #include <linux/irq.h> |
20 | #include <asm/machdep.h> | ||
20 | #include <asm/io.h> | 21 | #include <asm/io.h> |
21 | #include <asm/coldfire.h> | 22 | #include <asm/coldfire.h> |
22 | #include <asm/mcfpit.h> | 23 | #include <asm/mcfpit.h> |
@@ -31,28 +32,30 @@ | |||
31 | 32 | ||
32 | /***************************************************************************/ | 33 | /***************************************************************************/ |
33 | 34 | ||
34 | void coldfire_pit_tick(void) | 35 | static irqreturn_t hw_tick(int irq, void *dummy) |
35 | { | 36 | { |
36 | unsigned short pcsr; | 37 | unsigned short pcsr; |
37 | 38 | ||
38 | /* Reset the ColdFire timer */ | 39 | /* Reset the ColdFire timer */ |
39 | pcsr = __raw_readw(TA(MCFPIT_PCSR)); | 40 | pcsr = __raw_readw(TA(MCFPIT_PCSR)); |
40 | __raw_writew(pcsr | MCFPIT_PCSR_PIF, TA(MCFPIT_PCSR)); | 41 | __raw_writew(pcsr | MCFPIT_PCSR_PIF, TA(MCFPIT_PCSR)); |
42 | |||
43 | return arch_timer_interrupt(irq, dummy); | ||
41 | } | 44 | } |
42 | 45 | ||
43 | /***************************************************************************/ | 46 | /***************************************************************************/ |
44 | 47 | ||
45 | static struct irqaction coldfire_pit_irq = { | 48 | static struct irqaction coldfire_pit_irq = { |
46 | .name = "timer", | 49 | .name = "timer", |
47 | .flags = IRQF_DISABLED | IRQF_TIMER, | 50 | .flags = IRQF_DISABLED | IRQF_TIMER, |
51 | .handler = hw_tick, | ||
48 | }; | 52 | }; |
49 | 53 | ||
50 | void coldfire_pit_init(irq_handler_t handler) | 54 | void hw_timer_init(void) |
51 | { | 55 | { |
52 | volatile unsigned char *icrp; | 56 | volatile unsigned char *icrp; |
53 | volatile unsigned long *imrp; | 57 | volatile unsigned long *imrp; |
54 | 58 | ||
55 | coldfire_pit_irq.handler = handler; | ||
56 | setup_irq(MCFINT_VECBASE + MCFINT_PIT1, &coldfire_pit_irq); | 59 | setup_irq(MCFINT_VECBASE + MCFINT_PIT1, &coldfire_pit_irq); |
57 | 60 | ||
58 | icrp = (volatile unsigned char *) (MCF_IPSBAR + MCFICM_INTC0 + | 61 | icrp = (volatile unsigned char *) (MCF_IPSBAR + MCFICM_INTC0 + |
@@ -71,7 +74,7 @@ void coldfire_pit_init(irq_handler_t handler) | |||
71 | 74 | ||
72 | /***************************************************************************/ | 75 | /***************************************************************************/ |
73 | 76 | ||
74 | unsigned long coldfire_pit_offset(void) | 77 | unsigned long hw_timer_offset(void) |
75 | { | 78 | { |
76 | volatile unsigned long *ipr; | 79 | volatile unsigned long *ipr; |
77 | unsigned long pmr, pcntr, offset; | 80 | unsigned long pmr, pcntr, offset; |
diff --git a/arch/m68knommu/platform/5307/timers.c b/arch/m68knommu/platform/5307/timers.c index 64bd0ff9029e..489dec85c859 100644 --- a/arch/m68knommu/platform/5307/timers.c +++ b/arch/m68knommu/platform/5307/timers.c | |||
@@ -9,10 +9,9 @@ | |||
9 | /***************************************************************************/ | 9 | /***************************************************************************/ |
10 | 10 | ||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | ||
12 | #include <linux/sched.h> | 13 | #include <linux/sched.h> |
13 | #include <linux/param.h> | ||
14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
15 | #include <linux/init.h> | ||
16 | #include <linux/irq.h> | 15 | #include <linux/irq.h> |
17 | #include <asm/io.h> | 16 | #include <asm/io.h> |
18 | #include <asm/traps.h> | 17 | #include <asm/traps.h> |
@@ -54,24 +53,28 @@ extern int mcf_timerirqpending(int timer); | |||
54 | 53 | ||
55 | /***************************************************************************/ | 54 | /***************************************************************************/ |
56 | 55 | ||
57 | void coldfire_tick(void) | 56 | static irqreturn_t hw_tick(int irq, void *dummy) |
58 | { | 57 | { |
59 | /* Reset the ColdFire timer */ | 58 | /* Reset the ColdFire timer */ |
60 | __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, TA(MCFTIMER_TER)); | 59 | __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, TA(MCFTIMER_TER)); |
60 | |||
61 | return arch_timer_interrupt(irq, dummy); | ||
61 | } | 62 | } |
62 | 63 | ||
63 | /***************************************************************************/ | 64 | /***************************************************************************/ |
64 | 65 | ||
65 | static struct irqaction coldfire_timer_irq = { | 66 | static struct irqaction coldfire_timer_irq = { |
66 | .name = "timer", | 67 | .name = "timer", |
67 | .flags = IRQF_DISABLED | IRQF_TIMER, | 68 | .flags = IRQF_DISABLED | IRQF_TIMER, |
69 | .handler = hw_tick, | ||
68 | }; | 70 | }; |
69 | 71 | ||
72 | /***************************************************************************/ | ||
73 | |||
70 | static int ticks_per_intr; | 74 | static int ticks_per_intr; |
71 | 75 | ||
72 | void coldfire_timer_init(irq_handler_t handler) | 76 | void hw_timer_init(void) |
73 | { | 77 | { |
74 | coldfire_timer_irq.handler = handler; | ||
75 | setup_irq(mcf_timervector, &coldfire_timer_irq); | 78 | setup_irq(mcf_timervector, &coldfire_timer_irq); |
76 | 79 | ||
77 | __raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR)); | 80 | __raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR)); |
@@ -89,7 +92,7 @@ void coldfire_timer_init(irq_handler_t handler) | |||
89 | 92 | ||
90 | /***************************************************************************/ | 93 | /***************************************************************************/ |
91 | 94 | ||
92 | unsigned long coldfire_timer_offset(void) | 95 | unsigned long hw_timer_offset(void) |
93 | { | 96 | { |
94 | unsigned long tcn, offset; | 97 | unsigned long tcn, offset; |
95 | 98 | ||
diff --git a/arch/m68knommu/platform/532x/config.c b/arch/m68knommu/platform/532x/config.c index b32c6425f821..f77328b7b6db 100644 --- a/arch/m68knommu/platform/532x/config.c +++ b/arch/m68knommu/platform/532x/config.c | |||
@@ -18,25 +18,18 @@ | |||
18 | /***************************************************************************/ | 18 | /***************************************************************************/ |
19 | 19 | ||
20 | #include <linux/kernel.h> | 20 | #include <linux/kernel.h> |
21 | #include <linux/sched.h> | ||
22 | #include <linux/param.h> | 21 | #include <linux/param.h> |
23 | #include <linux/init.h> | 22 | #include <linux/init.h> |
24 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
25 | #include <asm/irq.h> | ||
26 | #include <asm/dma.h> | 24 | #include <asm/dma.h> |
27 | #include <asm/traps.h> | ||
28 | #include <asm/machdep.h> | 25 | #include <asm/machdep.h> |
29 | #include <asm/coldfire.h> | 26 | #include <asm/coldfire.h> |
30 | #include <asm/mcftimer.h> | ||
31 | #include <asm/mcfsim.h> | 27 | #include <asm/mcfsim.h> |
32 | #include <asm/mcfdma.h> | 28 | #include <asm/mcfdma.h> |
33 | #include <asm/mcfwdebug.h> | 29 | #include <asm/mcfwdebug.h> |
34 | 30 | ||
35 | /***************************************************************************/ | 31 | /***************************************************************************/ |
36 | 32 | ||
37 | void coldfire_tick(void); | ||
38 | void coldfire_timer_init(irq_handler_t handler); | ||
39 | unsigned long coldfire_timer_offset(void); | ||
40 | void coldfire_reset(void); | 33 | void coldfire_reset(void); |
41 | 34 | ||
42 | extern unsigned int mcf_timervector; | 35 | extern unsigned int mcf_timervector; |
@@ -104,9 +97,6 @@ void config_BSP(char *commandp, int size) | |||
104 | 97 | ||
105 | mcf_timervector = 64+32; | 98 | mcf_timervector = 64+32; |
106 | mcf_profilevector = 64+33; | 99 | mcf_profilevector = 64+33; |
107 | mach_sched_init = coldfire_timer_init; | ||
108 | mach_tick = coldfire_tick; | ||
109 | mach_gettimeoffset = coldfire_timer_offset; | ||
110 | mach_reset = coldfire_reset; | 100 | mach_reset = coldfire_reset; |
111 | 101 | ||
112 | #ifdef MCF_BDM_DISABLE | 102 | #ifdef MCF_BDM_DISABLE |
diff --git a/arch/m68knommu/platform/5407/config.c b/arch/m68knommu/platform/5407/config.c index e692536817d8..2d3b62eba7ca 100644 --- a/arch/m68knommu/platform/5407/config.c +++ b/arch/m68knommu/platform/5407/config.c | |||
@@ -10,24 +10,17 @@ | |||
10 | /***************************************************************************/ | 10 | /***************************************************************************/ |
11 | 11 | ||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/sched.h> | ||
14 | #include <linux/param.h> | 13 | #include <linux/param.h> |
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
16 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
17 | #include <asm/irq.h> | ||
18 | #include <asm/dma.h> | 16 | #include <asm/dma.h> |
19 | #include <asm/traps.h> | ||
20 | #include <asm/machdep.h> | 17 | #include <asm/machdep.h> |
21 | #include <asm/coldfire.h> | 18 | #include <asm/coldfire.h> |
22 | #include <asm/mcftimer.h> | ||
23 | #include <asm/mcfsim.h> | 19 | #include <asm/mcfsim.h> |
24 | #include <asm/mcfdma.h> | 20 | #include <asm/mcfdma.h> |
25 | 21 | ||
26 | /***************************************************************************/ | 22 | /***************************************************************************/ |
27 | 23 | ||
28 | void coldfire_tick(void); | ||
29 | void coldfire_timer_init(irq_handler_t handler); | ||
30 | unsigned long coldfire_timer_offset(void); | ||
31 | void coldfire_reset(void); | 24 | void coldfire_reset(void); |
32 | 25 | ||
33 | extern unsigned int mcf_timervector; | 26 | extern unsigned int mcf_timervector; |
@@ -108,9 +101,6 @@ void config_BSP(char *commandp, int size) | |||
108 | mcf_timerlevel = 6; | 101 | mcf_timerlevel = 6; |
109 | #endif | 102 | #endif |
110 | 103 | ||
111 | mach_sched_init = coldfire_timer_init; | ||
112 | mach_tick = coldfire_tick; | ||
113 | mach_gettimeoffset = coldfire_timer_offset; | ||
114 | mach_reset = coldfire_reset; | 104 | mach_reset = coldfire_reset; |
115 | } | 105 | } |
116 | 106 | ||
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 3ecff5e9e4f3..61262c5f9c62 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -66,6 +66,7 @@ config BCM47XX | |||
66 | config MIPS_COBALT | 66 | config MIPS_COBALT |
67 | bool "Cobalt Server" | 67 | bool "Cobalt Server" |
68 | select CEVT_R4K | 68 | select CEVT_R4K |
69 | select CEVT_GT641XX | ||
69 | select DMA_NONCOHERENT | 70 | select DMA_NONCOHERENT |
70 | select HW_HAS_PCI | 71 | select HW_HAS_PCI |
71 | select I8253 | 72 | select I8253 |
@@ -729,6 +730,9 @@ config ARCH_MAY_HAVE_PC_FDC | |||
729 | config BOOT_RAW | 730 | config BOOT_RAW |
730 | bool | 731 | bool |
731 | 732 | ||
733 | config CEVT_GT641XX | ||
734 | bool | ||
735 | |||
732 | config CEVT_R4K | 736 | config CEVT_R4K |
733 | bool | 737 | bool |
734 | 738 | ||
diff --git a/arch/mips/Kconfig.debug b/arch/mips/Kconfig.debug index 3efe117721aa..fd7124c1b75a 100644 --- a/arch/mips/Kconfig.debug +++ b/arch/mips/Kconfig.debug | |||
@@ -6,18 +6,6 @@ config TRACE_IRQFLAGS_SUPPORT | |||
6 | 6 | ||
7 | source "lib/Kconfig.debug" | 7 | source "lib/Kconfig.debug" |
8 | 8 | ||
9 | config CROSSCOMPILE | ||
10 | bool "Are you using a crosscompiler" | ||
11 | help | ||
12 | Say Y here if you are compiling the kernel on a different | ||
13 | architecture than the one it is intended to run on. This is just a | ||
14 | convenience option which will select the appropriate value for | ||
15 | the CROSS_COMPILE make variable which otherwise has to be passed on | ||
16 | the command line from mips-linux-, mipsel-linux-, mips64-linux- and | ||
17 | mips64el-linux- as appropriate for a particular kernel configuration. | ||
18 | You will have to pass the value for CROSS_COMPILE manually if the | ||
19 | name prefix for your tools is different. | ||
20 | |||
21 | config CMDLINE | 9 | config CMDLINE |
22 | string "Default kernel command string" | 10 | string "Default kernel command string" |
23 | default "" | 11 | default "" |
diff --git a/arch/mips/Makefile b/arch/mips/Makefile index 14164c2b8791..23c17755eca0 100644 --- a/arch/mips/Makefile +++ b/arch/mips/Makefile | |||
@@ -18,15 +18,15 @@ cflags-y := | |||
18 | # Select the object file format to substitute into the linker script. | 18 | # Select the object file format to substitute into the linker script. |
19 | # | 19 | # |
20 | ifdef CONFIG_CPU_LITTLE_ENDIAN | 20 | ifdef CONFIG_CPU_LITTLE_ENDIAN |
21 | 32bit-tool-prefix = mipsel-linux- | 21 | 32bit-tool-archpref = mipsel |
22 | 64bit-tool-prefix = mips64el-linux- | 22 | 64bit-tool-archpref = mips64el |
23 | 32bit-bfd = elf32-tradlittlemips | 23 | 32bit-bfd = elf32-tradlittlemips |
24 | 64bit-bfd = elf64-tradlittlemips | 24 | 64bit-bfd = elf64-tradlittlemips |
25 | 32bit-emul = elf32ltsmip | 25 | 32bit-emul = elf32ltsmip |
26 | 64bit-emul = elf64ltsmip | 26 | 64bit-emul = elf64ltsmip |
27 | else | 27 | else |
28 | 32bit-tool-prefix = mips-linux- | 28 | 32bit-tool-archpref = mips |
29 | 64bit-tool-prefix = mips64-linux- | 29 | 64bit-tool-archpref = mips64 |
30 | 32bit-bfd = elf32-tradbigmips | 30 | 32bit-bfd = elf32-tradbigmips |
31 | 64bit-bfd = elf64-tradbigmips | 31 | 64bit-bfd = elf64-tradbigmips |
32 | 32bit-emul = elf32btsmip | 32 | 32bit-emul = elf32btsmip |
@@ -34,16 +34,18 @@ else | |||
34 | endif | 34 | endif |
35 | 35 | ||
36 | ifdef CONFIG_32BIT | 36 | ifdef CONFIG_32BIT |
37 | tool-prefix = $(32bit-tool-prefix) | 37 | tool-archpref = $(32bit-tool-archpref) |
38 | UTS_MACHINE := mips | 38 | UTS_MACHINE := mips |
39 | endif | 39 | endif |
40 | ifdef CONFIG_64BIT | 40 | ifdef CONFIG_64BIT |
41 | tool-prefix = $(64bit-tool-prefix) | 41 | tool-archpref = $(64bit-tool-archpref) |
42 | UTS_MACHINE := mips64 | 42 | UTS_MACHINE := mips64 |
43 | endif | 43 | endif |
44 | 44 | ||
45 | ifdef CONFIG_CROSSCOMPILE | 45 | ifneq ($(SUBARCH),$(ARCH)) |
46 | CROSS_COMPILE := $(tool-prefix) | 46 | ifeq ($(CROSS_COMPILE),) |
47 | CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux- $(tool-archpref)-gnu-linux- $(tool-archpref)-unknown-gnu-linux-) | ||
48 | endif | ||
47 | endif | 49 | endif |
48 | 50 | ||
49 | ifdef CONFIG_32BIT | 51 | ifdef CONFIG_32BIT |
diff --git a/arch/mips/cobalt/Makefile b/arch/mips/cobalt/Makefile index 6b83f4ddc8fc..d73833b7c781 100644 --- a/arch/mips/cobalt/Makefile +++ b/arch/mips/cobalt/Makefile | |||
@@ -2,7 +2,7 @@ | |||
2 | # Makefile for the Cobalt micro systems family specific parts of the kernel | 2 | # Makefile for the Cobalt micro systems family specific parts of the kernel |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := buttons.o irq.o led.o reset.o rtc.o serial.o setup.o | 5 | obj-y := buttons.o irq.o led.o reset.o rtc.o serial.o setup.o time.o |
6 | 6 | ||
7 | obj-$(CONFIG_PCI) += pci.o | 7 | obj-$(CONFIG_PCI) += pci.o |
8 | obj-$(CONFIG_EARLY_PRINTK) += console.o | 8 | obj-$(CONFIG_EARLY_PRINTK) += console.o |
diff --git a/arch/mips/cobalt/setup.c b/arch/mips/cobalt/setup.c index d11bb1bc7b6b..dd23beb8604f 100644 --- a/arch/mips/cobalt/setup.c +++ b/arch/mips/cobalt/setup.c | |||
@@ -9,19 +9,17 @@ | |||
9 | * Copyright (C) 2001, 2002, 2003 by Liam Davies (ldavies@agile.tv) | 9 | * Copyright (C) 2001, 2002, 2003 by Liam Davies (ldavies@agile.tv) |
10 | * | 10 | * |
11 | */ | 11 | */ |
12 | #include <linux/interrupt.h> | ||
13 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/interrupt.h> | ||
14 | #include <linux/io.h> | ||
15 | #include <linux/ioport.h> | ||
14 | #include <linux/pm.h> | 16 | #include <linux/pm.h> |
15 | 17 | ||
16 | #include <asm/bootinfo.h> | 18 | #include <asm/bootinfo.h> |
17 | #include <asm/time.h> | ||
18 | #include <asm/i8253.h> | ||
19 | #include <asm/io.h> | ||
20 | #include <asm/reboot.h> | 19 | #include <asm/reboot.h> |
21 | #include <asm/gt64120.h> | 20 | #include <asm/gt64120.h> |
22 | 21 | ||
23 | #include <cobalt.h> | 22 | #include <cobalt.h> |
24 | #include <irq.h> | ||
25 | 23 | ||
26 | extern void cobalt_machine_restart(char *command); | 24 | extern void cobalt_machine_restart(char *command); |
27 | extern void cobalt_machine_halt(void); | 25 | extern void cobalt_machine_halt(void); |
@@ -41,17 +39,6 @@ const char *get_system_type(void) | |||
41 | return "MIPS Cobalt"; | 39 | return "MIPS Cobalt"; |
42 | } | 40 | } |
43 | 41 | ||
44 | void __init plat_timer_setup(struct irqaction *irq) | ||
45 | { | ||
46 | /* Load timer value for HZ (TCLK is 50MHz) */ | ||
47 | GT_WRITE(GT_TC0_OFS, 50*1000*1000 / HZ); | ||
48 | |||
49 | /* Enable timer0 */ | ||
50 | GT_WRITE(GT_TC_CONTROL_OFS, GT_TC_CONTROL_ENTC0_MSK | GT_TC_CONTROL_SELTC0_MSK); | ||
51 | |||
52 | setup_irq(GT641XX_TIMER0_IRQ, irq); | ||
53 | } | ||
54 | |||
55 | /* | 42 | /* |
56 | * Cobalt doesn't have PS/2 keyboard/mouse interfaces, | 43 | * Cobalt doesn't have PS/2 keyboard/mouse interfaces, |
57 | * keyboard conntroller is never used. | 44 | * keyboard conntroller is never used. |
@@ -84,11 +71,6 @@ static struct resource cobalt_reserved_resources[] = { | |||
84 | }, | 71 | }, |
85 | }; | 72 | }; |
86 | 73 | ||
87 | void __init plat_time_init(void) | ||
88 | { | ||
89 | setup_pit_timer(); | ||
90 | } | ||
91 | |||
92 | void __init plat_mem_setup(void) | 74 | void __init plat_mem_setup(void) |
93 | { | 75 | { |
94 | int i; | 76 | int i; |
diff --git a/arch/mips/cobalt/time.c b/arch/mips/cobalt/time.c new file mode 100644 index 000000000000..fa819fccd5db --- /dev/null +++ b/arch/mips/cobalt/time.c | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * Cobalt time initialization. | ||
3 | * | ||
4 | * Copyright (C) 2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
19 | */ | ||
20 | #include <linux/init.h> | ||
21 | |||
22 | #include <asm/gt64120.h> | ||
23 | #include <asm/i8253.h> | ||
24 | #include <asm/time.h> | ||
25 | |||
26 | #define GT641XX_BASE_CLOCK 50000000 /* 50MHz */ | ||
27 | |||
28 | void __init plat_time_init(void) | ||
29 | { | ||
30 | setup_pit_timer(); | ||
31 | |||
32 | gt641xx_set_base_clock(GT641XX_BASE_CLOCK); | ||
33 | |||
34 | mips_timer_state = gt641xx_timer0_state; | ||
35 | } | ||
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile index a3afa39faae5..d7745c8976f6 100644 --- a/arch/mips/kernel/Makefile +++ b/arch/mips/kernel/Makefile | |||
@@ -9,6 +9,7 @@ obj-y += cpu-probe.o branch.o entry.o genex.o irq.o process.o \ | |||
9 | time.o topology.o traps.o unaligned.o | 9 | time.o topology.o traps.o unaligned.o |
10 | 10 | ||
11 | obj-$(CONFIG_CEVT_R4K) += cevt-r4k.o | 11 | obj-$(CONFIG_CEVT_R4K) += cevt-r4k.o |
12 | obj-$(CONFIG_CEVT_GT641XX) += cevt-gt641xx.o | ||
12 | 13 | ||
13 | binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \ | 14 | binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \ |
14 | irix5sys.o sysirix.o | 15 | irix5sys.o sysirix.o |
diff --git a/arch/mips/kernel/cevt-gt641xx.c b/arch/mips/kernel/cevt-gt641xx.c new file mode 100644 index 000000000000..4c651b2680f9 --- /dev/null +++ b/arch/mips/kernel/cevt-gt641xx.c | |||
@@ -0,0 +1,144 @@ | |||
1 | /* | ||
2 | * GT641xx clockevent routines. | ||
3 | * | ||
4 | * Copyright (C) 2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
19 | */ | ||
20 | #include <linux/clockchips.h> | ||
21 | #include <linux/init.h> | ||
22 | #include <linux/interrupt.h> | ||
23 | #include <linux/spinlock.h> | ||
24 | |||
25 | #include <asm/gt64120.h> | ||
26 | #include <asm/time.h> | ||
27 | |||
28 | #include <irq.h> | ||
29 | |||
30 | static DEFINE_SPINLOCK(gt641xx_timer_lock); | ||
31 | static unsigned int gt641xx_base_clock; | ||
32 | |||
33 | void gt641xx_set_base_clock(unsigned int clock) | ||
34 | { | ||
35 | gt641xx_base_clock = clock; | ||
36 | } | ||
37 | |||
38 | int gt641xx_timer0_state(void) | ||
39 | { | ||
40 | if (GT_READ(GT_TC0_OFS)) | ||
41 | return 0; | ||
42 | |||
43 | GT_WRITE(GT_TC0_OFS, gt641xx_base_clock / HZ); | ||
44 | GT_WRITE(GT_TC_CONTROL_OFS, GT_TC_CONTROL_ENTC0_MSK); | ||
45 | |||
46 | return 1; | ||
47 | } | ||
48 | |||
49 | static int gt641xx_timer0_set_next_event(unsigned long delta, | ||
50 | struct clock_event_device *evt) | ||
51 | { | ||
52 | unsigned long flags; | ||
53 | u32 ctrl; | ||
54 | |||
55 | spin_lock_irqsave(>641xx_timer_lock, flags); | ||
56 | |||
57 | ctrl = GT_READ(GT_TC_CONTROL_OFS); | ||
58 | ctrl &= ~(GT_TC_CONTROL_ENTC0_MSK | GT_TC_CONTROL_SELTC0_MSK); | ||
59 | ctrl |= GT_TC_CONTROL_ENTC0_MSK; | ||
60 | |||
61 | GT_WRITE(GT_TC0_OFS, delta); | ||
62 | GT_WRITE(GT_TC_CONTROL_OFS, ctrl); | ||
63 | |||
64 | spin_unlock_irqrestore(>641xx_timer_lock, flags); | ||
65 | |||
66 | return 0; | ||
67 | } | ||
68 | |||
69 | static void gt641xx_timer0_set_mode(enum clock_event_mode mode, | ||
70 | struct clock_event_device *evt) | ||
71 | { | ||
72 | unsigned long flags; | ||
73 | u32 ctrl; | ||
74 | |||
75 | spin_lock_irqsave(>641xx_timer_lock, flags); | ||
76 | |||
77 | ctrl = GT_READ(GT_TC_CONTROL_OFS); | ||
78 | ctrl &= ~(GT_TC_CONTROL_ENTC0_MSK | GT_TC_CONTROL_SELTC0_MSK); | ||
79 | |||
80 | switch (mode) { | ||
81 | case CLOCK_EVT_MODE_PERIODIC: | ||
82 | ctrl |= GT_TC_CONTROL_ENTC0_MSK | GT_TC_CONTROL_SELTC0_MSK; | ||
83 | break; | ||
84 | case CLOCK_EVT_MODE_ONESHOT: | ||
85 | ctrl |= GT_TC_CONTROL_ENTC0_MSK; | ||
86 | break; | ||
87 | default: | ||
88 | break; | ||
89 | } | ||
90 | |||
91 | GT_WRITE(GT_TC_CONTROL_OFS, ctrl); | ||
92 | |||
93 | spin_unlock_irqrestore(>641xx_timer_lock, flags); | ||
94 | } | ||
95 | |||
96 | static void gt641xx_timer0_event_handler(struct clock_event_device *dev) | ||
97 | { | ||
98 | } | ||
99 | |||
100 | static struct clock_event_device gt641xx_timer0_clockevent = { | ||
101 | .name = "gt641xx-timer0", | ||
102 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, | ||
103 | .cpumask = CPU_MASK_CPU0, | ||
104 | .irq = GT641XX_TIMER0_IRQ, | ||
105 | .set_next_event = gt641xx_timer0_set_next_event, | ||
106 | .set_mode = gt641xx_timer0_set_mode, | ||
107 | .event_handler = gt641xx_timer0_event_handler, | ||
108 | }; | ||
109 | |||
110 | static irqreturn_t gt641xx_timer0_interrupt(int irq, void *dev_id) | ||
111 | { | ||
112 | struct clock_event_device *cd = >641xx_timer0_clockevent; | ||
113 | |||
114 | cd->event_handler(cd); | ||
115 | |||
116 | return IRQ_HANDLED; | ||
117 | } | ||
118 | |||
119 | static struct irqaction gt641xx_timer0_irqaction = { | ||
120 | .handler = gt641xx_timer0_interrupt, | ||
121 | .flags = IRQF_DISABLED | IRQF_PERCPU, | ||
122 | .name = "gt641xx_timer0", | ||
123 | }; | ||
124 | |||
125 | static int __init gt641xx_timer0_clockevent_init(void) | ||
126 | { | ||
127 | struct clock_event_device *cd; | ||
128 | |||
129 | if (!gt641xx_base_clock) | ||
130 | return 0; | ||
131 | |||
132 | GT_WRITE(GT_TC0_OFS, gt641xx_base_clock / HZ); | ||
133 | |||
134 | cd = >641xx_timer0_clockevent; | ||
135 | cd->rating = 200 + gt641xx_base_clock / 10000000; | ||
136 | cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd); | ||
137 | cd->min_delta_ns = clockevent_delta2ns(0x300, cd); | ||
138 | clockevent_set_clock(cd, gt641xx_base_clock); | ||
139 | |||
140 | clockevents_register_device(>641xx_timer0_clockevent); | ||
141 | |||
142 | return setup_irq(GT641XX_TIMER0_IRQ, >641xx_timer0_irqaction); | ||
143 | } | ||
144 | arch_initcall(gt641xx_timer0_clockevent_init); | ||
diff --git a/arch/mips/kernel/cevt-r4k.c b/arch/mips/kernel/cevt-r4k.c index a915e5693421..ae2984fff580 100644 --- a/arch/mips/kernel/cevt-r4k.c +++ b/arch/mips/kernel/cevt-r4k.c | |||
@@ -186,7 +186,7 @@ static int c0_compare_int_usable(void) | |||
186 | * IP7 already pending? Try to clear it by acking the timer. | 186 | * IP7 already pending? Try to clear it by acking the timer. |
187 | */ | 187 | */ |
188 | if (c0_compare_int_pending()) { | 188 | if (c0_compare_int_pending()) { |
189 | write_c0_compare(read_c0_compare()); | 189 | write_c0_compare(read_c0_count()); |
190 | irq_disable_hazard(); | 190 | irq_disable_hazard(); |
191 | if (c0_compare_int_pending()) | 191 | if (c0_compare_int_pending()) |
192 | return 0; | 192 | return 0; |
@@ -202,7 +202,7 @@ static int c0_compare_int_usable(void) | |||
202 | if (!c0_compare_int_pending()) | 202 | if (!c0_compare_int_pending()) |
203 | return 0; | 203 | return 0; |
204 | 204 | ||
205 | write_c0_compare(read_c0_compare()); | 205 | write_c0_compare(read_c0_count()); |
206 | irq_disable_hazard(); | 206 | irq_disable_hazard(); |
207 | if (c0_compare_int_pending()) | 207 | if (c0_compare_int_pending()) |
208 | return 0; | 208 | return 0; |
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c index c4e6866d5cbc..6c6849a8f136 100644 --- a/arch/mips/kernel/time.c +++ b/arch/mips/kernel/time.c | |||
@@ -195,8 +195,8 @@ void __cpuinit clockevent_set_clock(struct clock_event_device *cd, | |||
195 | 195 | ||
196 | /* Find a shift value */ | 196 | /* Find a shift value */ |
197 | for (shift = 32; shift > 0; shift--) { | 197 | for (shift = 32; shift > 0; shift--) { |
198 | temp = (u64) NSEC_PER_SEC << shift; | 198 | temp = (u64) clock << shift; |
199 | do_div(temp, clock); | 199 | do_div(temp, NSEC_PER_SEC); |
200 | if ((temp >> 32) == 0) | 200 | if ((temp >> 32) == 0) |
201 | break; | 201 | break; |
202 | } | 202 | } |
diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c index 1d00b778ff1e..9d6243a8c15a 100644 --- a/arch/mips/mips-boards/generic/time.c +++ b/arch/mips/mips-boards/generic/time.c | |||
@@ -147,21 +147,8 @@ void __init plat_time_init(void) | |||
147 | #endif | 147 | #endif |
148 | } | 148 | } |
149 | 149 | ||
150 | //static irqreturn_t mips_perf_interrupt(int irq, void *dev_id) | ||
151 | //{ | ||
152 | // return perf_irq(); | ||
153 | //} | ||
154 | |||
155 | //static struct irqaction perf_irqaction = { | ||
156 | // .handler = mips_perf_interrupt, | ||
157 | // .flags = IRQF_DISABLED | IRQF_PERCPU, | ||
158 | // .name = "performance", | ||
159 | //}; | ||
160 | |||
161 | void __init plat_perf_setup(void) | 150 | void __init plat_perf_setup(void) |
162 | { | 151 | { |
163 | // struct irqaction *irq = &perf_irqaction; | ||
164 | |||
165 | cp0_perfcount_irq = -1; | 152 | cp0_perfcount_irq = -1; |
166 | 153 | ||
167 | #ifdef MSC01E_INT_BASE | 154 | #ifdef MSC01E_INT_BASE |
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c index 98b5e5bac02e..b1b40527658b 100644 --- a/arch/mips/mm/dma-default.c +++ b/arch/mips/mm/dma-default.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <linux/string.h> | 15 | #include <linux/string.h> |
16 | #include <linux/scatterlist.h> | ||
16 | 17 | ||
17 | #include <asm/cache.h> | 18 | #include <asm/cache.h> |
18 | #include <asm/io.h> | 19 | #include <asm/io.h> |
@@ -165,12 +166,11 @@ int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, | |||
165 | for (i = 0; i < nents; i++, sg++) { | 166 | for (i = 0; i < nents; i++, sg++) { |
166 | unsigned long addr; | 167 | unsigned long addr; |
167 | 168 | ||
168 | addr = (unsigned long) page_address(sg->page); | 169 | addr = (unsigned long) sg_virt(sg); |
169 | if (!plat_device_is_coherent(dev) && addr) | 170 | if (!plat_device_is_coherent(dev) && addr) |
170 | __dma_sync(addr + sg->offset, sg->length, direction); | 171 | __dma_sync(addr, sg->length, direction); |
171 | sg->dma_address = plat_map_dma_mem(dev, | 172 | sg->dma_address = plat_map_dma_mem(dev, |
172 | (void *)(addr + sg->offset), | 173 | (void *)addr, sg->length); |
173 | sg->length); | ||
174 | } | 174 | } |
175 | 175 | ||
176 | return nents; | 176 | return nents; |
@@ -223,10 +223,9 @@ void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries, | |||
223 | for (i = 0; i < nhwentries; i++, sg++) { | 223 | for (i = 0; i < nhwentries; i++, sg++) { |
224 | if (!plat_device_is_coherent(dev) && | 224 | if (!plat_device_is_coherent(dev) && |
225 | direction != DMA_TO_DEVICE) { | 225 | direction != DMA_TO_DEVICE) { |
226 | addr = (unsigned long) page_address(sg->page); | 226 | addr = (unsigned long) sg_virt(sg); |
227 | if (addr) | 227 | if (addr) |
228 | __dma_sync(addr + sg->offset, sg->length, | 228 | __dma_sync(addr, sg->length, direction); |
229 | direction); | ||
230 | } | 229 | } |
231 | plat_unmap_dma_mem(sg->dma_address); | 230 | plat_unmap_dma_mem(sg->dma_address); |
232 | } | 231 | } |
@@ -304,7 +303,7 @@ void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems, | |||
304 | /* Make sure that gcc doesn't leave the empty loop body. */ | 303 | /* Make sure that gcc doesn't leave the empty loop body. */ |
305 | for (i = 0; i < nelems; i++, sg++) { | 304 | for (i = 0; i < nelems; i++, sg++) { |
306 | if (cpu_is_noncoherent_r10000(dev)) | 305 | if (cpu_is_noncoherent_r10000(dev)) |
307 | __dma_sync((unsigned long)page_address(sg->page), | 306 | __dma_sync((unsigned long)page_address(sg_page(sg)), |
308 | sg->length, direction); | 307 | sg->length, direction); |
309 | plat_unmap_dma_mem(sg->dma_address); | 308 | plat_unmap_dma_mem(sg->dma_address); |
310 | } | 309 | } |
@@ -322,7 +321,7 @@ void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nele | |||
322 | /* Make sure that gcc doesn't leave the empty loop body. */ | 321 | /* Make sure that gcc doesn't leave the empty loop body. */ |
323 | for (i = 0; i < nelems; i++, sg++) { | 322 | for (i = 0; i < nelems; i++, sg++) { |
324 | if (!plat_device_is_coherent(dev)) | 323 | if (!plat_device_is_coherent(dev)) |
325 | __dma_sync((unsigned long)page_address(sg->page), | 324 | __dma_sync((unsigned long)page_address(sg_page(sg)), |
326 | sg->length, direction); | 325 | sg->length, direction); |
327 | plat_unmap_dma_mem(sg->dma_address); | 326 | plat_unmap_dma_mem(sg->dma_address); |
328 | } | 327 | } |
diff --git a/arch/mips/sgi-ip27/ip27-init.c b/arch/mips/sgi-ip27/ip27-init.c index 681b593071cb..3305fa9ae66d 100644 --- a/arch/mips/sgi-ip27/ip27-init.c +++ b/arch/mips/sgi-ip27/ip27-init.c | |||
@@ -110,7 +110,7 @@ static void __init per_hub_init(cnodeid_t cnode) | |||
110 | } | 110 | } |
111 | } | 111 | } |
112 | 112 | ||
113 | void __init per_cpu_init(void) | 113 | void __cpuinit per_cpu_init(void) |
114 | { | 114 | { |
115 | int cpu = smp_processor_id(); | 115 | int cpu = smp_processor_id(); |
116 | int slice = LOCAL_HUB_L(PI_CPU_NUM); | 116 | int slice = LOCAL_HUB_L(PI_CPU_NUM); |
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c index d467bf4f6c3f..f5dccf01da11 100644 --- a/arch/mips/sgi-ip27/ip27-timer.c +++ b/arch/mips/sgi-ip27/ip27-timer.c | |||
@@ -111,8 +111,24 @@ unsigned long read_persistent_clock(void) | |||
111 | return mktime(year, month, date, hour, min, sec); | 111 | return mktime(year, month, date, hour, min, sec); |
112 | } | 112 | } |
113 | 113 | ||
114 | static int rt_set_next_event(unsigned long delta, | 114 | static void enable_rt_irq(unsigned int irq) |
115 | struct clock_event_device *evt) | 115 | { |
116 | } | ||
117 | |||
118 | static void disable_rt_irq(unsigned int irq) | ||
119 | { | ||
120 | } | ||
121 | |||
122 | static struct irq_chip rt_irq_type = { | ||
123 | .name = "SN HUB RT timer", | ||
124 | .ack = disable_rt_irq, | ||
125 | .mask = disable_rt_irq, | ||
126 | .mask_ack = disable_rt_irq, | ||
127 | .unmask = enable_rt_irq, | ||
128 | .eoi = enable_rt_irq, | ||
129 | }; | ||
130 | |||
131 | static int rt_next_event(unsigned long delta, struct clock_event_device *evt) | ||
116 | { | 132 | { |
117 | unsigned int cpu = smp_processor_id(); | 133 | unsigned int cpu = smp_processor_id(); |
118 | int slice = cputoslice(cpu) == 0; | 134 | int slice = cputoslice(cpu) == 0; |
@@ -129,50 +145,24 @@ static void rt_set_mode(enum clock_event_mode mode, | |||
129 | struct clock_event_device *evt) | 145 | struct clock_event_device *evt) |
130 | { | 146 | { |
131 | switch (mode) { | 147 | switch (mode) { |
132 | case CLOCK_EVT_MODE_PERIODIC: | 148 | case CLOCK_EVT_MODE_ONESHOT: |
133 | /* The only mode supported */ | 149 | /* The only mode supported */ |
134 | break; | 150 | break; |
135 | 151 | ||
152 | case CLOCK_EVT_MODE_PERIODIC: | ||
136 | case CLOCK_EVT_MODE_UNUSED: | 153 | case CLOCK_EVT_MODE_UNUSED: |
137 | case CLOCK_EVT_MODE_SHUTDOWN: | 154 | case CLOCK_EVT_MODE_SHUTDOWN: |
138 | case CLOCK_EVT_MODE_ONESHOT: | ||
139 | case CLOCK_EVT_MODE_RESUME: | 155 | case CLOCK_EVT_MODE_RESUME: |
140 | /* Nothing to do */ | 156 | /* Nothing to do */ |
141 | break; | 157 | break; |
142 | } | 158 | } |
143 | } | 159 | } |
144 | 160 | ||
145 | struct clock_event_device rt_clock_event_device = { | ||
146 | .name = "HUB-RT", | ||
147 | .features = CLOCK_EVT_FEAT_ONESHOT, | ||
148 | |||
149 | .rating = 300, | ||
150 | .set_next_event = rt_set_next_event, | ||
151 | .set_mode = rt_set_mode, | ||
152 | }; | ||
153 | |||
154 | static void enable_rt_irq(unsigned int irq) | ||
155 | { | ||
156 | } | ||
157 | |||
158 | static void disable_rt_irq(unsigned int irq) | ||
159 | { | ||
160 | } | ||
161 | |||
162 | static struct irq_chip rt_irq_type = { | ||
163 | .name = "SN HUB RT timer", | ||
164 | .ack = disable_rt_irq, | ||
165 | .mask = disable_rt_irq, | ||
166 | .mask_ack = disable_rt_irq, | ||
167 | .unmask = enable_rt_irq, | ||
168 | .eoi = enable_rt_irq, | ||
169 | }; | ||
170 | |||
171 | unsigned int rt_timer_irq; | 161 | unsigned int rt_timer_irq; |
172 | 162 | ||
173 | static irqreturn_t ip27_rt_timer_interrupt(int irq, void *dev_id) | 163 | static irqreturn_t hub_rt_counter_handler(int irq, void *dev_id) |
174 | { | 164 | { |
175 | struct clock_event_device *cd = &rt_clock_event_device; | 165 | struct clock_event_device *cd = dev_id; |
176 | unsigned int cpu = smp_processor_id(); | 166 | unsigned int cpu = smp_processor_id(); |
177 | int slice = cputoslice(cpu) == 0; | 167 | int slice = cputoslice(cpu) == 0; |
178 | 168 | ||
@@ -182,11 +172,10 @@ static irqreturn_t ip27_rt_timer_interrupt(int irq, void *dev_id) | |||
182 | return IRQ_HANDLED; | 172 | return IRQ_HANDLED; |
183 | } | 173 | } |
184 | 174 | ||
185 | static struct irqaction rt_irqaction = { | 175 | struct irqaction hub_rt_irqaction = { |
186 | .handler = (irq_handler_t) ip27_rt_timer_interrupt, | 176 | .handler = hub_rt_counter_handler, |
187 | .flags = IRQF_DISABLED, | 177 | .flags = IRQF_DISABLED | IRQF_PERCPU, |
188 | .mask = CPU_MASK_NONE, | 178 | .name = "hub-rt", |
189 | .name = "timer" | ||
190 | }; | 179 | }; |
191 | 180 | ||
192 | /* | 181 | /* |
@@ -200,32 +189,48 @@ static struct irqaction rt_irqaction = { | |||
200 | #define NSEC_PER_CYCLE 800 | 189 | #define NSEC_PER_CYCLE 800 |
201 | #define CYCLES_PER_SEC (NSEC_PER_SEC / NSEC_PER_CYCLE) | 190 | #define CYCLES_PER_SEC (NSEC_PER_SEC / NSEC_PER_CYCLE) |
202 | 191 | ||
203 | static void __init ip27_rt_clock_event_init(void) | 192 | static DEFINE_PER_CPU(struct clock_event_device, hub_rt_clockevent); |
193 | static DEFINE_PER_CPU(char [11], hub_rt_name); | ||
194 | |||
195 | static void __cpuinit hub_rt_clock_event_init(void) | ||
204 | { | 196 | { |
205 | struct clock_event_device *cd = &rt_clock_event_device; | ||
206 | unsigned int cpu = smp_processor_id(); | 197 | unsigned int cpu = smp_processor_id(); |
207 | int irq = allocate_irqno(); | 198 | struct clock_event_device *cd = &per_cpu(hub_rt_clockevent, cpu); |
208 | 199 | unsigned char *name = per_cpu(hub_rt_name, cpu); | |
209 | if (irq < 0) | 200 | int irq = rt_timer_irq; |
210 | panic("Can't allocate interrupt number for timer interrupt"); | 201 | |
211 | 202 | sprintf(name, "hub-rt %d", cpu); | |
212 | rt_timer_irq = irq; | 203 | cd->name = "HUB-RT", |
213 | 204 | cd->features = CLOCK_EVT_FEAT_ONESHOT, | |
205 | clockevent_set_clock(cd, CYCLES_PER_SEC); | ||
206 | cd->max_delta_ns = clockevent_delta2ns(0xfffffffffffff, cd); | ||
207 | cd->min_delta_ns = clockevent_delta2ns(0x300, cd); | ||
208 | cd->rating = 200, | ||
214 | cd->irq = irq, | 209 | cd->irq = irq, |
215 | cd->cpumask = cpumask_of_cpu(cpu), | 210 | cd->cpumask = cpumask_of_cpu(cpu), |
216 | 211 | cd->rating = 300, | |
217 | /* | 212 | cd->set_next_event = rt_next_event, |
218 | * Calculate the min / max delta | 213 | cd->set_mode = rt_set_mode, |
219 | */ | ||
220 | cd->mult = | ||
221 | div_sc((unsigned long) CYCLES_PER_SEC, NSEC_PER_SEC, 32); | ||
222 | cd->shift = 32; | ||
223 | cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd); | ||
224 | cd->min_delta_ns = clockevent_delta2ns(0x300, cd); | ||
225 | clockevents_register_device(cd); | 214 | clockevents_register_device(cd); |
215 | } | ||
216 | |||
217 | static void __init hub_rt_clock_event_global_init(void) | ||
218 | { | ||
219 | unsigned int irq; | ||
220 | |||
221 | do { | ||
222 | smp_wmb(); | ||
223 | irq = rt_timer_irq; | ||
224 | if (irq) | ||
225 | break; | ||
226 | |||
227 | irq = allocate_irqno(); | ||
228 | if (irq < 0) | ||
229 | panic("Allocation of irq number for timer failed"); | ||
230 | } while (xchg(&rt_timer_irq, irq)); | ||
226 | 231 | ||
227 | set_irq_chip_and_handler(irq, &rt_irq_type, handle_percpu_irq); | 232 | set_irq_chip_and_handler(irq, &rt_irq_type, handle_percpu_irq); |
228 | setup_irq(irq, &rt_irqaction); | 233 | setup_irq(irq, &hub_rt_irqaction); |
229 | } | 234 | } |
230 | 235 | ||
231 | static cycle_t hub_rt_read(void) | 236 | static cycle_t hub_rt_read(void) |
@@ -233,27 +238,29 @@ static cycle_t hub_rt_read(void) | |||
233 | return REMOTE_HUB_L(cputonasid(0), PI_RT_COUNT); | 238 | return REMOTE_HUB_L(cputonasid(0), PI_RT_COUNT); |
234 | } | 239 | } |
235 | 240 | ||
236 | struct clocksource ht_rt_clocksource = { | 241 | struct clocksource hub_rt_clocksource = { |
237 | .name = "HUB-RT", | 242 | .name = "HUB-RT", |
238 | .rating = 200, | 243 | .rating = 200, |
239 | .read = hub_rt_read, | 244 | .read = hub_rt_read, |
240 | .mask = CLOCKSOURCE_MASK(52), | 245 | .mask = CLOCKSOURCE_MASK(52), |
241 | .shift = 32, | ||
242 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | 246 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
243 | }; | 247 | }; |
244 | 248 | ||
245 | static void __init ip27_rt_clocksource_init(void) | 249 | static void __init hub_rt_clocksource_init(void) |
246 | { | 250 | { |
247 | clocksource_register(&ht_rt_clocksource); | 251 | struct clocksource *cs = &hub_rt_clocksource; |
252 | |||
253 | clocksource_set_clock(cs, CYCLES_PER_SEC); | ||
254 | clocksource_register(cs); | ||
248 | } | 255 | } |
249 | 256 | ||
250 | void __init plat_time_init(void) | 257 | void __init plat_time_init(void) |
251 | { | 258 | { |
252 | ip27_rt_clock_event_init(); | 259 | hub_rt_clocksource_init(); |
253 | ip27_rt_clocksource_init(); | 260 | hub_rt_clock_event_global_init(); |
254 | } | 261 | } |
255 | 262 | ||
256 | void __init cpu_time_init(void) | 263 | void __cpuinit cpu_time_init(void) |
257 | { | 264 | { |
258 | lboard_t *board; | 265 | lboard_t *board; |
259 | klcpu_t *cpu; | 266 | klcpu_t *cpu; |
@@ -271,6 +278,7 @@ void __init cpu_time_init(void) | |||
271 | 278 | ||
272 | printk("CPU %d clock is %dMHz.\n", smp_processor_id(), cpu->cpu_speed); | 279 | printk("CPU %d clock is %dMHz.\n", smp_processor_id(), cpu->cpu_speed); |
273 | 280 | ||
281 | hub_rt_clock_event_init(); | ||
274 | set_c0_status(SRB_TIMOCLK); | 282 | set_c0_status(SRB_TIMOCLK); |
275 | } | 283 | } |
276 | 284 | ||
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c index 7aa79bf63c4a..10299bafeab7 100644 --- a/arch/mips/sibyte/bcm1480/irq.c +++ b/arch/mips/sibyte/bcm1480/irq.c | |||
@@ -452,6 +452,43 @@ static void bcm1480_kgdb_interrupt(void) | |||
452 | 452 | ||
453 | extern void bcm1480_mailbox_interrupt(void); | 453 | extern void bcm1480_mailbox_interrupt(void); |
454 | 454 | ||
455 | static inline void dispatch_ip4(void) | ||
456 | { | ||
457 | int cpu = smp_processor_id(); | ||
458 | int irq = K_BCM1480_INT_TIMER_0 + cpu; | ||
459 | |||
460 | /* Reset the timer */ | ||
461 | __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS, | ||
462 | IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); | ||
463 | |||
464 | do_IRQ(irq); | ||
465 | } | ||
466 | |||
467 | static inline void dispatch_ip2(void) | ||
468 | { | ||
469 | unsigned long long mask_h, mask_l; | ||
470 | unsigned int cpu = smp_processor_id(); | ||
471 | unsigned long base; | ||
472 | |||
473 | /* | ||
474 | * Default...we've hit an IP[2] interrupt, which means we've got to | ||
475 | * check the 1480 interrupt registers to figure out what to do. Need | ||
476 | * to detect which CPU we're on, now that smp_affinity is supported. | ||
477 | */ | ||
478 | base = A_BCM1480_IMR_MAPPER(cpu); | ||
479 | mask_h = __raw_readq( | ||
480 | IOADDR(base + R_BCM1480_IMR_INTERRUPT_STATUS_BASE_H)); | ||
481 | mask_l = __raw_readq( | ||
482 | IOADDR(base + R_BCM1480_IMR_INTERRUPT_STATUS_BASE_L)); | ||
483 | |||
484 | if (mask_h) { | ||
485 | if (mask_h ^ 1) | ||
486 | do_IRQ(fls64(mask_h) - 1); | ||
487 | else if (mask_l) | ||
488 | do_IRQ(63 + fls64(mask_l)); | ||
489 | } | ||
490 | } | ||
491 | |||
455 | asmlinkage void plat_irq_dispatch(void) | 492 | asmlinkage void plat_irq_dispatch(void) |
456 | { | 493 | { |
457 | unsigned int pending; | 494 | unsigned int pending; |
@@ -469,17 +506,8 @@ asmlinkage void plat_irq_dispatch(void) | |||
469 | else | 506 | else |
470 | #endif | 507 | #endif |
471 | 508 | ||
472 | if (pending & CAUSEF_IP4) { | 509 | if (pending & CAUSEF_IP4) |
473 | int cpu = smp_processor_id(); | 510 | dispatch_ip4(); |
474 | int irq = K_BCM1480_INT_TIMER_0 + cpu; | ||
475 | |||
476 | /* Reset the timer */ | ||
477 | __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS, | ||
478 | IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); | ||
479 | |||
480 | do_IRQ(irq); | ||
481 | } | ||
482 | |||
483 | #ifdef CONFIG_SMP | 511 | #ifdef CONFIG_SMP |
484 | else if (pending & CAUSEF_IP3) | 512 | else if (pending & CAUSEF_IP3) |
485 | bcm1480_mailbox_interrupt(); | 513 | bcm1480_mailbox_interrupt(); |
@@ -490,27 +518,6 @@ asmlinkage void plat_irq_dispatch(void) | |||
490 | bcm1480_kgdb_interrupt(); /* KGDB (uart 1) */ | 518 | bcm1480_kgdb_interrupt(); /* KGDB (uart 1) */ |
491 | #endif | 519 | #endif |
492 | 520 | ||
493 | else if (pending & CAUSEF_IP2) { | 521 | else if (pending & CAUSEF_IP2) |
494 | unsigned long long mask_h, mask_l; | 522 | dispatch_ip2(); |
495 | unsigned long base; | ||
496 | |||
497 | /* | ||
498 | * Default...we've hit an IP[2] interrupt, which means we've | ||
499 | * got to check the 1480 interrupt registers to figure out what | ||
500 | * to do. Need to detect which CPU we're on, now that | ||
501 | * smp_affinity is supported. | ||
502 | */ | ||
503 | base = A_BCM1480_IMR_MAPPER(smp_processor_id()); | ||
504 | mask_h = __raw_readq( | ||
505 | IOADDR(base + R_BCM1480_IMR_INTERRUPT_STATUS_BASE_H)); | ||
506 | mask_l = __raw_readq( | ||
507 | IOADDR(base + R_BCM1480_IMR_INTERRUPT_STATUS_BASE_L)); | ||
508 | |||
509 | if (mask_h) { | ||
510 | if (mask_h ^ 1) | ||
511 | do_IRQ(fls64(mask_h) - 1); | ||
512 | else | ||
513 | do_IRQ(63 + fls64(mask_l)); | ||
514 | } | ||
515 | } | ||
516 | } | 523 | } |
diff --git a/arch/mips/sibyte/bcm1480/smp.c b/arch/mips/sibyte/bcm1480/smp.c index 02b266a31c46..436ba78359ab 100644 --- a/arch/mips/sibyte/bcm1480/smp.c +++ b/arch/mips/sibyte/bcm1480/smp.c | |||
@@ -58,7 +58,7 @@ static void *mailbox_0_regs[] = { | |||
58 | /* | 58 | /* |
59 | * SMP init and finish on secondary CPUs | 59 | * SMP init and finish on secondary CPUs |
60 | */ | 60 | */ |
61 | void bcm1480_smp_init(void) | 61 | void __cpuinit bcm1480_smp_init(void) |
62 | { | 62 | { |
63 | unsigned int imask = STATUSF_IP4 | STATUSF_IP3 | STATUSF_IP2 | | 63 | unsigned int imask = STATUSF_IP4 | STATUSF_IP3 | STATUSF_IP2 | |
64 | STATUSF_IP1 | STATUSF_IP0; | 64 | STATUSF_IP1 | STATUSF_IP0; |
@@ -67,7 +67,7 @@ void bcm1480_smp_init(void) | |||
67 | change_c0_status(ST0_IM, imask); | 67 | change_c0_status(ST0_IM, imask); |
68 | } | 68 | } |
69 | 69 | ||
70 | void bcm1480_smp_finish(void) | 70 | void __cpuinit bcm1480_smp_finish(void) |
71 | { | 71 | { |
72 | extern void sb1480_clockevent_init(void); | 72 | extern void sb1480_clockevent_init(void); |
73 | 73 | ||
diff --git a/arch/mips/sibyte/bcm1480/time.c b/arch/mips/sibyte/bcm1480/time.c index c730744aa474..610f0253954d 100644 --- a/arch/mips/sibyte/bcm1480/time.c +++ b/arch/mips/sibyte/bcm1480/time.c | |||
@@ -15,22 +15,12 @@ | |||
15 | * along with this program; if not, write to the Free Software | 15 | * along with this program; if not, write to the Free Software |
16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
17 | */ | 17 | */ |
18 | |||
19 | /* | ||
20 | * These are routines to set up and handle interrupts from the | ||
21 | * bcm1480 general purpose timer 0. We're using the timer as a | ||
22 | * system clock, so we set it up to run at 100 Hz. On every | ||
23 | * interrupt, we update our idea of what the time of day is, | ||
24 | * then call do_timer() in the architecture-independent kernel | ||
25 | * code to do general bookkeeping (e.g. update jiffies, run | ||
26 | * bottom halves, etc.) | ||
27 | */ | ||
28 | #include <linux/clockchips.h> | 18 | #include <linux/clockchips.h> |
29 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
20 | #include <linux/irq.h> | ||
30 | #include <linux/percpu.h> | 21 | #include <linux/percpu.h> |
31 | #include <linux/spinlock.h> | 22 | #include <linux/spinlock.h> |
32 | 23 | ||
33 | #include <asm/irq.h> | ||
34 | #include <asm/addrspace.h> | 24 | #include <asm/addrspace.h> |
35 | #include <asm/time.h> | 25 | #include <asm/time.h> |
36 | #include <asm/io.h> | 26 | #include <asm/io.h> |
@@ -47,33 +37,10 @@ | |||
47 | #define IMR_IP3_VAL K_BCM1480_INT_MAP_I1 | 37 | #define IMR_IP3_VAL K_BCM1480_INT_MAP_I1 |
48 | #define IMR_IP4_VAL K_BCM1480_INT_MAP_I2 | 38 | #define IMR_IP4_VAL K_BCM1480_INT_MAP_I2 |
49 | 39 | ||
50 | #ifdef CONFIG_SIMULATION | ||
51 | #define BCM1480_HPT_VALUE 50000 | ||
52 | #else | ||
53 | #define BCM1480_HPT_VALUE 1000000 | ||
54 | #endif | ||
55 | |||
56 | extern int bcm1480_steal_irq(int irq); | 40 | extern int bcm1480_steal_irq(int irq); |
57 | 41 | ||
58 | void __init plat_time_init(void) | ||
59 | { | ||
60 | unsigned int cpu = smp_processor_id(); | ||
61 | unsigned int irq = K_BCM1480_INT_TIMER_0 + cpu; | ||
62 | |||
63 | BUG_ON(cpu > 3); /* Only have 4 general purpose timers */ | ||
64 | |||
65 | bcm1480_mask_irq(cpu, irq); | ||
66 | |||
67 | /* Map the timer interrupt to ip[4] of this cpu */ | ||
68 | __raw_writeq(IMR_IP4_VAL, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) | ||
69 | + (irq<<3))); | ||
70 | |||
71 | bcm1480_unmask_irq(cpu, irq); | ||
72 | bcm1480_steal_irq(irq); | ||
73 | } | ||
74 | |||
75 | /* | 42 | /* |
76 | * The general purpose timer ticks at 1 Mhz independent if | 43 | * The general purpose timer ticks at 1MHz independent if |
77 | * the rest of the system | 44 | * the rest of the system |
78 | */ | 45 | */ |
79 | static void sibyte_set_mode(enum clock_event_mode mode, | 46 | static void sibyte_set_mode(enum clock_event_mode mode, |
@@ -88,7 +55,7 @@ static void sibyte_set_mode(enum clock_event_mode mode, | |||
88 | switch (mode) { | 55 | switch (mode) { |
89 | case CLOCK_EVT_MODE_PERIODIC: | 56 | case CLOCK_EVT_MODE_PERIODIC: |
90 | __raw_writeq(0, timer_cfg); | 57 | __raw_writeq(0, timer_cfg); |
91 | __raw_writeq(BCM1480_HPT_VALUE / HZ - 1, timer_init); | 58 | __raw_writeq((V_SCD_TIMER_FREQ / HZ) - 1, timer_init); |
92 | __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, | 59 | __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, |
93 | timer_cfg); | 60 | timer_cfg); |
94 | break; | 61 | break; |
@@ -121,80 +88,96 @@ static int sibyte_next_event(unsigned long delta, struct clock_event_device *cd) | |||
121 | return res; | 88 | return res; |
122 | } | 89 | } |
123 | 90 | ||
124 | static DEFINE_PER_CPU(struct clock_event_device, sibyte_hpt_clockevent); | ||
125 | |||
126 | static irqreturn_t sibyte_counter_handler(int irq, void *dev_id) | 91 | static irqreturn_t sibyte_counter_handler(int irq, void *dev_id) |
127 | { | 92 | { |
128 | unsigned int cpu = smp_processor_id(); | 93 | unsigned int cpu = smp_processor_id(); |
129 | struct clock_event_device *cd = &per_cpu(sibyte_hpt_clockevent, cpu); | 94 | struct clock_event_device *cd = dev_id; |
95 | void __iomem *timer_cfg; | ||
96 | |||
97 | timer_cfg = IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG)); | ||
130 | 98 | ||
131 | /* Reset the timer */ | 99 | /* Reset the timer */ |
132 | __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, | 100 | __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, |
133 | IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); | 101 | timer_cfg); |
134 | cd->event_handler(cd); | 102 | cd->event_handler(cd); |
135 | 103 | ||
136 | return IRQ_HANDLED; | 104 | return IRQ_HANDLED; |
137 | } | 105 | } |
138 | 106 | ||
139 | static struct irqaction sibyte_counter_irqaction = { | 107 | static DEFINE_PER_CPU(struct clock_event_device, sibyte_hpt_clockevent); |
140 | .handler = sibyte_counter_handler, | 108 | static DEFINE_PER_CPU(struct irqaction, sibyte_hpt_irqaction); |
141 | .flags = IRQF_DISABLED | IRQF_PERCPU, | 109 | static DEFINE_PER_CPU(char [18], sibyte_hpt_name); |
142 | .name = "timer", | ||
143 | }; | ||
144 | 110 | ||
145 | /* | ||
146 | * This interrupt is "special" in that it doesn't use the request_irq | ||
147 | * way to hook the irq line. The timer interrupt is initialized early | ||
148 | * enough to make this a major pain, and it's also firing enough to | ||
149 | * warrant a bit of special case code. bcm1480_timer_interrupt is | ||
150 | * called directly from irq_handler.S when IP[4] is set during an | ||
151 | * interrupt | ||
152 | */ | ||
153 | void __cpuinit sb1480_clockevent_init(void) | 111 | void __cpuinit sb1480_clockevent_init(void) |
154 | { | 112 | { |
155 | unsigned int cpu = smp_processor_id(); | 113 | unsigned int cpu = smp_processor_id(); |
156 | unsigned int irq = K_BCM1480_INT_TIMER_0 + cpu; | 114 | unsigned int irq = K_BCM1480_INT_TIMER_0 + cpu; |
115 | struct irqaction *action = &per_cpu(sibyte_hpt_irqaction, cpu); | ||
157 | struct clock_event_device *cd = &per_cpu(sibyte_hpt_clockevent, cpu); | 116 | struct clock_event_device *cd = &per_cpu(sibyte_hpt_clockevent, cpu); |
117 | unsigned char *name = per_cpu(sibyte_hpt_name, cpu); | ||
118 | |||
119 | BUG_ON(cpu > 3); /* Only have 4 general purpose timers */ | ||
158 | 120 | ||
159 | cd->name = "bcm1480-counter"; | 121 | sprintf(name, "bcm1480-counter %d", cpu); |
122 | cd->name = name; | ||
160 | cd->features = CLOCK_EVT_FEAT_PERIODIC | | 123 | cd->features = CLOCK_EVT_FEAT_PERIODIC | |
161 | CLOCK_EVT_MODE_ONESHOT; | 124 | CLOCK_EVT_MODE_ONESHOT; |
125 | clockevent_set_clock(cd, V_SCD_TIMER_FREQ); | ||
126 | cd->max_delta_ns = clockevent_delta2ns(0x7fffff, cd); | ||
127 | cd->min_delta_ns = clockevent_delta2ns(1, cd); | ||
128 | cd->rating = 200; | ||
129 | cd->irq = irq; | ||
130 | cd->cpumask = cpumask_of_cpu(cpu); | ||
162 | cd->set_next_event = sibyte_next_event; | 131 | cd->set_next_event = sibyte_next_event; |
163 | cd->set_mode = sibyte_set_mode; | 132 | cd->set_mode = sibyte_set_mode; |
164 | cd->irq = irq; | 133 | clockevents_register_device(cd); |
165 | clockevent_set_clock(cd, BCM1480_HPT_VALUE); | 134 | |
135 | bcm1480_mask_irq(cpu, irq); | ||
136 | |||
137 | /* | ||
138 | * Map timer interrupt to IP[4] of this cpu | ||
139 | */ | ||
140 | __raw_writeq(IMR_IP4_VAL, | ||
141 | IOADDR(A_BCM1480_IMR_REGISTER(cpu, | ||
142 | R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) + (irq << 3))); | ||
166 | 143 | ||
167 | setup_irq(irq, &sibyte_counter_irqaction); | 144 | bcm1480_unmask_irq(cpu, irq); |
145 | bcm1480_steal_irq(irq); | ||
146 | |||
147 | action->handler = sibyte_counter_handler; | ||
148 | action->flags = IRQF_DISABLED | IRQF_PERCPU; | ||
149 | action->name = name; | ||
150 | action->dev_id = cd; | ||
151 | setup_irq(irq, action); | ||
168 | } | 152 | } |
169 | 153 | ||
170 | static cycle_t bcm1480_hpt_read(void) | 154 | static cycle_t bcm1480_hpt_read(void) |
171 | { | 155 | { |
172 | /* We assume this function is called xtime_lock held. */ | 156 | return (cycle_t) __raw_readq(IOADDR(A_SCD_ZBBUS_CYCLE_COUNT)); |
173 | unsigned long count = | ||
174 | __raw_readq(IOADDR(A_SCD_TIMER_REGISTER(0, R_SCD_TIMER_CNT))); | ||
175 | return (jiffies + 1) * (BCM1480_HPT_VALUE / HZ) - count; | ||
176 | } | 157 | } |
177 | 158 | ||
178 | struct clocksource bcm1480_clocksource = { | 159 | struct clocksource bcm1480_clocksource = { |
179 | .name = "MIPS", | 160 | .name = "zbbus-cycles", |
180 | .rating = 200, | 161 | .rating = 200, |
181 | .read = bcm1480_hpt_read, | 162 | .read = bcm1480_hpt_read, |
182 | .mask = CLOCKSOURCE_MASK(32), | 163 | .mask = CLOCKSOURCE_MASK(64), |
183 | .shift = 32, | ||
184 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | 164 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
185 | }; | 165 | }; |
186 | 166 | ||
187 | void __init sb1480_clocksource_init(void) | 167 | void __init sb1480_clocksource_init(void) |
188 | { | 168 | { |
189 | struct clocksource *cs = &bcm1480_clocksource; | 169 | struct clocksource *cs = &bcm1480_clocksource; |
170 | unsigned int plldiv; | ||
171 | unsigned long zbbus; | ||
190 | 172 | ||
191 | clocksource_set_clock(cs, BCM1480_HPT_VALUE); | 173 | plldiv = G_BCM1480_SYS_PLL_DIV(__raw_readq(IOADDR(A_SCD_SYSTEM_CFG))); |
174 | zbbus = ((plldiv >> 1) * 50000000) + ((plldiv & 1) * 25000000); | ||
175 | clocksource_set_clock(cs, zbbus); | ||
192 | clocksource_register(cs); | 176 | clocksource_register(cs); |
193 | } | 177 | } |
194 | 178 | ||
195 | void __init bcm1480_hpt_setup(void) | 179 | void __init plat_time_init(void) |
196 | { | 180 | { |
197 | mips_hpt_frequency = BCM1480_HPT_VALUE; | ||
198 | sb1480_clocksource_init(); | 181 | sb1480_clocksource_init(); |
199 | sb1480_clockevent_init(); | 182 | sb1480_clockevent_init(); |
200 | } | 183 | } |
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c index 500d17e84c09..53780a179d1d 100644 --- a/arch/mips/sibyte/sb1250/irq.c +++ b/arch/mips/sibyte/sb1250/irq.c | |||
@@ -402,6 +402,22 @@ static void sb1250_kgdb_interrupt(void) | |||
402 | 402 | ||
403 | extern void sb1250_mailbox_interrupt(void); | 403 | extern void sb1250_mailbox_interrupt(void); |
404 | 404 | ||
405 | static inline void dispatch_ip2(void) | ||
406 | { | ||
407 | unsigned int cpu = smp_processor_id(); | ||
408 | unsigned long long mask; | ||
409 | |||
410 | /* | ||
411 | * Default...we've hit an IP[2] interrupt, which means we've got to | ||
412 | * check the 1250 interrupt registers to figure out what to do. Need | ||
413 | * to detect which CPU we're on, now that smp_affinity is supported. | ||
414 | */ | ||
415 | mask = __raw_readq(IOADDR(A_IMR_REGISTER(cpu, | ||
416 | R_IMR_INTERRUPT_STATUS_BASE))); | ||
417 | if (mask) | ||
418 | do_IRQ(fls64(mask) - 1); | ||
419 | } | ||
420 | |||
405 | asmlinkage void plat_irq_dispatch(void) | 421 | asmlinkage void plat_irq_dispatch(void) |
406 | { | 422 | { |
407 | unsigned int cpu = smp_processor_id(); | 423 | unsigned int cpu = smp_processor_id(); |
@@ -434,21 +450,8 @@ asmlinkage void plat_irq_dispatch(void) | |||
434 | sb1250_kgdb_interrupt(); | 450 | sb1250_kgdb_interrupt(); |
435 | #endif | 451 | #endif |
436 | 452 | ||
437 | else if (pending & CAUSEF_IP2) { | 453 | else if (pending & CAUSEF_IP2) |
438 | unsigned long long mask; | 454 | dispatch_ip2(); |
439 | 455 | else | |
440 | /* | ||
441 | * Default...we've hit an IP[2] interrupt, which means we've | ||
442 | * got to check the 1250 interrupt registers to figure out what | ||
443 | * to do. Need to detect which CPU we're on, now that | ||
444 | * smp_affinity is supported. | ||
445 | */ | ||
446 | mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(), | ||
447 | R_IMR_INTERRUPT_STATUS_BASE))); | ||
448 | if (mask) | ||
449 | do_IRQ(fls64(mask) - 1); | ||
450 | else | ||
451 | spurious_interrupt(); | ||
452 | } else | ||
453 | spurious_interrupt(); | 456 | spurious_interrupt(); |
454 | } | 457 | } |
diff --git a/arch/mips/sibyte/sb1250/smp.c b/arch/mips/sibyte/sb1250/smp.c index aaa4f30dda79..3f52c95a4eb8 100644 --- a/arch/mips/sibyte/sb1250/smp.c +++ b/arch/mips/sibyte/sb1250/smp.c | |||
@@ -46,7 +46,7 @@ static void *mailbox_regs[] = { | |||
46 | /* | 46 | /* |
47 | * SMP init and finish on secondary CPUs | 47 | * SMP init and finish on secondary CPUs |
48 | */ | 48 | */ |
49 | void sb1250_smp_init(void) | 49 | void __cpuinit sb1250_smp_init(void) |
50 | { | 50 | { |
51 | unsigned int imask = STATUSF_IP4 | STATUSF_IP3 | STATUSF_IP2 | | 51 | unsigned int imask = STATUSF_IP4 | STATUSF_IP3 | STATUSF_IP2 | |
52 | STATUSF_IP1 | STATUSF_IP0; | 52 | STATUSF_IP1 | STATUSF_IP0; |
@@ -55,7 +55,7 @@ void sb1250_smp_init(void) | |||
55 | change_c0_status(ST0_IM, imask); | 55 | change_c0_status(ST0_IM, imask); |
56 | } | 56 | } |
57 | 57 | ||
58 | void sb1250_smp_finish(void) | 58 | void __cpuinit sb1250_smp_finish(void) |
59 | { | 59 | { |
60 | extern void sb1250_clockevent_init(void); | 60 | extern void sb1250_clockevent_init(void); |
61 | 61 | ||
diff --git a/arch/mips/sibyte/sb1250/time.c b/arch/mips/sibyte/sb1250/time.c index 9ef54628bc9c..a41e908bc218 100644 --- a/arch/mips/sibyte/sb1250/time.c +++ b/arch/mips/sibyte/sb1250/time.c | |||
@@ -52,26 +52,6 @@ | |||
52 | 52 | ||
53 | extern int sb1250_steal_irq(int irq); | 53 | extern int sb1250_steal_irq(int irq); |
54 | 54 | ||
55 | static cycle_t sb1250_hpt_read(void); | ||
56 | |||
57 | void __init sb1250_hpt_setup(void) | ||
58 | { | ||
59 | int cpu = smp_processor_id(); | ||
60 | |||
61 | if (!cpu) { | ||
62 | /* Setup hpt using timer #3 but do not enable irq for it */ | ||
63 | __raw_writeq(0, IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, R_SCD_TIMER_CFG))); | ||
64 | __raw_writeq(SB1250_HPT_VALUE, | ||
65 | IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, R_SCD_TIMER_INIT))); | ||
66 | __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, | ||
67 | IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, R_SCD_TIMER_CFG))); | ||
68 | |||
69 | mips_hpt_frequency = V_SCD_TIMER_FREQ; | ||
70 | clocksource_mips.read = sb1250_hpt_read; | ||
71 | clocksource_mips.mask = M_SCD_TIMER_INIT; | ||
72 | } | ||
73 | } | ||
74 | |||
75 | /* | 55 | /* |
76 | * The general purpose timer ticks at 1 Mhz independent if | 56 | * The general purpose timer ticks at 1 Mhz independent if |
77 | * the rest of the system | 57 | * the rest of the system |
@@ -121,18 +101,14 @@ sibyte_next_event(unsigned long delta, struct clock_event_device *evt) | |||
121 | return 0; | 101 | return 0; |
122 | } | 102 | } |
123 | 103 | ||
124 | struct clock_event_device sibyte_hpt_clockevent = { | ||
125 | .name = "sb1250-counter", | ||
126 | .features = CLOCK_EVT_FEAT_PERIODIC, | ||
127 | .set_mode = sibyte_set_mode, | ||
128 | .set_next_event = sibyte_next_event, | ||
129 | .shift = 32, | ||
130 | .irq = 0, | ||
131 | }; | ||
132 | |||
133 | static irqreturn_t sibyte_counter_handler(int irq, void *dev_id) | 104 | static irqreturn_t sibyte_counter_handler(int irq, void *dev_id) |
134 | { | 105 | { |
135 | struct clock_event_device *cd = &sibyte_hpt_clockevent; | 106 | unsigned int cpu = smp_processor_id(); |
107 | struct clock_event_device *cd = dev_id; | ||
108 | |||
109 | /* ACK interrupt */ | ||
110 | ____raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, | ||
111 | IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); | ||
136 | 112 | ||
137 | cd->event_handler(cd); | 113 | cd->event_handler(cd); |
138 | 114 | ||
@@ -145,15 +121,35 @@ static struct irqaction sibyte_irqaction = { | |||
145 | .name = "timer", | 121 | .name = "timer", |
146 | }; | 122 | }; |
147 | 123 | ||
124 | static DEFINE_PER_CPU(struct clock_event_device, sibyte_hpt_clockevent); | ||
125 | static DEFINE_PER_CPU(struct irqaction, sibyte_hpt_irqaction); | ||
126 | static DEFINE_PER_CPU(char [18], sibyte_hpt_name); | ||
127 | |||
148 | void __cpuinit sb1250_clockevent_init(void) | 128 | void __cpuinit sb1250_clockevent_init(void) |
149 | { | 129 | { |
150 | struct clock_event_device *cd = &sibyte_hpt_clockevent; | ||
151 | unsigned int cpu = smp_processor_id(); | 130 | unsigned int cpu = smp_processor_id(); |
152 | int irq = K_INT_TIMER_0 + cpu; | 131 | unsigned int irq = K_INT_TIMER_0 + cpu; |
132 | struct irqaction *action = &per_cpu(sibyte_hpt_irqaction, cpu); | ||
133 | struct clock_event_device *cd = &per_cpu(sibyte_hpt_clockevent, cpu); | ||
134 | unsigned char *name = per_cpu(sibyte_hpt_name, cpu); | ||
153 | 135 | ||
154 | /* Only have 4 general purpose timers, and we use last one as hpt */ | 136 | /* Only have 4 general purpose timers, and we use last one as hpt */ |
155 | BUG_ON(cpu > 2); | 137 | BUG_ON(cpu > 2); |
156 | 138 | ||
139 | sprintf(name, "bcm1480-counter %d", cpu); | ||
140 | cd->name = name; | ||
141 | cd->features = CLOCK_EVT_FEAT_PERIODIC | | ||
142 | CLOCK_EVT_MODE_ONESHOT; | ||
143 | clockevent_set_clock(cd, V_SCD_TIMER_FREQ); | ||
144 | cd->max_delta_ns = clockevent_delta2ns(0x7fffff, cd); | ||
145 | cd->min_delta_ns = clockevent_delta2ns(1, cd); | ||
146 | cd->rating = 200; | ||
147 | cd->irq = irq; | ||
148 | cd->cpumask = cpumask_of_cpu(cpu); | ||
149 | cd->set_next_event = sibyte_next_event; | ||
150 | cd->set_mode = sibyte_set_mode; | ||
151 | clockevents_register_device(cd); | ||
152 | |||
157 | sb1250_mask_irq(cpu, irq); | 153 | sb1250_mask_irq(cpu, irq); |
158 | 154 | ||
159 | /* Map the timer interrupt to ip[4] of this cpu */ | 155 | /* Map the timer interrupt to ip[4] of this cpu */ |
@@ -165,17 +161,11 @@ void __cpuinit sb1250_clockevent_init(void) | |||
165 | sb1250_unmask_irq(cpu, irq); | 161 | sb1250_unmask_irq(cpu, irq); |
166 | sb1250_steal_irq(irq); | 162 | sb1250_steal_irq(irq); |
167 | 163 | ||
168 | /* | 164 | action->handler = sibyte_counter_handler; |
169 | * This interrupt is "special" in that it doesn't use the request_irq | 165 | action->flags = IRQF_DISABLED | IRQF_PERCPU; |
170 | * way to hook the irq line. The timer interrupt is initialized early | 166 | action->name = name; |
171 | * enough to make this a major pain, and it's also firing enough to | 167 | action->dev_id = cd; |
172 | * warrant a bit of special case code. sb1250_timer_interrupt is | ||
173 | * called directly from irq_handler.S when IP[4] is set during an | ||
174 | * interrupt | ||
175 | */ | ||
176 | setup_irq(irq, &sibyte_irqaction); | 168 | setup_irq(irq, &sibyte_irqaction); |
177 | |||
178 | clockevents_register_device(cd); | ||
179 | } | 169 | } |
180 | 170 | ||
181 | /* | 171 | /* |
@@ -195,8 +185,7 @@ struct clocksource bcm1250_clocksource = { | |||
195 | .name = "MIPS", | 185 | .name = "MIPS", |
196 | .rating = 200, | 186 | .rating = 200, |
197 | .read = sb1250_hpt_read, | 187 | .read = sb1250_hpt_read, |
198 | .mask = CLOCKSOURCE_MASK(32), | 188 | .mask = CLOCKSOURCE_MASK(23), |
199 | .shift = 32, | ||
200 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | 189 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
201 | }; | 190 | }; |
202 | 191 | ||
@@ -204,6 +193,17 @@ void __init sb1250_clocksource_init(void) | |||
204 | { | 193 | { |
205 | struct clocksource *cs = &bcm1250_clocksource; | 194 | struct clocksource *cs = &bcm1250_clocksource; |
206 | 195 | ||
196 | /* Setup hpt using timer #3 but do not enable irq for it */ | ||
197 | __raw_writeq(0, | ||
198 | IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, | ||
199 | R_SCD_TIMER_CFG))); | ||
200 | __raw_writeq(SB1250_HPT_VALUE, | ||
201 | IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, | ||
202 | R_SCD_TIMER_INIT))); | ||
203 | __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, | ||
204 | IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, | ||
205 | R_SCD_TIMER_CFG))); | ||
206 | |||
207 | clocksource_set_clock(cs, V_SCD_TIMER_FREQ); | 207 | clocksource_set_clock(cs, V_SCD_TIMER_FREQ); |
208 | clocksource_register(cs); | 208 | clocksource_register(cs); |
209 | } | 209 | } |
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile index f3d0d7c70977..ae4a9b3d4fd6 100644 --- a/arch/parisc/Makefile +++ b/arch/parisc/Makefile | |||
@@ -19,26 +19,27 @@ | |||
19 | NM = sh $(srctree)/arch/parisc/nm | 19 | NM = sh $(srctree)/arch/parisc/nm |
20 | CHECKFLAGS += -D__hppa__=1 | 20 | CHECKFLAGS += -D__hppa__=1 |
21 | 21 | ||
22 | MACHINE := $(shell uname -m) | ||
23 | ifeq ($(MACHINE),parisc*) | ||
24 | NATIVE := 1 | ||
25 | endif | ||
26 | |||
22 | ifdef CONFIG_64BIT | 27 | ifdef CONFIG_64BIT |
23 | CROSS_COMPILE := $(shell if [ -x /usr/bin/hppa64-linux-gnu-gcc ]; then \ | ||
24 | echo hppa64-linux-gnu-; else echo hppa64-linux-; fi) | ||
25 | UTS_MACHINE := parisc64 | 28 | UTS_MACHINE := parisc64 |
26 | CHECKFLAGS += -D__LP64__=1 -m64 | 29 | CHECKFLAGS += -D__LP64__=1 -m64 |
27 | else | 30 | WIDTH := 64 |
28 | MACHINE := $(subst 64,,$(shell uname -m)) | 31 | CROSS_COMPILE := hppa64-linux-gnu- |
29 | ifneq ($(MACHINE),parisc) | 32 | else # 32-bit |
30 | CROSS_COMPILE := hppa-linux- | 33 | WIDTH := |
31 | endif | ||
32 | endif | 34 | endif |
33 | 35 | ||
34 | FINAL_LD=$(CROSS_COMPILE)ld --warn-common --warn-section-align | 36 | # attempt to help out folks who are cross-compiling |
37 | ifeq ($(NATIVE),1) | ||
38 | CROSS_COMPILE := hppa$(WIDTH)-linux- | ||
39 | endif | ||
35 | 40 | ||
36 | OBJCOPY_FLAGS =-O binary -R .note -R .comment -S | 41 | OBJCOPY_FLAGS =-O binary -R .note -R .comment -S |
37 | 42 | ||
38 | ifneq ($(call cc-ifversion, -lt, 0303, "bad"),) | ||
39 | $(error Sorry, GCC v3.3 or above is required.) | ||
40 | endif | ||
41 | |||
42 | cflags-y := -pipe | 43 | cflags-y := -pipe |
43 | 44 | ||
44 | # These flags should be implied by an hppa-linux configuration, but they | 45 | # These flags should be implied by an hppa-linux configuration, but they |
@@ -69,7 +70,7 @@ kernel-y := mm/ kernel/ math-emu/ kernel/init_task.o | |||
69 | kernel-$(CONFIG_HPUX) += hpux/ | 70 | kernel-$(CONFIG_HPUX) += hpux/ |
70 | 71 | ||
71 | core-y += $(addprefix arch/parisc/, $(kernel-y)) | 72 | core-y += $(addprefix arch/parisc/, $(kernel-y)) |
72 | libs-y += arch/parisc/lib/ `$(CC) -print-libgcc-file-name` | 73 | libs-y += arch/parisc/lib/ |
73 | 74 | ||
74 | drivers-$(CONFIG_OPROFILE) += arch/parisc/oprofile/ | 75 | drivers-$(CONFIG_OPROFILE) += arch/parisc/oprofile/ |
75 | 76 | ||
@@ -77,27 +78,27 @@ PALO := $(shell if which palo; then : ; \ | |||
77 | elif [ -x /sbin/palo ]; then echo /sbin/palo; \ | 78 | elif [ -x /sbin/palo ]; then echo /sbin/palo; \ |
78 | fi) | 79 | fi) |
79 | 80 | ||
81 | PALOCONF := $(shell if [ -f $(src)/palo.conf ]; then echo $(src)/palo.conf; \ | ||
82 | else echo $(obj)/palo.conf; \ | ||
83 | fi) | ||
84 | |||
80 | palo: vmlinux | 85 | palo: vmlinux |
81 | @if [ -x $PALO ]; then \ | 86 | @if test ! -x "$(PALO)"; then \ |
82 | echo 'ERROR: Please install palo first (apt-get install palo)';\ | 87 | echo 'ERROR: Please install palo first (apt-get install palo)';\ |
83 | echo 'or build it from source and install it somewhere in your $$PATH';\ | 88 | echo 'or build it from source and install it somewhere in your $$PATH';\ |
84 | false; \ | 89 | false; \ |
85 | fi | 90 | fi |
86 | @if [ ! -f ./palo.conf ]; then \ | 91 | @if test ! -f "$(PALOCONF)"; then \ |
87 | cp arch/parisc/defpalo.conf palo.conf; \ | 92 | cp $(src)/arch/parisc/defpalo.conf $(obj)/palo.conf; \ |
88 | echo 'A generic palo config file (./palo.conf) has been created for you.'; \ | 93 | echo 'A generic palo config file ($(obj)/palo.conf) has been created for you.'; \ |
89 | echo 'You should check it and re-run "make palo".'; \ | 94 | echo 'You should check it and re-run "make palo".'; \ |
90 | echo 'WARNING: the "lifimage" file is now placed in this directory by default!'; \ | 95 | echo 'WARNING: the "lifimage" file is now placed in this directory by default!'; \ |
91 | false; \ | 96 | false; \ |
92 | fi | 97 | fi |
93 | $(PALO) -f ./palo.conf | 98 | $(PALO) -f $(PALOCONF) |
94 | |||
95 | oldpalo: vmlinux | ||
96 | export TOPDIR=`pwd`; \ | ||
97 | unset STRIP LDFLAGS CPP CPPFLAGS AFLAGS CFLAGS CC LD; cd ../palo && make lifimage | ||
98 | 99 | ||
99 | # Shorthands for known targets not supported by parisc, use palo as default | 100 | # Shorthands for known targets not supported by parisc, use vmlinux as default |
100 | Image zImage bzImage: palo | 101 | Image zImage bzImage: vmlinux |
101 | 102 | ||
102 | kernel_install: vmlinux | 103 | kernel_install: vmlinux |
103 | sh $(src)/arch/parisc/install.sh \ | 104 | sh $(src)/arch/parisc/install.sh \ |
@@ -116,3 +117,12 @@ define archhelp | |||
116 | @echo ' (distribution) /sbin/installkernel or' | 117 | @echo ' (distribution) /sbin/installkernel or' |
117 | @echo ' copy to $$(INSTALL_PATH)' | 118 | @echo ' copy to $$(INSTALL_PATH)' |
118 | endef | 119 | endef |
120 | |||
121 | # we require gcc 3.3 or above to compile the kernel | ||
122 | archprepare: checkbin | ||
123 | checkbin: | ||
124 | @if test "$(call cc-version)" -lt "0303"; then \ | ||
125 | echo -n "Sorry, GCC v3.3 or above is required to build " ; \ | ||
126 | echo "the kernel." ; \ | ||
127 | false ; \ | ||
128 | fi | ||
diff --git a/arch/parisc/configs/712_defconfig b/arch/parisc/configs/712_defconfig index 41fd0696bbe7..9fc96e727165 100644 --- a/arch/parisc/configs/712_defconfig +++ b/arch/parisc/configs/712_defconfig | |||
@@ -1,39 +1,51 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.16-pa6 | 3 | # Linux kernel version: 2.6.23 |
4 | # Sun Mar 26 19:59:51 2006 | 4 | # Fri Oct 12 21:00:07 2007 |
5 | # | 5 | # |
6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
10 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
11 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
13 | CONFIG_GENERIC_BUG=y | ||
14 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 15 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
16 | CONFIG_GENERIC_TIME=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | 17 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_GENERIC_IRQ_PROBE=y | 18 | CONFIG_GENERIC_IRQ_PROBE=y |
19 | CONFIG_IRQ_PER_CPU=y | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
13 | 21 | ||
14 | # | 22 | # |
15 | # Code maturity level options | 23 | # General setup |
16 | # | 24 | # |
17 | CONFIG_EXPERIMENTAL=y | 25 | CONFIG_EXPERIMENTAL=y |
18 | CONFIG_BROKEN_ON_SMP=y | 26 | CONFIG_BROKEN_ON_SMP=y |
19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
20 | |||
21 | # | ||
22 | # General setup | ||
23 | # | ||
24 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
25 | # CONFIG_LOCALVERSION_AUTO is not set | 29 | # CONFIG_LOCALVERSION_AUTO is not set |
26 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
27 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
32 | CONFIG_SYSVIPC_SYSCTL=y | ||
28 | CONFIG_POSIX_MQUEUE=y | 33 | CONFIG_POSIX_MQUEUE=y |
29 | # CONFIG_BSD_PROCESS_ACCT is not set | 34 | # CONFIG_BSD_PROCESS_ACCT is not set |
30 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
36 | # CONFIG_USER_NS is not set | ||
31 | # CONFIG_AUDIT is not set | 37 | # CONFIG_AUDIT is not set |
32 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
33 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
40 | CONFIG_LOG_BUF_SHIFT=16 | ||
41 | CONFIG_SYSFS_DEPRECATED=y | ||
42 | # CONFIG_RELAY is not set | ||
43 | CONFIG_BLK_DEV_INITRD=y | ||
34 | CONFIG_INITRAMFS_SOURCE="" | 44 | CONFIG_INITRAMFS_SOURCE="" |
35 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 45 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
46 | CONFIG_SYSCTL=y | ||
36 | # CONFIG_EMBEDDED is not set | 47 | # CONFIG_EMBEDDED is not set |
48 | CONFIG_SYSCTL_SYSCALL=y | ||
37 | CONFIG_KALLSYMS=y | 49 | CONFIG_KALLSYMS=y |
38 | CONFIG_KALLSYMS_ALL=y | 50 | CONFIG_KALLSYMS_ALL=y |
39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 51 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -43,31 +55,29 @@ CONFIG_BUG=y | |||
43 | CONFIG_ELF_CORE=y | 55 | CONFIG_ELF_CORE=y |
44 | CONFIG_BASE_FULL=y | 56 | CONFIG_BASE_FULL=y |
45 | CONFIG_FUTEX=y | 57 | CONFIG_FUTEX=y |
58 | CONFIG_ANON_INODES=y | ||
46 | CONFIG_EPOLL=y | 59 | CONFIG_EPOLL=y |
60 | CONFIG_SIGNALFD=y | ||
61 | CONFIG_EVENTFD=y | ||
47 | CONFIG_SHMEM=y | 62 | CONFIG_SHMEM=y |
48 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 63 | CONFIG_VM_EVENT_COUNTERS=y |
49 | CONFIG_CC_ALIGN_LABELS=0 | ||
50 | CONFIG_CC_ALIGN_LOOPS=0 | ||
51 | CONFIG_CC_ALIGN_JUMPS=0 | ||
52 | CONFIG_SLAB=y | 64 | CONFIG_SLAB=y |
65 | # CONFIG_SLUB is not set | ||
66 | # CONFIG_SLOB is not set | ||
67 | CONFIG_RT_MUTEXES=y | ||
53 | # CONFIG_TINY_SHMEM is not set | 68 | # CONFIG_TINY_SHMEM is not set |
54 | CONFIG_BASE_SMALL=0 | 69 | CONFIG_BASE_SMALL=0 |
55 | # CONFIG_SLOB is not set | ||
56 | |||
57 | # | ||
58 | # Loadable module support | ||
59 | # | ||
60 | CONFIG_MODULES=y | 70 | CONFIG_MODULES=y |
61 | CONFIG_MODULE_UNLOAD=y | 71 | CONFIG_MODULE_UNLOAD=y |
62 | CONFIG_MODULE_FORCE_UNLOAD=y | 72 | CONFIG_MODULE_FORCE_UNLOAD=y |
63 | CONFIG_OBSOLETE_MODPARM=y | ||
64 | # CONFIG_MODVERSIONS is not set | 73 | # CONFIG_MODVERSIONS is not set |
65 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 74 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
66 | CONFIG_KMOD=y | 75 | CONFIG_KMOD=y |
67 | 76 | CONFIG_BLOCK=y | |
68 | # | 77 | # CONFIG_LBD is not set |
69 | # Block layer | 78 | # CONFIG_BLK_DEV_IO_TRACE is not set |
70 | # | 79 | # CONFIG_LSF is not set |
80 | # CONFIG_BLK_DEV_BSG is not set | ||
71 | 81 | ||
72 | # | 82 | # |
73 | # IO Schedulers | 83 | # IO Schedulers |
@@ -91,6 +101,9 @@ CONFIG_PA7100LC=y | |||
91 | # CONFIG_PA7300LC is not set | 101 | # CONFIG_PA7300LC is not set |
92 | # CONFIG_PA8X00 is not set | 102 | # CONFIG_PA8X00 is not set |
93 | CONFIG_PA11=y | 103 | CONFIG_PA11=y |
104 | CONFIG_PARISC_PAGE_SIZE_4KB=y | ||
105 | # CONFIG_PARISC_PAGE_SIZE_16KB is not set | ||
106 | # CONFIG_PARISC_PAGE_SIZE_64KB is not set | ||
94 | # CONFIG_SMP is not set | 107 | # CONFIG_SMP is not set |
95 | CONFIG_ARCH_FLATMEM_ENABLE=y | 108 | CONFIG_ARCH_FLATMEM_ENABLE=y |
96 | # CONFIG_PREEMPT_NONE is not set | 109 | # CONFIG_PREEMPT_NONE is not set |
@@ -98,6 +111,7 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
98 | # CONFIG_PREEMPT is not set | 111 | # CONFIG_PREEMPT is not set |
99 | # CONFIG_HZ_100 is not set | 112 | # CONFIG_HZ_100 is not set |
100 | CONFIG_HZ_250=y | 113 | CONFIG_HZ_250=y |
114 | # CONFIG_HZ_300 is not set | ||
101 | # CONFIG_HZ_1000 is not set | 115 | # CONFIG_HZ_1000 is not set |
102 | CONFIG_HZ=250 | 116 | CONFIG_HZ=250 |
103 | CONFIG_SELECT_MEMORY_MODEL=y | 117 | CONFIG_SELECT_MEMORY_MODEL=y |
@@ -108,6 +122,9 @@ CONFIG_FLATMEM=y | |||
108 | CONFIG_FLAT_NODE_MEM_MAP=y | 122 | CONFIG_FLAT_NODE_MEM_MAP=y |
109 | # CONFIG_SPARSEMEM_STATIC is not set | 123 | # CONFIG_SPARSEMEM_STATIC is not set |
110 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 124 | CONFIG_SPLIT_PTLOCK_CPUS=4096 |
125 | # CONFIG_RESOURCES_64BIT is not set | ||
126 | CONFIG_ZONE_DMA_FLAG=0 | ||
127 | CONFIG_VIRT_TO_BUS=y | ||
111 | # CONFIG_HPUX is not set | 128 | # CONFIG_HPUX is not set |
112 | 129 | ||
113 | # | 130 | # |
@@ -120,6 +137,7 @@ CONFIG_GSC_LASI=y | |||
120 | # CONFIG_GSC_WAX is not set | 137 | # CONFIG_GSC_WAX is not set |
121 | # CONFIG_EISA is not set | 138 | # CONFIG_EISA is not set |
122 | # CONFIG_PCI is not set | 139 | # CONFIG_PCI is not set |
140 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
123 | 141 | ||
124 | # | 142 | # |
125 | # PCCARD (PCMCIA/CardBus) support | 143 | # PCCARD (PCMCIA/CardBus) support |
@@ -127,14 +145,11 @@ CONFIG_GSC_LASI=y | |||
127 | # CONFIG_PCCARD is not set | 145 | # CONFIG_PCCARD is not set |
128 | 146 | ||
129 | # | 147 | # |
130 | # PCI Hotplug Support | ||
131 | # | ||
132 | |||
133 | # | ||
134 | # PA-RISC specific drivers | 148 | # PA-RISC specific drivers |
135 | # | 149 | # |
136 | CONFIG_CHASSIS_LCD_LED=y | 150 | CONFIG_CHASSIS_LCD_LED=y |
137 | # CONFIG_PDC_CHASSIS is not set | 151 | # CONFIG_PDC_CHASSIS is not set |
152 | CONFIG_PDC_CHASSIS_WARN=y | ||
138 | CONFIG_PDC_STABLE=y | 153 | CONFIG_PDC_STABLE=y |
139 | 154 | ||
140 | # | 155 | # |
@@ -151,13 +166,15 @@ CONFIG_NET=y | |||
151 | # | 166 | # |
152 | # Networking options | 167 | # Networking options |
153 | # | 168 | # |
154 | # CONFIG_NETDEBUG is not set | ||
155 | CONFIG_PACKET=y | 169 | CONFIG_PACKET=y |
156 | CONFIG_PACKET_MMAP=y | 170 | CONFIG_PACKET_MMAP=y |
157 | CONFIG_UNIX=y | 171 | CONFIG_UNIX=y |
158 | CONFIG_XFRM=y | 172 | CONFIG_XFRM=y |
159 | CONFIG_XFRM_USER=m | 173 | CONFIG_XFRM_USER=m |
174 | # CONFIG_XFRM_SUB_POLICY is not set | ||
175 | # CONFIG_XFRM_MIGRATE is not set | ||
160 | CONFIG_NET_KEY=m | 176 | CONFIG_NET_KEY=m |
177 | # CONFIG_NET_KEY_MIGRATE is not set | ||
161 | CONFIG_INET=y | 178 | CONFIG_INET=y |
162 | CONFIG_IP_MULTICAST=y | 179 | CONFIG_IP_MULTICAST=y |
163 | # CONFIG_IP_ADVANCED_ROUTER is not set | 180 | # CONFIG_IP_ADVANCED_ROUTER is not set |
@@ -174,17 +191,23 @@ CONFIG_IP_PNP_BOOTP=y | |||
174 | CONFIG_INET_AH=m | 191 | CONFIG_INET_AH=m |
175 | CONFIG_INET_ESP=m | 192 | CONFIG_INET_ESP=m |
176 | # CONFIG_INET_IPCOMP is not set | 193 | # CONFIG_INET_IPCOMP is not set |
177 | CONFIG_INET_TUNNEL=m | 194 | # CONFIG_INET_XFRM_TUNNEL is not set |
195 | # CONFIG_INET_TUNNEL is not set | ||
196 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
197 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
198 | CONFIG_INET_XFRM_MODE_BEET=y | ||
199 | # CONFIG_INET_LRO is not set | ||
178 | CONFIG_INET_DIAG=m | 200 | CONFIG_INET_DIAG=m |
179 | CONFIG_INET_TCP_DIAG=m | 201 | CONFIG_INET_TCP_DIAG=m |
180 | # CONFIG_TCP_CONG_ADVANCED is not set | 202 | # CONFIG_TCP_CONG_ADVANCED is not set |
181 | CONFIG_TCP_CONG_BIC=y | 203 | CONFIG_TCP_CONG_CUBIC=y |
182 | 204 | CONFIG_DEFAULT_TCP_CONG="cubic" | |
183 | # | 205 | # CONFIG_TCP_MD5SIG is not set |
184 | # IP: Virtual Server Configuration | ||
185 | # | ||
186 | # CONFIG_IP_VS is not set | 206 | # CONFIG_IP_VS is not set |
187 | # CONFIG_IPV6 is not set | 207 | # CONFIG_IPV6 is not set |
208 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
209 | # CONFIG_INET6_TUNNEL is not set | ||
210 | # CONFIG_NETWORK_SECMARK is not set | ||
188 | CONFIG_NETFILTER=y | 211 | CONFIG_NETFILTER=y |
189 | # CONFIG_NETFILTER_DEBUG is not set | 212 | # CONFIG_NETFILTER_DEBUG is not set |
190 | 213 | ||
@@ -192,37 +215,18 @@ CONFIG_NETFILTER=y | |||
192 | # Core Netfilter Configuration | 215 | # Core Netfilter Configuration |
193 | # | 216 | # |
194 | # CONFIG_NETFILTER_NETLINK is not set | 217 | # CONFIG_NETFILTER_NETLINK is not set |
218 | # CONFIG_NF_CONNTRACK_ENABLED is not set | ||
219 | # CONFIG_NF_CONNTRACK is not set | ||
195 | # CONFIG_NETFILTER_XTABLES is not set | 220 | # CONFIG_NETFILTER_XTABLES is not set |
196 | 221 | ||
197 | # | 222 | # |
198 | # IP: Netfilter Configuration | 223 | # IP: Netfilter Configuration |
199 | # | 224 | # |
200 | CONFIG_IP_NF_CONNTRACK=m | ||
201 | # CONFIG_IP_NF_CT_ACCT is not set | ||
202 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
203 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
204 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
205 | CONFIG_IP_NF_FTP=m | ||
206 | CONFIG_IP_NF_IRC=m | ||
207 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
208 | CONFIG_IP_NF_TFTP=m | ||
209 | CONFIG_IP_NF_AMANDA=m | ||
210 | # CONFIG_IP_NF_PPTP is not set | ||
211 | CONFIG_IP_NF_QUEUE=m | 225 | CONFIG_IP_NF_QUEUE=m |
212 | 226 | # CONFIG_IP_NF_IPTABLES is not set | |
213 | # | 227 | # CONFIG_IP_NF_ARPTABLES is not set |
214 | # DCCP Configuration (EXPERIMENTAL) | ||
215 | # | ||
216 | # CONFIG_IP_DCCP is not set | 228 | # CONFIG_IP_DCCP is not set |
217 | |||
218 | # | ||
219 | # SCTP Configuration (EXPERIMENTAL) | ||
220 | # | ||
221 | # CONFIG_IP_SCTP is not set | 229 | # CONFIG_IP_SCTP is not set |
222 | |||
223 | # | ||
224 | # TIPC Configuration (EXPERIMENTAL) | ||
225 | # | ||
226 | # CONFIG_TIPC is not set | 230 | # CONFIG_TIPC is not set |
227 | # CONFIG_ATM is not set | 231 | # CONFIG_ATM is not set |
228 | # CONFIG_BRIDGE is not set | 232 | # CONFIG_BRIDGE is not set |
@@ -234,7 +238,6 @@ CONFIG_LLC2=m | |||
234 | # CONFIG_ATALK is not set | 238 | # CONFIG_ATALK is not set |
235 | # CONFIG_X25 is not set | 239 | # CONFIG_X25 is not set |
236 | # CONFIG_LAPB is not set | 240 | # CONFIG_LAPB is not set |
237 | # CONFIG_NET_DIVERT is not set | ||
238 | # CONFIG_ECONET is not set | 241 | # CONFIG_ECONET is not set |
239 | # CONFIG_WAN_ROUTER is not set | 242 | # CONFIG_WAN_ROUTER is not set |
240 | 243 | ||
@@ -250,7 +253,17 @@ CONFIG_NET_PKTGEN=m | |||
250 | # CONFIG_HAMRADIO is not set | 253 | # CONFIG_HAMRADIO is not set |
251 | # CONFIG_IRDA is not set | 254 | # CONFIG_IRDA is not set |
252 | # CONFIG_BT is not set | 255 | # CONFIG_BT is not set |
256 | # CONFIG_AF_RXRPC is not set | ||
257 | |||
258 | # | ||
259 | # Wireless | ||
260 | # | ||
261 | # CONFIG_CFG80211 is not set | ||
262 | # CONFIG_WIRELESS_EXT is not set | ||
263 | # CONFIG_MAC80211 is not set | ||
253 | # CONFIG_IEEE80211 is not set | 264 | # CONFIG_IEEE80211 is not set |
265 | # CONFIG_RFKILL is not set | ||
266 | # CONFIG_NET_9P is not set | ||
254 | 267 | ||
255 | # | 268 | # |
256 | # Device Drivers | 269 | # Device Drivers |
@@ -259,39 +272,24 @@ CONFIG_NET_PKTGEN=m | |||
259 | # | 272 | # |
260 | # Generic Driver Options | 273 | # Generic Driver Options |
261 | # | 274 | # |
275 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
262 | # CONFIG_STANDALONE is not set | 276 | # CONFIG_STANDALONE is not set |
263 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 277 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
264 | CONFIG_FW_LOADER=y | 278 | CONFIG_FW_LOADER=y |
265 | # CONFIG_DEBUG_DRIVER is not set | 279 | # CONFIG_DEBUG_DRIVER is not set |
266 | 280 | # CONFIG_DEBUG_DEVRES is not set | |
267 | # | 281 | # CONFIG_SYS_HYPERVISOR is not set |
268 | # Connector - unified userspace <-> kernelspace linker | ||
269 | # | ||
270 | # CONFIG_CONNECTOR is not set | 282 | # CONFIG_CONNECTOR is not set |
271 | |||
272 | # | ||
273 | # Memory Technology Devices (MTD) | ||
274 | # | ||
275 | # CONFIG_MTD is not set | 283 | # CONFIG_MTD is not set |
276 | |||
277 | # | ||
278 | # Parallel port support | ||
279 | # | ||
280 | CONFIG_PARPORT=y | 284 | CONFIG_PARPORT=y |
281 | CONFIG_PARPORT_PC=m | 285 | CONFIG_PARPORT_PC=m |
282 | # CONFIG_PARPORT_PC_FIFO is not set | 286 | # CONFIG_PARPORT_PC_FIFO is not set |
283 | # CONFIG_PARPORT_PC_SUPERIO is not set | 287 | # CONFIG_PARPORT_PC_SUPERIO is not set |
284 | CONFIG_PARPORT_NOT_PC=y | ||
285 | CONFIG_PARPORT_GSC=y | 288 | CONFIG_PARPORT_GSC=y |
289 | # CONFIG_PARPORT_AX88796 is not set | ||
286 | # CONFIG_PARPORT_1284 is not set | 290 | # CONFIG_PARPORT_1284 is not set |
287 | 291 | CONFIG_PARPORT_NOT_PC=y | |
288 | # | 292 | CONFIG_BLK_DEV=y |
289 | # Plug and Play support | ||
290 | # | ||
291 | |||
292 | # | ||
293 | # Block devices | ||
294 | # | ||
295 | # CONFIG_PARIDE is not set | 293 | # CONFIG_PARIDE is not set |
296 | # CONFIG_BLK_DEV_COW_COMMON is not set | 294 | # CONFIG_BLK_DEV_COW_COMMON is not set |
297 | CONFIG_BLK_DEV_LOOP=y | 295 | CONFIG_BLK_DEV_LOOP=y |
@@ -300,13 +298,11 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y | |||
300 | CONFIG_BLK_DEV_RAM=y | 298 | CONFIG_BLK_DEV_RAM=y |
301 | CONFIG_BLK_DEV_RAM_COUNT=16 | 299 | CONFIG_BLK_DEV_RAM_COUNT=16 |
302 | CONFIG_BLK_DEV_RAM_SIZE=6144 | 300 | CONFIG_BLK_DEV_RAM_SIZE=6144 |
303 | CONFIG_BLK_DEV_INITRD=y | 301 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
304 | # CONFIG_CDROM_PKTCDVD is not set | 302 | # CONFIG_CDROM_PKTCDVD is not set |
305 | CONFIG_ATA_OVER_ETH=m | 303 | CONFIG_ATA_OVER_ETH=m |
306 | 304 | CONFIG_MISC_DEVICES=y | |
307 | # | 305 | # CONFIG_EEPROM_93CX6 is not set |
308 | # ATA/ATAPI/MFM/RLL support | ||
309 | # | ||
310 | # CONFIG_IDE is not set | 306 | # CONFIG_IDE is not set |
311 | 307 | ||
312 | # | 308 | # |
@@ -314,6 +310,9 @@ CONFIG_ATA_OVER_ETH=m | |||
314 | # | 310 | # |
315 | # CONFIG_RAID_ATTRS is not set | 311 | # CONFIG_RAID_ATTRS is not set |
316 | CONFIG_SCSI=y | 312 | CONFIG_SCSI=y |
313 | CONFIG_SCSI_DMA=y | ||
314 | # CONFIG_SCSI_TGT is not set | ||
315 | # CONFIG_SCSI_NETLINK is not set | ||
317 | CONFIG_SCSI_PROC_FS=y | 316 | CONFIG_SCSI_PROC_FS=y |
318 | 317 | ||
319 | # | 318 | # |
@@ -333,104 +332,61 @@ CONFIG_CHR_DEV_SG=y | |||
333 | # CONFIG_SCSI_MULTI_LUN is not set | 332 | # CONFIG_SCSI_MULTI_LUN is not set |
334 | # CONFIG_SCSI_CONSTANTS is not set | 333 | # CONFIG_SCSI_CONSTANTS is not set |
335 | # CONFIG_SCSI_LOGGING is not set | 334 | # CONFIG_SCSI_LOGGING is not set |
335 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
336 | CONFIG_SCSI_WAIT_SCAN=m | ||
336 | 337 | ||
337 | # | 338 | # |
338 | # SCSI Transport Attributes | 339 | # SCSI Transports |
339 | # | 340 | # |
340 | CONFIG_SCSI_SPI_ATTRS=y | 341 | CONFIG_SCSI_SPI_ATTRS=y |
341 | # CONFIG_SCSI_FC_ATTRS is not set | 342 | # CONFIG_SCSI_FC_ATTRS is not set |
342 | CONFIG_SCSI_ISCSI_ATTRS=m | 343 | CONFIG_SCSI_ISCSI_ATTRS=m |
343 | # CONFIG_SCSI_SAS_ATTRS is not set | 344 | # CONFIG_SCSI_SAS_LIBSAS is not set |
344 | 345 | CONFIG_SCSI_LOWLEVEL=y | |
345 | # | ||
346 | # SCSI low-level drivers | ||
347 | # | ||
348 | # CONFIG_ISCSI_TCP is not set | 346 | # CONFIG_ISCSI_TCP is not set |
349 | # CONFIG_SCSI_SATA is not set | ||
350 | # CONFIG_SCSI_PPA is not set | 347 | # CONFIG_SCSI_PPA is not set |
351 | # CONFIG_SCSI_IMM is not set | 348 | # CONFIG_SCSI_IMM is not set |
352 | CONFIG_SCSI_LASI700=y | 349 | CONFIG_SCSI_LASI700=y |
353 | CONFIG_53C700_LE_ON_BE=y | 350 | CONFIG_53C700_LE_ON_BE=y |
354 | # CONFIG_SCSI_ZALON is not set | 351 | # CONFIG_SCSI_ZALON is not set |
355 | CONFIG_SCSI_DEBUG=m | 352 | CONFIG_SCSI_DEBUG=m |
356 | 353 | # CONFIG_ATA is not set | |
357 | # | ||
358 | # Multi-device support (RAID and LVM) | ||
359 | # | ||
360 | CONFIG_MD=y | 354 | CONFIG_MD=y |
361 | CONFIG_BLK_DEV_MD=m | 355 | CONFIG_BLK_DEV_MD=m |
362 | CONFIG_MD_LINEAR=m | 356 | CONFIG_MD_LINEAR=m |
363 | CONFIG_MD_RAID0=m | 357 | CONFIG_MD_RAID0=m |
364 | CONFIG_MD_RAID1=m | 358 | CONFIG_MD_RAID1=m |
365 | # CONFIG_MD_RAID10 is not set | 359 | # CONFIG_MD_RAID10 is not set |
366 | # CONFIG_MD_RAID5 is not set | 360 | # CONFIG_MD_RAID456 is not set |
367 | # CONFIG_MD_RAID6 is not set | ||
368 | # CONFIG_MD_MULTIPATH is not set | 361 | # CONFIG_MD_MULTIPATH is not set |
369 | # CONFIG_MD_FAULTY is not set | 362 | # CONFIG_MD_FAULTY is not set |
370 | # CONFIG_BLK_DEV_DM is not set | 363 | # CONFIG_BLK_DEV_DM is not set |
371 | |||
372 | # | ||
373 | # Fusion MPT device support | ||
374 | # | ||
375 | # CONFIG_FUSION is not set | ||
376 | |||
377 | # | ||
378 | # IEEE 1394 (FireWire) support | ||
379 | # | ||
380 | |||
381 | # | ||
382 | # I2O device support | ||
383 | # | ||
384 | |||
385 | # | ||
386 | # Network device support | ||
387 | # | ||
388 | CONFIG_NETDEVICES=y | 364 | CONFIG_NETDEVICES=y |
365 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
389 | CONFIG_DUMMY=m | 366 | CONFIG_DUMMY=m |
390 | CONFIG_BONDING=m | 367 | CONFIG_BONDING=m |
368 | # CONFIG_MACVLAN is not set | ||
391 | # CONFIG_EQUALIZER is not set | 369 | # CONFIG_EQUALIZER is not set |
392 | CONFIG_TUN=m | 370 | CONFIG_TUN=m |
393 | 371 | # CONFIG_VETH is not set | |
394 | # | ||
395 | # PHY device support | ||
396 | # | ||
397 | # CONFIG_PHYLIB is not set | 372 | # CONFIG_PHYLIB is not set |
398 | |||
399 | # | ||
400 | # Ethernet (10 or 100Mbit) | ||
401 | # | ||
402 | CONFIG_NET_ETHERNET=y | 373 | CONFIG_NET_ETHERNET=y |
403 | CONFIG_MII=m | 374 | CONFIG_MII=m |
404 | CONFIG_LASI_82596=y | 375 | CONFIG_LASI_82596=y |
376 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
377 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
378 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
379 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
380 | # CONFIG_B44 is not set | ||
405 | # CONFIG_NET_POCKET is not set | 381 | # CONFIG_NET_POCKET is not set |
382 | CONFIG_NETDEV_1000=y | ||
383 | CONFIG_NETDEV_10000=y | ||
406 | 384 | ||
407 | # | 385 | # |
408 | # Ethernet (1000 Mbit) | 386 | # Wireless LAN |
409 | # | ||
410 | |||
411 | # | ||
412 | # Ethernet (10000 Mbit) | ||
413 | # | ||
414 | |||
415 | # | ||
416 | # Token Ring devices | ||
417 | # | ||
418 | |||
419 | # | ||
420 | # Wireless LAN (non-hamradio) | ||
421 | # | ||
422 | CONFIG_NET_RADIO=y | ||
423 | |||
424 | # | ||
425 | # Obsolete Wireless cards support (pre-802.11) | ||
426 | # | ||
427 | # CONFIG_STRIP is not set | ||
428 | # CONFIG_ATMEL is not set | ||
429 | # CONFIG_HOSTAP is not set | ||
430 | |||
431 | # | ||
432 | # Wan interfaces | ||
433 | # | 387 | # |
388 | # CONFIG_WLAN_PRE80211 is not set | ||
389 | # CONFIG_WLAN_80211 is not set | ||
434 | # CONFIG_WAN is not set | 390 | # CONFIG_WAN is not set |
435 | # CONFIG_PLIP is not set | 391 | # CONFIG_PLIP is not set |
436 | CONFIG_PPP=m | 392 | CONFIG_PPP=m |
@@ -442,26 +398,22 @@ CONFIG_PPP_DEFLATE=m | |||
442 | CONFIG_PPP_BSDCOMP=m | 398 | CONFIG_PPP_BSDCOMP=m |
443 | CONFIG_PPP_MPPE=m | 399 | CONFIG_PPP_MPPE=m |
444 | CONFIG_PPPOE=m | 400 | CONFIG_PPPOE=m |
401 | # CONFIG_PPPOL2TP is not set | ||
445 | # CONFIG_SLIP is not set | 402 | # CONFIG_SLIP is not set |
403 | CONFIG_SLHC=m | ||
446 | # CONFIG_SHAPER is not set | 404 | # CONFIG_SHAPER is not set |
447 | # CONFIG_NETCONSOLE is not set | 405 | # CONFIG_NETCONSOLE is not set |
448 | # CONFIG_NETPOLL is not set | 406 | # CONFIG_NETPOLL is not set |
449 | # CONFIG_NET_POLL_CONTROLLER is not set | 407 | # CONFIG_NET_POLL_CONTROLLER is not set |
450 | |||
451 | # | ||
452 | # ISDN subsystem | ||
453 | # | ||
454 | # CONFIG_ISDN is not set | 408 | # CONFIG_ISDN is not set |
455 | |||
456 | # | ||
457 | # Telephony Support | ||
458 | # | ||
459 | # CONFIG_PHONE is not set | 409 | # CONFIG_PHONE is not set |
460 | 410 | ||
461 | # | 411 | # |
462 | # Input device support | 412 | # Input device support |
463 | # | 413 | # |
464 | CONFIG_INPUT=y | 414 | CONFIG_INPUT=y |
415 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
416 | # CONFIG_INPUT_POLLDEV is not set | ||
465 | 417 | ||
466 | # | 418 | # |
467 | # Userland interfaces | 419 | # Userland interfaces |
@@ -486,14 +438,22 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y | |||
486 | # CONFIG_KEYBOARD_LKKBD is not set | 438 | # CONFIG_KEYBOARD_LKKBD is not set |
487 | # CONFIG_KEYBOARD_XTKBD is not set | 439 | # CONFIG_KEYBOARD_XTKBD is not set |
488 | # CONFIG_KEYBOARD_NEWTON is not set | 440 | # CONFIG_KEYBOARD_NEWTON is not set |
441 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
489 | # CONFIG_KEYBOARD_HIL_OLD is not set | 442 | # CONFIG_KEYBOARD_HIL_OLD is not set |
490 | CONFIG_KEYBOARD_HIL=y | 443 | CONFIG_KEYBOARD_HIL=y |
491 | CONFIG_INPUT_MOUSE=y | 444 | CONFIG_INPUT_MOUSE=y |
492 | CONFIG_MOUSE_PS2=y | 445 | CONFIG_MOUSE_PS2=y |
446 | CONFIG_MOUSE_PS2_ALPS=y | ||
447 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
448 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
449 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
450 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
451 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
493 | CONFIG_MOUSE_SERIAL=m | 452 | CONFIG_MOUSE_SERIAL=m |
494 | # CONFIG_MOUSE_VSXXXAA is not set | 453 | # CONFIG_MOUSE_VSXXXAA is not set |
495 | CONFIG_MOUSE_HIL=m | 454 | CONFIG_MOUSE_HIL=m |
496 | # CONFIG_INPUT_JOYSTICK is not set | 455 | # CONFIG_INPUT_JOYSTICK is not set |
456 | # CONFIG_INPUT_TABLET is not set | ||
497 | # CONFIG_INPUT_TOUCHSCREEN is not set | 457 | # CONFIG_INPUT_TOUCHSCREEN is not set |
498 | # CONFIG_INPUT_MISC is not set | 458 | # CONFIG_INPUT_MISC is not set |
499 | 459 | ||
@@ -516,6 +476,7 @@ CONFIG_SERIO_LIBPS2=y | |||
516 | CONFIG_VT=y | 476 | CONFIG_VT=y |
517 | CONFIG_VT_CONSOLE=y | 477 | CONFIG_VT_CONSOLE=y |
518 | CONFIG_HW_CONSOLE=y | 478 | CONFIG_HW_CONSOLE=y |
479 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
519 | # CONFIG_SERIAL_NONSTANDARD is not set | 480 | # CONFIG_SERIAL_NONSTANDARD is not set |
520 | 481 | ||
521 | # | 482 | # |
@@ -523,6 +484,7 @@ CONFIG_HW_CONSOLE=y | |||
523 | # | 484 | # |
524 | CONFIG_SERIAL_8250=y | 485 | CONFIG_SERIAL_8250=y |
525 | CONFIG_SERIAL_8250_CONSOLE=y | 486 | CONFIG_SERIAL_8250_CONSOLE=y |
487 | CONFIG_SERIAL_8250_GSC=y | ||
526 | CONFIG_SERIAL_8250_NR_UARTS=17 | 488 | CONFIG_SERIAL_8250_NR_UARTS=17 |
527 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 489 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
528 | CONFIG_SERIAL_8250_EXTENDED=y | 490 | CONFIG_SERIAL_8250_EXTENDED=y |
@@ -545,36 +507,15 @@ CONFIG_PRINTER=m | |||
545 | # CONFIG_LP_CONSOLE is not set | 507 | # CONFIG_LP_CONSOLE is not set |
546 | CONFIG_PPDEV=m | 508 | CONFIG_PPDEV=m |
547 | # CONFIG_TIPAR is not set | 509 | # CONFIG_TIPAR is not set |
548 | |||
549 | # | ||
550 | # IPMI | ||
551 | # | ||
552 | # CONFIG_IPMI_HANDLER is not set | 510 | # CONFIG_IPMI_HANDLER is not set |
553 | |||
554 | # | ||
555 | # Watchdog Cards | ||
556 | # | ||
557 | # CONFIG_WATCHDOG is not set | 511 | # CONFIG_WATCHDOG is not set |
512 | # CONFIG_HW_RANDOM is not set | ||
558 | CONFIG_GEN_RTC=y | 513 | CONFIG_GEN_RTC=y |
559 | CONFIG_GEN_RTC_X=y | 514 | CONFIG_GEN_RTC_X=y |
560 | # CONFIG_DTLK is not set | ||
561 | # CONFIG_R3964 is not set | 515 | # CONFIG_R3964 is not set |
562 | |||
563 | # | ||
564 | # Ftape, the floppy tape device driver | ||
565 | # | ||
566 | CONFIG_RAW_DRIVER=y | 516 | CONFIG_RAW_DRIVER=y |
567 | CONFIG_MAX_RAW_DEVS=256 | 517 | CONFIG_MAX_RAW_DEVS=256 |
568 | |||
569 | # | ||
570 | # TPM devices | ||
571 | # | ||
572 | # CONFIG_TCG_TPM is not set | 518 | # CONFIG_TCG_TPM is not set |
573 | # CONFIG_TELCLOCK is not set | ||
574 | |||
575 | # | ||
576 | # I2C support | ||
577 | # | ||
578 | # CONFIG_I2C is not set | 519 | # CONFIG_I2C is not set |
579 | 520 | ||
580 | # | 521 | # |
@@ -582,46 +523,59 @@ CONFIG_MAX_RAW_DEVS=256 | |||
582 | # | 523 | # |
583 | # CONFIG_SPI is not set | 524 | # CONFIG_SPI is not set |
584 | # CONFIG_SPI_MASTER is not set | 525 | # CONFIG_SPI_MASTER is not set |
585 | |||
586 | # | ||
587 | # Dallas's 1-wire bus | ||
588 | # | ||
589 | # CONFIG_W1 is not set | 526 | # CONFIG_W1 is not set |
590 | 527 | # CONFIG_POWER_SUPPLY is not set | |
591 | # | ||
592 | # Hardware Monitoring support | ||
593 | # | ||
594 | # CONFIG_HWMON is not set | 528 | # CONFIG_HWMON is not set |
595 | # CONFIG_HWMON_VID is not set | ||
596 | 529 | ||
597 | # | 530 | # |
598 | # Misc devices | 531 | # Sonics Silicon Backplane |
599 | # | 532 | # |
533 | CONFIG_SSB_POSSIBLE=y | ||
534 | # CONFIG_SSB is not set | ||
600 | 535 | ||
601 | # | 536 | # |
602 | # Multimedia Capabilities Port drivers | 537 | # Multifunction device drivers |
603 | # | 538 | # |
539 | # CONFIG_MFD_SM501 is not set | ||
604 | 540 | ||
605 | # | 541 | # |
606 | # Multimedia devices | 542 | # Multimedia devices |
607 | # | 543 | # |
608 | # CONFIG_VIDEO_DEV is not set | 544 | # CONFIG_VIDEO_DEV is not set |
545 | # CONFIG_DVB_CORE is not set | ||
546 | # CONFIG_DAB is not set | ||
609 | 547 | ||
610 | # | 548 | # |
611 | # Digital Video Broadcasting Devices | 549 | # Graphics support |
612 | # | 550 | # |
613 | # CONFIG_DVB is not set | 551 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
614 | 552 | ||
615 | # | 553 | # |
616 | # Graphics support | 554 | # Display device support |
617 | # | 555 | # |
556 | # CONFIG_DISPLAY_SUPPORT is not set | ||
557 | # CONFIG_VGASTATE is not set | ||
558 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
618 | CONFIG_FB=y | 559 | CONFIG_FB=y |
560 | # CONFIG_FIRMWARE_EDID is not set | ||
561 | # CONFIG_FB_DDC is not set | ||
619 | CONFIG_FB_CFB_FILLRECT=y | 562 | CONFIG_FB_CFB_FILLRECT=y |
620 | CONFIG_FB_CFB_COPYAREA=y | 563 | CONFIG_FB_CFB_COPYAREA=y |
621 | CONFIG_FB_CFB_IMAGEBLIT=y | 564 | CONFIG_FB_CFB_IMAGEBLIT=y |
565 | # CONFIG_FB_SYS_FILLRECT is not set | ||
566 | # CONFIG_FB_SYS_COPYAREA is not set | ||
567 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
568 | # CONFIG_FB_SYS_FOPS is not set | ||
569 | CONFIG_FB_DEFERRED_IO=y | ||
570 | # CONFIG_FB_SVGALIB is not set | ||
622 | # CONFIG_FB_MACMODES is not set | 571 | # CONFIG_FB_MACMODES is not set |
572 | # CONFIG_FB_BACKLIGHT is not set | ||
623 | CONFIG_FB_MODE_HELPERS=y | 573 | CONFIG_FB_MODE_HELPERS=y |
624 | CONFIG_FB_TILEBLITTING=y | 574 | CONFIG_FB_TILEBLITTING=y |
575 | |||
576 | # | ||
577 | # Frame buffer hardware drivers | ||
578 | # | ||
625 | CONFIG_FB_STI=y | 579 | CONFIG_FB_STI=y |
626 | # CONFIG_FB_S1D13XXX is not set | 580 | # CONFIG_FB_S1D13XXX is not set |
627 | # CONFIG_FB_VIRTUAL is not set | 581 | # CONFIG_FB_VIRTUAL is not set |
@@ -633,6 +587,7 @@ CONFIG_DUMMY_CONSOLE=y | |||
633 | CONFIG_DUMMY_CONSOLE_COLUMNS=128 | 587 | CONFIG_DUMMY_CONSOLE_COLUMNS=128 |
634 | CONFIG_DUMMY_CONSOLE_ROWS=48 | 588 | CONFIG_DUMMY_CONSOLE_ROWS=48 |
635 | CONFIG_FRAMEBUFFER_CONSOLE=y | 589 | CONFIG_FRAMEBUFFER_CONSOLE=y |
590 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
636 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 591 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
637 | CONFIG_STI_CONSOLE=y | 592 | CONFIG_STI_CONSOLE=y |
638 | CONFIG_FONTS=y | 593 | CONFIG_FONTS=y |
@@ -646,16 +601,11 @@ CONFIG_FONT_8x16=y | |||
646 | # CONFIG_FONT_SUN8x16 is not set | 601 | # CONFIG_FONT_SUN8x16 is not set |
647 | # CONFIG_FONT_SUN12x22 is not set | 602 | # CONFIG_FONT_SUN12x22 is not set |
648 | # CONFIG_FONT_10x18 is not set | 603 | # CONFIG_FONT_10x18 is not set |
649 | |||
650 | # | ||
651 | # Logo configuration | ||
652 | # | ||
653 | CONFIG_LOGO=y | 604 | CONFIG_LOGO=y |
654 | # CONFIG_LOGO_LINUX_MONO is not set | 605 | # CONFIG_LOGO_LINUX_MONO is not set |
655 | # CONFIG_LOGO_LINUX_VGA16 is not set | 606 | # CONFIG_LOGO_LINUX_VGA16 is not set |
656 | # CONFIG_LOGO_LINUX_CLUT224 is not set | 607 | # CONFIG_LOGO_LINUX_CLUT224 is not set |
657 | CONFIG_LOGO_PARISC_CLUT224=y | 608 | CONFIG_LOGO_PARISC_CLUT224=y |
658 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
659 | 609 | ||
660 | # | 610 | # |
661 | # Sound | 611 | # Sound |
@@ -673,9 +623,11 @@ CONFIG_SND_SEQUENCER=y | |||
673 | CONFIG_SND_OSSEMUL=y | 623 | CONFIG_SND_OSSEMUL=y |
674 | CONFIG_SND_MIXER_OSS=y | 624 | CONFIG_SND_MIXER_OSS=y |
675 | CONFIG_SND_PCM_OSS=y | 625 | CONFIG_SND_PCM_OSS=y |
626 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
676 | CONFIG_SND_SEQUENCER_OSS=y | 627 | CONFIG_SND_SEQUENCER_OSS=y |
677 | # CONFIG_SND_DYNAMIC_MINORS is not set | 628 | # CONFIG_SND_DYNAMIC_MINORS is not set |
678 | CONFIG_SND_SUPPORT_OLD_API=y | 629 | CONFIG_SND_SUPPORT_OLD_API=y |
630 | CONFIG_SND_VERBOSE_PROCFS=y | ||
679 | # CONFIG_SND_VERBOSE_PRINTK is not set | 631 | # CONFIG_SND_VERBOSE_PRINTK is not set |
680 | # CONFIG_SND_DEBUG is not set | 632 | # CONFIG_SND_DEBUG is not set |
681 | 633 | ||
@@ -685,8 +637,10 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
685 | # CONFIG_SND_DUMMY is not set | 637 | # CONFIG_SND_DUMMY is not set |
686 | # CONFIG_SND_VIRMIDI is not set | 638 | # CONFIG_SND_VIRMIDI is not set |
687 | # CONFIG_SND_MTPAV is not set | 639 | # CONFIG_SND_MTPAV is not set |
640 | # CONFIG_SND_MTS64 is not set | ||
688 | # CONFIG_SND_SERIAL_U16550 is not set | 641 | # CONFIG_SND_SERIAL_U16550 is not set |
689 | # CONFIG_SND_MPU401 is not set | 642 | # CONFIG_SND_MPU401 is not set |
643 | # CONFIG_SND_PORTMAN2X4 is not set | ||
690 | 644 | ||
691 | # | 645 | # |
692 | # GSC devices | 646 | # GSC devices |
@@ -694,15 +648,25 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
694 | CONFIG_SND_HARMONY=y | 648 | CONFIG_SND_HARMONY=y |
695 | 649 | ||
696 | # | 650 | # |
697 | # Open Sound System | 651 | # System on Chip audio support |
698 | # | 652 | # |
699 | # CONFIG_SOUND_PRIME is not set | 653 | # CONFIG_SND_SOC is not set |
700 | 654 | ||
701 | # | 655 | # |
702 | # USB support | 656 | # SoC Audio support for SuperH |
703 | # | 657 | # |
658 | |||
659 | # | ||
660 | # Open Sound System | ||
661 | # | ||
662 | # CONFIG_SOUND_PRIME is not set | ||
663 | CONFIG_HID_SUPPORT=y | ||
664 | CONFIG_HID=y | ||
665 | CONFIG_HID_DEBUG=y | ||
666 | CONFIG_USB_SUPPORT=y | ||
704 | # CONFIG_USB_ARCH_HAS_HCD is not set | 667 | # CONFIG_USB_ARCH_HAS_HCD is not set |
705 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 668 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
669 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
706 | 670 | ||
707 | # | 671 | # |
708 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 672 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
@@ -712,19 +676,28 @@ CONFIG_SND_HARMONY=y | |||
712 | # USB Gadget Support | 676 | # USB Gadget Support |
713 | # | 677 | # |
714 | # CONFIG_USB_GADGET is not set | 678 | # CONFIG_USB_GADGET is not set |
679 | # CONFIG_MMC is not set | ||
680 | # CONFIG_NEW_LEDS is not set | ||
681 | # CONFIG_RTC_CLASS is not set | ||
715 | 682 | ||
716 | # | 683 | # |
717 | # MMC/SD Card support | 684 | # DMA Engine support |
685 | # | ||
686 | # CONFIG_DMA_ENGINE is not set | ||
687 | |||
688 | # | ||
689 | # DMA Clients | ||
718 | # | 690 | # |
719 | # CONFIG_MMC is not set | ||
720 | 691 | ||
721 | # | 692 | # |
722 | # InfiniBand support | 693 | # DMA Devices |
723 | # | 694 | # |
695 | # CONFIG_AUXDISPLAY is not set | ||
724 | 696 | ||
725 | # | 697 | # |
726 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 698 | # Userspace I/O |
727 | # | 699 | # |
700 | # CONFIG_UIO is not set | ||
728 | 701 | ||
729 | # | 702 | # |
730 | # File systems | 703 | # File systems |
@@ -734,6 +707,7 @@ CONFIG_EXT2_FS=y | |||
734 | # CONFIG_EXT2_FS_XIP is not set | 707 | # CONFIG_EXT2_FS_XIP is not set |
735 | CONFIG_EXT3_FS=y | 708 | CONFIG_EXT3_FS=y |
736 | # CONFIG_EXT3_FS_XATTR is not set | 709 | # CONFIG_EXT3_FS_XATTR is not set |
710 | # CONFIG_EXT4DEV_FS is not set | ||
737 | CONFIG_JBD=y | 711 | CONFIG_JBD=y |
738 | # CONFIG_JBD_DEBUG is not set | 712 | # CONFIG_JBD_DEBUG is not set |
739 | # CONFIG_REISERFS_FS is not set | 713 | # CONFIG_REISERFS_FS is not set |
@@ -744,15 +718,16 @@ CONFIG_JFS_FS=m | |||
744 | # CONFIG_JFS_STATISTICS is not set | 718 | # CONFIG_JFS_STATISTICS is not set |
745 | CONFIG_FS_POSIX_ACL=y | 719 | CONFIG_FS_POSIX_ACL=y |
746 | CONFIG_XFS_FS=m | 720 | CONFIG_XFS_FS=m |
747 | CONFIG_XFS_EXPORT=y | ||
748 | # CONFIG_XFS_QUOTA is not set | 721 | # CONFIG_XFS_QUOTA is not set |
749 | # CONFIG_XFS_SECURITY is not set | 722 | # CONFIG_XFS_SECURITY is not set |
750 | # CONFIG_XFS_POSIX_ACL is not set | 723 | # CONFIG_XFS_POSIX_ACL is not set |
751 | # CONFIG_XFS_RT is not set | 724 | # CONFIG_XFS_RT is not set |
725 | # CONFIG_GFS2_FS is not set | ||
752 | # CONFIG_OCFS2_FS is not set | 726 | # CONFIG_OCFS2_FS is not set |
753 | # CONFIG_MINIX_FS is not set | 727 | # CONFIG_MINIX_FS is not set |
754 | # CONFIG_ROMFS_FS is not set | 728 | # CONFIG_ROMFS_FS is not set |
755 | CONFIG_INOTIFY=y | 729 | CONFIG_INOTIFY=y |
730 | CONFIG_INOTIFY_USER=y | ||
756 | # CONFIG_QUOTA is not set | 731 | # CONFIG_QUOTA is not set |
757 | CONFIG_DNOTIFY=y | 732 | CONFIG_DNOTIFY=y |
758 | # CONFIG_AUTOFS_FS is not set | 733 | # CONFIG_AUTOFS_FS is not set |
@@ -783,11 +758,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
783 | # | 758 | # |
784 | CONFIG_PROC_FS=y | 759 | CONFIG_PROC_FS=y |
785 | CONFIG_PROC_KCORE=y | 760 | CONFIG_PROC_KCORE=y |
761 | CONFIG_PROC_SYSCTL=y | ||
786 | CONFIG_SYSFS=y | 762 | CONFIG_SYSFS=y |
787 | CONFIG_TMPFS=y | 763 | CONFIG_TMPFS=y |
764 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
788 | # CONFIG_HUGETLB_PAGE is not set | 765 | # CONFIG_HUGETLB_PAGE is not set |
789 | CONFIG_RAMFS=y | 766 | CONFIG_RAMFS=y |
790 | # CONFIG_RELAYFS_FS is not set | ||
791 | # CONFIG_CONFIGFS_FS is not set | 767 | # CONFIG_CONFIGFS_FS is not set |
792 | 768 | ||
793 | # | 769 | # |
@@ -795,6 +771,7 @@ CONFIG_RAMFS=y | |||
795 | # | 771 | # |
796 | # CONFIG_ADFS_FS is not set | 772 | # CONFIG_ADFS_FS is not set |
797 | # CONFIG_AFFS_FS is not set | 773 | # CONFIG_AFFS_FS is not set |
774 | # CONFIG_ECRYPT_FS is not set | ||
798 | # CONFIG_HFS_FS is not set | 775 | # CONFIG_HFS_FS is not set |
799 | # CONFIG_HFSPLUS_FS is not set | 776 | # CONFIG_HFSPLUS_FS is not set |
800 | # CONFIG_BEFS_FS is not set | 777 | # CONFIG_BEFS_FS is not set |
@@ -806,6 +783,8 @@ CONFIG_RAMFS=y | |||
806 | # CONFIG_QNX4FS_FS is not set | 783 | # CONFIG_QNX4FS_FS is not set |
807 | # CONFIG_SYSV_FS is not set | 784 | # CONFIG_SYSV_FS is not set |
808 | CONFIG_UFS_FS=m | 785 | CONFIG_UFS_FS=m |
786 | # CONFIG_UFS_FS_WRITE is not set | ||
787 | # CONFIG_UFS_DEBUG is not set | ||
809 | 788 | ||
810 | # | 789 | # |
811 | # Network File Systems | 790 | # Network File Systems |
@@ -827,6 +806,7 @@ CONFIG_EXPORTFS=m | |||
827 | CONFIG_NFS_COMMON=y | 806 | CONFIG_NFS_COMMON=y |
828 | CONFIG_SUNRPC=y | 807 | CONFIG_SUNRPC=y |
829 | CONFIG_SUNRPC_GSS=y | 808 | CONFIG_SUNRPC_GSS=y |
809 | # CONFIG_SUNRPC_BIND34 is not set | ||
830 | CONFIG_RPCSEC_GSS_KRB5=y | 810 | CONFIG_RPCSEC_GSS_KRB5=y |
831 | CONFIG_RPCSEC_GSS_SPKM3=m | 811 | CONFIG_RPCSEC_GSS_SPKM3=m |
832 | CONFIG_SMB_FS=m | 812 | CONFIG_SMB_FS=m |
@@ -834,12 +814,13 @@ CONFIG_SMB_NLS_DEFAULT=y | |||
834 | CONFIG_SMB_NLS_REMOTE="cp437" | 814 | CONFIG_SMB_NLS_REMOTE="cp437" |
835 | CONFIG_CIFS=m | 815 | CONFIG_CIFS=m |
836 | # CONFIG_CIFS_STATS is not set | 816 | # CONFIG_CIFS_STATS is not set |
817 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
837 | # CONFIG_CIFS_XATTR is not set | 818 | # CONFIG_CIFS_XATTR is not set |
819 | # CONFIG_CIFS_DEBUG2 is not set | ||
838 | # CONFIG_CIFS_EXPERIMENTAL is not set | 820 | # CONFIG_CIFS_EXPERIMENTAL is not set |
839 | # CONFIG_NCP_FS is not set | 821 | # CONFIG_NCP_FS is not set |
840 | # CONFIG_CODA_FS is not set | 822 | # CONFIG_CODA_FS is not set |
841 | # CONFIG_AFS_FS is not set | 823 | # CONFIG_AFS_FS is not set |
842 | # CONFIG_9P_FS is not set | ||
843 | 824 | ||
844 | # | 825 | # |
845 | # Partition Types | 826 | # Partition Types |
@@ -892,6 +873,11 @@ CONFIG_NLS_KOI8_U=m | |||
892 | CONFIG_NLS_UTF8=m | 873 | CONFIG_NLS_UTF8=m |
893 | 874 | ||
894 | # | 875 | # |
876 | # Distributed Lock Manager | ||
877 | # | ||
878 | # CONFIG_DLM is not set | ||
879 | |||
880 | # | ||
895 | # Profiling support | 881 | # Profiling support |
896 | # | 882 | # |
897 | CONFIG_PROFILING=y | 883 | CONFIG_PROFILING=y |
@@ -901,21 +887,32 @@ CONFIG_OPROFILE=m | |||
901 | # Kernel hacking | 887 | # Kernel hacking |
902 | # | 888 | # |
903 | # CONFIG_PRINTK_TIME is not set | 889 | # CONFIG_PRINTK_TIME is not set |
890 | CONFIG_ENABLE_MUST_CHECK=y | ||
904 | CONFIG_MAGIC_SYSRQ=y | 891 | CONFIG_MAGIC_SYSRQ=y |
892 | # CONFIG_UNUSED_SYMBOLS is not set | ||
893 | # CONFIG_DEBUG_FS is not set | ||
894 | # CONFIG_HEADERS_CHECK is not set | ||
905 | CONFIG_DEBUG_KERNEL=y | 895 | CONFIG_DEBUG_KERNEL=y |
906 | CONFIG_LOG_BUF_SHIFT=16 | 896 | # CONFIG_DEBUG_SHIRQ is not set |
907 | CONFIG_DETECT_SOFTLOCKUP=y | 897 | CONFIG_DETECT_SOFTLOCKUP=y |
898 | CONFIG_SCHED_DEBUG=y | ||
908 | # CONFIG_SCHEDSTATS is not set | 899 | # CONFIG_SCHEDSTATS is not set |
900 | # CONFIG_TIMER_STATS is not set | ||
909 | # CONFIG_DEBUG_SLAB is not set | 901 | # CONFIG_DEBUG_SLAB is not set |
910 | CONFIG_DEBUG_MUTEXES=y | 902 | # CONFIG_DEBUG_RT_MUTEXES is not set |
903 | # CONFIG_RT_MUTEX_TESTER is not set | ||
911 | # CONFIG_DEBUG_SPINLOCK is not set | 904 | # CONFIG_DEBUG_SPINLOCK is not set |
905 | CONFIG_DEBUG_MUTEXES=y | ||
912 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 906 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
907 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
913 | # CONFIG_DEBUG_KOBJECT is not set | 908 | # CONFIG_DEBUG_KOBJECT is not set |
909 | CONFIG_DEBUG_BUGVERBOSE=y | ||
914 | # CONFIG_DEBUG_INFO is not set | 910 | # CONFIG_DEBUG_INFO is not set |
915 | # CONFIG_DEBUG_FS is not set | ||
916 | # CONFIG_DEBUG_VM is not set | 911 | # CONFIG_DEBUG_VM is not set |
912 | # CONFIG_DEBUG_LIST is not set | ||
917 | CONFIG_FORCED_INLINING=y | 913 | CONFIG_FORCED_INLINING=y |
918 | # CONFIG_RCU_TORTURE_TEST is not set | 914 | # CONFIG_RCU_TORTURE_TEST is not set |
915 | # CONFIG_FAULT_INJECTION is not set | ||
919 | CONFIG_DEBUG_RODATA=y | 916 | CONFIG_DEBUG_RODATA=y |
920 | 917 | ||
921 | # | 918 | # |
@@ -924,12 +921,13 @@ CONFIG_DEBUG_RODATA=y | |||
924 | CONFIG_KEYS=y | 921 | CONFIG_KEYS=y |
925 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | 922 | CONFIG_KEYS_DEBUG_PROC_KEYS=y |
926 | # CONFIG_SECURITY is not set | 923 | # CONFIG_SECURITY is not set |
927 | |||
928 | # | ||
929 | # Cryptographic options | ||
930 | # | ||
931 | CONFIG_CRYPTO=y | 924 | CONFIG_CRYPTO=y |
925 | CONFIG_CRYPTO_ALGAPI=y | ||
926 | CONFIG_CRYPTO_BLKCIPHER=y | ||
927 | CONFIG_CRYPTO_HASH=y | ||
928 | CONFIG_CRYPTO_MANAGER=y | ||
932 | CONFIG_CRYPTO_HMAC=y | 929 | CONFIG_CRYPTO_HMAC=y |
930 | # CONFIG_CRYPTO_XCBC is not set | ||
933 | CONFIG_CRYPTO_NULL=m | 931 | CONFIG_CRYPTO_NULL=m |
934 | CONFIG_CRYPTO_MD4=m | 932 | CONFIG_CRYPTO_MD4=m |
935 | CONFIG_CRYPTO_MD5=y | 933 | CONFIG_CRYPTO_MD5=y |
@@ -938,9 +936,18 @@ CONFIG_CRYPTO_SHA256=m | |||
938 | CONFIG_CRYPTO_SHA512=m | 936 | CONFIG_CRYPTO_SHA512=m |
939 | CONFIG_CRYPTO_WP512=m | 937 | CONFIG_CRYPTO_WP512=m |
940 | CONFIG_CRYPTO_TGR192=m | 938 | CONFIG_CRYPTO_TGR192=m |
939 | # CONFIG_CRYPTO_GF128MUL is not set | ||
940 | CONFIG_CRYPTO_ECB=m | ||
941 | CONFIG_CRYPTO_CBC=y | ||
942 | # CONFIG_CRYPTO_PCBC is not set | ||
943 | # CONFIG_CRYPTO_LRW is not set | ||
944 | # CONFIG_CRYPTO_XTS is not set | ||
945 | # CONFIG_CRYPTO_CRYPTD is not set | ||
941 | CONFIG_CRYPTO_DES=y | 946 | CONFIG_CRYPTO_DES=y |
947 | # CONFIG_CRYPTO_FCRYPT is not set | ||
942 | CONFIG_CRYPTO_BLOWFISH=m | 948 | CONFIG_CRYPTO_BLOWFISH=m |
943 | CONFIG_CRYPTO_TWOFISH=m | 949 | CONFIG_CRYPTO_TWOFISH=m |
950 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
944 | CONFIG_CRYPTO_SERPENT=m | 951 | CONFIG_CRYPTO_SERPENT=m |
945 | CONFIG_CRYPTO_AES=m | 952 | CONFIG_CRYPTO_AES=m |
946 | CONFIG_CRYPTO_CAST5=m | 953 | CONFIG_CRYPTO_CAST5=m |
@@ -949,21 +956,28 @@ CONFIG_CRYPTO_TEA=m | |||
949 | CONFIG_CRYPTO_ARC4=m | 956 | CONFIG_CRYPTO_ARC4=m |
950 | CONFIG_CRYPTO_KHAZAD=m | 957 | CONFIG_CRYPTO_KHAZAD=m |
951 | CONFIG_CRYPTO_ANUBIS=m | 958 | CONFIG_CRYPTO_ANUBIS=m |
959 | # CONFIG_CRYPTO_SEED is not set | ||
952 | CONFIG_CRYPTO_DEFLATE=m | 960 | CONFIG_CRYPTO_DEFLATE=m |
953 | CONFIG_CRYPTO_MICHAEL_MIC=m | 961 | CONFIG_CRYPTO_MICHAEL_MIC=m |
954 | CONFIG_CRYPTO_CRC32C=m | 962 | CONFIG_CRYPTO_CRC32C=m |
963 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
955 | CONFIG_CRYPTO_TEST=m | 964 | CONFIG_CRYPTO_TEST=m |
956 | 965 | # CONFIG_CRYPTO_AUTHENC is not set | |
957 | # | 966 | # CONFIG_CRYPTO_HW is not set |
958 | # Hardware crypto devices | ||
959 | # | ||
960 | 967 | ||
961 | # | 968 | # |
962 | # Library routines | 969 | # Library routines |
963 | # | 970 | # |
971 | CONFIG_BITREVERSE=y | ||
964 | CONFIG_CRC_CCITT=m | 972 | CONFIG_CRC_CCITT=m |
965 | # CONFIG_CRC16 is not set | 973 | # CONFIG_CRC16 is not set |
974 | # CONFIG_CRC_ITU_T is not set | ||
966 | CONFIG_CRC32=y | 975 | CONFIG_CRC32=y |
976 | # CONFIG_CRC7 is not set | ||
967 | CONFIG_LIBCRC32C=m | 977 | CONFIG_LIBCRC32C=m |
968 | CONFIG_ZLIB_INFLATE=m | 978 | CONFIG_ZLIB_INFLATE=m |
969 | CONFIG_ZLIB_DEFLATE=m | 979 | CONFIG_ZLIB_DEFLATE=m |
980 | CONFIG_PLIST=y | ||
981 | CONFIG_HAS_IOMEM=y | ||
982 | CONFIG_HAS_IOPORT=y | ||
983 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/parisc/configs/a500_defconfig b/arch/parisc/configs/a500_defconfig index f3b812f04592..ea071218a3ed 100644 --- a/arch/parisc/configs/a500_defconfig +++ b/arch/parisc/configs/a500_defconfig | |||
@@ -1,73 +1,98 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.14-rc5-pa1 | 3 | # Linux kernel version: 2.6.23 |
4 | # Fri Oct 21 23:04:54 2005 | 4 | # Fri Oct 12 21:12:44 2007 |
5 | # | 5 | # |
6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
10 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
11 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
13 | CONFIG_GENERIC_BUG=y | ||
14 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 15 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
16 | CONFIG_GENERIC_TIME=y | ||
17 | CONFIG_TIME_LOW_RES=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | 18 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_GENERIC_IRQ_PROBE=y | 19 | CONFIG_GENERIC_IRQ_PROBE=y |
13 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | 20 | CONFIG_IRQ_PER_CPU=y |
21 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
14 | 22 | ||
15 | # | 23 | # |
16 | # Code maturity level options | 24 | # General setup |
17 | # | 25 | # |
18 | CONFIG_EXPERIMENTAL=y | 26 | CONFIG_EXPERIMENTAL=y |
19 | # CONFIG_CLEAN_COMPILE is not set | ||
20 | CONFIG_BROKEN=y | ||
21 | CONFIG_BROKEN_ON_SMP=y | ||
22 | CONFIG_LOCK_KERNEL=y | 27 | CONFIG_LOCK_KERNEL=y |
23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 28 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
24 | |||
25 | # | ||
26 | # General setup | ||
27 | # | ||
28 | CONFIG_LOCALVERSION="" | 29 | CONFIG_LOCALVERSION="" |
29 | # CONFIG_LOCALVERSION_AUTO is not set | 30 | # CONFIG_LOCALVERSION_AUTO is not set |
30 | CONFIG_SWAP=y | 31 | CONFIG_SWAP=y |
31 | CONFIG_SYSVIPC=y | 32 | CONFIG_SYSVIPC=y |
33 | CONFIG_SYSVIPC_SYSCTL=y | ||
32 | CONFIG_POSIX_MQUEUE=y | 34 | CONFIG_POSIX_MQUEUE=y |
33 | # CONFIG_BSD_PROCESS_ACCT is not set | 35 | # CONFIG_BSD_PROCESS_ACCT is not set |
34 | CONFIG_SYSCTL=y | 36 | # CONFIG_TASKSTATS is not set |
37 | # CONFIG_USER_NS is not set | ||
35 | # CONFIG_AUDIT is not set | 38 | # CONFIG_AUDIT is not set |
36 | CONFIG_HOTPLUG=y | ||
37 | CONFIG_KOBJECT_UEVENT=y | ||
38 | CONFIG_IKCONFIG=y | 39 | CONFIG_IKCONFIG=y |
39 | CONFIG_IKCONFIG_PROC=y | 40 | CONFIG_IKCONFIG_PROC=y |
41 | CONFIG_LOG_BUF_SHIFT=16 | ||
40 | # CONFIG_CPUSETS is not set | 42 | # CONFIG_CPUSETS is not set |
43 | CONFIG_SYSFS_DEPRECATED=y | ||
44 | # CONFIG_RELAY is not set | ||
45 | CONFIG_BLK_DEV_INITRD=y | ||
41 | CONFIG_INITRAMFS_SOURCE="" | 46 | CONFIG_INITRAMFS_SOURCE="" |
47 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
48 | CONFIG_SYSCTL=y | ||
42 | CONFIG_EMBEDDED=y | 49 | CONFIG_EMBEDDED=y |
50 | CONFIG_SYSCTL_SYSCALL=y | ||
43 | CONFIG_KALLSYMS=y | 51 | CONFIG_KALLSYMS=y |
44 | CONFIG_KALLSYMS_ALL=y | 52 | CONFIG_KALLSYMS_ALL=y |
45 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
54 | CONFIG_HOTPLUG=y | ||
46 | CONFIG_PRINTK=y | 55 | CONFIG_PRINTK=y |
47 | CONFIG_BUG=y | 56 | CONFIG_BUG=y |
57 | CONFIG_ELF_CORE=y | ||
48 | CONFIG_BASE_FULL=y | 58 | CONFIG_BASE_FULL=y |
49 | CONFIG_FUTEX=y | 59 | CONFIG_FUTEX=y |
60 | CONFIG_ANON_INODES=y | ||
50 | CONFIG_EPOLL=y | 61 | CONFIG_EPOLL=y |
51 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 62 | CONFIG_SIGNALFD=y |
63 | CONFIG_EVENTFD=y | ||
52 | CONFIG_SHMEM=y | 64 | CONFIG_SHMEM=y |
53 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 65 | CONFIG_VM_EVENT_COUNTERS=y |
54 | CONFIG_CC_ALIGN_LABELS=0 | 66 | CONFIG_SLAB=y |
55 | CONFIG_CC_ALIGN_LOOPS=0 | 67 | # CONFIG_SLUB is not set |
56 | CONFIG_CC_ALIGN_JUMPS=0 | 68 | # CONFIG_SLOB is not set |
69 | CONFIG_RT_MUTEXES=y | ||
57 | # CONFIG_TINY_SHMEM is not set | 70 | # CONFIG_TINY_SHMEM is not set |
58 | CONFIG_BASE_SMALL=0 | 71 | CONFIG_BASE_SMALL=0 |
59 | |||
60 | # | ||
61 | # Loadable module support | ||
62 | # | ||
63 | CONFIG_MODULES=y | 72 | CONFIG_MODULES=y |
64 | CONFIG_MODULE_UNLOAD=y | 73 | CONFIG_MODULE_UNLOAD=y |
65 | CONFIG_MODULE_FORCE_UNLOAD=y | 74 | CONFIG_MODULE_FORCE_UNLOAD=y |
66 | CONFIG_OBSOLETE_MODPARM=y | ||
67 | # CONFIG_MODVERSIONS is not set | 75 | # CONFIG_MODVERSIONS is not set |
68 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 76 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
69 | CONFIG_KMOD=y | 77 | CONFIG_KMOD=y |
70 | CONFIG_STOP_MACHINE=y | 78 | CONFIG_STOP_MACHINE=y |
79 | CONFIG_BLOCK=y | ||
80 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
81 | # CONFIG_BLK_DEV_BSG is not set | ||
82 | CONFIG_BLOCK_COMPAT=y | ||
83 | |||
84 | # | ||
85 | # IO Schedulers | ||
86 | # | ||
87 | CONFIG_IOSCHED_NOOP=y | ||
88 | CONFIG_IOSCHED_AS=y | ||
89 | CONFIG_IOSCHED_DEADLINE=y | ||
90 | CONFIG_IOSCHED_CFQ=y | ||
91 | # CONFIG_DEFAULT_AS is not set | ||
92 | # CONFIG_DEFAULT_DEADLINE is not set | ||
93 | CONFIG_DEFAULT_CFQ=y | ||
94 | # CONFIG_DEFAULT_NOOP is not set | ||
95 | CONFIG_DEFAULT_IOSCHED="cfq" | ||
71 | 96 | ||
72 | # | 97 | # |
73 | # Processor type and features | 98 | # Processor type and features |
@@ -80,11 +105,23 @@ CONFIG_PA8X00=y | |||
80 | CONFIG_PA20=y | 105 | CONFIG_PA20=y |
81 | CONFIG_PREFETCH=y | 106 | CONFIG_PREFETCH=y |
82 | CONFIG_64BIT=y | 107 | CONFIG_64BIT=y |
108 | CONFIG_PARISC_PAGE_SIZE_4KB=y | ||
109 | # CONFIG_PARISC_PAGE_SIZE_16KB is not set | ||
110 | # CONFIG_PARISC_PAGE_SIZE_64KB is not set | ||
83 | CONFIG_SMP=y | 111 | CONFIG_SMP=y |
84 | CONFIG_HOTPLUG_CPU=y | 112 | CONFIG_HOTPLUG_CPU=y |
113 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
85 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | 114 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
115 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
116 | CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y | ||
117 | CONFIG_NODES_SHIFT=3 | ||
118 | CONFIG_PREEMPT_NONE=y | ||
119 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
120 | # CONFIG_PREEMPT is not set | ||
121 | CONFIG_PREEMPT_BKL=y | ||
86 | # CONFIG_HZ_100 is not set | 122 | # CONFIG_HZ_100 is not set |
87 | CONFIG_HZ_250=y | 123 | CONFIG_HZ_250=y |
124 | # CONFIG_HZ_300 is not set | ||
88 | # CONFIG_HZ_1000 is not set | 125 | # CONFIG_HZ_1000 is not set |
89 | CONFIG_HZ=250 | 126 | CONFIG_HZ=250 |
90 | CONFIG_SELECT_MEMORY_MODEL=y | 127 | CONFIG_SELECT_MEMORY_MODEL=y |
@@ -95,7 +132,10 @@ CONFIG_DISCONTIGMEM=y | |||
95 | CONFIG_FLAT_NODE_MEM_MAP=y | 132 | CONFIG_FLAT_NODE_MEM_MAP=y |
96 | CONFIG_NEED_MULTIPLE_NODES=y | 133 | CONFIG_NEED_MULTIPLE_NODES=y |
97 | # CONFIG_SPARSEMEM_STATIC is not set | 134 | # CONFIG_SPARSEMEM_STATIC is not set |
98 | # CONFIG_PREEMPT is not set | 135 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
136 | CONFIG_RESOURCES_64BIT=y | ||
137 | CONFIG_ZONE_DMA_FLAG=0 | ||
138 | CONFIG_VIRT_TO_BUS=y | ||
99 | CONFIG_COMPAT=y | 139 | CONFIG_COMPAT=y |
100 | CONFIG_NR_CPUS=8 | 140 | CONFIG_NR_CPUS=8 |
101 | 141 | ||
@@ -104,7 +144,7 @@ CONFIG_NR_CPUS=8 | |||
104 | # | 144 | # |
105 | # CONFIG_GSC is not set | 145 | # CONFIG_GSC is not set |
106 | CONFIG_PCI=y | 146 | CONFIG_PCI=y |
107 | CONFIG_PCI_LEGACY_PROC=y | 147 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
108 | # CONFIG_PCI_DEBUG is not set | 148 | # CONFIG_PCI_DEBUG is not set |
109 | CONFIG_PCI_LBA=y | 149 | CONFIG_PCI_LBA=y |
110 | CONFIG_IOSAPIC=y | 150 | CONFIG_IOSAPIC=y |
@@ -124,13 +164,14 @@ CONFIG_CARDBUS=y | |||
124 | # PC-card bridges | 164 | # PC-card bridges |
125 | # | 165 | # |
126 | CONFIG_YENTA=m | 166 | CONFIG_YENTA=m |
167 | CONFIG_YENTA_O2=y | ||
168 | CONFIG_YENTA_RICOH=y | ||
169 | CONFIG_YENTA_TI=y | ||
170 | CONFIG_YENTA_ENE_TUNE=y | ||
171 | CONFIG_YENTA_TOSHIBA=y | ||
127 | CONFIG_PD6729=m | 172 | CONFIG_PD6729=m |
128 | CONFIG_I82092=m | 173 | CONFIG_I82092=m |
129 | CONFIG_PCCARD_NONSTATIC=m | 174 | CONFIG_PCCARD_NONSTATIC=m |
130 | |||
131 | # | ||
132 | # PCI Hotplug Support | ||
133 | # | ||
134 | # CONFIG_HOTPLUG_PCI is not set | 175 | # CONFIG_HOTPLUG_PCI is not set |
135 | 176 | ||
136 | # | 177 | # |
@@ -139,6 +180,7 @@ CONFIG_PCCARD_NONSTATIC=m | |||
139 | # CONFIG_SUPERIO is not set | 180 | # CONFIG_SUPERIO is not set |
140 | # CONFIG_CHASSIS_LCD_LED is not set | 181 | # CONFIG_CHASSIS_LCD_LED is not set |
141 | CONFIG_PDC_CHASSIS=y | 182 | CONFIG_PDC_CHASSIS=y |
183 | CONFIG_PDC_CHASSIS_WARN=y | ||
142 | CONFIG_PDC_STABLE=y | 184 | CONFIG_PDC_STABLE=y |
143 | 185 | ||
144 | # | 186 | # |
@@ -160,7 +202,10 @@ CONFIG_PACKET_MMAP=y | |||
160 | CONFIG_UNIX=y | 202 | CONFIG_UNIX=y |
161 | CONFIG_XFRM=y | 203 | CONFIG_XFRM=y |
162 | CONFIG_XFRM_USER=m | 204 | CONFIG_XFRM_USER=m |
205 | # CONFIG_XFRM_SUB_POLICY is not set | ||
206 | # CONFIG_XFRM_MIGRATE is not set | ||
163 | CONFIG_NET_KEY=m | 207 | CONFIG_NET_KEY=m |
208 | # CONFIG_NET_KEY_MIGRATE is not set | ||
164 | CONFIG_INET=y | 209 | CONFIG_INET=y |
165 | CONFIG_IP_MULTICAST=y | 210 | CONFIG_IP_MULTICAST=y |
166 | # CONFIG_IP_ADVANCED_ROUTER is not set | 211 | # CONFIG_IP_ADVANCED_ROUTER is not set |
@@ -177,97 +222,97 @@ CONFIG_IP_PNP_BOOTP=y | |||
177 | CONFIG_INET_AH=m | 222 | CONFIG_INET_AH=m |
178 | CONFIG_INET_ESP=m | 223 | CONFIG_INET_ESP=m |
179 | # CONFIG_INET_IPCOMP is not set | 224 | # CONFIG_INET_IPCOMP is not set |
225 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
180 | CONFIG_INET_TUNNEL=m | 226 | CONFIG_INET_TUNNEL=m |
227 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
228 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
229 | CONFIG_INET_XFRM_MODE_BEET=y | ||
230 | # CONFIG_INET_LRO is not set | ||
181 | CONFIG_INET_DIAG=y | 231 | CONFIG_INET_DIAG=y |
182 | CONFIG_INET_TCP_DIAG=y | 232 | CONFIG_INET_TCP_DIAG=y |
183 | # CONFIG_TCP_CONG_ADVANCED is not set | 233 | # CONFIG_TCP_CONG_ADVANCED is not set |
184 | CONFIG_TCP_CONG_BIC=y | 234 | CONFIG_TCP_CONG_CUBIC=y |
185 | 235 | CONFIG_DEFAULT_TCP_CONG="cubic" | |
186 | # | 236 | # CONFIG_TCP_MD5SIG is not set |
187 | # IP: Virtual Server Configuration | ||
188 | # | ||
189 | # CONFIG_IP_VS is not set | 237 | # CONFIG_IP_VS is not set |
190 | CONFIG_IPV6=m | 238 | CONFIG_IPV6=m |
191 | # CONFIG_IPV6_PRIVACY is not set | 239 | # CONFIG_IPV6_PRIVACY is not set |
240 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
241 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
192 | CONFIG_INET6_AH=m | 242 | CONFIG_INET6_AH=m |
193 | CONFIG_INET6_ESP=m | 243 | CONFIG_INET6_ESP=m |
194 | CONFIG_INET6_IPCOMP=m | 244 | CONFIG_INET6_IPCOMP=m |
245 | # CONFIG_IPV6_MIP6 is not set | ||
246 | CONFIG_INET6_XFRM_TUNNEL=m | ||
195 | CONFIG_INET6_TUNNEL=m | 247 | CONFIG_INET6_TUNNEL=m |
248 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
249 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
250 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
251 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
252 | CONFIG_IPV6_SIT=m | ||
196 | CONFIG_IPV6_TUNNEL=m | 253 | CONFIG_IPV6_TUNNEL=m |
254 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
255 | # CONFIG_NETWORK_SECMARK is not set | ||
197 | CONFIG_NETFILTER=y | 256 | CONFIG_NETFILTER=y |
198 | # CONFIG_NETFILTER_DEBUG is not set | 257 | # CONFIG_NETFILTER_DEBUG is not set |
258 | |||
259 | # | ||
260 | # Core Netfilter Configuration | ||
261 | # | ||
199 | # CONFIG_NETFILTER_NETLINK is not set | 262 | # CONFIG_NETFILTER_NETLINK is not set |
263 | # CONFIG_NF_CONNTRACK_ENABLED is not set | ||
264 | # CONFIG_NF_CONNTRACK is not set | ||
265 | CONFIG_NETFILTER_XTABLES=m | ||
266 | # CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set | ||
267 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set | ||
268 | # CONFIG_NETFILTER_XT_TARGET_MARK is not set | ||
269 | # CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set | ||
270 | # CONFIG_NETFILTER_XT_TARGET_NFLOG is not set | ||
271 | # CONFIG_NETFILTER_XT_TARGET_TRACE is not set | ||
272 | # CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set | ||
273 | # CONFIG_NETFILTER_XT_MATCH_COMMENT is not set | ||
274 | # CONFIG_NETFILTER_XT_MATCH_DCCP is not set | ||
275 | # CONFIG_NETFILTER_XT_MATCH_DSCP is not set | ||
276 | # CONFIG_NETFILTER_XT_MATCH_ESP is not set | ||
277 | # CONFIG_NETFILTER_XT_MATCH_LENGTH is not set | ||
278 | # CONFIG_NETFILTER_XT_MATCH_LIMIT is not set | ||
279 | # CONFIG_NETFILTER_XT_MATCH_MAC is not set | ||
280 | # CONFIG_NETFILTER_XT_MATCH_MARK is not set | ||
281 | # CONFIG_NETFILTER_XT_MATCH_POLICY is not set | ||
282 | # CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set | ||
283 | # CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set | ||
284 | # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set | ||
285 | # CONFIG_NETFILTER_XT_MATCH_REALM is not set | ||
286 | # CONFIG_NETFILTER_XT_MATCH_SCTP is not set | ||
287 | # CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set | ||
288 | # CONFIG_NETFILTER_XT_MATCH_STRING is not set | ||
289 | # CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set | ||
290 | # CONFIG_NETFILTER_XT_MATCH_TIME is not set | ||
291 | # CONFIG_NETFILTER_XT_MATCH_U32 is not set | ||
292 | # CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set | ||
200 | 293 | ||
201 | # | 294 | # |
202 | # IP: Netfilter Configuration | 295 | # IP: Netfilter Configuration |
203 | # | 296 | # |
204 | CONFIG_IP_NF_CONNTRACK=m | ||
205 | # CONFIG_IP_NF_CT_ACCT is not set | ||
206 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
207 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
208 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
209 | CONFIG_IP_NF_FTP=m | ||
210 | CONFIG_IP_NF_IRC=m | ||
211 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
212 | CONFIG_IP_NF_TFTP=m | ||
213 | CONFIG_IP_NF_AMANDA=m | ||
214 | # CONFIG_IP_NF_PPTP is not set | ||
215 | CONFIG_IP_NF_QUEUE=m | 297 | CONFIG_IP_NF_QUEUE=m |
216 | CONFIG_IP_NF_IPTABLES=m | 298 | CONFIG_IP_NF_IPTABLES=m |
217 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
218 | CONFIG_IP_NF_MATCH_IPRANGE=m | 299 | CONFIG_IP_NF_MATCH_IPRANGE=m |
219 | CONFIG_IP_NF_MATCH_MAC=m | ||
220 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
221 | CONFIG_IP_NF_MATCH_MARK=m | ||
222 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
223 | CONFIG_IP_NF_MATCH_TOS=m | 300 | CONFIG_IP_NF_MATCH_TOS=m |
224 | CONFIG_IP_NF_MATCH_RECENT=m | 301 | CONFIG_IP_NF_MATCH_RECENT=m |
225 | CONFIG_IP_NF_MATCH_ECN=m | 302 | CONFIG_IP_NF_MATCH_ECN=m |
226 | CONFIG_IP_NF_MATCH_DSCP=m | 303 | # CONFIG_IP_NF_MATCH_AH is not set |
227 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
228 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
229 | CONFIG_IP_NF_MATCH_TTL=m | 304 | CONFIG_IP_NF_MATCH_TTL=m |
230 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
231 | CONFIG_IP_NF_MATCH_HELPER=m | ||
232 | CONFIG_IP_NF_MATCH_STATE=m | ||
233 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
234 | CONFIG_IP_NF_MATCH_OWNER=m | 305 | CONFIG_IP_NF_MATCH_OWNER=m |
235 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set | 306 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set |
236 | # CONFIG_IP_NF_MATCH_REALM is not set | ||
237 | CONFIG_IP_NF_MATCH_SCTP=m | ||
238 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
239 | CONFIG_IP_NF_MATCH_COMMENT=m | ||
240 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
241 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
242 | # CONFIG_IP_NF_MATCH_STRING is not set | ||
243 | CONFIG_IP_NF_FILTER=m | 307 | CONFIG_IP_NF_FILTER=m |
244 | CONFIG_IP_NF_TARGET_REJECT=m | 308 | CONFIG_IP_NF_TARGET_REJECT=m |
245 | CONFIG_IP_NF_TARGET_LOG=m | 309 | CONFIG_IP_NF_TARGET_LOG=m |
246 | CONFIG_IP_NF_TARGET_ULOG=m | 310 | CONFIG_IP_NF_TARGET_ULOG=m |
247 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
248 | # CONFIG_IP_NF_TARGET_NFQUEUE is not set | ||
249 | CONFIG_IP_NF_NAT=m | ||
250 | CONFIG_IP_NF_NAT_NEEDED=y | ||
251 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
252 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
253 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
254 | CONFIG_IP_NF_TARGET_SAME=m | ||
255 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
256 | CONFIG_IP_NF_NAT_IRC=m | ||
257 | CONFIG_IP_NF_NAT_FTP=m | ||
258 | CONFIG_IP_NF_NAT_TFTP=m | ||
259 | CONFIG_IP_NF_NAT_AMANDA=m | ||
260 | CONFIG_IP_NF_MANGLE=m | 311 | CONFIG_IP_NF_MANGLE=m |
261 | CONFIG_IP_NF_TARGET_TOS=m | 312 | CONFIG_IP_NF_TARGET_TOS=m |
262 | CONFIG_IP_NF_TARGET_ECN=m | 313 | CONFIG_IP_NF_TARGET_ECN=m |
263 | CONFIG_IP_NF_TARGET_DSCP=m | ||
264 | CONFIG_IP_NF_TARGET_MARK=m | ||
265 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
266 | # CONFIG_IP_NF_TARGET_TTL is not set | 314 | # CONFIG_IP_NF_TARGET_TTL is not set |
267 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
268 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
269 | CONFIG_IP_NF_RAW=m | 315 | CONFIG_IP_NF_RAW=m |
270 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
271 | CONFIG_IP_NF_ARPTABLES=m | 316 | CONFIG_IP_NF_ARPTABLES=m |
272 | CONFIG_IP_NF_ARPFILTER=m | 317 | CONFIG_IP_NF_ARPFILTER=m |
273 | CONFIG_IP_NF_ARP_MANGLE=m | 318 | CONFIG_IP_NF_ARP_MANGLE=m |
@@ -277,48 +322,38 @@ CONFIG_IP_NF_ARP_MANGLE=m | |||
277 | # | 322 | # |
278 | # CONFIG_IP6_NF_QUEUE is not set | 323 | # CONFIG_IP6_NF_QUEUE is not set |
279 | CONFIG_IP6_NF_IPTABLES=m | 324 | CONFIG_IP6_NF_IPTABLES=m |
280 | # CONFIG_IP6_NF_MATCH_LIMIT is not set | ||
281 | CONFIG_IP6_NF_MATCH_MAC=m | ||
282 | CONFIG_IP6_NF_MATCH_RT=m | 325 | CONFIG_IP6_NF_MATCH_RT=m |
283 | CONFIG_IP6_NF_MATCH_OPTS=m | 326 | CONFIG_IP6_NF_MATCH_OPTS=m |
284 | CONFIG_IP6_NF_MATCH_FRAG=m | 327 | CONFIG_IP6_NF_MATCH_FRAG=m |
285 | CONFIG_IP6_NF_MATCH_HL=m | 328 | CONFIG_IP6_NF_MATCH_HL=m |
286 | # CONFIG_IP6_NF_MATCH_MULTIPORT is not set | ||
287 | # CONFIG_IP6_NF_MATCH_OWNER is not set | 329 | # CONFIG_IP6_NF_MATCH_OWNER is not set |
288 | # CONFIG_IP6_NF_MATCH_MARK is not set | ||
289 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 330 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
290 | # CONFIG_IP6_NF_MATCH_AHESP is not set | 331 | # CONFIG_IP6_NF_MATCH_AH is not set |
291 | # CONFIG_IP6_NF_MATCH_LENGTH is not set | 332 | # CONFIG_IP6_NF_MATCH_MH is not set |
292 | # CONFIG_IP6_NF_MATCH_EUI64 is not set | 333 | # CONFIG_IP6_NF_MATCH_EUI64 is not set |
293 | CONFIG_IP6_NF_FILTER=m | 334 | CONFIG_IP6_NF_FILTER=m |
294 | CONFIG_IP6_NF_TARGET_LOG=m | 335 | CONFIG_IP6_NF_TARGET_LOG=m |
295 | CONFIG_IP6_NF_TARGET_REJECT=m | 336 | CONFIG_IP6_NF_TARGET_REJECT=m |
296 | # CONFIG_IP6_NF_TARGET_NFQUEUE is not set | ||
297 | CONFIG_IP6_NF_MANGLE=m | 337 | CONFIG_IP6_NF_MANGLE=m |
298 | # CONFIG_IP6_NF_TARGET_MARK is not set | ||
299 | # CONFIG_IP6_NF_TARGET_HL is not set | 338 | # CONFIG_IP6_NF_TARGET_HL is not set |
300 | CONFIG_IP6_NF_RAW=m | 339 | CONFIG_IP6_NF_RAW=m |
301 | |||
302 | # | ||
303 | # DCCP Configuration (EXPERIMENTAL) | ||
304 | # | ||
305 | CONFIG_IP_DCCP=m | 340 | CONFIG_IP_DCCP=m |
306 | CONFIG_INET_DCCP_DIAG=m | 341 | CONFIG_INET_DCCP_DIAG=m |
342 | CONFIG_IP_DCCP_ACKVEC=y | ||
307 | 343 | ||
308 | # | 344 | # |
309 | # DCCP CCIDs Configuration (EXPERIMENTAL) | 345 | # DCCP CCIDs Configuration (EXPERIMENTAL) |
310 | # | 346 | # |
347 | CONFIG_IP_DCCP_CCID2=m | ||
348 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
311 | # CONFIG_IP_DCCP_CCID3 is not set | 349 | # CONFIG_IP_DCCP_CCID3 is not set |
312 | 350 | ||
313 | # | 351 | # |
314 | # DCCP Kernel Hacking | 352 | # DCCP Kernel Hacking |
315 | # | 353 | # |
316 | # CONFIG_IP_DCCP_DEBUG is not set | 354 | # CONFIG_IP_DCCP_DEBUG is not set |
317 | |||
318 | # | ||
319 | # SCTP Configuration (EXPERIMENTAL) | ||
320 | # | ||
321 | # CONFIG_IP_SCTP is not set | 355 | # CONFIG_IP_SCTP is not set |
356 | # CONFIG_TIPC is not set | ||
322 | # CONFIG_ATM is not set | 357 | # CONFIG_ATM is not set |
323 | # CONFIG_BRIDGE is not set | 358 | # CONFIG_BRIDGE is not set |
324 | # CONFIG_VLAN_8021Q is not set | 359 | # CONFIG_VLAN_8021Q is not set |
@@ -329,11 +364,13 @@ CONFIG_LLC2=m | |||
329 | # CONFIG_ATALK is not set | 364 | # CONFIG_ATALK is not set |
330 | # CONFIG_X25 is not set | 365 | # CONFIG_X25 is not set |
331 | # CONFIG_LAPB is not set | 366 | # CONFIG_LAPB is not set |
332 | # CONFIG_NET_DIVERT is not set | ||
333 | # CONFIG_ECONET is not set | 367 | # CONFIG_ECONET is not set |
334 | # CONFIG_WAN_ROUTER is not set | 368 | # CONFIG_WAN_ROUTER is not set |
369 | |||
370 | # | ||
371 | # QoS and/or fair queueing | ||
372 | # | ||
335 | # CONFIG_NET_SCHED is not set | 373 | # CONFIG_NET_SCHED is not set |
336 | # CONFIG_NET_CLS_ROUTE is not set | ||
337 | 374 | ||
338 | # | 375 | # |
339 | # Network testing | 376 | # Network testing |
@@ -342,7 +379,17 @@ CONFIG_NET_PKTGEN=m | |||
342 | # CONFIG_HAMRADIO is not set | 379 | # CONFIG_HAMRADIO is not set |
343 | # CONFIG_IRDA is not set | 380 | # CONFIG_IRDA is not set |
344 | # CONFIG_BT is not set | 381 | # CONFIG_BT is not set |
382 | # CONFIG_AF_RXRPC is not set | ||
383 | |||
384 | # | ||
385 | # Wireless | ||
386 | # | ||
387 | # CONFIG_CFG80211 is not set | ||
388 | # CONFIG_WIRELESS_EXT is not set | ||
389 | # CONFIG_MAC80211 is not set | ||
345 | # CONFIG_IEEE80211 is not set | 390 | # CONFIG_IEEE80211 is not set |
391 | # CONFIG_RFKILL is not set | ||
392 | # CONFIG_NET_9P is not set | ||
346 | 393 | ||
347 | # | 394 | # |
348 | # Device Drivers | 395 | # Device Drivers |
@@ -351,34 +398,17 @@ CONFIG_NET_PKTGEN=m | |||
351 | # | 398 | # |
352 | # Generic Driver Options | 399 | # Generic Driver Options |
353 | # | 400 | # |
401 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
354 | # CONFIG_STANDALONE is not set | 402 | # CONFIG_STANDALONE is not set |
355 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 403 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
356 | CONFIG_FW_LOADER=y | 404 | CONFIG_FW_LOADER=y |
357 | # CONFIG_DEBUG_DRIVER is not set | 405 | # CONFIG_DEBUG_DRIVER is not set |
358 | 406 | # CONFIG_DEBUG_DEVRES is not set | |
359 | # | 407 | # CONFIG_SYS_HYPERVISOR is not set |
360 | # Connector - unified userspace <-> kernelspace linker | ||
361 | # | ||
362 | # CONFIG_CONNECTOR is not set | 408 | # CONFIG_CONNECTOR is not set |
363 | |||
364 | # | ||
365 | # Memory Technology Devices (MTD) | ||
366 | # | ||
367 | # CONFIG_MTD is not set | 409 | # CONFIG_MTD is not set |
368 | |||
369 | # | ||
370 | # Parallel port support | ||
371 | # | ||
372 | # CONFIG_PARPORT is not set | 410 | # CONFIG_PARPORT is not set |
373 | 411 | CONFIG_BLK_DEV=y | |
374 | # | ||
375 | # Plug and Play support | ||
376 | # | ||
377 | |||
378 | # | ||
379 | # Block devices | ||
380 | # | ||
381 | # CONFIG_BLK_DEV_FD is not set | ||
382 | # CONFIG_BLK_CPQ_DA is not set | 412 | # CONFIG_BLK_CPQ_DA is not set |
383 | # CONFIG_BLK_CPQ_CISS_DA is not set | 413 | # CONFIG_BLK_CPQ_CISS_DA is not set |
384 | # CONFIG_BLK_DEV_DAC960 is not set | 414 | # CONFIG_BLK_DEV_DAC960 is not set |
@@ -391,21 +421,14 @@ CONFIG_BLK_DEV_LOOP=y | |||
391 | CONFIG_BLK_DEV_RAM=y | 421 | CONFIG_BLK_DEV_RAM=y |
392 | CONFIG_BLK_DEV_RAM_COUNT=16 | 422 | CONFIG_BLK_DEV_RAM_COUNT=16 |
393 | CONFIG_BLK_DEV_RAM_SIZE=6144 | 423 | CONFIG_BLK_DEV_RAM_SIZE=6144 |
394 | CONFIG_BLK_DEV_INITRD=y | 424 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
395 | # CONFIG_CDROM_PKTCDVD is not set | 425 | # CONFIG_CDROM_PKTCDVD is not set |
396 | |||
397 | # | ||
398 | # IO Schedulers | ||
399 | # | ||
400 | CONFIG_IOSCHED_NOOP=y | ||
401 | CONFIG_IOSCHED_AS=y | ||
402 | CONFIG_IOSCHED_DEADLINE=y | ||
403 | CONFIG_IOSCHED_CFQ=y | ||
404 | # CONFIG_ATA_OVER_ETH is not set | 426 | # CONFIG_ATA_OVER_ETH is not set |
405 | 427 | CONFIG_MISC_DEVICES=y | |
406 | # | 428 | # CONFIG_PHANTOM is not set |
407 | # ATA/ATAPI/MFM/RLL support | 429 | # CONFIG_EEPROM_93CX6 is not set |
408 | # | 430 | # CONFIG_SGI_IOC4 is not set |
431 | # CONFIG_TIFM_CORE is not set | ||
409 | # CONFIG_IDE is not set | 432 | # CONFIG_IDE is not set |
410 | 433 | ||
411 | # | 434 | # |
@@ -413,6 +436,9 @@ CONFIG_IOSCHED_CFQ=y | |||
413 | # | 436 | # |
414 | CONFIG_RAID_ATTRS=m | 437 | CONFIG_RAID_ATTRS=m |
415 | CONFIG_SCSI=y | 438 | CONFIG_SCSI=y |
439 | CONFIG_SCSI_DMA=y | ||
440 | # CONFIG_SCSI_TGT is not set | ||
441 | CONFIG_SCSI_NETLINK=y | ||
416 | CONFIG_SCSI_PROC_FS=y | 442 | CONFIG_SCSI_PROC_FS=y |
417 | 443 | ||
418 | # | 444 | # |
@@ -432,18 +458,18 @@ CONFIG_CHR_DEV_SG=y | |||
432 | CONFIG_SCSI_MULTI_LUN=y | 458 | CONFIG_SCSI_MULTI_LUN=y |
433 | # CONFIG_SCSI_CONSTANTS is not set | 459 | # CONFIG_SCSI_CONSTANTS is not set |
434 | # CONFIG_SCSI_LOGGING is not set | 460 | # CONFIG_SCSI_LOGGING is not set |
461 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
462 | CONFIG_SCSI_WAIT_SCAN=m | ||
435 | 463 | ||
436 | # | 464 | # |
437 | # SCSI Transport Attributes | 465 | # SCSI Transports |
438 | # | 466 | # |
439 | CONFIG_SCSI_SPI_ATTRS=y | 467 | CONFIG_SCSI_SPI_ATTRS=y |
440 | CONFIG_SCSI_FC_ATTRS=m | 468 | CONFIG_SCSI_FC_ATTRS=m |
441 | CONFIG_SCSI_ISCSI_ATTRS=m | 469 | CONFIG_SCSI_ISCSI_ATTRS=m |
442 | CONFIG_SCSI_SAS_ATTRS=m | 470 | # CONFIG_SCSI_SAS_LIBSAS is not set |
443 | 471 | CONFIG_SCSI_LOWLEVEL=y | |
444 | # | 472 | # CONFIG_ISCSI_TCP is not set |
445 | # SCSI low-level drivers | ||
446 | # | ||
447 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 473 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
448 | # CONFIG_SCSI_3W_9XXX is not set | 474 | # CONFIG_SCSI_3W_9XXX is not set |
449 | # CONFIG_SCSI_ACARD is not set | 475 | # CONFIG_SCSI_ACARD is not set |
@@ -451,59 +477,40 @@ CONFIG_SCSI_SAS_ATTRS=m | |||
451 | # CONFIG_SCSI_AIC7XXX is not set | 477 | # CONFIG_SCSI_AIC7XXX is not set |
452 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 478 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
453 | # CONFIG_SCSI_AIC79XX is not set | 479 | # CONFIG_SCSI_AIC79XX is not set |
454 | # CONFIG_SCSI_ADVANSYS is not set | 480 | # CONFIG_SCSI_AIC94XX is not set |
481 | # CONFIG_SCSI_ARCMSR is not set | ||
455 | # CONFIG_MEGARAID_NEWGEN is not set | 482 | # CONFIG_MEGARAID_NEWGEN is not set |
456 | # CONFIG_MEGARAID_LEGACY is not set | 483 | # CONFIG_MEGARAID_LEGACY is not set |
457 | # CONFIG_MEGARAID_SAS is not set | 484 | # CONFIG_MEGARAID_SAS is not set |
458 | # CONFIG_SCSI_SATA is not set | 485 | # CONFIG_SCSI_HPTIOP is not set |
459 | # CONFIG_SCSI_CPQFCTS is not set | ||
460 | # CONFIG_SCSI_DMX3191D is not set | 486 | # CONFIG_SCSI_DMX3191D is not set |
461 | # CONFIG_SCSI_EATA_PIO is not set | ||
462 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 487 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
463 | # CONFIG_SCSI_IPS is not set | 488 | # CONFIG_SCSI_IPS is not set |
464 | # CONFIG_SCSI_INITIO is not set | 489 | # CONFIG_SCSI_INITIO is not set |
465 | # CONFIG_SCSI_INIA100 is not set | 490 | # CONFIG_SCSI_INIA100 is not set |
491 | # CONFIG_SCSI_STEX is not set | ||
466 | CONFIG_SCSI_SYM53C8XX_2=y | 492 | CONFIG_SCSI_SYM53C8XX_2=y |
467 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 | 493 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 |
468 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 494 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
469 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 495 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
470 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set | 496 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
471 | # CONFIG_SCSI_IPR is not set | ||
472 | # CONFIG_SCSI_QLOGIC_ISP is not set | ||
473 | CONFIG_SCSI_QLOGIC_FC=m | ||
474 | # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set | ||
475 | CONFIG_SCSI_QLOGIC_1280=m | 497 | CONFIG_SCSI_QLOGIC_1280=m |
476 | # CONFIG_SCSI_QLOGIC_1280_1040 is not set | 498 | # CONFIG_SCSI_QLA_FC is not set |
477 | CONFIG_SCSI_QLA2XXX=y | 499 | # CONFIG_SCSI_QLA_ISCSI is not set |
478 | # CONFIG_SCSI_QLA21XX is not set | ||
479 | # CONFIG_SCSI_QLA22XX is not set | ||
480 | CONFIG_SCSI_QLA2300=m | ||
481 | CONFIG_SCSI_QLA2322=m | ||
482 | # CONFIG_SCSI_QLA6312 is not set | ||
483 | # CONFIG_SCSI_QLA24XX is not set | ||
484 | # CONFIG_SCSI_LPFC is not set | 500 | # CONFIG_SCSI_LPFC is not set |
485 | # CONFIG_SCSI_DC395x is not set | 501 | # CONFIG_SCSI_DC395x is not set |
486 | # CONFIG_SCSI_DC390T is not set | 502 | # CONFIG_SCSI_DC390T is not set |
487 | CONFIG_SCSI_DEBUG=m | 503 | CONFIG_SCSI_DEBUG=m |
488 | 504 | # CONFIG_SCSI_SRP is not set | |
489 | # | 505 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set |
490 | # PCMCIA SCSI adapter support | 506 | # CONFIG_ATA is not set |
491 | # | ||
492 | CONFIG_PCMCIA_FDOMAIN=m | ||
493 | CONFIG_PCMCIA_QLOGIC=m | ||
494 | CONFIG_PCMCIA_SYM53C500=m | ||
495 | |||
496 | # | ||
497 | # Multi-device support (RAID and LVM) | ||
498 | # | ||
499 | CONFIG_MD=y | 507 | CONFIG_MD=y |
500 | CONFIG_BLK_DEV_MD=y | 508 | CONFIG_BLK_DEV_MD=y |
501 | CONFIG_MD_LINEAR=y | 509 | CONFIG_MD_LINEAR=y |
502 | CONFIG_MD_RAID0=y | 510 | CONFIG_MD_RAID0=y |
503 | CONFIG_MD_RAID1=y | 511 | CONFIG_MD_RAID1=y |
504 | # CONFIG_MD_RAID10 is not set | 512 | # CONFIG_MD_RAID10 is not set |
505 | # CONFIG_MD_RAID5 is not set | 513 | # CONFIG_MD_RAID456 is not set |
506 | # CONFIG_MD_RAID6 is not set | ||
507 | # CONFIG_MD_MULTIPATH is not set | 514 | # CONFIG_MD_MULTIPATH is not set |
508 | # CONFIG_MD_FAULTY is not set | 515 | # CONFIG_MD_FAULTY is not set |
509 | # CONFIG_BLK_DEV_DM is not set | 516 | # CONFIG_BLK_DEV_DM is not set |
@@ -517,39 +524,25 @@ CONFIG_FUSION_FC=m | |||
517 | # CONFIG_FUSION_SAS is not set | 524 | # CONFIG_FUSION_SAS is not set |
518 | CONFIG_FUSION_MAX_SGE=128 | 525 | CONFIG_FUSION_MAX_SGE=128 |
519 | CONFIG_FUSION_CTL=m | 526 | CONFIG_FUSION_CTL=m |
527 | # CONFIG_FUSION_LOGGING is not set | ||
520 | 528 | ||
521 | # | 529 | # |
522 | # IEEE 1394 (FireWire) support | 530 | # IEEE 1394 (FireWire) support |
523 | # | 531 | # |
532 | # CONFIG_FIREWIRE is not set | ||
524 | # CONFIG_IEEE1394 is not set | 533 | # CONFIG_IEEE1394 is not set |
525 | |||
526 | # | ||
527 | # I2O device support | ||
528 | # | ||
529 | # CONFIG_I2O is not set | 534 | # CONFIG_I2O is not set |
530 | |||
531 | # | ||
532 | # Network device support | ||
533 | # | ||
534 | CONFIG_NETDEVICES=y | 535 | CONFIG_NETDEVICES=y |
536 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
535 | CONFIG_DUMMY=m | 537 | CONFIG_DUMMY=m |
536 | CONFIG_BONDING=m | 538 | CONFIG_BONDING=m |
539 | # CONFIG_MACVLAN is not set | ||
537 | # CONFIG_EQUALIZER is not set | 540 | # CONFIG_EQUALIZER is not set |
538 | CONFIG_TUN=m | 541 | CONFIG_TUN=m |
539 | 542 | # CONFIG_VETH is not set | |
540 | # | 543 | # CONFIG_IP1000 is not set |
541 | # ARCnet devices | ||
542 | # | ||
543 | # CONFIG_ARCNET is not set | 544 | # CONFIG_ARCNET is not set |
544 | |||
545 | # | ||
546 | # PHY device support | ||
547 | # | ||
548 | # CONFIG_PHYLIB is not set | 545 | # CONFIG_PHYLIB is not set |
549 | |||
550 | # | ||
551 | # Ethernet (10 or 100Mbit) | ||
552 | # | ||
553 | CONFIG_NET_ETHERNET=y | 546 | CONFIG_NET_ETHERNET=y |
554 | CONFIG_MII=m | 547 | CONFIG_MII=m |
555 | # CONFIG_HAPPYMEAL is not set | 548 | # CONFIG_HAPPYMEAL is not set |
@@ -558,10 +551,6 @@ CONFIG_MII=m | |||
558 | CONFIG_NET_VENDOR_3COM=y | 551 | CONFIG_NET_VENDOR_3COM=y |
559 | CONFIG_VORTEX=m | 552 | CONFIG_VORTEX=m |
560 | CONFIG_TYPHOON=m | 553 | CONFIG_TYPHOON=m |
561 | |||
562 | # | ||
563 | # Tulip family network device support | ||
564 | # | ||
565 | CONFIG_NET_TULIP=y | 554 | CONFIG_NET_TULIP=y |
566 | CONFIG_DE2104X=m | 555 | CONFIG_DE2104X=m |
567 | CONFIG_TULIP=y | 556 | CONFIG_TULIP=y |
@@ -573,15 +562,18 @@ CONFIG_TULIP_MMIO=y | |||
573 | # CONFIG_DM9102 is not set | 562 | # CONFIG_DM9102 is not set |
574 | # CONFIG_ULI526X is not set | 563 | # CONFIG_ULI526X is not set |
575 | CONFIG_PCMCIA_XIRCOM=m | 564 | CONFIG_PCMCIA_XIRCOM=m |
576 | # CONFIG_PCMCIA_XIRTULIP is not set | ||
577 | CONFIG_HP100=m | 565 | CONFIG_HP100=m |
566 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
567 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
568 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
569 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
578 | CONFIG_NET_PCI=y | 570 | CONFIG_NET_PCI=y |
579 | CONFIG_PCNET32=m | 571 | CONFIG_PCNET32=m |
572 | # CONFIG_PCNET32_NAPI is not set | ||
580 | # CONFIG_AMD8111_ETH is not set | 573 | # CONFIG_AMD8111_ETH is not set |
581 | # CONFIG_ADAPTEC_STARFIRE is not set | 574 | # CONFIG_ADAPTEC_STARFIRE is not set |
582 | # CONFIG_B44 is not set | 575 | # CONFIG_B44 is not set |
583 | # CONFIG_FORCEDETH is not set | 576 | # CONFIG_FORCEDETH is not set |
584 | # CONFIG_DGRS is not set | ||
585 | # CONFIG_EEPRO100 is not set | 577 | # CONFIG_EEPRO100 is not set |
586 | CONFIG_E100=m | 578 | CONFIG_E100=m |
587 | # CONFIG_FEALNX is not set | 579 | # CONFIG_FEALNX is not set |
@@ -593,84 +585,46 @@ CONFIG_E100=m | |||
593 | # CONFIG_EPIC100 is not set | 585 | # CONFIG_EPIC100 is not set |
594 | # CONFIG_SUNDANCE is not set | 586 | # CONFIG_SUNDANCE is not set |
595 | # CONFIG_VIA_RHINE is not set | 587 | # CONFIG_VIA_RHINE is not set |
596 | 588 | # CONFIG_SC92031 is not set | |
597 | # | 589 | CONFIG_NETDEV_1000=y |
598 | # Ethernet (1000 Mbit) | ||
599 | # | ||
600 | CONFIG_ACENIC=m | 590 | CONFIG_ACENIC=m |
601 | CONFIG_ACENIC_OMIT_TIGON_I=y | 591 | CONFIG_ACENIC_OMIT_TIGON_I=y |
602 | # CONFIG_DL2K is not set | 592 | # CONFIG_DL2K is not set |
603 | CONFIG_E1000=m | 593 | CONFIG_E1000=m |
604 | CONFIG_E1000_NAPI=y | 594 | CONFIG_E1000_NAPI=y |
605 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 595 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
596 | # CONFIG_E1000E is not set | ||
606 | # CONFIG_NS83820 is not set | 597 | # CONFIG_NS83820 is not set |
607 | # CONFIG_HAMACHI is not set | 598 | # CONFIG_HAMACHI is not set |
608 | # CONFIG_YELLOWFIN is not set | 599 | # CONFIG_YELLOWFIN is not set |
609 | # CONFIG_R8169 is not set | 600 | # CONFIG_R8169 is not set |
610 | # CONFIG_SIS190 is not set | 601 | # CONFIG_SIS190 is not set |
611 | # CONFIG_SKGE is not set | 602 | # CONFIG_SKGE is not set |
603 | # CONFIG_SKY2 is not set | ||
612 | # CONFIG_SK98LIN is not set | 604 | # CONFIG_SK98LIN is not set |
613 | # CONFIG_VIA_VELOCITY is not set | 605 | # CONFIG_VIA_VELOCITY is not set |
614 | CONFIG_TIGON3=m | 606 | CONFIG_TIGON3=m |
615 | # CONFIG_BNX2 is not set | 607 | # CONFIG_BNX2 is not set |
616 | 608 | # CONFIG_QLA3XXX is not set | |
617 | # | 609 | # CONFIG_ATL1 is not set |
618 | # Ethernet (10000 Mbit) | 610 | CONFIG_NETDEV_10000=y |
619 | # | ||
620 | # CONFIG_CHELSIO_T1 is not set | 611 | # CONFIG_CHELSIO_T1 is not set |
612 | # CONFIG_CHELSIO_T3 is not set | ||
613 | # CONFIG_IXGBE is not set | ||
621 | # CONFIG_IXGB is not set | 614 | # CONFIG_IXGB is not set |
622 | # CONFIG_S2IO is not set | 615 | # CONFIG_S2IO is not set |
623 | 616 | # CONFIG_MYRI10GE is not set | |
624 | # | 617 | # CONFIG_NETXEN_NIC is not set |
625 | # Token Ring devices | 618 | # CONFIG_NIU is not set |
626 | # | 619 | # CONFIG_MLX4_CORE is not set |
620 | # CONFIG_TEHUTI is not set | ||
627 | # CONFIG_TR is not set | 621 | # CONFIG_TR is not set |
628 | 622 | ||
629 | # | 623 | # |
630 | # Wireless LAN (non-hamradio) | 624 | # Wireless LAN |
631 | # | ||
632 | CONFIG_NET_RADIO=y | ||
633 | |||
634 | # | ||
635 | # Obsolete Wireless cards support (pre-802.11) | ||
636 | # | ||
637 | # CONFIG_STRIP is not set | ||
638 | # CONFIG_PCMCIA_WAVELAN is not set | ||
639 | CONFIG_PCMCIA_NETWAVE=m | ||
640 | |||
641 | # | ||
642 | # Wireless 802.11 Frequency Hopping cards support | ||
643 | # | ||
644 | CONFIG_PCMCIA_RAYCS=m | ||
645 | |||
646 | # | ||
647 | # Wireless 802.11b ISA/PCI cards support | ||
648 | # | ||
649 | CONFIG_HERMES=m | ||
650 | CONFIG_PLX_HERMES=m | ||
651 | CONFIG_TMD_HERMES=m | ||
652 | # CONFIG_NORTEL_HERMES is not set | ||
653 | CONFIG_PCI_HERMES=m | ||
654 | # CONFIG_ATMEL is not set | ||
655 | |||
656 | # | ||
657 | # Wireless 802.11b Pcmcia/Cardbus cards support | ||
658 | # | ||
659 | CONFIG_PCMCIA_HERMES=m | ||
660 | # CONFIG_PCMCIA_SPECTRUM is not set | ||
661 | CONFIG_AIRO_CS=m | ||
662 | CONFIG_PCMCIA_WL3501=m | ||
663 | |||
664 | # | ||
665 | # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support | ||
666 | # | ||
667 | # CONFIG_PRISM54 is not set | ||
668 | # CONFIG_HOSTAP is not set | ||
669 | CONFIG_NET_WIRELESS=y | ||
670 | |||
671 | # | ||
672 | # PCMCIA network device support | ||
673 | # | 625 | # |
626 | # CONFIG_WLAN_PRE80211 is not set | ||
627 | # CONFIG_WLAN_80211 is not set | ||
674 | CONFIG_NET_PCMCIA=y | 628 | CONFIG_NET_PCMCIA=y |
675 | CONFIG_PCMCIA_3C589=m | 629 | CONFIG_PCMCIA_3C589=m |
676 | CONFIG_PCMCIA_3C574=m | 630 | CONFIG_PCMCIA_3C574=m |
@@ -680,10 +634,6 @@ CONFIG_PCMCIA_3C574=m | |||
680 | CONFIG_PCMCIA_SMC91C92=m | 634 | CONFIG_PCMCIA_SMC91C92=m |
681 | CONFIG_PCMCIA_XIRC2PS=m | 635 | CONFIG_PCMCIA_XIRC2PS=m |
682 | # CONFIG_PCMCIA_AXNET is not set | 636 | # CONFIG_PCMCIA_AXNET is not set |
683 | |||
684 | # | ||
685 | # Wan interfaces | ||
686 | # | ||
687 | # CONFIG_WAN is not set | 637 | # CONFIG_WAN is not set |
688 | # CONFIG_FDDI is not set | 638 | # CONFIG_FDDI is not set |
689 | # CONFIG_HIPPI is not set | 639 | # CONFIG_HIPPI is not set |
@@ -694,28 +644,25 @@ CONFIG_PPP_ASYNC=m | |||
694 | CONFIG_PPP_SYNC_TTY=m | 644 | CONFIG_PPP_SYNC_TTY=m |
695 | CONFIG_PPP_DEFLATE=m | 645 | CONFIG_PPP_DEFLATE=m |
696 | CONFIG_PPP_BSDCOMP=m | 646 | CONFIG_PPP_BSDCOMP=m |
647 | # CONFIG_PPP_MPPE is not set | ||
697 | # CONFIG_PPPOE is not set | 648 | # CONFIG_PPPOE is not set |
649 | # CONFIG_PPPOL2TP is not set | ||
698 | # CONFIG_SLIP is not set | 650 | # CONFIG_SLIP is not set |
651 | CONFIG_SLHC=m | ||
699 | # CONFIG_NET_FC is not set | 652 | # CONFIG_NET_FC is not set |
700 | # CONFIG_SHAPER is not set | 653 | # CONFIG_SHAPER is not set |
701 | # CONFIG_NETCONSOLE is not set | 654 | # CONFIG_NETCONSOLE is not set |
702 | # CONFIG_NETPOLL is not set | 655 | # CONFIG_NETPOLL is not set |
703 | # CONFIG_NET_POLL_CONTROLLER is not set | 656 | # CONFIG_NET_POLL_CONTROLLER is not set |
704 | |||
705 | # | ||
706 | # ISDN subsystem | ||
707 | # | ||
708 | # CONFIG_ISDN is not set | 657 | # CONFIG_ISDN is not set |
709 | |||
710 | # | ||
711 | # Telephony Support | ||
712 | # | ||
713 | # CONFIG_PHONE is not set | 658 | # CONFIG_PHONE is not set |
714 | 659 | ||
715 | # | 660 | # |
716 | # Input device support | 661 | # Input device support |
717 | # | 662 | # |
718 | CONFIG_INPUT=y | 663 | CONFIG_INPUT=y |
664 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
665 | # CONFIG_INPUT_POLLDEV is not set | ||
719 | 666 | ||
720 | # | 667 | # |
721 | # Userland interfaces | 668 | # Userland interfaces |
@@ -732,6 +679,7 @@ CONFIG_INPUT=y | |||
732 | # CONFIG_INPUT_KEYBOARD is not set | 679 | # CONFIG_INPUT_KEYBOARD is not set |
733 | # CONFIG_INPUT_MOUSE is not set | 680 | # CONFIG_INPUT_MOUSE is not set |
734 | # CONFIG_INPUT_JOYSTICK is not set | 681 | # CONFIG_INPUT_JOYSTICK is not set |
682 | # CONFIG_INPUT_TABLET is not set | ||
735 | # CONFIG_INPUT_TOUCHSCREEN is not set | 683 | # CONFIG_INPUT_TOUCHSCREEN is not set |
736 | # CONFIG_INPUT_MISC is not set | 684 | # CONFIG_INPUT_MISC is not set |
737 | 685 | ||
@@ -747,6 +695,7 @@ CONFIG_INPUT=y | |||
747 | CONFIG_VT=y | 695 | CONFIG_VT=y |
748 | CONFIG_VT_CONSOLE=y | 696 | CONFIG_VT_CONSOLE=y |
749 | CONFIG_HW_CONSOLE=y | 697 | CONFIG_HW_CONSOLE=y |
698 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
750 | # CONFIG_SERIAL_NONSTANDARD is not set | 699 | # CONFIG_SERIAL_NONSTANDARD is not set |
751 | 700 | ||
752 | # | 701 | # |
@@ -754,8 +703,10 @@ CONFIG_HW_CONSOLE=y | |||
754 | # | 703 | # |
755 | CONFIG_SERIAL_8250=y | 704 | CONFIG_SERIAL_8250=y |
756 | CONFIG_SERIAL_8250_CONSOLE=y | 705 | CONFIG_SERIAL_8250_CONSOLE=y |
706 | CONFIG_SERIAL_8250_PCI=y | ||
757 | CONFIG_SERIAL_8250_CS=m | 707 | CONFIG_SERIAL_8250_CS=m |
758 | CONFIG_SERIAL_8250_NR_UARTS=17 | 708 | CONFIG_SERIAL_8250_NR_UARTS=17 |
709 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
759 | CONFIG_SERIAL_8250_EXTENDED=y | 710 | CONFIG_SERIAL_8250_EXTENDED=y |
760 | CONFIG_SERIAL_8250_MANY_PORTS=y | 711 | CONFIG_SERIAL_8250_MANY_PORTS=y |
761 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 712 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
@@ -765,83 +716,73 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y | |||
765 | # | 716 | # |
766 | # Non-8250 serial port support | 717 | # Non-8250 serial port support |
767 | # | 718 | # |
768 | # CONFIG_SERIAL_MUX is not set | ||
769 | CONFIG_PDC_CONSOLE=y | 719 | CONFIG_PDC_CONSOLE=y |
770 | CONFIG_SERIAL_CORE=y | 720 | CONFIG_SERIAL_CORE=y |
771 | CONFIG_SERIAL_CORE_CONSOLE=y | 721 | CONFIG_SERIAL_CORE_CONSOLE=y |
772 | # CONFIG_SERIAL_JSM is not set | 722 | # CONFIG_SERIAL_JSM is not set |
773 | CONFIG_UNIX98_PTYS=y | 723 | CONFIG_UNIX98_PTYS=y |
774 | # CONFIG_LEGACY_PTYS is not set | 724 | # CONFIG_LEGACY_PTYS is not set |
775 | |||
776 | # | ||
777 | # IPMI | ||
778 | # | ||
779 | # CONFIG_IPMI_HANDLER is not set | 725 | # CONFIG_IPMI_HANDLER is not set |
780 | |||
781 | # | ||
782 | # Watchdog Cards | ||
783 | # | ||
784 | # CONFIG_WATCHDOG is not set | 726 | # CONFIG_WATCHDOG is not set |
727 | # CONFIG_HW_RANDOM is not set | ||
785 | CONFIG_GEN_RTC=y | 728 | CONFIG_GEN_RTC=y |
786 | CONFIG_GEN_RTC_X=y | 729 | CONFIG_GEN_RTC_X=y |
787 | # CONFIG_DTLK is not set | ||
788 | # CONFIG_R3964 is not set | 730 | # CONFIG_R3964 is not set |
789 | # CONFIG_APPLICOM is not set | 731 | # CONFIG_APPLICOM is not set |
790 | 732 | CONFIG_AGP=y | |
791 | # | 733 | CONFIG_AGP_PARISC=y |
792 | # Ftape, the floppy tape device driver | ||
793 | # | ||
794 | # CONFIG_DRM is not set | 734 | # CONFIG_DRM is not set |
795 | 735 | ||
796 | # | 736 | # |
797 | # PCMCIA character devices | 737 | # PCMCIA character devices |
798 | # | 738 | # |
799 | # CONFIG_SYNCLINK_CS is not set | 739 | # CONFIG_SYNCLINK_CS is not set |
740 | # CONFIG_CARDMAN_4000 is not set | ||
741 | # CONFIG_CARDMAN_4040 is not set | ||
800 | CONFIG_RAW_DRIVER=y | 742 | CONFIG_RAW_DRIVER=y |
801 | CONFIG_MAX_RAW_DEVS=256 | 743 | CONFIG_MAX_RAW_DEVS=256 |
802 | |||
803 | # | ||
804 | # TPM devices | ||
805 | # | ||
806 | # CONFIG_TCG_TPM is not set | 744 | # CONFIG_TCG_TPM is not set |
807 | 745 | CONFIG_DEVPORT=y | |
808 | # | ||
809 | # I2C support | ||
810 | # | ||
811 | # CONFIG_I2C is not set | 746 | # CONFIG_I2C is not set |
812 | 747 | ||
813 | # | 748 | # |
814 | # Dallas's 1-wire bus | 749 | # SPI support |
815 | # | 750 | # |
751 | # CONFIG_SPI is not set | ||
752 | # CONFIG_SPI_MASTER is not set | ||
816 | # CONFIG_W1 is not set | 753 | # CONFIG_W1 is not set |
817 | 754 | # CONFIG_POWER_SUPPLY is not set | |
818 | # | ||
819 | # Hardware Monitoring support | ||
820 | # | ||
821 | # CONFIG_HWMON is not set | 755 | # CONFIG_HWMON is not set |
822 | # CONFIG_HWMON_VID is not set | ||
823 | 756 | ||
824 | # | 757 | # |
825 | # Misc devices | 758 | # Sonics Silicon Backplane |
826 | # | 759 | # |
760 | CONFIG_SSB_POSSIBLE=y | ||
761 | # CONFIG_SSB is not set | ||
827 | 762 | ||
828 | # | 763 | # |
829 | # Multimedia Capabilities Port drivers | 764 | # Multifunction device drivers |
830 | # | 765 | # |
766 | # CONFIG_MFD_SM501 is not set | ||
831 | 767 | ||
832 | # | 768 | # |
833 | # Multimedia devices | 769 | # Multimedia devices |
834 | # | 770 | # |
835 | # CONFIG_VIDEO_DEV is not set | 771 | # CONFIG_VIDEO_DEV is not set |
772 | # CONFIG_DVB_CORE is not set | ||
773 | # CONFIG_DAB is not set | ||
836 | 774 | ||
837 | # | 775 | # |
838 | # Digital Video Broadcasting Devices | 776 | # Graphics support |
839 | # | 777 | # |
840 | # CONFIG_DVB is not set | 778 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
841 | 779 | ||
842 | # | 780 | # |
843 | # Graphics support | 781 | # Display device support |
844 | # | 782 | # |
783 | # CONFIG_DISPLAY_SUPPORT is not set | ||
784 | # CONFIG_VGASTATE is not set | ||
785 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
845 | # CONFIG_FB is not set | 786 | # CONFIG_FB is not set |
846 | 787 | ||
847 | # | 788 | # |
@@ -856,34 +797,47 @@ CONFIG_DUMMY_CONSOLE_ROWS=64 | |||
856 | # Sound | 797 | # Sound |
857 | # | 798 | # |
858 | # CONFIG_SOUND is not set | 799 | # CONFIG_SOUND is not set |
859 | 800 | CONFIG_HID_SUPPORT=y | |
860 | # | 801 | CONFIG_HID=y |
861 | # USB support | 802 | # CONFIG_HID_DEBUG is not set |
862 | # | 803 | CONFIG_USB_SUPPORT=y |
863 | CONFIG_USB_ARCH_HAS_HCD=y | 804 | CONFIG_USB_ARCH_HAS_HCD=y |
864 | CONFIG_USB_ARCH_HAS_OHCI=y | 805 | CONFIG_USB_ARCH_HAS_OHCI=y |
806 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
865 | # CONFIG_USB is not set | 807 | # CONFIG_USB is not set |
866 | 808 | ||
867 | # | 809 | # |
810 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
811 | # | ||
812 | |||
813 | # | ||
868 | # USB Gadget Support | 814 | # USB Gadget Support |
869 | # | 815 | # |
870 | # CONFIG_USB_GADGET is not set | 816 | # CONFIG_USB_GADGET is not set |
817 | # CONFIG_MMC is not set | ||
818 | # CONFIG_NEW_LEDS is not set | ||
819 | # CONFIG_INFINIBAND is not set | ||
820 | # CONFIG_RTC_CLASS is not set | ||
871 | 821 | ||
872 | # | 822 | # |
873 | # MMC/SD Card support | 823 | # DMA Engine support |
874 | # | 824 | # |
875 | # CONFIG_MMC is not set | 825 | # CONFIG_DMA_ENGINE is not set |
876 | 826 | ||
877 | # | 827 | # |
878 | # InfiniBand support | 828 | # DMA Clients |
879 | # | 829 | # |
880 | # CONFIG_INFINIBAND is not set | ||
881 | 830 | ||
882 | # | 831 | # |
883 | # SN Devices | 832 | # DMA Devices |
884 | # | 833 | # |
885 | 834 | ||
886 | # | 835 | # |
836 | # Userspace I/O | ||
837 | # | ||
838 | # CONFIG_UIO is not set | ||
839 | |||
840 | # | ||
887 | # File systems | 841 | # File systems |
888 | # | 842 | # |
889 | CONFIG_EXT2_FS=y | 843 | CONFIG_EXT2_FS=y |
@@ -891,6 +845,7 @@ CONFIG_EXT2_FS=y | |||
891 | # CONFIG_EXT2_FS_XIP is not set | 845 | # CONFIG_EXT2_FS_XIP is not set |
892 | CONFIG_EXT3_FS=y | 846 | CONFIG_EXT3_FS=y |
893 | # CONFIG_EXT3_FS_XATTR is not set | 847 | # CONFIG_EXT3_FS_XATTR is not set |
848 | # CONFIG_EXT4DEV_FS is not set | ||
894 | CONFIG_JBD=y | 849 | CONFIG_JBD=y |
895 | # CONFIG_JBD_DEBUG is not set | 850 | # CONFIG_JBD_DEBUG is not set |
896 | # CONFIG_REISERFS_FS is not set | 851 | # CONFIG_REISERFS_FS is not set |
@@ -901,14 +856,16 @@ CONFIG_JFS_FS=m | |||
901 | # CONFIG_JFS_STATISTICS is not set | 856 | # CONFIG_JFS_STATISTICS is not set |
902 | CONFIG_FS_POSIX_ACL=y | 857 | CONFIG_FS_POSIX_ACL=y |
903 | CONFIG_XFS_FS=m | 858 | CONFIG_XFS_FS=m |
904 | CONFIG_XFS_EXPORT=y | ||
905 | # CONFIG_XFS_QUOTA is not set | 859 | # CONFIG_XFS_QUOTA is not set |
906 | # CONFIG_XFS_SECURITY is not set | 860 | # CONFIG_XFS_SECURITY is not set |
907 | # CONFIG_XFS_POSIX_ACL is not set | 861 | # CONFIG_XFS_POSIX_ACL is not set |
908 | # CONFIG_XFS_RT is not set | 862 | # CONFIG_XFS_RT is not set |
863 | # CONFIG_GFS2_FS is not set | ||
864 | # CONFIG_OCFS2_FS is not set | ||
909 | # CONFIG_MINIX_FS is not set | 865 | # CONFIG_MINIX_FS is not set |
910 | # CONFIG_ROMFS_FS is not set | 866 | # CONFIG_ROMFS_FS is not set |
911 | CONFIG_INOTIFY=y | 867 | CONFIG_INOTIFY=y |
868 | CONFIG_INOTIFY_USER=y | ||
912 | # CONFIG_QUOTA is not set | 869 | # CONFIG_QUOTA is not set |
913 | CONFIG_DNOTIFY=y | 870 | CONFIG_DNOTIFY=y |
914 | # CONFIG_AUTOFS_FS is not set | 871 | # CONFIG_AUTOFS_FS is not set |
@@ -939,18 +896,20 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
939 | # | 896 | # |
940 | CONFIG_PROC_FS=y | 897 | CONFIG_PROC_FS=y |
941 | CONFIG_PROC_KCORE=y | 898 | CONFIG_PROC_KCORE=y |
899 | CONFIG_PROC_SYSCTL=y | ||
942 | CONFIG_SYSFS=y | 900 | CONFIG_SYSFS=y |
943 | CONFIG_TMPFS=y | 901 | CONFIG_TMPFS=y |
944 | # CONFIG_HUGETLBFS is not set | 902 | # CONFIG_TMPFS_POSIX_ACL is not set |
945 | # CONFIG_HUGETLB_PAGE is not set | 903 | # CONFIG_HUGETLB_PAGE is not set |
946 | CONFIG_RAMFS=y | 904 | CONFIG_RAMFS=y |
947 | # CONFIG_RELAYFS_FS is not set | 905 | # CONFIG_CONFIGFS_FS is not set |
948 | 906 | ||
949 | # | 907 | # |
950 | # Miscellaneous filesystems | 908 | # Miscellaneous filesystems |
951 | # | 909 | # |
952 | # CONFIG_ADFS_FS is not set | 910 | # CONFIG_ADFS_FS is not set |
953 | # CONFIG_AFFS_FS is not set | 911 | # CONFIG_AFFS_FS is not set |
912 | # CONFIG_ECRYPT_FS is not set | ||
954 | # CONFIG_HFS_FS is not set | 913 | # CONFIG_HFS_FS is not set |
955 | # CONFIG_HFSPLUS_FS is not set | 914 | # CONFIG_HFSPLUS_FS is not set |
956 | # CONFIG_BEFS_FS is not set | 915 | # CONFIG_BEFS_FS is not set |
@@ -963,6 +922,7 @@ CONFIG_RAMFS=y | |||
963 | # CONFIG_SYSV_FS is not set | 922 | # CONFIG_SYSV_FS is not set |
964 | CONFIG_UFS_FS=m | 923 | CONFIG_UFS_FS=m |
965 | # CONFIG_UFS_FS_WRITE is not set | 924 | # CONFIG_UFS_FS_WRITE is not set |
925 | # CONFIG_UFS_DEBUG is not set | ||
966 | 926 | ||
967 | # | 927 | # |
968 | # Network File Systems | 928 | # Network File Systems |
@@ -983,6 +943,7 @@ CONFIG_EXPORTFS=m | |||
983 | CONFIG_NFS_COMMON=y | 943 | CONFIG_NFS_COMMON=y |
984 | CONFIG_SUNRPC=m | 944 | CONFIG_SUNRPC=m |
985 | CONFIG_SUNRPC_GSS=m | 945 | CONFIG_SUNRPC_GSS=m |
946 | # CONFIG_SUNRPC_BIND34 is not set | ||
986 | CONFIG_RPCSEC_GSS_KRB5=m | 947 | CONFIG_RPCSEC_GSS_KRB5=m |
987 | CONFIG_RPCSEC_GSS_SPKM3=m | 948 | CONFIG_RPCSEC_GSS_SPKM3=m |
988 | CONFIG_SMB_FS=m | 949 | CONFIG_SMB_FS=m |
@@ -990,12 +951,13 @@ CONFIG_SMB_NLS_DEFAULT=y | |||
990 | CONFIG_SMB_NLS_REMOTE="cp437" | 951 | CONFIG_SMB_NLS_REMOTE="cp437" |
991 | CONFIG_CIFS=m | 952 | CONFIG_CIFS=m |
992 | # CONFIG_CIFS_STATS is not set | 953 | # CONFIG_CIFS_STATS is not set |
954 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
993 | # CONFIG_CIFS_XATTR is not set | 955 | # CONFIG_CIFS_XATTR is not set |
956 | # CONFIG_CIFS_DEBUG2 is not set | ||
994 | # CONFIG_CIFS_EXPERIMENTAL is not set | 957 | # CONFIG_CIFS_EXPERIMENTAL is not set |
995 | # CONFIG_NCP_FS is not set | 958 | # CONFIG_NCP_FS is not set |
996 | # CONFIG_CODA_FS is not set | 959 | # CONFIG_CODA_FS is not set |
997 | # CONFIG_AFS_FS is not set | 960 | # CONFIG_AFS_FS is not set |
998 | # CONFIG_9P_FS is not set | ||
999 | 961 | ||
1000 | # | 962 | # |
1001 | # Partition Types | 963 | # Partition Types |
@@ -1048,6 +1010,11 @@ CONFIG_NLS_ISO8859_15=m | |||
1048 | CONFIG_NLS_UTF8=m | 1010 | CONFIG_NLS_UTF8=m |
1049 | 1011 | ||
1050 | # | 1012 | # |
1013 | # Distributed Lock Manager | ||
1014 | # | ||
1015 | # CONFIG_DLM is not set | ||
1016 | |||
1017 | # | ||
1051 | # Profiling support | 1018 | # Profiling support |
1052 | # | 1019 | # |
1053 | CONFIG_PROFILING=y | 1020 | CONFIG_PROFILING=y |
@@ -1057,19 +1024,34 @@ CONFIG_OPROFILE=m | |||
1057 | # Kernel hacking | 1024 | # Kernel hacking |
1058 | # | 1025 | # |
1059 | # CONFIG_PRINTK_TIME is not set | 1026 | # CONFIG_PRINTK_TIME is not set |
1060 | CONFIG_DEBUG_KERNEL=y | 1027 | CONFIG_ENABLE_MUST_CHECK=y |
1061 | CONFIG_MAGIC_SYSRQ=y | 1028 | CONFIG_MAGIC_SYSRQ=y |
1062 | CONFIG_LOG_BUF_SHIFT=16 | 1029 | # CONFIG_UNUSED_SYMBOLS is not set |
1030 | # CONFIG_DEBUG_FS is not set | ||
1031 | CONFIG_HEADERS_CHECK=y | ||
1032 | CONFIG_DEBUG_KERNEL=y | ||
1033 | # CONFIG_DEBUG_SHIRQ is not set | ||
1063 | CONFIG_DETECT_SOFTLOCKUP=y | 1034 | CONFIG_DETECT_SOFTLOCKUP=y |
1035 | CONFIG_SCHED_DEBUG=y | ||
1064 | # CONFIG_SCHEDSTATS is not set | 1036 | # CONFIG_SCHEDSTATS is not set |
1037 | # CONFIG_TIMER_STATS is not set | ||
1065 | # CONFIG_DEBUG_SLAB is not set | 1038 | # CONFIG_DEBUG_SLAB is not set |
1039 | # CONFIG_DEBUG_RT_MUTEXES is not set | ||
1040 | # CONFIG_RT_MUTEX_TESTER is not set | ||
1066 | # CONFIG_DEBUG_SPINLOCK is not set | 1041 | # CONFIG_DEBUG_SPINLOCK is not set |
1042 | # CONFIG_DEBUG_MUTEXES is not set | ||
1067 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1043 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1044 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
1068 | # CONFIG_DEBUG_KOBJECT is not set | 1045 | # CONFIG_DEBUG_KOBJECT is not set |
1046 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
1069 | # CONFIG_DEBUG_INFO is not set | 1047 | # CONFIG_DEBUG_INFO is not set |
1070 | # CONFIG_DEBUG_IOREMAP is not set | 1048 | # CONFIG_DEBUG_VM is not set |
1071 | # CONFIG_DEBUG_FS is not set | 1049 | # CONFIG_DEBUG_LIST is not set |
1050 | CONFIG_FORCED_INLINING=y | ||
1051 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1052 | # CONFIG_FAULT_INJECTION is not set | ||
1072 | # CONFIG_DEBUG_RWLOCK is not set | 1053 | # CONFIG_DEBUG_RWLOCK is not set |
1054 | # CONFIG_DEBUG_RODATA is not set | ||
1073 | 1055 | ||
1074 | # | 1056 | # |
1075 | # Security options | 1057 | # Security options |
@@ -1077,12 +1059,13 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1077 | CONFIG_KEYS=y | 1059 | CONFIG_KEYS=y |
1078 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | 1060 | CONFIG_KEYS_DEBUG_PROC_KEYS=y |
1079 | # CONFIG_SECURITY is not set | 1061 | # CONFIG_SECURITY is not set |
1080 | |||
1081 | # | ||
1082 | # Cryptographic options | ||
1083 | # | ||
1084 | CONFIG_CRYPTO=y | 1062 | CONFIG_CRYPTO=y |
1063 | CONFIG_CRYPTO_ALGAPI=y | ||
1064 | CONFIG_CRYPTO_BLKCIPHER=m | ||
1065 | CONFIG_CRYPTO_HASH=y | ||
1066 | CONFIG_CRYPTO_MANAGER=y | ||
1085 | CONFIG_CRYPTO_HMAC=y | 1067 | CONFIG_CRYPTO_HMAC=y |
1068 | # CONFIG_CRYPTO_XCBC is not set | ||
1086 | CONFIG_CRYPTO_NULL=m | 1069 | CONFIG_CRYPTO_NULL=m |
1087 | # CONFIG_CRYPTO_MD4 is not set | 1070 | # CONFIG_CRYPTO_MD4 is not set |
1088 | CONFIG_CRYPTO_MD5=y | 1071 | CONFIG_CRYPTO_MD5=y |
@@ -1091,32 +1074,47 @@ CONFIG_CRYPTO_SHA1=m | |||
1091 | # CONFIG_CRYPTO_SHA512 is not set | 1074 | # CONFIG_CRYPTO_SHA512 is not set |
1092 | # CONFIG_CRYPTO_WP512 is not set | 1075 | # CONFIG_CRYPTO_WP512 is not set |
1093 | # CONFIG_CRYPTO_TGR192 is not set | 1076 | # CONFIG_CRYPTO_TGR192 is not set |
1077 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1078 | # CONFIG_CRYPTO_ECB is not set | ||
1079 | CONFIG_CRYPTO_CBC=m | ||
1080 | # CONFIG_CRYPTO_PCBC is not set | ||
1081 | # CONFIG_CRYPTO_LRW is not set | ||
1082 | # CONFIG_CRYPTO_XTS is not set | ||
1083 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1094 | CONFIG_CRYPTO_DES=m | 1084 | CONFIG_CRYPTO_DES=m |
1085 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1095 | CONFIG_CRYPTO_BLOWFISH=m | 1086 | CONFIG_CRYPTO_BLOWFISH=m |
1096 | # CONFIG_CRYPTO_TWOFISH is not set | 1087 | # CONFIG_CRYPTO_TWOFISH is not set |
1097 | # CONFIG_CRYPTO_SERPENT is not set | 1088 | # CONFIG_CRYPTO_SERPENT is not set |
1098 | # CONFIG_CRYPTO_AES is not set | 1089 | # CONFIG_CRYPTO_AES is not set |
1099 | # CONFIG_CRYPTO_CAST5 is not set | 1090 | CONFIG_CRYPTO_CAST5=m |
1100 | # CONFIG_CRYPTO_CAST6 is not set | 1091 | # CONFIG_CRYPTO_CAST6 is not set |
1101 | # CONFIG_CRYPTO_TEA is not set | 1092 | # CONFIG_CRYPTO_TEA is not set |
1102 | # CONFIG_CRYPTO_ARC4 is not set | 1093 | # CONFIG_CRYPTO_ARC4 is not set |
1103 | # CONFIG_CRYPTO_KHAZAD is not set | 1094 | # CONFIG_CRYPTO_KHAZAD is not set |
1104 | # CONFIG_CRYPTO_ANUBIS is not set | 1095 | # CONFIG_CRYPTO_ANUBIS is not set |
1096 | # CONFIG_CRYPTO_SEED is not set | ||
1105 | CONFIG_CRYPTO_DEFLATE=m | 1097 | CONFIG_CRYPTO_DEFLATE=m |
1106 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1098 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1107 | CONFIG_CRYPTO_CRC32C=m | 1099 | CONFIG_CRYPTO_CRC32C=m |
1100 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1108 | CONFIG_CRYPTO_TEST=m | 1101 | CONFIG_CRYPTO_TEST=m |
1109 | 1102 | # CONFIG_CRYPTO_AUTHENC is not set | |
1110 | # | 1103 | # CONFIG_CRYPTO_HW is not set |
1111 | # Hardware crypto devices | ||
1112 | # | ||
1113 | 1104 | ||
1114 | # | 1105 | # |
1115 | # Library routines | 1106 | # Library routines |
1116 | # | 1107 | # |
1108 | CONFIG_BITREVERSE=y | ||
1117 | CONFIG_CRC_CCITT=m | 1109 | CONFIG_CRC_CCITT=m |
1118 | # CONFIG_CRC16 is not set | 1110 | # CONFIG_CRC16 is not set |
1111 | # CONFIG_CRC_ITU_T is not set | ||
1119 | CONFIG_CRC32=y | 1112 | CONFIG_CRC32=y |
1113 | # CONFIG_CRC7 is not set | ||
1120 | CONFIG_LIBCRC32C=m | 1114 | CONFIG_LIBCRC32C=m |
1121 | CONFIG_ZLIB_INFLATE=m | 1115 | CONFIG_ZLIB_INFLATE=m |
1122 | CONFIG_ZLIB_DEFLATE=m | 1116 | CONFIG_ZLIB_DEFLATE=m |
1117 | CONFIG_PLIST=y | ||
1118 | CONFIG_HAS_IOMEM=y | ||
1119 | CONFIG_HAS_IOPORT=y | ||
1120 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/parisc/configs/b180_defconfig b/arch/parisc/configs/b180_defconfig index 35093612ad2c..1bf22c9a4614 100644 --- a/arch/parisc/configs/b180_defconfig +++ b/arch/parisc/configs/b180_defconfig | |||
@@ -1,38 +1,47 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.16-rc1-pa0 | 3 | # Linux kernel version: 2.6.23 |
4 | # Tue Jan 17 08:21:01 2006 | 4 | # Fri Oct 12 21:16:46 2007 |
5 | # | 5 | # |
6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
10 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
11 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
13 | CONFIG_GENERIC_BUG=y | ||
14 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 15 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
16 | CONFIG_GENERIC_TIME=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | 17 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_GENERIC_IRQ_PROBE=y | 18 | CONFIG_GENERIC_IRQ_PROBE=y |
19 | CONFIG_IRQ_PER_CPU=y | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
13 | 21 | ||
14 | # | 22 | # |
15 | # Code maturity level options | 23 | # General setup |
16 | # | 24 | # |
17 | # CONFIG_EXPERIMENTAL is not set | 25 | # CONFIG_EXPERIMENTAL is not set |
18 | CONFIG_CLEAN_COMPILE=y | ||
19 | CONFIG_BROKEN_ON_SMP=y | 26 | CONFIG_BROKEN_ON_SMP=y |
20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
21 | |||
22 | # | ||
23 | # General setup | ||
24 | # | ||
25 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
26 | # CONFIG_LOCALVERSION_AUTO is not set | 29 | # CONFIG_LOCALVERSION_AUTO is not set |
27 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
28 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
32 | CONFIG_SYSVIPC_SYSCTL=y | ||
29 | # CONFIG_BSD_PROCESS_ACCT is not set | 33 | # CONFIG_BSD_PROCESS_ACCT is not set |
30 | CONFIG_SYSCTL=y | 34 | # CONFIG_TASKSTATS is not set |
31 | # CONFIG_AUDIT is not set | 35 | # CONFIG_AUDIT is not set |
32 | CONFIG_IKCONFIG=y | 36 | CONFIG_IKCONFIG=y |
33 | CONFIG_IKCONFIG_PROC=y | 37 | CONFIG_IKCONFIG_PROC=y |
34 | CONFIG_INITRAMFS_SOURCE="" | 38 | CONFIG_LOG_BUF_SHIFT=16 |
39 | CONFIG_SYSFS_DEPRECATED=y | ||
40 | # CONFIG_RELAY is not set | ||
41 | # CONFIG_BLK_DEV_INITRD is not set | ||
42 | CONFIG_SYSCTL=y | ||
35 | # CONFIG_EMBEDDED is not set | 43 | # CONFIG_EMBEDDED is not set |
44 | CONFIG_SYSCTL_SYSCALL=y | ||
36 | CONFIG_KALLSYMS=y | 45 | CONFIG_KALLSYMS=y |
37 | # CONFIG_KALLSYMS_ALL is not set | 46 | # CONFIG_KALLSYMS_ALL is not set |
38 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 47 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -42,30 +51,27 @@ CONFIG_BUG=y | |||
42 | CONFIG_ELF_CORE=y | 51 | CONFIG_ELF_CORE=y |
43 | CONFIG_BASE_FULL=y | 52 | CONFIG_BASE_FULL=y |
44 | CONFIG_FUTEX=y | 53 | CONFIG_FUTEX=y |
54 | CONFIG_ANON_INODES=y | ||
45 | CONFIG_EPOLL=y | 55 | CONFIG_EPOLL=y |
56 | CONFIG_SIGNALFD=y | ||
57 | CONFIG_EVENTFD=y | ||
46 | CONFIG_SHMEM=y | 58 | CONFIG_SHMEM=y |
47 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 59 | CONFIG_VM_EVENT_COUNTERS=y |
48 | CONFIG_CC_ALIGN_LABELS=0 | ||
49 | CONFIG_CC_ALIGN_LOOPS=0 | ||
50 | CONFIG_CC_ALIGN_JUMPS=0 | ||
51 | CONFIG_SLAB=y | 60 | CONFIG_SLAB=y |
61 | # CONFIG_SLUB is not set | ||
62 | # CONFIG_SLOB is not set | ||
63 | CONFIG_RT_MUTEXES=y | ||
52 | # CONFIG_TINY_SHMEM is not set | 64 | # CONFIG_TINY_SHMEM is not set |
53 | CONFIG_BASE_SMALL=0 | 65 | CONFIG_BASE_SMALL=0 |
54 | # CONFIG_SLOB is not set | ||
55 | |||
56 | # | ||
57 | # Loadable module support | ||
58 | # | ||
59 | CONFIG_MODULES=y | 66 | CONFIG_MODULES=y |
60 | # CONFIG_MODULE_UNLOAD is not set | 67 | # CONFIG_MODULE_UNLOAD is not set |
61 | CONFIG_OBSOLETE_MODPARM=y | ||
62 | CONFIG_MODVERSIONS=y | 68 | CONFIG_MODVERSIONS=y |
63 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 69 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
64 | # CONFIG_KMOD is not set | 70 | # CONFIG_KMOD is not set |
65 | 71 | CONFIG_BLOCK=y | |
66 | # | 72 | # CONFIG_LBD is not set |
67 | # Block layer | 73 | # CONFIG_BLK_DEV_IO_TRACE is not set |
68 | # | 74 | # CONFIG_LSF is not set |
69 | 75 | ||
70 | # | 76 | # |
71 | # IO Schedulers | 77 | # IO Schedulers |
@@ -89,16 +95,26 @@ CONFIG_PA7100LC=y | |||
89 | # CONFIG_PA7300LC is not set | 95 | # CONFIG_PA7300LC is not set |
90 | # CONFIG_PA8X00 is not set | 96 | # CONFIG_PA8X00 is not set |
91 | CONFIG_PA11=y | 97 | CONFIG_PA11=y |
98 | CONFIG_PARISC_PAGE_SIZE_4KB=y | ||
99 | # CONFIG_PARISC_PAGE_SIZE_16KB is not set | ||
100 | # CONFIG_PARISC_PAGE_SIZE_64KB is not set | ||
92 | # CONFIG_SMP is not set | 101 | # CONFIG_SMP is not set |
102 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
103 | CONFIG_PREEMPT_NONE=y | ||
104 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
105 | # CONFIG_PREEMPT is not set | ||
93 | # CONFIG_HZ_100 is not set | 106 | # CONFIG_HZ_100 is not set |
94 | CONFIG_HZ_250=y | 107 | CONFIG_HZ_250=y |
108 | # CONFIG_HZ_300 is not set | ||
95 | # CONFIG_HZ_1000 is not set | 109 | # CONFIG_HZ_1000 is not set |
96 | CONFIG_HZ=250 | 110 | CONFIG_HZ=250 |
97 | CONFIG_FLATMEM=y | 111 | CONFIG_FLATMEM=y |
98 | CONFIG_FLAT_NODE_MEM_MAP=y | 112 | CONFIG_FLAT_NODE_MEM_MAP=y |
99 | # CONFIG_SPARSEMEM_STATIC is not set | 113 | # CONFIG_SPARSEMEM_STATIC is not set |
100 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 114 | CONFIG_SPLIT_PTLOCK_CPUS=4096 |
101 | # CONFIG_PREEMPT is not set | 115 | # CONFIG_RESOURCES_64BIT is not set |
116 | CONFIG_ZONE_DMA_FLAG=0 | ||
117 | CONFIG_VIRT_TO_BUS=y | ||
102 | # CONFIG_HPUX is not set | 118 | # CONFIG_HPUX is not set |
103 | 119 | ||
104 | # | 120 | # |
@@ -113,7 +129,7 @@ CONFIG_EISA=y | |||
113 | CONFIG_EISA_NAMES=y | 129 | CONFIG_EISA_NAMES=y |
114 | CONFIG_ISA=y | 130 | CONFIG_ISA=y |
115 | CONFIG_PCI=y | 131 | CONFIG_PCI=y |
116 | CONFIG_PCI_LEGACY_PROC=y | 132 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
117 | # CONFIG_PCI_DEBUG is not set | 133 | # CONFIG_PCI_DEBUG is not set |
118 | CONFIG_GSC_DINO=y | 134 | CONFIG_GSC_DINO=y |
119 | # CONFIG_PCI_LBA is not set | 135 | # CONFIG_PCI_LBA is not set |
@@ -124,14 +140,11 @@ CONFIG_GSC_DINO=y | |||
124 | # CONFIG_PCCARD is not set | 140 | # CONFIG_PCCARD is not set |
125 | 141 | ||
126 | # | 142 | # |
127 | # PCI Hotplug Support | ||
128 | # | ||
129 | |||
130 | # | ||
131 | # PA-RISC specific drivers | 143 | # PA-RISC specific drivers |
132 | # | 144 | # |
133 | CONFIG_CHASSIS_LCD_LED=y | 145 | CONFIG_CHASSIS_LCD_LED=y |
134 | # CONFIG_PDC_CHASSIS is not set | 146 | # CONFIG_PDC_CHASSIS is not set |
147 | CONFIG_PDC_CHASSIS_WARN=y | ||
135 | CONFIG_PDC_STABLE=y | 148 | CONFIG_PDC_STABLE=y |
136 | 149 | ||
137 | # | 150 | # |
@@ -151,6 +164,8 @@ CONFIG_NET=y | |||
151 | CONFIG_PACKET=y | 164 | CONFIG_PACKET=y |
152 | CONFIG_PACKET_MMAP=y | 165 | CONFIG_PACKET_MMAP=y |
153 | CONFIG_UNIX=y | 166 | CONFIG_UNIX=y |
167 | CONFIG_XFRM=y | ||
168 | # CONFIG_XFRM_USER is not set | ||
154 | # CONFIG_NET_KEY is not set | 169 | # CONFIG_NET_KEY is not set |
155 | CONFIG_INET=y | 170 | CONFIG_INET=y |
156 | CONFIG_IP_MULTICAST=y | 171 | CONFIG_IP_MULTICAST=y |
@@ -167,18 +182,32 @@ CONFIG_IP_PNP_BOOTP=y | |||
167 | # CONFIG_INET_AH is not set | 182 | # CONFIG_INET_AH is not set |
168 | # CONFIG_INET_ESP is not set | 183 | # CONFIG_INET_ESP is not set |
169 | # CONFIG_INET_IPCOMP is not set | 184 | # CONFIG_INET_IPCOMP is not set |
170 | # CONFIG_INET_TUNNEL is not set | 185 | # CONFIG_INET_XFRM_TUNNEL is not set |
186 | CONFIG_INET_TUNNEL=y | ||
187 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
188 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
189 | CONFIG_INET_XFRM_MODE_BEET=y | ||
190 | # CONFIG_INET_LRO is not set | ||
171 | CONFIG_INET_DIAG=y | 191 | CONFIG_INET_DIAG=y |
172 | CONFIG_INET_TCP_DIAG=y | 192 | CONFIG_INET_TCP_DIAG=y |
173 | # CONFIG_TCP_CONG_ADVANCED is not set | 193 | # CONFIG_TCP_CONG_ADVANCED is not set |
174 | CONFIG_TCP_CONG_BIC=y | 194 | CONFIG_TCP_CONG_CUBIC=y |
195 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
175 | CONFIG_IPV6=y | 196 | CONFIG_IPV6=y |
176 | # CONFIG_IPV6_PRIVACY is not set | 197 | # CONFIG_IPV6_PRIVACY is not set |
198 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
177 | # CONFIG_INET6_AH is not set | 199 | # CONFIG_INET6_AH is not set |
178 | # CONFIG_INET6_ESP is not set | 200 | # CONFIG_INET6_ESP is not set |
179 | # CONFIG_INET6_IPCOMP is not set | 201 | # CONFIG_INET6_IPCOMP is not set |
202 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
180 | # CONFIG_INET6_TUNNEL is not set | 203 | # CONFIG_INET6_TUNNEL is not set |
204 | CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
205 | CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
206 | CONFIG_INET6_XFRM_MODE_BEET=y | ||
207 | CONFIG_IPV6_SIT=y | ||
181 | # CONFIG_IPV6_TUNNEL is not set | 208 | # CONFIG_IPV6_TUNNEL is not set |
209 | # CONFIG_NETLABEL is not set | ||
210 | # CONFIG_NETWORK_SECMARK is not set | ||
182 | # CONFIG_NETFILTER is not set | 211 | # CONFIG_NETFILTER is not set |
183 | # CONFIG_BRIDGE is not set | 212 | # CONFIG_BRIDGE is not set |
184 | # CONFIG_VLAN_8021Q is not set | 213 | # CONFIG_VLAN_8021Q is not set |
@@ -199,7 +228,14 @@ CONFIG_IPV6=y | |||
199 | # CONFIG_HAMRADIO is not set | 228 | # CONFIG_HAMRADIO is not set |
200 | # CONFIG_IRDA is not set | 229 | # CONFIG_IRDA is not set |
201 | # CONFIG_BT is not set | 230 | # CONFIG_BT is not set |
231 | |||
232 | # | ||
233 | # Wireless | ||
234 | # | ||
235 | # CONFIG_CFG80211 is not set | ||
236 | # CONFIG_WIRELESS_EXT is not set | ||
202 | # CONFIG_IEEE80211 is not set | 237 | # CONFIG_IEEE80211 is not set |
238 | # CONFIG_RFKILL is not set | ||
203 | 239 | ||
204 | # | 240 | # |
205 | # Device Drivers | 241 | # Device Drivers |
@@ -208,39 +244,24 @@ CONFIG_IPV6=y | |||
208 | # | 244 | # |
209 | # Generic Driver Options | 245 | # Generic Driver Options |
210 | # | 246 | # |
247 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
211 | CONFIG_STANDALONE=y | 248 | CONFIG_STANDALONE=y |
212 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 249 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
213 | # CONFIG_FW_LOADER is not set | 250 | # CONFIG_FW_LOADER is not set |
214 | # CONFIG_DEBUG_DRIVER is not set | 251 | # CONFIG_DEBUG_DRIVER is not set |
215 | 252 | # CONFIG_DEBUG_DEVRES is not set | |
216 | # | 253 | # CONFIG_SYS_HYPERVISOR is not set |
217 | # Connector - unified userspace <-> kernelspace linker | ||
218 | # | ||
219 | # CONFIG_CONNECTOR is not set | 254 | # CONFIG_CONNECTOR is not set |
220 | |||
221 | # | ||
222 | # Memory Technology Devices (MTD) | ||
223 | # | ||
224 | # CONFIG_MTD is not set | 255 | # CONFIG_MTD is not set |
225 | |||
226 | # | ||
227 | # Parallel port support | ||
228 | # | ||
229 | CONFIG_PARPORT=y | 256 | CONFIG_PARPORT=y |
230 | CONFIG_PARPORT_PC=y | 257 | CONFIG_PARPORT_PC=y |
231 | # CONFIG_PARPORT_SERIAL is not set | 258 | # CONFIG_PARPORT_SERIAL is not set |
232 | CONFIG_PARPORT_NOT_PC=y | ||
233 | CONFIG_PARPORT_GSC=y | 259 | CONFIG_PARPORT_GSC=y |
260 | # CONFIG_PARPORT_AX88796 is not set | ||
234 | # CONFIG_PARPORT_1284 is not set | 261 | # CONFIG_PARPORT_1284 is not set |
235 | 262 | CONFIG_PARPORT_NOT_PC=y | |
236 | # | ||
237 | # Plug and Play support | ||
238 | # | ||
239 | # CONFIG_PNP is not set | 263 | # CONFIG_PNP is not set |
240 | 264 | CONFIG_BLK_DEV=y | |
241 | # | ||
242 | # Block devices | ||
243 | # | ||
244 | # CONFIG_PARIDE is not set | 265 | # CONFIG_PARIDE is not set |
245 | # CONFIG_BLK_CPQ_DA is not set | 266 | # CONFIG_BLK_CPQ_DA is not set |
246 | # CONFIG_BLK_CPQ_CISS_DA is not set | 267 | # CONFIG_BLK_CPQ_CISS_DA is not set |
@@ -251,15 +272,13 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y | |||
251 | # CONFIG_BLK_DEV_NBD is not set | 272 | # CONFIG_BLK_DEV_NBD is not set |
252 | # CONFIG_BLK_DEV_SX8 is not set | 273 | # CONFIG_BLK_DEV_SX8 is not set |
253 | # CONFIG_BLK_DEV_RAM is not set | 274 | # CONFIG_BLK_DEV_RAM is not set |
254 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
255 | CONFIG_CDROM_PKTCDVD=m | 275 | CONFIG_CDROM_PKTCDVD=m |
256 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | 276 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 |
257 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
258 | CONFIG_ATA_OVER_ETH=y | 277 | CONFIG_ATA_OVER_ETH=y |
259 | 278 | CONFIG_MISC_DEVICES=y | |
260 | # | 279 | # CONFIG_PHANTOM is not set |
261 | # ATA/ATAPI/MFM/RLL support | 280 | # CONFIG_EEPROM_93CX6 is not set |
262 | # | 281 | # CONFIG_SGI_IOC4 is not set |
263 | # CONFIG_IDE is not set | 282 | # CONFIG_IDE is not set |
264 | 283 | ||
265 | # | 284 | # |
@@ -267,6 +286,8 @@ CONFIG_ATA_OVER_ETH=y | |||
267 | # | 286 | # |
268 | # CONFIG_RAID_ATTRS is not set | 287 | # CONFIG_RAID_ATTRS is not set |
269 | CONFIG_SCSI=y | 288 | CONFIG_SCSI=y |
289 | CONFIG_SCSI_DMA=y | ||
290 | # CONFIG_SCSI_NETLINK is not set | ||
270 | CONFIG_SCSI_PROC_FS=y | 291 | CONFIG_SCSI_PROC_FS=y |
271 | 292 | ||
272 | # | 293 | # |
@@ -286,18 +307,17 @@ CONFIG_CHR_DEV_SG=y | |||
286 | # CONFIG_SCSI_MULTI_LUN is not set | 307 | # CONFIG_SCSI_MULTI_LUN is not set |
287 | # CONFIG_SCSI_CONSTANTS is not set | 308 | # CONFIG_SCSI_CONSTANTS is not set |
288 | # CONFIG_SCSI_LOGGING is not set | 309 | # CONFIG_SCSI_LOGGING is not set |
310 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
311 | CONFIG_SCSI_WAIT_SCAN=m | ||
289 | 312 | ||
290 | # | 313 | # |
291 | # SCSI Transport Attributes | 314 | # SCSI Transports |
292 | # | 315 | # |
293 | CONFIG_SCSI_SPI_ATTRS=y | 316 | CONFIG_SCSI_SPI_ATTRS=y |
294 | # CONFIG_SCSI_FC_ATTRS is not set | 317 | # CONFIG_SCSI_FC_ATTRS is not set |
295 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 318 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
296 | # CONFIG_SCSI_SAS_ATTRS is not set | 319 | # CONFIG_SCSI_SAS_LIBSAS is not set |
297 | 320 | CONFIG_SCSI_LOWLEVEL=y | |
298 | # | ||
299 | # SCSI low-level drivers | ||
300 | # | ||
301 | # CONFIG_ISCSI_TCP is not set | 321 | # CONFIG_ISCSI_TCP is not set |
302 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 322 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
303 | # CONFIG_SCSI_3W_9XXX is not set | 323 | # CONFIG_SCSI_3W_9XXX is not set |
@@ -308,12 +328,14 @@ CONFIG_SCSI_SPI_ATTRS=y | |||
308 | # CONFIG_SCSI_AIC7XXX is not set | 328 | # CONFIG_SCSI_AIC7XXX is not set |
309 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 329 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
310 | # CONFIG_SCSI_AIC79XX is not set | 330 | # CONFIG_SCSI_AIC79XX is not set |
331 | # CONFIG_SCSI_AIC94XX is not set | ||
311 | # CONFIG_SCSI_DPT_I2O is not set | 332 | # CONFIG_SCSI_DPT_I2O is not set |
312 | # CONFIG_SCSI_IN2000 is not set | 333 | # CONFIG_SCSI_IN2000 is not set |
334 | # CONFIG_SCSI_ARCMSR is not set | ||
313 | # CONFIG_MEGARAID_NEWGEN is not set | 335 | # CONFIG_MEGARAID_NEWGEN is not set |
314 | # CONFIG_MEGARAID_LEGACY is not set | 336 | # CONFIG_MEGARAID_LEGACY is not set |
315 | # CONFIG_MEGARAID_SAS is not set | 337 | # CONFIG_MEGARAID_SAS is not set |
316 | # CONFIG_SCSI_SATA is not set | 338 | # CONFIG_SCSI_HPTIOP is not set |
317 | # CONFIG_SCSI_DMX3191D is not set | 339 | # CONFIG_SCSI_DMX3191D is not set |
318 | # CONFIG_SCSI_DTC3280 is not set | 340 | # CONFIG_SCSI_DTC3280 is not set |
319 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 341 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
@@ -327,23 +349,22 @@ CONFIG_SCSI_SPI_ATTRS=y | |||
327 | # CONFIG_SCSI_NCR53C406A is not set | 349 | # CONFIG_SCSI_NCR53C406A is not set |
328 | CONFIG_SCSI_LASI700=y | 350 | CONFIG_SCSI_LASI700=y |
329 | CONFIG_53C700_LE_ON_BE=y | 351 | CONFIG_53C700_LE_ON_BE=y |
352 | # CONFIG_SCSI_STEX is not set | ||
330 | CONFIG_SCSI_SYM53C8XX_2=y | 353 | CONFIG_SCSI_SYM53C8XX_2=y |
331 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 | 354 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 |
332 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 355 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
333 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 356 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
334 | CONFIG_SCSI_SYM53C8XX_MMIO=y | 357 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
335 | # CONFIG_SCSI_IPR is not set | ||
336 | CONFIG_SCSI_ZALON=y | 358 | CONFIG_SCSI_ZALON=y |
337 | CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 | 359 | CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 |
338 | CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 | 360 | CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 |
339 | CONFIG_SCSI_NCR53C8XX_SYNC=40 | 361 | CONFIG_SCSI_NCR53C8XX_SYNC=40 |
340 | # CONFIG_SCSI_NCR53C8XX_PROFILE is not set | ||
341 | # CONFIG_SCSI_PAS16 is not set | 362 | # CONFIG_SCSI_PAS16 is not set |
342 | # CONFIG_SCSI_PSI240I is not set | 363 | # CONFIG_SCSI_PSI240I is not set |
343 | # CONFIG_SCSI_QLOGIC_FAS is not set | 364 | # CONFIG_SCSI_QLOGIC_FAS is not set |
344 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
345 | # CONFIG_SCSI_QLOGIC_1280 is not set | 365 | # CONFIG_SCSI_QLOGIC_1280 is not set |
346 | # CONFIG_SCSI_QLA_FC is not set | 366 | # CONFIG_SCSI_QLA_FC is not set |
367 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
347 | # CONFIG_SCSI_LPFC is not set | 368 | # CONFIG_SCSI_LPFC is not set |
348 | # CONFIG_SCSI_SIM710 is not set | 369 | # CONFIG_SCSI_SIM710 is not set |
349 | # CONFIG_SCSI_SYM53C416 is not set | 370 | # CONFIG_SCSI_SYM53C416 is not set |
@@ -351,22 +372,14 @@ CONFIG_SCSI_NCR53C8XX_SYNC=40 | |||
351 | # CONFIG_SCSI_T128 is not set | 372 | # CONFIG_SCSI_T128 is not set |
352 | # CONFIG_SCSI_NSP32 is not set | 373 | # CONFIG_SCSI_NSP32 is not set |
353 | # CONFIG_SCSI_DEBUG is not set | 374 | # CONFIG_SCSI_DEBUG is not set |
354 | 375 | # CONFIG_SCSI_SRP is not set | |
355 | # | 376 | # CONFIG_ATA is not set |
356 | # Old CD-ROM drivers (not SCSI, not IDE) | ||
357 | # | ||
358 | # CONFIG_CD_NO_IDESCSI is not set | ||
359 | |||
360 | # | ||
361 | # Multi-device support (RAID and LVM) | ||
362 | # | ||
363 | CONFIG_MD=y | 377 | CONFIG_MD=y |
364 | CONFIG_BLK_DEV_MD=y | 378 | CONFIG_BLK_DEV_MD=y |
365 | CONFIG_MD_LINEAR=y | 379 | CONFIG_MD_LINEAR=y |
366 | CONFIG_MD_RAID0=y | 380 | CONFIG_MD_RAID0=y |
367 | CONFIG_MD_RAID1=y | 381 | CONFIG_MD_RAID1=y |
368 | CONFIG_MD_RAID5=y | 382 | # CONFIG_MD_RAID456 is not set |
369 | CONFIG_MD_RAID6=y | ||
370 | # CONFIG_MD_MULTIPATH is not set | 383 | # CONFIG_MD_MULTIPATH is not set |
371 | # CONFIG_MD_FAULTY is not set | 384 | # CONFIG_MD_FAULTY is not set |
372 | # CONFIG_BLK_DEV_DM is not set | 385 | # CONFIG_BLK_DEV_DM is not set |
@@ -382,35 +395,21 @@ CONFIG_MD_RAID6=y | |||
382 | # | 395 | # |
383 | # IEEE 1394 (FireWire) support | 396 | # IEEE 1394 (FireWire) support |
384 | # | 397 | # |
385 | # CONFIG_IEEE1394 is not set | ||
386 | 398 | ||
387 | # | 399 | # |
388 | # I2O device support | 400 | # An alternative FireWire stack is available with EXPERIMENTAL=y |
389 | # | 401 | # |
402 | # CONFIG_IEEE1394 is not set | ||
390 | # CONFIG_I2O is not set | 403 | # CONFIG_I2O is not set |
391 | |||
392 | # | ||
393 | # Network device support | ||
394 | # | ||
395 | CONFIG_NETDEVICES=y | 404 | CONFIG_NETDEVICES=y |
405 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
396 | # CONFIG_DUMMY is not set | 406 | # CONFIG_DUMMY is not set |
397 | # CONFIG_BONDING is not set | 407 | # CONFIG_BONDING is not set |
398 | # CONFIG_EQUALIZER is not set | 408 | # CONFIG_EQUALIZER is not set |
399 | # CONFIG_TUN is not set | 409 | # CONFIG_TUN is not set |
400 | 410 | # CONFIG_VETH is not set | |
401 | # | ||
402 | # ARCnet devices | ||
403 | # | ||
404 | # CONFIG_ARCNET is not set | 411 | # CONFIG_ARCNET is not set |
405 | |||
406 | # | ||
407 | # PHY device support | ||
408 | # | ||
409 | # CONFIG_PHYLIB is not set | 412 | # CONFIG_PHYLIB is not set |
410 | |||
411 | # | ||
412 | # Ethernet (10 or 100Mbit) | ||
413 | # | ||
414 | CONFIG_NET_ETHERNET=y | 413 | CONFIG_NET_ETHERNET=y |
415 | # CONFIG_MII is not set | 414 | # CONFIG_MII is not set |
416 | CONFIG_LASI_82596=y | 415 | CONFIG_LASI_82596=y |
@@ -420,10 +419,6 @@ CONFIG_LASI_82596=y | |||
420 | # CONFIG_NET_VENDOR_3COM is not set | 419 | # CONFIG_NET_VENDOR_3COM is not set |
421 | # CONFIG_NET_VENDOR_SMC is not set | 420 | # CONFIG_NET_VENDOR_SMC is not set |
422 | # CONFIG_NET_VENDOR_RACAL is not set | 421 | # CONFIG_NET_VENDOR_RACAL is not set |
423 | |||
424 | # | ||
425 | # Tulip family network device support | ||
426 | # | ||
427 | CONFIG_NET_TULIP=y | 422 | CONFIG_NET_TULIP=y |
428 | CONFIG_TULIP=y | 423 | CONFIG_TULIP=y |
429 | # CONFIG_TULIP_MMIO is not set | 424 | # CONFIG_TULIP_MMIO is not set |
@@ -435,62 +430,47 @@ CONFIG_TULIP=y | |||
435 | # CONFIG_DEPCA is not set | 430 | # CONFIG_DEPCA is not set |
436 | # CONFIG_HP100 is not set | 431 | # CONFIG_HP100 is not set |
437 | # CONFIG_NET_ISA is not set | 432 | # CONFIG_NET_ISA is not set |
433 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
434 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
435 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
436 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
438 | # CONFIG_NET_PCI is not set | 437 | # CONFIG_NET_PCI is not set |
438 | # CONFIG_B44 is not set | ||
439 | # CONFIG_NET_POCKET is not set | 439 | # CONFIG_NET_POCKET is not set |
440 | 440 | CONFIG_NETDEV_1000=y | |
441 | # | ||
442 | # Ethernet (1000 Mbit) | ||
443 | # | ||
444 | # CONFIG_ACENIC is not set | 441 | # CONFIG_ACENIC is not set |
445 | # CONFIG_DL2K is not set | 442 | # CONFIG_DL2K is not set |
446 | # CONFIG_E1000 is not set | 443 | # CONFIG_E1000 is not set |
444 | # CONFIG_E1000E is not set | ||
447 | # CONFIG_NS83820 is not set | 445 | # CONFIG_NS83820 is not set |
448 | # CONFIG_HAMACHI is not set | 446 | # CONFIG_HAMACHI is not set |
449 | # CONFIG_R8169 is not set | 447 | # CONFIG_R8169 is not set |
450 | # CONFIG_SIS190 is not set | 448 | # CONFIG_SIS190 is not set |
449 | # CONFIG_SKGE is not set | ||
450 | # CONFIG_SKY2 is not set | ||
451 | # CONFIG_SK98LIN is not set | 451 | # CONFIG_SK98LIN is not set |
452 | # CONFIG_VIA_VELOCITY is not set | ||
452 | # CONFIG_TIGON3 is not set | 453 | # CONFIG_TIGON3 is not set |
453 | # CONFIG_BNX2 is not set | 454 | # CONFIG_BNX2 is not set |
454 | 455 | # CONFIG_QLA3XXX is not set | |
455 | # | 456 | CONFIG_NETDEV_10000=y |
456 | # Ethernet (10000 Mbit) | ||
457 | # | ||
458 | # CONFIG_CHELSIO_T1 is not set | 457 | # CONFIG_CHELSIO_T1 is not set |
458 | # CONFIG_CHELSIO_T3 is not set | ||
459 | # CONFIG_IXGBE is not set | ||
459 | # CONFIG_IXGB is not set | 460 | # CONFIG_IXGB is not set |
460 | # CONFIG_S2IO is not set | 461 | # CONFIG_S2IO is not set |
461 | 462 | # CONFIG_MYRI10GE is not set | |
462 | # | 463 | # CONFIG_NETXEN_NIC is not set |
463 | # Token Ring devices | 464 | # CONFIG_NIU is not set |
464 | # | 465 | # CONFIG_MLX4_CORE is not set |
466 | # CONFIG_TEHUTI is not set | ||
465 | # CONFIG_TR is not set | 467 | # CONFIG_TR is not set |
466 | 468 | ||
467 | # | 469 | # |
468 | # Wireless LAN (non-hamradio) | 470 | # Wireless LAN |
469 | # | ||
470 | CONFIG_NET_RADIO=y | ||
471 | |||
472 | # | ||
473 | # Obsolete Wireless cards support (pre-802.11) | ||
474 | # | ||
475 | # CONFIG_STRIP is not set | ||
476 | # CONFIG_ARLAN is not set | ||
477 | # CONFIG_WAVELAN is not set | ||
478 | |||
479 | # | ||
480 | # Wireless 802.11b ISA/PCI cards support | ||
481 | # | ||
482 | # CONFIG_HERMES is not set | ||
483 | # CONFIG_ATMEL is not set | ||
484 | |||
485 | # | ||
486 | # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support | ||
487 | # | ||
488 | # CONFIG_HOSTAP is not set | ||
489 | CONFIG_NET_WIRELESS=y | ||
490 | |||
491 | # | ||
492 | # Wan interfaces | ||
493 | # | 471 | # |
472 | # CONFIG_WLAN_PRE80211 is not set | ||
473 | # CONFIG_WLAN_80211 is not set | ||
494 | # CONFIG_WAN is not set | 474 | # CONFIG_WAN is not set |
495 | # CONFIG_FDDI is not set | 475 | # CONFIG_FDDI is not set |
496 | # CONFIG_PLIP is not set | 476 | # CONFIG_PLIP is not set |
@@ -501,24 +481,19 @@ CONFIG_PPP=y | |||
501 | # CONFIG_PPP_DEFLATE is not set | 481 | # CONFIG_PPP_DEFLATE is not set |
502 | # CONFIG_PPP_BSDCOMP is not set | 482 | # CONFIG_PPP_BSDCOMP is not set |
503 | # CONFIG_SLIP is not set | 483 | # CONFIG_SLIP is not set |
484 | CONFIG_SLHC=y | ||
504 | # CONFIG_NET_FC is not set | 485 | # CONFIG_NET_FC is not set |
505 | # CONFIG_NETPOLL is not set | 486 | # CONFIG_NETPOLL is not set |
506 | # CONFIG_NET_POLL_CONTROLLER is not set | 487 | # CONFIG_NET_POLL_CONTROLLER is not set |
507 | |||
508 | # | ||
509 | # ISDN subsystem | ||
510 | # | ||
511 | # CONFIG_ISDN is not set | 488 | # CONFIG_ISDN is not set |
512 | |||
513 | # | ||
514 | # Telephony Support | ||
515 | # | ||
516 | # CONFIG_PHONE is not set | 489 | # CONFIG_PHONE is not set |
517 | 490 | ||
518 | # | 491 | # |
519 | # Input device support | 492 | # Input device support |
520 | # | 493 | # |
521 | CONFIG_INPUT=y | 494 | CONFIG_INPUT=y |
495 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
496 | # CONFIG_INPUT_POLLDEV is not set | ||
522 | 497 | ||
523 | # | 498 | # |
524 | # Userland interfaces | 499 | # Userland interfaces |
@@ -543,19 +518,31 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y | |||
543 | # CONFIG_KEYBOARD_LKKBD is not set | 518 | # CONFIG_KEYBOARD_LKKBD is not set |
544 | # CONFIG_KEYBOARD_XTKBD is not set | 519 | # CONFIG_KEYBOARD_XTKBD is not set |
545 | # CONFIG_KEYBOARD_NEWTON is not set | 520 | # CONFIG_KEYBOARD_NEWTON is not set |
521 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
546 | # CONFIG_KEYBOARD_HIL_OLD is not set | 522 | # CONFIG_KEYBOARD_HIL_OLD is not set |
547 | CONFIG_KEYBOARD_HIL=y | 523 | CONFIG_KEYBOARD_HIL=y |
548 | CONFIG_INPUT_MOUSE=y | 524 | CONFIG_INPUT_MOUSE=y |
549 | CONFIG_MOUSE_PS2=y | 525 | CONFIG_MOUSE_PS2=y |
526 | CONFIG_MOUSE_PS2_ALPS=y | ||
527 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
528 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
529 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
530 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
531 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
550 | # CONFIG_MOUSE_SERIAL is not set | 532 | # CONFIG_MOUSE_SERIAL is not set |
533 | # CONFIG_MOUSE_APPLETOUCH is not set | ||
551 | # CONFIG_MOUSE_INPORT is not set | 534 | # CONFIG_MOUSE_INPORT is not set |
552 | # CONFIG_MOUSE_LOGIBM is not set | 535 | # CONFIG_MOUSE_LOGIBM is not set |
553 | # CONFIG_MOUSE_PC110PAD is not set | 536 | # CONFIG_MOUSE_PC110PAD is not set |
554 | # CONFIG_MOUSE_VSXXXAA is not set | 537 | # CONFIG_MOUSE_VSXXXAA is not set |
555 | CONFIG_MOUSE_HIL=y | 538 | CONFIG_MOUSE_HIL=y |
556 | # CONFIG_INPUT_JOYSTICK is not set | 539 | # CONFIG_INPUT_JOYSTICK is not set |
540 | # CONFIG_INPUT_TABLET is not set | ||
557 | # CONFIG_INPUT_TOUCHSCREEN is not set | 541 | # CONFIG_INPUT_TOUCHSCREEN is not set |
558 | CONFIG_INPUT_MISC=y | 542 | CONFIG_INPUT_MISC=y |
543 | # CONFIG_INPUT_ATI_REMOTE is not set | ||
544 | # CONFIG_INPUT_ATI_REMOTE2 is not set | ||
545 | # CONFIG_INPUT_POWERMATE is not set | ||
559 | # CONFIG_INPUT_UINPUT is not set | 546 | # CONFIG_INPUT_UINPUT is not set |
560 | # CONFIG_HP_SDC_RTC is not set | 547 | # CONFIG_HP_SDC_RTC is not set |
561 | 548 | ||
@@ -579,6 +566,7 @@ CONFIG_SERIO_LIBPS2=y | |||
579 | CONFIG_VT=y | 566 | CONFIG_VT=y |
580 | CONFIG_VT_CONSOLE=y | 567 | CONFIG_VT_CONSOLE=y |
581 | CONFIG_HW_CONSOLE=y | 568 | CONFIG_HW_CONSOLE=y |
569 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
582 | # CONFIG_SERIAL_NONSTANDARD is not set | 570 | # CONFIG_SERIAL_NONSTANDARD is not set |
583 | 571 | ||
584 | # | 572 | # |
@@ -586,17 +574,20 @@ CONFIG_HW_CONSOLE=y | |||
586 | # | 574 | # |
587 | CONFIG_SERIAL_8250=y | 575 | CONFIG_SERIAL_8250=y |
588 | CONFIG_SERIAL_8250_CONSOLE=y | 576 | CONFIG_SERIAL_8250_CONSOLE=y |
577 | CONFIG_SERIAL_8250_GSC=y | ||
578 | CONFIG_SERIAL_8250_PCI=y | ||
589 | CONFIG_SERIAL_8250_NR_UARTS=13 | 579 | CONFIG_SERIAL_8250_NR_UARTS=13 |
590 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 580 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
591 | CONFIG_SERIAL_8250_EXTENDED=y | 581 | CONFIG_SERIAL_8250_EXTENDED=y |
592 | CONFIG_SERIAL_8250_MANY_PORTS=y | 582 | CONFIG_SERIAL_8250_MANY_PORTS=y |
593 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
594 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | ||
595 | # CONFIG_SERIAL_8250_RSA is not set | ||
596 | # CONFIG_SERIAL_8250_FOURPORT is not set | 583 | # CONFIG_SERIAL_8250_FOURPORT is not set |
597 | # CONFIG_SERIAL_8250_ACCENT is not set | 584 | # CONFIG_SERIAL_8250_ACCENT is not set |
598 | # CONFIG_SERIAL_8250_BOCA is not set | 585 | # CONFIG_SERIAL_8250_BOCA is not set |
586 | # CONFIG_SERIAL_8250_EXAR_ST16C554 is not set | ||
599 | # CONFIG_SERIAL_8250_HUB6 is not set | 587 | # CONFIG_SERIAL_8250_HUB6 is not set |
588 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
589 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | ||
590 | # CONFIG_SERIAL_8250_RSA is not set | ||
600 | 591 | ||
601 | # | 592 | # |
602 | # Non-8250 serial port support | 593 | # Non-8250 serial port support |
@@ -605,6 +596,7 @@ CONFIG_SERIAL_MUX=y | |||
605 | CONFIG_SERIAL_MUX_CONSOLE=y | 596 | CONFIG_SERIAL_MUX_CONSOLE=y |
606 | CONFIG_SERIAL_CORE=y | 597 | CONFIG_SERIAL_CORE=y |
607 | CONFIG_SERIAL_CORE_CONSOLE=y | 598 | CONFIG_SERIAL_CORE_CONSOLE=y |
599 | # CONFIG_SERIAL_JSM is not set | ||
608 | CONFIG_UNIX98_PTYS=y | 600 | CONFIG_UNIX98_PTYS=y |
609 | CONFIG_LEGACY_PTYS=y | 601 | CONFIG_LEGACY_PTYS=y |
610 | CONFIG_LEGACY_PTY_COUNT=256 | 602 | CONFIG_LEGACY_PTY_COUNT=256 |
@@ -612,35 +604,18 @@ CONFIG_PRINTER=y | |||
612 | # CONFIG_LP_CONSOLE is not set | 604 | # CONFIG_LP_CONSOLE is not set |
613 | # CONFIG_PPDEV is not set | 605 | # CONFIG_PPDEV is not set |
614 | # CONFIG_TIPAR is not set | 606 | # CONFIG_TIPAR is not set |
615 | |||
616 | # | ||
617 | # IPMI | ||
618 | # | ||
619 | # CONFIG_IPMI_HANDLER is not set | 607 | # CONFIG_IPMI_HANDLER is not set |
620 | |||
621 | # | ||
622 | # Watchdog Cards | ||
623 | # | ||
624 | # CONFIG_WATCHDOG is not set | 608 | # CONFIG_WATCHDOG is not set |
609 | # CONFIG_HW_RANDOM is not set | ||
625 | CONFIG_GEN_RTC=y | 610 | CONFIG_GEN_RTC=y |
626 | # CONFIG_GEN_RTC_X is not set | 611 | # CONFIG_GEN_RTC_X is not set |
627 | # CONFIG_DTLK is not set | 612 | # CONFIG_DTLK is not set |
628 | # CONFIG_R3964 is not set | 613 | # CONFIG_R3964 is not set |
629 | # CONFIG_APPLICOM is not set | 614 | # CONFIG_APPLICOM is not set |
630 | 615 | # CONFIG_AGP is not set | |
631 | # | ||
632 | # Ftape, the floppy tape device driver | ||
633 | # | ||
634 | # CONFIG_DRM is not set | 616 | # CONFIG_DRM is not set |
635 | # CONFIG_RAW_DRIVER is not set | 617 | # CONFIG_RAW_DRIVER is not set |
636 | 618 | CONFIG_DEVPORT=y | |
637 | # | ||
638 | # TPM devices | ||
639 | # | ||
640 | |||
641 | # | ||
642 | # I2C support | ||
643 | # | ||
644 | # CONFIG_I2C is not set | 619 | # CONFIG_I2C is not set |
645 | 620 | ||
646 | # | 621 | # |
@@ -648,46 +623,59 @@ CONFIG_GEN_RTC=y | |||
648 | # | 623 | # |
649 | # CONFIG_SPI is not set | 624 | # CONFIG_SPI is not set |
650 | # CONFIG_SPI_MASTER is not set | 625 | # CONFIG_SPI_MASTER is not set |
651 | |||
652 | # | ||
653 | # Dallas's 1-wire bus | ||
654 | # | ||
655 | # CONFIG_W1 is not set | 626 | # CONFIG_W1 is not set |
656 | 627 | # CONFIG_POWER_SUPPLY is not set | |
657 | # | ||
658 | # Hardware Monitoring support | ||
659 | # | ||
660 | # CONFIG_HWMON is not set | 628 | # CONFIG_HWMON is not set |
661 | # CONFIG_HWMON_VID is not set | ||
662 | 629 | ||
663 | # | 630 | # |
664 | # Misc devices | 631 | # Sonics Silicon Backplane |
665 | # | 632 | # |
633 | CONFIG_SSB_POSSIBLE=y | ||
634 | # CONFIG_SSB is not set | ||
666 | 635 | ||
667 | # | 636 | # |
668 | # Multimedia Capabilities Port drivers | 637 | # Multifunction device drivers |
669 | # | 638 | # |
639 | # CONFIG_MFD_SM501 is not set | ||
670 | 640 | ||
671 | # | 641 | # |
672 | # Multimedia devices | 642 | # Multimedia devices |
673 | # | 643 | # |
674 | # CONFIG_VIDEO_DEV is not set | 644 | # CONFIG_VIDEO_DEV is not set |
645 | # CONFIG_DVB_CORE is not set | ||
646 | # CONFIG_DAB is not set | ||
675 | 647 | ||
676 | # | 648 | # |
677 | # Digital Video Broadcasting Devices | 649 | # Graphics support |
678 | # | 650 | # |
679 | # CONFIG_DVB is not set | 651 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
680 | 652 | ||
681 | # | 653 | # |
682 | # Graphics support | 654 | # Display device support |
683 | # | 655 | # |
656 | # CONFIG_DISPLAY_SUPPORT is not set | ||
657 | # CONFIG_VGASTATE is not set | ||
658 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
684 | CONFIG_FB=y | 659 | CONFIG_FB=y |
660 | # CONFIG_FIRMWARE_EDID is not set | ||
661 | # CONFIG_FB_DDC is not set | ||
685 | CONFIG_FB_CFB_FILLRECT=y | 662 | CONFIG_FB_CFB_FILLRECT=y |
686 | CONFIG_FB_CFB_COPYAREA=y | 663 | CONFIG_FB_CFB_COPYAREA=y |
687 | CONFIG_FB_CFB_IMAGEBLIT=y | 664 | CONFIG_FB_CFB_IMAGEBLIT=y |
665 | # CONFIG_FB_SYS_FILLRECT is not set | ||
666 | # CONFIG_FB_SYS_COPYAREA is not set | ||
667 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
668 | # CONFIG_FB_SYS_FOPS is not set | ||
669 | CONFIG_FB_DEFERRED_IO=y | ||
670 | # CONFIG_FB_SVGALIB is not set | ||
688 | # CONFIG_FB_MACMODES is not set | 671 | # CONFIG_FB_MACMODES is not set |
672 | # CONFIG_FB_BACKLIGHT is not set | ||
689 | # CONFIG_FB_MODE_HELPERS is not set | 673 | # CONFIG_FB_MODE_HELPERS is not set |
690 | # CONFIG_FB_TILEBLITTING is not set | 674 | # CONFIG_FB_TILEBLITTING is not set |
675 | |||
676 | # | ||
677 | # Frame buffer hardware drivers | ||
678 | # | ||
691 | # CONFIG_FB_CIRRUS is not set | 679 | # CONFIG_FB_CIRRUS is not set |
692 | # CONFIG_FB_PM2 is not set | 680 | # CONFIG_FB_PM2 is not set |
693 | # CONFIG_FB_CYBER2000 is not set | 681 | # CONFIG_FB_CYBER2000 is not set |
@@ -698,16 +686,18 @@ CONFIG_FB_STI=y | |||
698 | # CONFIG_FB_NVIDIA is not set | 686 | # CONFIG_FB_NVIDIA is not set |
699 | # CONFIG_FB_RIVA is not set | 687 | # CONFIG_FB_RIVA is not set |
700 | # CONFIG_FB_MATROX is not set | 688 | # CONFIG_FB_MATROX is not set |
701 | # CONFIG_FB_RADEON_OLD is not set | ||
702 | # CONFIG_FB_RADEON is not set | 689 | # CONFIG_FB_RADEON is not set |
703 | # CONFIG_FB_ATY128 is not set | 690 | # CONFIG_FB_ATY128 is not set |
704 | # CONFIG_FB_ATY is not set | 691 | # CONFIG_FB_ATY is not set |
692 | # CONFIG_FB_S3 is not set | ||
705 | # CONFIG_FB_SIS is not set | 693 | # CONFIG_FB_SIS is not set |
706 | # CONFIG_FB_NEOMAGIC is not set | 694 | # CONFIG_FB_NEOMAGIC is not set |
707 | # CONFIG_FB_KYRO is not set | 695 | # CONFIG_FB_KYRO is not set |
708 | # CONFIG_FB_3DFX is not set | 696 | # CONFIG_FB_3DFX is not set |
709 | # CONFIG_FB_VOODOO1 is not set | 697 | # CONFIG_FB_VOODOO1 is not set |
698 | # CONFIG_FB_VT8623 is not set | ||
710 | # CONFIG_FB_TRIDENT is not set | 699 | # CONFIG_FB_TRIDENT is not set |
700 | # CONFIG_FB_ARK is not set | ||
711 | # CONFIG_FB_VIRTUAL is not set | 701 | # CONFIG_FB_VIRTUAL is not set |
712 | 702 | ||
713 | # | 703 | # |
@@ -717,21 +707,17 @@ CONFIG_DUMMY_CONSOLE=y | |||
717 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 | 707 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 |
718 | CONFIG_DUMMY_CONSOLE_ROWS=64 | 708 | CONFIG_DUMMY_CONSOLE_ROWS=64 |
719 | CONFIG_FRAMEBUFFER_CONSOLE=y | 709 | CONFIG_FRAMEBUFFER_CONSOLE=y |
710 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
720 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 711 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
721 | CONFIG_STI_CONSOLE=y | 712 | CONFIG_STI_CONSOLE=y |
722 | # CONFIG_FONTS is not set | 713 | # CONFIG_FONTS is not set |
723 | CONFIG_FONT_8x8=y | 714 | CONFIG_FONT_8x8=y |
724 | CONFIG_FONT_8x16=y | 715 | CONFIG_FONT_8x16=y |
725 | |||
726 | # | ||
727 | # Logo configuration | ||
728 | # | ||
729 | CONFIG_LOGO=y | 716 | CONFIG_LOGO=y |
730 | CONFIG_LOGO_LINUX_MONO=y | 717 | CONFIG_LOGO_LINUX_MONO=y |
731 | CONFIG_LOGO_LINUX_VGA16=y | 718 | CONFIG_LOGO_LINUX_VGA16=y |
732 | CONFIG_LOGO_LINUX_CLUT224=y | 719 | CONFIG_LOGO_LINUX_CLUT224=y |
733 | CONFIG_LOGO_PARISC_CLUT224=y | 720 | CONFIG_LOGO_PARISC_CLUT224=y |
734 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
735 | 721 | ||
736 | # | 722 | # |
737 | # Sound | 723 | # Sound |
@@ -749,8 +735,11 @@ CONFIG_SND_SEQUENCER=y | |||
749 | CONFIG_SND_OSSEMUL=y | 735 | CONFIG_SND_OSSEMUL=y |
750 | CONFIG_SND_MIXER_OSS=y | 736 | CONFIG_SND_MIXER_OSS=y |
751 | CONFIG_SND_PCM_OSS=y | 737 | CONFIG_SND_PCM_OSS=y |
738 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
752 | CONFIG_SND_SEQUENCER_OSS=y | 739 | CONFIG_SND_SEQUENCER_OSS=y |
740 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
753 | CONFIG_SND_SUPPORT_OLD_API=y | 741 | CONFIG_SND_SUPPORT_OLD_API=y |
742 | CONFIG_SND_VERBOSE_PROCFS=y | ||
754 | # CONFIG_SND_VERBOSE_PRINTK is not set | 743 | # CONFIG_SND_VERBOSE_PRINTK is not set |
755 | # CONFIG_SND_DEBUG is not set | 744 | # CONFIG_SND_DEBUG is not set |
756 | 745 | ||
@@ -760,13 +749,16 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
760 | # CONFIG_SND_DUMMY is not set | 749 | # CONFIG_SND_DUMMY is not set |
761 | # CONFIG_SND_VIRMIDI is not set | 750 | # CONFIG_SND_VIRMIDI is not set |
762 | # CONFIG_SND_MTPAV is not set | 751 | # CONFIG_SND_MTPAV is not set |
752 | # CONFIG_SND_MTS64 is not set | ||
763 | # CONFIG_SND_SERIAL_U16550 is not set | 753 | # CONFIG_SND_SERIAL_U16550 is not set |
764 | # CONFIG_SND_MPU401 is not set | 754 | # CONFIG_SND_MPU401 is not set |
755 | # CONFIG_SND_PORTMAN2X4 is not set | ||
765 | 756 | ||
766 | # | 757 | # |
767 | # PCI devices | 758 | # PCI devices |
768 | # | 759 | # |
769 | # CONFIG_SND_AD1889 is not set | 760 | # CONFIG_SND_AD1889 is not set |
761 | # CONFIG_SND_ALS300 is not set | ||
770 | # CONFIG_SND_ALI5451 is not set | 762 | # CONFIG_SND_ALI5451 is not set |
771 | # CONFIG_SND_ATIIXP is not set | 763 | # CONFIG_SND_ATIIXP is not set |
772 | # CONFIG_SND_ATIIXP_MODEM is not set | 764 | # CONFIG_SND_ATIIXP_MODEM is not set |
@@ -778,6 +770,18 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
778 | # CONFIG_SND_CMIPCI is not set | 770 | # CONFIG_SND_CMIPCI is not set |
779 | # CONFIG_SND_CS4281 is not set | 771 | # CONFIG_SND_CS4281 is not set |
780 | # CONFIG_SND_CS46XX is not set | 772 | # CONFIG_SND_CS46XX is not set |
773 | # CONFIG_SND_DARLA20 is not set | ||
774 | # CONFIG_SND_GINA20 is not set | ||
775 | # CONFIG_SND_LAYLA20 is not set | ||
776 | # CONFIG_SND_DARLA24 is not set | ||
777 | # CONFIG_SND_GINA24 is not set | ||
778 | # CONFIG_SND_LAYLA24 is not set | ||
779 | # CONFIG_SND_MONA is not set | ||
780 | # CONFIG_SND_MIA is not set | ||
781 | # CONFIG_SND_ECHO3G is not set | ||
782 | # CONFIG_SND_INDIGO is not set | ||
783 | # CONFIG_SND_INDIGOIO is not set | ||
784 | # CONFIG_SND_INDIGODJ is not set | ||
781 | # CONFIG_SND_EMU10K1 is not set | 785 | # CONFIG_SND_EMU10K1 is not set |
782 | # CONFIG_SND_EMU10K1X is not set | 786 | # CONFIG_SND_EMU10K1X is not set |
783 | # CONFIG_SND_ENS1370 is not set | 787 | # CONFIG_SND_ENS1370 is not set |
@@ -791,11 +795,13 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
791 | # CONFIG_SND_ICE1712 is not set | 795 | # CONFIG_SND_ICE1712 is not set |
792 | # CONFIG_SND_ICE1724 is not set | 796 | # CONFIG_SND_ICE1724 is not set |
793 | # CONFIG_SND_INTEL8X0 is not set | 797 | # CONFIG_SND_INTEL8X0 is not set |
798 | # CONFIG_SND_INTEL8X0M is not set | ||
794 | # CONFIG_SND_KORG1212 is not set | 799 | # CONFIG_SND_KORG1212 is not set |
795 | # CONFIG_SND_MAESTRO3 is not set | 800 | # CONFIG_SND_MAESTRO3 is not set |
796 | # CONFIG_SND_MIXART is not set | 801 | # CONFIG_SND_MIXART is not set |
797 | # CONFIG_SND_NM256 is not set | 802 | # CONFIG_SND_NM256 is not set |
798 | # CONFIG_SND_PCXHR is not set | 803 | # CONFIG_SND_PCXHR is not set |
804 | # CONFIG_SND_RIPTIDE is not set | ||
799 | # CONFIG_SND_RME32 is not set | 805 | # CONFIG_SND_RME32 is not set |
800 | # CONFIG_SND_RME96 is not set | 806 | # CONFIG_SND_RME96 is not set |
801 | # CONFIG_SND_RME9652 is not set | 807 | # CONFIG_SND_RME9652 is not set |
@@ -812,15 +818,25 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
812 | CONFIG_SND_HARMONY=y | 818 | CONFIG_SND_HARMONY=y |
813 | 819 | ||
814 | # | 820 | # |
815 | # Open Sound System | 821 | # System on Chip audio support |
816 | # | 822 | # |
817 | # CONFIG_SOUND_PRIME is not set | 823 | # CONFIG_SND_SOC is not set |
818 | 824 | ||
819 | # | 825 | # |
820 | # USB support | 826 | # SoC Audio support for SuperH |
827 | # | ||
828 | |||
829 | # | ||
830 | # Open Sound System | ||
821 | # | 831 | # |
832 | # CONFIG_SOUND_PRIME is not set | ||
833 | CONFIG_HID_SUPPORT=y | ||
834 | CONFIG_HID=y | ||
835 | CONFIG_HID_DEBUG=y | ||
836 | CONFIG_USB_SUPPORT=y | ||
822 | CONFIG_USB_ARCH_HAS_HCD=y | 837 | CONFIG_USB_ARCH_HAS_HCD=y |
823 | CONFIG_USB_ARCH_HAS_OHCI=y | 838 | CONFIG_USB_ARCH_HAS_OHCI=y |
839 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
824 | # CONFIG_USB is not set | 840 | # CONFIG_USB is not set |
825 | 841 | ||
826 | # | 842 | # |
@@ -831,20 +847,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
831 | # USB Gadget Support | 847 | # USB Gadget Support |
832 | # | 848 | # |
833 | # CONFIG_USB_GADGET is not set | 849 | # CONFIG_USB_GADGET is not set |
850 | # CONFIG_MMC is not set | ||
851 | # CONFIG_NEW_LEDS is not set | ||
852 | # CONFIG_INFINIBAND is not set | ||
853 | # CONFIG_RTC_CLASS is not set | ||
834 | 854 | ||
835 | # | 855 | # |
836 | # MMC/SD Card support | 856 | # DMA Engine support |
837 | # | 857 | # |
838 | # CONFIG_MMC is not set | 858 | # CONFIG_DMA_ENGINE is not set |
839 | 859 | ||
840 | # | 860 | # |
841 | # InfiniBand support | 861 | # DMA Clients |
842 | # | 862 | # |
843 | # CONFIG_INFINIBAND is not set | ||
844 | 863 | ||
845 | # | 864 | # |
846 | # SN Devices | 865 | # DMA Devices |
847 | # | 866 | # |
867 | # CONFIG_AUXDISPLAY is not set | ||
868 | |||
869 | # | ||
870 | # Userspace I/O | ||
871 | # | ||
872 | # CONFIG_UIO is not set | ||
848 | 873 | ||
849 | # | 874 | # |
850 | # File systems | 875 | # File systems |
@@ -860,9 +885,11 @@ CONFIG_JBD=y | |||
860 | # CONFIG_JFS_FS is not set | 885 | # CONFIG_JFS_FS is not set |
861 | # CONFIG_FS_POSIX_ACL is not set | 886 | # CONFIG_FS_POSIX_ACL is not set |
862 | # CONFIG_XFS_FS is not set | 887 | # CONFIG_XFS_FS is not set |
888 | # CONFIG_OCFS2_FS is not set | ||
863 | # CONFIG_MINIX_FS is not set | 889 | # CONFIG_MINIX_FS is not set |
864 | # CONFIG_ROMFS_FS is not set | 890 | # CONFIG_ROMFS_FS is not set |
865 | CONFIG_INOTIFY=y | 891 | CONFIG_INOTIFY=y |
892 | CONFIG_INOTIFY_USER=y | ||
866 | # CONFIG_QUOTA is not set | 893 | # CONFIG_QUOTA is not set |
867 | CONFIG_DNOTIFY=y | 894 | CONFIG_DNOTIFY=y |
868 | # CONFIG_AUTOFS_FS is not set | 895 | # CONFIG_AUTOFS_FS is not set |
@@ -889,11 +916,12 @@ CONFIG_JOLIET=y | |||
889 | # | 916 | # |
890 | CONFIG_PROC_FS=y | 917 | CONFIG_PROC_FS=y |
891 | CONFIG_PROC_KCORE=y | 918 | CONFIG_PROC_KCORE=y |
919 | CONFIG_PROC_SYSCTL=y | ||
892 | CONFIG_SYSFS=y | 920 | CONFIG_SYSFS=y |
893 | CONFIG_TMPFS=y | 921 | CONFIG_TMPFS=y |
922 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
894 | # CONFIG_HUGETLB_PAGE is not set | 923 | # CONFIG_HUGETLB_PAGE is not set |
895 | CONFIG_RAMFS=y | 924 | CONFIG_RAMFS=y |
896 | # CONFIG_RELAYFS_FS is not set | ||
897 | 925 | ||
898 | # | 926 | # |
899 | # Miscellaneous filesystems | 927 | # Miscellaneous filesystems |
@@ -912,6 +940,7 @@ CONFIG_RAMFS=y | |||
912 | CONFIG_NFS_FS=y | 940 | CONFIG_NFS_FS=y |
913 | CONFIG_NFS_V3=y | 941 | CONFIG_NFS_V3=y |
914 | # CONFIG_NFS_V3_ACL is not set | 942 | # CONFIG_NFS_V3_ACL is not set |
943 | # CONFIG_NFS_DIRECTIO is not set | ||
915 | CONFIG_NFSD=y | 944 | CONFIG_NFSD=y |
916 | CONFIG_NFSD_V3=y | 945 | CONFIG_NFSD_V3=y |
917 | # CONFIG_NFSD_V3_ACL is not set | 946 | # CONFIG_NFSD_V3_ACL is not set |
@@ -982,22 +1011,32 @@ CONFIG_NLS_UTF8=m | |||
982 | # Kernel hacking | 1011 | # Kernel hacking |
983 | # | 1012 | # |
984 | # CONFIG_PRINTK_TIME is not set | 1013 | # CONFIG_PRINTK_TIME is not set |
1014 | CONFIG_ENABLE_MUST_CHECK=y | ||
985 | CONFIG_MAGIC_SYSRQ=y | 1015 | CONFIG_MAGIC_SYSRQ=y |
1016 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1017 | # CONFIG_DEBUG_FS is not set | ||
1018 | CONFIG_HEADERS_CHECK=y | ||
986 | CONFIG_DEBUG_KERNEL=y | 1019 | CONFIG_DEBUG_KERNEL=y |
987 | CONFIG_LOG_BUF_SHIFT=16 | 1020 | # CONFIG_DEBUG_SHIRQ is not set |
988 | CONFIG_DETECT_SOFTLOCKUP=y | 1021 | CONFIG_DETECT_SOFTLOCKUP=y |
1022 | CONFIG_SCHED_DEBUG=y | ||
989 | # CONFIG_SCHEDSTATS is not set | 1023 | # CONFIG_SCHEDSTATS is not set |
1024 | # CONFIG_TIMER_STATS is not set | ||
990 | # CONFIG_DEBUG_SLAB is not set | 1025 | # CONFIG_DEBUG_SLAB is not set |
991 | # CONFIG_DEBUG_MUTEXES is not set | 1026 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1027 | # CONFIG_RT_MUTEX_TESTER is not set | ||
992 | # CONFIG_DEBUG_SPINLOCK is not set | 1028 | # CONFIG_DEBUG_SPINLOCK is not set |
1029 | # CONFIG_DEBUG_MUTEXES is not set | ||
993 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1030 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1031 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
994 | # CONFIG_DEBUG_KOBJECT is not set | 1032 | # CONFIG_DEBUG_KOBJECT is not set |
1033 | CONFIG_DEBUG_BUGVERBOSE=y | ||
995 | # CONFIG_DEBUG_INFO is not set | 1034 | # CONFIG_DEBUG_INFO is not set |
996 | # CONFIG_DEBUG_IOREMAP is not set | ||
997 | # CONFIG_DEBUG_FS is not set | ||
998 | # CONFIG_DEBUG_VM is not set | 1035 | # CONFIG_DEBUG_VM is not set |
1036 | # CONFIG_DEBUG_LIST is not set | ||
999 | CONFIG_FORCED_INLINING=y | 1037 | CONFIG_FORCED_INLINING=y |
1000 | # CONFIG_RCU_TORTURE_TEST is not set | 1038 | # CONFIG_RCU_TORTURE_TEST is not set |
1039 | # CONFIG_FAULT_INJECTION is not set | ||
1001 | # CONFIG_DEBUG_RODATA is not set | 1040 | # CONFIG_DEBUG_RODATA is not set |
1002 | 1041 | ||
1003 | # | 1042 | # |
@@ -1007,13 +1046,10 @@ CONFIG_FORCED_INLINING=y | |||
1007 | CONFIG_SECURITY=y | 1046 | CONFIG_SECURITY=y |
1008 | # CONFIG_SECURITY_NETWORK is not set | 1047 | # CONFIG_SECURITY_NETWORK is not set |
1009 | CONFIG_SECURITY_CAPABILITIES=y | 1048 | CONFIG_SECURITY_CAPABILITIES=y |
1010 | # CONFIG_SECURITY_SECLVL is not set | ||
1011 | # CONFIG_SECURITY_SELINUX is not set | ||
1012 | |||
1013 | # | ||
1014 | # Cryptographic options | ||
1015 | # | ||
1016 | CONFIG_CRYPTO=y | 1049 | CONFIG_CRYPTO=y |
1050 | CONFIG_CRYPTO_ALGAPI=y | ||
1051 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1052 | CONFIG_CRYPTO_MANAGER=y | ||
1017 | # CONFIG_CRYPTO_HMAC is not set | 1053 | # CONFIG_CRYPTO_HMAC is not set |
1018 | # CONFIG_CRYPTO_NULL is not set | 1054 | # CONFIG_CRYPTO_NULL is not set |
1019 | # CONFIG_CRYPTO_MD4 is not set | 1055 | # CONFIG_CRYPTO_MD4 is not set |
@@ -1023,7 +1059,12 @@ CONFIG_CRYPTO=y | |||
1023 | # CONFIG_CRYPTO_SHA512 is not set | 1059 | # CONFIG_CRYPTO_SHA512 is not set |
1024 | # CONFIG_CRYPTO_WP512 is not set | 1060 | # CONFIG_CRYPTO_WP512 is not set |
1025 | # CONFIG_CRYPTO_TGR192 is not set | 1061 | # CONFIG_CRYPTO_TGR192 is not set |
1062 | # CONFIG_CRYPTO_ECB is not set | ||
1063 | CONFIG_CRYPTO_CBC=y | ||
1064 | # CONFIG_CRYPTO_PCBC is not set | ||
1065 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1026 | # CONFIG_CRYPTO_DES is not set | 1066 | # CONFIG_CRYPTO_DES is not set |
1067 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1027 | # CONFIG_CRYPTO_BLOWFISH is not set | 1068 | # CONFIG_CRYPTO_BLOWFISH is not set |
1028 | # CONFIG_CRYPTO_TWOFISH is not set | 1069 | # CONFIG_CRYPTO_TWOFISH is not set |
1029 | # CONFIG_CRYPTO_SERPENT is not set | 1070 | # CONFIG_CRYPTO_SERPENT is not set |
@@ -1034,19 +1075,26 @@ CONFIG_CRYPTO=y | |||
1034 | # CONFIG_CRYPTO_ARC4 is not set | 1075 | # CONFIG_CRYPTO_ARC4 is not set |
1035 | # CONFIG_CRYPTO_KHAZAD is not set | 1076 | # CONFIG_CRYPTO_KHAZAD is not set |
1036 | # CONFIG_CRYPTO_ANUBIS is not set | 1077 | # CONFIG_CRYPTO_ANUBIS is not set |
1078 | # CONFIG_CRYPTO_SEED is not set | ||
1037 | # CONFIG_CRYPTO_DEFLATE is not set | 1079 | # CONFIG_CRYPTO_DEFLATE is not set |
1038 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1080 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1039 | # CONFIG_CRYPTO_CRC32C is not set | 1081 | # CONFIG_CRYPTO_CRC32C is not set |
1082 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1040 | # CONFIG_CRYPTO_TEST is not set | 1083 | # CONFIG_CRYPTO_TEST is not set |
1041 | 1084 | # CONFIG_CRYPTO_AUTHENC is not set | |
1042 | # | 1085 | CONFIG_CRYPTO_HW=y |
1043 | # Hardware crypto devices | ||
1044 | # | ||
1045 | 1086 | ||
1046 | # | 1087 | # |
1047 | # Library routines | 1088 | # Library routines |
1048 | # | 1089 | # |
1090 | CONFIG_BITREVERSE=y | ||
1049 | # CONFIG_CRC_CCITT is not set | 1091 | # CONFIG_CRC_CCITT is not set |
1050 | # CONFIG_CRC16 is not set | 1092 | # CONFIG_CRC16 is not set |
1093 | # CONFIG_CRC_ITU_T is not set | ||
1051 | CONFIG_CRC32=y | 1094 | CONFIG_CRC32=y |
1095 | # CONFIG_CRC7 is not set | ||
1052 | # CONFIG_LIBCRC32C is not set | 1096 | # CONFIG_LIBCRC32C is not set |
1097 | CONFIG_PLIST=y | ||
1098 | CONFIG_HAS_IOMEM=y | ||
1099 | CONFIG_HAS_IOPORT=y | ||
1100 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/parisc/configs/c3000_defconfig b/arch/parisc/configs/c3000_defconfig index eb2f9a3d515c..c6def3c1d209 100644 --- a/arch/parisc/configs/c3000_defconfig +++ b/arch/parisc/configs/c3000_defconfig | |||
@@ -1,39 +1,50 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.16-pa6 | 3 | # Linux kernel version: 2.6.23 |
4 | # Sun Mar 26 20:03:29 2006 | 4 | # Fri Oct 12 21:24:00 2007 |
5 | # | 5 | # |
6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
10 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
11 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
13 | CONFIG_GENERIC_BUG=y | ||
14 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 15 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
16 | CONFIG_GENERIC_TIME=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | 17 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_GENERIC_IRQ_PROBE=y | 18 | CONFIG_GENERIC_IRQ_PROBE=y |
19 | CONFIG_IRQ_PER_CPU=y | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
13 | 21 | ||
14 | # | 22 | # |
15 | # Code maturity level options | 23 | # General setup |
16 | # | 24 | # |
17 | CONFIG_EXPERIMENTAL=y | 25 | CONFIG_EXPERIMENTAL=y |
18 | CONFIG_BROKEN_ON_SMP=y | 26 | CONFIG_BROKEN_ON_SMP=y |
19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
20 | |||
21 | # | ||
22 | # General setup | ||
23 | # | ||
24 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
25 | # CONFIG_LOCALVERSION_AUTO is not set | 29 | # CONFIG_LOCALVERSION_AUTO is not set |
26 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
27 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
32 | CONFIG_SYSVIPC_SYSCTL=y | ||
28 | # CONFIG_POSIX_MQUEUE is not set | 33 | # CONFIG_POSIX_MQUEUE is not set |
29 | # CONFIG_BSD_PROCESS_ACCT is not set | 34 | # CONFIG_BSD_PROCESS_ACCT is not set |
30 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
36 | # CONFIG_USER_NS is not set | ||
31 | # CONFIG_AUDIT is not set | 37 | # CONFIG_AUDIT is not set |
32 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
33 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
34 | CONFIG_INITRAMFS_SOURCE="" | 40 | CONFIG_LOG_BUF_SHIFT=16 |
41 | CONFIG_SYSFS_DEPRECATED=y | ||
42 | # CONFIG_RELAY is not set | ||
43 | # CONFIG_BLK_DEV_INITRD is not set | ||
35 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
45 | CONFIG_SYSCTL=y | ||
36 | CONFIG_EMBEDDED=y | 46 | CONFIG_EMBEDDED=y |
47 | CONFIG_SYSCTL_SYSCALL=y | ||
37 | CONFIG_KALLSYMS=y | 48 | CONFIG_KALLSYMS=y |
38 | CONFIG_KALLSYMS_ALL=y | 49 | CONFIG_KALLSYMS_ALL=y |
39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 50 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -43,31 +54,29 @@ CONFIG_BUG=y | |||
43 | CONFIG_ELF_CORE=y | 54 | CONFIG_ELF_CORE=y |
44 | CONFIG_BASE_FULL=y | 55 | CONFIG_BASE_FULL=y |
45 | CONFIG_FUTEX=y | 56 | CONFIG_FUTEX=y |
57 | CONFIG_ANON_INODES=y | ||
46 | CONFIG_EPOLL=y | 58 | CONFIG_EPOLL=y |
59 | CONFIG_SIGNALFD=y | ||
60 | CONFIG_EVENTFD=y | ||
47 | CONFIG_SHMEM=y | 61 | CONFIG_SHMEM=y |
48 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 62 | CONFIG_VM_EVENT_COUNTERS=y |
49 | CONFIG_CC_ALIGN_LABELS=0 | ||
50 | CONFIG_CC_ALIGN_LOOPS=0 | ||
51 | CONFIG_CC_ALIGN_JUMPS=0 | ||
52 | CONFIG_SLAB=y | 63 | CONFIG_SLAB=y |
64 | # CONFIG_SLUB is not set | ||
65 | # CONFIG_SLOB is not set | ||
66 | CONFIG_RT_MUTEXES=y | ||
53 | # CONFIG_TINY_SHMEM is not set | 67 | # CONFIG_TINY_SHMEM is not set |
54 | CONFIG_BASE_SMALL=0 | 68 | CONFIG_BASE_SMALL=0 |
55 | # CONFIG_SLOB is not set | ||
56 | |||
57 | # | ||
58 | # Loadable module support | ||
59 | # | ||
60 | CONFIG_MODULES=y | 69 | CONFIG_MODULES=y |
61 | CONFIG_MODULE_UNLOAD=y | 70 | CONFIG_MODULE_UNLOAD=y |
62 | CONFIG_MODULE_FORCE_UNLOAD=y | 71 | CONFIG_MODULE_FORCE_UNLOAD=y |
63 | CONFIG_OBSOLETE_MODPARM=y | ||
64 | # CONFIG_MODVERSIONS is not set | 72 | # CONFIG_MODVERSIONS is not set |
65 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 73 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
66 | CONFIG_KMOD=y | 74 | CONFIG_KMOD=y |
67 | 75 | CONFIG_BLOCK=y | |
68 | # | 76 | # CONFIG_LBD is not set |
69 | # Block layer | 77 | # CONFIG_BLK_DEV_IO_TRACE is not set |
70 | # | 78 | # CONFIG_LSF is not set |
79 | # CONFIG_BLK_DEV_BSG is not set | ||
71 | 80 | ||
72 | # | 81 | # |
73 | # IO Schedulers | 82 | # IO Schedulers |
@@ -93,6 +102,9 @@ CONFIG_PA8X00=y | |||
93 | CONFIG_PA20=y | 102 | CONFIG_PA20=y |
94 | CONFIG_PREFETCH=y | 103 | CONFIG_PREFETCH=y |
95 | # CONFIG_64BIT is not set | 104 | # CONFIG_64BIT is not set |
105 | CONFIG_PARISC_PAGE_SIZE_4KB=y | ||
106 | # CONFIG_PARISC_PAGE_SIZE_16KB is not set | ||
107 | # CONFIG_PARISC_PAGE_SIZE_64KB is not set | ||
96 | # CONFIG_SMP is not set | 108 | # CONFIG_SMP is not set |
97 | CONFIG_ARCH_FLATMEM_ENABLE=y | 109 | CONFIG_ARCH_FLATMEM_ENABLE=y |
98 | # CONFIG_PREEMPT_NONE is not set | 110 | # CONFIG_PREEMPT_NONE is not set |
@@ -100,6 +112,7 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
100 | # CONFIG_PREEMPT is not set | 112 | # CONFIG_PREEMPT is not set |
101 | # CONFIG_HZ_100 is not set | 113 | # CONFIG_HZ_100 is not set |
102 | CONFIG_HZ_250=y | 114 | CONFIG_HZ_250=y |
115 | # CONFIG_HZ_300 is not set | ||
103 | # CONFIG_HZ_1000 is not set | 116 | # CONFIG_HZ_1000 is not set |
104 | CONFIG_HZ=250 | 117 | CONFIG_HZ=250 |
105 | CONFIG_SELECT_MEMORY_MODEL=y | 118 | CONFIG_SELECT_MEMORY_MODEL=y |
@@ -110,6 +123,9 @@ CONFIG_FLATMEM=y | |||
110 | CONFIG_FLAT_NODE_MEM_MAP=y | 123 | CONFIG_FLAT_NODE_MEM_MAP=y |
111 | # CONFIG_SPARSEMEM_STATIC is not set | 124 | # CONFIG_SPARSEMEM_STATIC is not set |
112 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 125 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
126 | # CONFIG_RESOURCES_64BIT is not set | ||
127 | CONFIG_ZONE_DMA_FLAG=0 | ||
128 | CONFIG_VIRT_TO_BUS=y | ||
113 | # CONFIG_HPUX is not set | 129 | # CONFIG_HPUX is not set |
114 | 130 | ||
115 | # | 131 | # |
@@ -117,7 +133,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4 | |||
117 | # | 133 | # |
118 | # CONFIG_GSC is not set | 134 | # CONFIG_GSC is not set |
119 | CONFIG_PCI=y | 135 | CONFIG_PCI=y |
120 | CONFIG_PCI_LEGACY_PROC=y | 136 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
121 | # CONFIG_PCI_DEBUG is not set | 137 | # CONFIG_PCI_DEBUG is not set |
122 | CONFIG_PCI_LBA=y | 138 | CONFIG_PCI_LBA=y |
123 | CONFIG_IOSAPIC=y | 139 | CONFIG_IOSAPIC=y |
@@ -127,10 +143,6 @@ CONFIG_IOMMU_SBA=y | |||
127 | # PCCARD (PCMCIA/CardBus) support | 143 | # PCCARD (PCMCIA/CardBus) support |
128 | # | 144 | # |
129 | # CONFIG_PCCARD is not set | 145 | # CONFIG_PCCARD is not set |
130 | |||
131 | # | ||
132 | # PCI Hotplug Support | ||
133 | # | ||
134 | # CONFIG_HOTPLUG_PCI is not set | 146 | # CONFIG_HOTPLUG_PCI is not set |
135 | 147 | ||
136 | # | 148 | # |
@@ -139,6 +151,7 @@ CONFIG_IOMMU_SBA=y | |||
139 | CONFIG_SUPERIO=y | 151 | CONFIG_SUPERIO=y |
140 | CONFIG_CHASSIS_LCD_LED=y | 152 | CONFIG_CHASSIS_LCD_LED=y |
141 | # CONFIG_PDC_CHASSIS is not set | 153 | # CONFIG_PDC_CHASSIS is not set |
154 | CONFIG_PDC_CHASSIS_WARN=y | ||
142 | CONFIG_PDC_STABLE=y | 155 | CONFIG_PDC_STABLE=y |
143 | 156 | ||
144 | # | 157 | # |
@@ -155,13 +168,15 @@ CONFIG_NET=y | |||
155 | # | 168 | # |
156 | # Networking options | 169 | # Networking options |
157 | # | 170 | # |
158 | # CONFIG_NETDEBUG is not set | ||
159 | CONFIG_PACKET=y | 171 | CONFIG_PACKET=y |
160 | CONFIG_PACKET_MMAP=y | 172 | CONFIG_PACKET_MMAP=y |
161 | CONFIG_UNIX=y | 173 | CONFIG_UNIX=y |
162 | CONFIG_XFRM=y | 174 | CONFIG_XFRM=y |
163 | CONFIG_XFRM_USER=m | 175 | CONFIG_XFRM_USER=m |
176 | # CONFIG_XFRM_SUB_POLICY is not set | ||
177 | # CONFIG_XFRM_MIGRATE is not set | ||
164 | CONFIG_NET_KEY=m | 178 | CONFIG_NET_KEY=m |
179 | # CONFIG_NET_KEY_MIGRATE is not set | ||
165 | CONFIG_INET=y | 180 | CONFIG_INET=y |
166 | CONFIG_IP_MULTICAST=y | 181 | CONFIG_IP_MULTICAST=y |
167 | # CONFIG_IP_ADVANCED_ROUTER is not set | 182 | # CONFIG_IP_ADVANCED_ROUTER is not set |
@@ -178,22 +193,36 @@ CONFIG_IP_PNP_BOOTP=y | |||
178 | # CONFIG_INET_AH is not set | 193 | # CONFIG_INET_AH is not set |
179 | # CONFIG_INET_ESP is not set | 194 | # CONFIG_INET_ESP is not set |
180 | # CONFIG_INET_IPCOMP is not set | 195 | # CONFIG_INET_IPCOMP is not set |
181 | # CONFIG_INET_TUNNEL is not set | 196 | # CONFIG_INET_XFRM_TUNNEL is not set |
197 | CONFIG_INET_TUNNEL=m | ||
198 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
199 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
200 | CONFIG_INET_XFRM_MODE_BEET=y | ||
201 | # CONFIG_INET_LRO is not set | ||
182 | # CONFIG_INET_DIAG is not set | 202 | # CONFIG_INET_DIAG is not set |
183 | # CONFIG_TCP_CONG_ADVANCED is not set | 203 | # CONFIG_TCP_CONG_ADVANCED is not set |
184 | CONFIG_TCP_CONG_BIC=y | 204 | CONFIG_TCP_CONG_CUBIC=y |
185 | 205 | CONFIG_DEFAULT_TCP_CONG="cubic" | |
186 | # | 206 | # CONFIG_TCP_MD5SIG is not set |
187 | # IP: Virtual Server Configuration | ||
188 | # | ||
189 | # CONFIG_IP_VS is not set | 207 | # CONFIG_IP_VS is not set |
190 | CONFIG_IPV6=m | 208 | CONFIG_IPV6=m |
191 | # CONFIG_IPV6_PRIVACY is not set | 209 | # CONFIG_IPV6_PRIVACY is not set |
210 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
211 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
192 | # CONFIG_INET6_AH is not set | 212 | # CONFIG_INET6_AH is not set |
193 | # CONFIG_INET6_ESP is not set | 213 | # CONFIG_INET6_ESP is not set |
194 | CONFIG_INET6_IPCOMP=m | 214 | CONFIG_INET6_IPCOMP=m |
215 | # CONFIG_IPV6_MIP6 is not set | ||
216 | CONFIG_INET6_XFRM_TUNNEL=m | ||
195 | CONFIG_INET6_TUNNEL=m | 217 | CONFIG_INET6_TUNNEL=m |
218 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
219 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
220 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
221 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
222 | CONFIG_IPV6_SIT=m | ||
196 | CONFIG_IPV6_TUNNEL=m | 223 | CONFIG_IPV6_TUNNEL=m |
224 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
225 | # CONFIG_NETWORK_SECMARK is not set | ||
197 | CONFIG_NETFILTER=y | 226 | CONFIG_NETFILTER=y |
198 | CONFIG_NETFILTER_DEBUG=y | 227 | CONFIG_NETFILTER_DEBUG=y |
199 | 228 | ||
@@ -201,42 +230,24 @@ CONFIG_NETFILTER_DEBUG=y | |||
201 | # Core Netfilter Configuration | 230 | # Core Netfilter Configuration |
202 | # | 231 | # |
203 | # CONFIG_NETFILTER_NETLINK is not set | 232 | # CONFIG_NETFILTER_NETLINK is not set |
233 | # CONFIG_NF_CONNTRACK_ENABLED is not set | ||
234 | # CONFIG_NF_CONNTRACK is not set | ||
204 | # CONFIG_NETFILTER_XTABLES is not set | 235 | # CONFIG_NETFILTER_XTABLES is not set |
205 | 236 | ||
206 | # | 237 | # |
207 | # IP: Netfilter Configuration | 238 | # IP: Netfilter Configuration |
208 | # | 239 | # |
209 | CONFIG_IP_NF_CONNTRACK=m | ||
210 | # CONFIG_IP_NF_CT_ACCT is not set | ||
211 | # CONFIG_IP_NF_CONNTRACK_MARK is not set | ||
212 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
213 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
214 | CONFIG_IP_NF_FTP=m | ||
215 | CONFIG_IP_NF_IRC=m | ||
216 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
217 | CONFIG_IP_NF_TFTP=m | ||
218 | CONFIG_IP_NF_AMANDA=m | ||
219 | # CONFIG_IP_NF_PPTP is not set | ||
220 | CONFIG_IP_NF_QUEUE=m | 240 | CONFIG_IP_NF_QUEUE=m |
241 | # CONFIG_IP_NF_IPTABLES is not set | ||
242 | # CONFIG_IP_NF_ARPTABLES is not set | ||
221 | 243 | ||
222 | # | 244 | # |
223 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 245 | # IPv6: Netfilter Configuration (EXPERIMENTAL) |
224 | # | 246 | # |
225 | # CONFIG_IP6_NF_QUEUE is not set | 247 | # CONFIG_IP6_NF_QUEUE is not set |
226 | 248 | # CONFIG_IP6_NF_IPTABLES is not set | |
227 | # | ||
228 | # DCCP Configuration (EXPERIMENTAL) | ||
229 | # | ||
230 | # CONFIG_IP_DCCP is not set | 249 | # CONFIG_IP_DCCP is not set |
231 | |||
232 | # | ||
233 | # SCTP Configuration (EXPERIMENTAL) | ||
234 | # | ||
235 | # CONFIG_IP_SCTP is not set | 250 | # CONFIG_IP_SCTP is not set |
236 | |||
237 | # | ||
238 | # TIPC Configuration (EXPERIMENTAL) | ||
239 | # | ||
240 | # CONFIG_TIPC is not set | 251 | # CONFIG_TIPC is not set |
241 | # CONFIG_ATM is not set | 252 | # CONFIG_ATM is not set |
242 | # CONFIG_BRIDGE is not set | 253 | # CONFIG_BRIDGE is not set |
@@ -247,7 +258,6 @@ CONFIG_IP_NF_QUEUE=m | |||
247 | # CONFIG_ATALK is not set | 258 | # CONFIG_ATALK is not set |
248 | # CONFIG_X25 is not set | 259 | # CONFIG_X25 is not set |
249 | # CONFIG_LAPB is not set | 260 | # CONFIG_LAPB is not set |
250 | # CONFIG_NET_DIVERT is not set | ||
251 | # CONFIG_ECONET is not set | 261 | # CONFIG_ECONET is not set |
252 | # CONFIG_WAN_ROUTER is not set | 262 | # CONFIG_WAN_ROUTER is not set |
253 | 263 | ||
@@ -263,7 +273,17 @@ CONFIG_NET_PKTGEN=m | |||
263 | # CONFIG_HAMRADIO is not set | 273 | # CONFIG_HAMRADIO is not set |
264 | # CONFIG_IRDA is not set | 274 | # CONFIG_IRDA is not set |
265 | # CONFIG_BT is not set | 275 | # CONFIG_BT is not set |
276 | # CONFIG_AF_RXRPC is not set | ||
277 | |||
278 | # | ||
279 | # Wireless | ||
280 | # | ||
281 | # CONFIG_CFG80211 is not set | ||
282 | # CONFIG_WIRELESS_EXT is not set | ||
283 | # CONFIG_MAC80211 is not set | ||
266 | # CONFIG_IEEE80211 is not set | 284 | # CONFIG_IEEE80211 is not set |
285 | # CONFIG_RFKILL is not set | ||
286 | # CONFIG_NET_9P is not set | ||
267 | 287 | ||
268 | # | 288 | # |
269 | # Device Drivers | 289 | # Device Drivers |
@@ -272,33 +292,17 @@ CONFIG_NET_PKTGEN=m | |||
272 | # | 292 | # |
273 | # Generic Driver Options | 293 | # Generic Driver Options |
274 | # | 294 | # |
295 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
275 | # CONFIG_STANDALONE is not set | 296 | # CONFIG_STANDALONE is not set |
276 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 297 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
277 | CONFIG_FW_LOADER=y | 298 | CONFIG_FW_LOADER=y |
278 | # CONFIG_DEBUG_DRIVER is not set | 299 | # CONFIG_DEBUG_DRIVER is not set |
279 | 300 | # CONFIG_DEBUG_DEVRES is not set | |
280 | # | 301 | # CONFIG_SYS_HYPERVISOR is not set |
281 | # Connector - unified userspace <-> kernelspace linker | ||
282 | # | ||
283 | # CONFIG_CONNECTOR is not set | 302 | # CONFIG_CONNECTOR is not set |
284 | |||
285 | # | ||
286 | # Memory Technology Devices (MTD) | ||
287 | # | ||
288 | # CONFIG_MTD is not set | 303 | # CONFIG_MTD is not set |
289 | |||
290 | # | ||
291 | # Parallel port support | ||
292 | # | ||
293 | # CONFIG_PARPORT is not set | 304 | # CONFIG_PARPORT is not set |
294 | 305 | CONFIG_BLK_DEV=y | |
295 | # | ||
296 | # Plug and Play support | ||
297 | # | ||
298 | |||
299 | # | ||
300 | # Block devices | ||
301 | # | ||
302 | # CONFIG_BLK_CPQ_DA is not set | 306 | # CONFIG_BLK_CPQ_DA is not set |
303 | # CONFIG_BLK_CPQ_CISS_DA is not set | 307 | # CONFIG_BLK_CPQ_CISS_DA is not set |
304 | # CONFIG_BLK_DEV_DAC960 is not set | 308 | # CONFIG_BLK_DEV_DAC960 is not set |
@@ -310,14 +314,15 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m | |||
310 | # CONFIG_BLK_DEV_SX8 is not set | 314 | # CONFIG_BLK_DEV_SX8 is not set |
311 | # CONFIG_BLK_DEV_UB is not set | 315 | # CONFIG_BLK_DEV_UB is not set |
312 | # CONFIG_BLK_DEV_RAM is not set | 316 | # CONFIG_BLK_DEV_RAM is not set |
313 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
314 | # CONFIG_CDROM_PKTCDVD is not set | 317 | # CONFIG_CDROM_PKTCDVD is not set |
315 | # CONFIG_ATA_OVER_ETH is not set | 318 | # CONFIG_ATA_OVER_ETH is not set |
316 | 319 | CONFIG_MISC_DEVICES=y | |
317 | # | 320 | # CONFIG_PHANTOM is not set |
318 | # ATA/ATAPI/MFM/RLL support | 321 | # CONFIG_EEPROM_93CX6 is not set |
319 | # | 322 | # CONFIG_SGI_IOC4 is not set |
323 | # CONFIG_TIFM_CORE is not set | ||
320 | CONFIG_IDE=y | 324 | CONFIG_IDE=y |
325 | CONFIG_IDE_MAX_HWIFS=4 | ||
321 | CONFIG_BLK_DEV_IDE=y | 326 | CONFIG_BLK_DEV_IDE=y |
322 | 327 | ||
323 | # | 328 | # |
@@ -331,19 +336,26 @@ CONFIG_BLK_DEV_IDECD=y | |||
331 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 336 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
332 | CONFIG_BLK_DEV_IDESCSI=y | 337 | CONFIG_BLK_DEV_IDESCSI=y |
333 | # CONFIG_IDE_TASK_IOCTL is not set | 338 | # CONFIG_IDE_TASK_IOCTL is not set |
339 | CONFIG_IDE_PROC_FS=y | ||
334 | 340 | ||
335 | # | 341 | # |
336 | # IDE chipset support/bugfixes | 342 | # IDE chipset support/bugfixes |
337 | # | 343 | # |
338 | CONFIG_IDE_GENERIC=y | 344 | CONFIG_IDE_GENERIC=y |
345 | # CONFIG_BLK_DEV_PLATFORM is not set | ||
346 | |||
347 | # | ||
348 | # PCI IDE chipsets support | ||
349 | # | ||
339 | CONFIG_BLK_DEV_IDEPCI=y | 350 | CONFIG_BLK_DEV_IDEPCI=y |
340 | CONFIG_IDEPCI_SHARE_IRQ=y | 351 | CONFIG_IDEPCI_SHARE_IRQ=y |
352 | CONFIG_IDEPCI_PCIBUS_ORDER=y | ||
341 | # CONFIG_BLK_DEV_OFFBOARD is not set | 353 | # CONFIG_BLK_DEV_OFFBOARD is not set |
342 | # CONFIG_BLK_DEV_GENERIC is not set | 354 | # CONFIG_BLK_DEV_GENERIC is not set |
343 | # CONFIG_BLK_DEV_OPTI621 is not set | 355 | # CONFIG_BLK_DEV_OPTI621 is not set |
344 | CONFIG_BLK_DEV_IDEDMA_PCI=y | 356 | CONFIG_BLK_DEV_IDEDMA_PCI=y |
345 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | 357 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set |
346 | # CONFIG_IDEDMA_PCI_AUTO is not set | 358 | CONFIG_IDEDMA_ONLYDISK=y |
347 | # CONFIG_BLK_DEV_AEC62XX is not set | 359 | # CONFIG_BLK_DEV_AEC62XX is not set |
348 | # CONFIG_BLK_DEV_ALI15X3 is not set | 360 | # CONFIG_BLK_DEV_ALI15X3 is not set |
349 | # CONFIG_BLK_DEV_AMD74XX is not set | 361 | # CONFIG_BLK_DEV_AMD74XX is not set |
@@ -354,8 +366,10 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y | |||
354 | # CONFIG_BLK_DEV_CS5530 is not set | 366 | # CONFIG_BLK_DEV_CS5530 is not set |
355 | # CONFIG_BLK_DEV_HPT34X is not set | 367 | # CONFIG_BLK_DEV_HPT34X is not set |
356 | # CONFIG_BLK_DEV_HPT366 is not set | 368 | # CONFIG_BLK_DEV_HPT366 is not set |
369 | # CONFIG_BLK_DEV_JMICRON is not set | ||
357 | # CONFIG_BLK_DEV_SC1200 is not set | 370 | # CONFIG_BLK_DEV_SC1200 is not set |
358 | # CONFIG_BLK_DEV_PIIX is not set | 371 | # CONFIG_BLK_DEV_PIIX is not set |
372 | # CONFIG_BLK_DEV_IT8213 is not set | ||
359 | # CONFIG_BLK_DEV_IT821X is not set | 373 | # CONFIG_BLK_DEV_IT821X is not set |
360 | CONFIG_BLK_DEV_NS87415=y | 374 | CONFIG_BLK_DEV_NS87415=y |
361 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 375 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
@@ -365,10 +379,10 @@ CONFIG_BLK_DEV_SIIMAGE=m | |||
365 | # CONFIG_BLK_DEV_SLC90E66 is not set | 379 | # CONFIG_BLK_DEV_SLC90E66 is not set |
366 | # CONFIG_BLK_DEV_TRM290 is not set | 380 | # CONFIG_BLK_DEV_TRM290 is not set |
367 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 381 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
382 | # CONFIG_BLK_DEV_TC86C001 is not set | ||
368 | # CONFIG_IDE_ARM is not set | 383 | # CONFIG_IDE_ARM is not set |
369 | CONFIG_BLK_DEV_IDEDMA=y | 384 | CONFIG_BLK_DEV_IDEDMA=y |
370 | # CONFIG_IDEDMA_IVB is not set | 385 | # CONFIG_IDEDMA_IVB is not set |
371 | # CONFIG_IDEDMA_AUTO is not set | ||
372 | # CONFIG_BLK_DEV_HD is not set | 386 | # CONFIG_BLK_DEV_HD is not set |
373 | 387 | ||
374 | # | 388 | # |
@@ -376,6 +390,9 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
376 | # | 390 | # |
377 | # CONFIG_RAID_ATTRS is not set | 391 | # CONFIG_RAID_ATTRS is not set |
378 | CONFIG_SCSI=y | 392 | CONFIG_SCSI=y |
393 | CONFIG_SCSI_DMA=y | ||
394 | # CONFIG_SCSI_TGT is not set | ||
395 | # CONFIG_SCSI_NETLINK is not set | ||
379 | CONFIG_SCSI_PROC_FS=y | 396 | CONFIG_SCSI_PROC_FS=y |
380 | 397 | ||
381 | # | 398 | # |
@@ -395,18 +412,17 @@ CONFIG_CHR_DEV_SG=y | |||
395 | CONFIG_SCSI_MULTI_LUN=y | 412 | CONFIG_SCSI_MULTI_LUN=y |
396 | # CONFIG_SCSI_CONSTANTS is not set | 413 | # CONFIG_SCSI_CONSTANTS is not set |
397 | # CONFIG_SCSI_LOGGING is not set | 414 | # CONFIG_SCSI_LOGGING is not set |
415 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
416 | CONFIG_SCSI_WAIT_SCAN=m | ||
398 | 417 | ||
399 | # | 418 | # |
400 | # SCSI Transport Attributes | 419 | # SCSI Transports |
401 | # | 420 | # |
402 | CONFIG_SCSI_SPI_ATTRS=y | 421 | CONFIG_SCSI_SPI_ATTRS=y |
403 | # CONFIG_SCSI_FC_ATTRS is not set | 422 | # CONFIG_SCSI_FC_ATTRS is not set |
404 | CONFIG_SCSI_ISCSI_ATTRS=m | 423 | CONFIG_SCSI_ISCSI_ATTRS=m |
405 | # CONFIG_SCSI_SAS_ATTRS is not set | 424 | # CONFIG_SCSI_SAS_LIBSAS is not set |
406 | 425 | CONFIG_SCSI_LOWLEVEL=y | |
407 | # | ||
408 | # SCSI low-level drivers | ||
409 | # | ||
410 | # CONFIG_ISCSI_TCP is not set | 426 | # CONFIG_ISCSI_TCP is not set |
411 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 427 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
412 | # CONFIG_SCSI_3W_9XXX is not set | 428 | # CONFIG_SCSI_3W_9XXX is not set |
@@ -415,66 +431,53 @@ CONFIG_SCSI_ISCSI_ATTRS=m | |||
415 | # CONFIG_SCSI_AIC7XXX is not set | 431 | # CONFIG_SCSI_AIC7XXX is not set |
416 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 432 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
417 | # CONFIG_SCSI_AIC79XX is not set | 433 | # CONFIG_SCSI_AIC79XX is not set |
434 | # CONFIG_SCSI_AIC94XX is not set | ||
418 | # CONFIG_SCSI_DPT_I2O is not set | 435 | # CONFIG_SCSI_DPT_I2O is not set |
436 | # CONFIG_SCSI_ARCMSR is not set | ||
419 | # CONFIG_MEGARAID_NEWGEN is not set | 437 | # CONFIG_MEGARAID_NEWGEN is not set |
420 | # CONFIG_MEGARAID_LEGACY is not set | 438 | # CONFIG_MEGARAID_LEGACY is not set |
421 | # CONFIG_MEGARAID_SAS is not set | 439 | # CONFIG_MEGARAID_SAS is not set |
422 | CONFIG_SCSI_SATA=y | 440 | # CONFIG_SCSI_HPTIOP is not set |
423 | # CONFIG_SCSI_SATA_AHCI is not set | ||
424 | # CONFIG_SCSI_SATA_SVW is not set | ||
425 | CONFIG_SCSI_ATA_PIIX=m | ||
426 | # CONFIG_SCSI_SATA_MV is not set | ||
427 | # CONFIG_SCSI_SATA_NV is not set | ||
428 | # CONFIG_SCSI_PDC_ADMA is not set | ||
429 | # CONFIG_SCSI_SATA_QSTOR is not set | ||
430 | CONFIG_SCSI_SATA_PROMISE=m | ||
431 | # CONFIG_SCSI_SATA_SX4 is not set | ||
432 | CONFIG_SCSI_SATA_SIL=m | ||
433 | # CONFIG_SCSI_SATA_SIL24 is not set | ||
434 | # CONFIG_SCSI_SATA_SIS is not set | ||
435 | # CONFIG_SCSI_SATA_ULI is not set | ||
436 | CONFIG_SCSI_SATA_VIA=m | ||
437 | # CONFIG_SCSI_SATA_VITESSE is not set | ||
438 | # CONFIG_SCSI_DMX3191D is not set | 441 | # CONFIG_SCSI_DMX3191D is not set |
439 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 442 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
440 | # CONFIG_SCSI_IPS is not set | 443 | # CONFIG_SCSI_IPS is not set |
441 | # CONFIG_SCSI_INITIO is not set | 444 | # CONFIG_SCSI_INITIO is not set |
442 | # CONFIG_SCSI_INIA100 is not set | 445 | # CONFIG_SCSI_INIA100 is not set |
446 | # CONFIG_SCSI_STEX is not set | ||
443 | CONFIG_SCSI_SYM53C8XX_2=y | 447 | CONFIG_SCSI_SYM53C8XX_2=y |
444 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 | 448 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 |
445 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 449 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
446 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 450 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
447 | CONFIG_SCSI_SYM53C8XX_MMIO=y | 451 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
448 | # CONFIG_SCSI_IPR is not set | ||
449 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
450 | # CONFIG_SCSI_QLOGIC_1280 is not set | 452 | # CONFIG_SCSI_QLOGIC_1280 is not set |
451 | # CONFIG_SCSI_QLA_FC is not set | 453 | # CONFIG_SCSI_QLA_FC is not set |
454 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
452 | # CONFIG_SCSI_LPFC is not set | 455 | # CONFIG_SCSI_LPFC is not set |
453 | # CONFIG_SCSI_DC395x is not set | 456 | # CONFIG_SCSI_DC395x is not set |
454 | # CONFIG_SCSI_DC390T is not set | 457 | # CONFIG_SCSI_DC390T is not set |
455 | # CONFIG_SCSI_NSP32 is not set | 458 | # CONFIG_SCSI_NSP32 is not set |
456 | CONFIG_SCSI_DEBUG=m | 459 | CONFIG_SCSI_DEBUG=m |
457 | 460 | # CONFIG_SCSI_SRP is not set | |
458 | # | 461 | # CONFIG_ATA is not set |
459 | # Multi-device support (RAID and LVM) | ||
460 | # | ||
461 | CONFIG_MD=y | 462 | CONFIG_MD=y |
462 | CONFIG_BLK_DEV_MD=y | 463 | CONFIG_BLK_DEV_MD=y |
463 | CONFIG_MD_LINEAR=y | 464 | CONFIG_MD_LINEAR=y |
464 | CONFIG_MD_RAID0=y | 465 | CONFIG_MD_RAID0=y |
465 | CONFIG_MD_RAID1=y | 466 | CONFIG_MD_RAID1=y |
466 | # CONFIG_MD_RAID10 is not set | 467 | # CONFIG_MD_RAID10 is not set |
467 | # CONFIG_MD_RAID5 is not set | 468 | # CONFIG_MD_RAID456 is not set |
468 | # CONFIG_MD_RAID6 is not set | ||
469 | # CONFIG_MD_MULTIPATH is not set | 469 | # CONFIG_MD_MULTIPATH is not set |
470 | # CONFIG_MD_FAULTY is not set | 470 | # CONFIG_MD_FAULTY is not set |
471 | CONFIG_BLK_DEV_DM=m | 471 | CONFIG_BLK_DEV_DM=m |
472 | # CONFIG_DM_DEBUG is not set | ||
472 | CONFIG_DM_CRYPT=m | 473 | CONFIG_DM_CRYPT=m |
473 | CONFIG_DM_SNAPSHOT=m | 474 | CONFIG_DM_SNAPSHOT=m |
474 | CONFIG_DM_MIRROR=m | 475 | CONFIG_DM_MIRROR=m |
475 | CONFIG_DM_ZERO=m | 476 | CONFIG_DM_ZERO=m |
476 | CONFIG_DM_MULTIPATH=m | 477 | CONFIG_DM_MULTIPATH=m |
477 | # CONFIG_DM_MULTIPATH_EMC is not set | 478 | # CONFIG_DM_MULTIPATH_EMC is not set |
479 | # CONFIG_DM_MULTIPATH_RDAC is not set | ||
480 | # CONFIG_DM_DELAY is not set | ||
478 | 481 | ||
479 | # | 482 | # |
480 | # Fusion MPT device support | 483 | # Fusion MPT device support |
@@ -485,49 +488,31 @@ CONFIG_FUSION_SPI=m | |||
485 | # CONFIG_FUSION_SAS is not set | 488 | # CONFIG_FUSION_SAS is not set |
486 | CONFIG_FUSION_MAX_SGE=128 | 489 | CONFIG_FUSION_MAX_SGE=128 |
487 | CONFIG_FUSION_CTL=m | 490 | CONFIG_FUSION_CTL=m |
491 | # CONFIG_FUSION_LOGGING is not set | ||
488 | 492 | ||
489 | # | 493 | # |
490 | # IEEE 1394 (FireWire) support | 494 | # IEEE 1394 (FireWire) support |
491 | # | 495 | # |
496 | # CONFIG_FIREWIRE is not set | ||
492 | # CONFIG_IEEE1394 is not set | 497 | # CONFIG_IEEE1394 is not set |
493 | |||
494 | # | ||
495 | # I2O device support | ||
496 | # | ||
497 | # CONFIG_I2O is not set | 498 | # CONFIG_I2O is not set |
498 | |||
499 | # | ||
500 | # Network device support | ||
501 | # | ||
502 | CONFIG_NETDEVICES=y | 499 | CONFIG_NETDEVICES=y |
500 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
503 | CONFIG_DUMMY=m | 501 | CONFIG_DUMMY=m |
504 | CONFIG_BONDING=m | 502 | CONFIG_BONDING=m |
503 | # CONFIG_MACVLAN is not set | ||
505 | # CONFIG_EQUALIZER is not set | 504 | # CONFIG_EQUALIZER is not set |
506 | CONFIG_TUN=m | 505 | CONFIG_TUN=m |
507 | 506 | # CONFIG_VETH is not set | |
508 | # | 507 | # CONFIG_IP1000 is not set |
509 | # ARCnet devices | ||
510 | # | ||
511 | # CONFIG_ARCNET is not set | 508 | # CONFIG_ARCNET is not set |
512 | |||
513 | # | ||
514 | # PHY device support | ||
515 | # | ||
516 | # CONFIG_PHYLIB is not set | 509 | # CONFIG_PHYLIB is not set |
517 | |||
518 | # | ||
519 | # Ethernet (10 or 100Mbit) | ||
520 | # | ||
521 | CONFIG_NET_ETHERNET=y | 510 | CONFIG_NET_ETHERNET=y |
522 | CONFIG_MII=m | 511 | CONFIG_MII=m |
523 | # CONFIG_HAPPYMEAL is not set | 512 | # CONFIG_HAPPYMEAL is not set |
524 | # CONFIG_SUNGEM is not set | 513 | # CONFIG_SUNGEM is not set |
525 | # CONFIG_CASSINI is not set | 514 | # CONFIG_CASSINI is not set |
526 | # CONFIG_NET_VENDOR_3COM is not set | 515 | # CONFIG_NET_VENDOR_3COM is not set |
527 | |||
528 | # | ||
529 | # Tulip family network device support | ||
530 | # | ||
531 | CONFIG_NET_TULIP=y | 516 | CONFIG_NET_TULIP=y |
532 | CONFIG_DE2104X=m | 517 | CONFIG_DE2104X=m |
533 | CONFIG_TULIP=y | 518 | CONFIG_TULIP=y |
@@ -539,13 +524,16 @@ CONFIG_TULIP_MMIO=y | |||
539 | # CONFIG_DM9102 is not set | 524 | # CONFIG_DM9102 is not set |
540 | # CONFIG_ULI526X is not set | 525 | # CONFIG_ULI526X is not set |
541 | # CONFIG_HP100 is not set | 526 | # CONFIG_HP100 is not set |
527 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
528 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
529 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
530 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
542 | CONFIG_NET_PCI=y | 531 | CONFIG_NET_PCI=y |
543 | # CONFIG_PCNET32 is not set | 532 | # CONFIG_PCNET32 is not set |
544 | # CONFIG_AMD8111_ETH is not set | 533 | # CONFIG_AMD8111_ETH is not set |
545 | # CONFIG_ADAPTEC_STARFIRE is not set | 534 | # CONFIG_ADAPTEC_STARFIRE is not set |
546 | # CONFIG_B44 is not set | 535 | # CONFIG_B44 is not set |
547 | # CONFIG_FORCEDETH is not set | 536 | # CONFIG_FORCEDETH is not set |
548 | # CONFIG_DGRS is not set | ||
549 | # CONFIG_EEPRO100 is not set | 537 | # CONFIG_EEPRO100 is not set |
550 | CONFIG_E100=m | 538 | CONFIG_E100=m |
551 | # CONFIG_FEALNX is not set | 539 | # CONFIG_FEALNX is not set |
@@ -558,16 +546,15 @@ CONFIG_E100=m | |||
558 | # CONFIG_SUNDANCE is not set | 546 | # CONFIG_SUNDANCE is not set |
559 | # CONFIG_TLAN is not set | 547 | # CONFIG_TLAN is not set |
560 | # CONFIG_VIA_RHINE is not set | 548 | # CONFIG_VIA_RHINE is not set |
561 | 549 | # CONFIG_SC92031 is not set | |
562 | # | 550 | CONFIG_NETDEV_1000=y |
563 | # Ethernet (1000 Mbit) | ||
564 | # | ||
565 | CONFIG_ACENIC=m | 551 | CONFIG_ACENIC=m |
566 | # CONFIG_ACENIC_OMIT_TIGON_I is not set | 552 | # CONFIG_ACENIC_OMIT_TIGON_I is not set |
567 | # CONFIG_DL2K is not set | 553 | # CONFIG_DL2K is not set |
568 | CONFIG_E1000=m | 554 | CONFIG_E1000=m |
569 | # CONFIG_E1000_NAPI is not set | 555 | # CONFIG_E1000_NAPI is not set |
570 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 556 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
557 | # CONFIG_E1000E is not set | ||
571 | # CONFIG_NS83820 is not set | 558 | # CONFIG_NS83820 is not set |
572 | # CONFIG_HAMACHI is not set | 559 | # CONFIG_HAMACHI is not set |
573 | # CONFIG_YELLOWFIN is not set | 560 | # CONFIG_YELLOWFIN is not set |
@@ -579,27 +566,36 @@ CONFIG_E1000=m | |||
579 | # CONFIG_VIA_VELOCITY is not set | 566 | # CONFIG_VIA_VELOCITY is not set |
580 | CONFIG_TIGON3=m | 567 | CONFIG_TIGON3=m |
581 | # CONFIG_BNX2 is not set | 568 | # CONFIG_BNX2 is not set |
582 | 569 | # CONFIG_QLA3XXX is not set | |
583 | # | 570 | # CONFIG_ATL1 is not set |
584 | # Ethernet (10000 Mbit) | 571 | CONFIG_NETDEV_10000=y |
585 | # | ||
586 | # CONFIG_CHELSIO_T1 is not set | 572 | # CONFIG_CHELSIO_T1 is not set |
573 | # CONFIG_CHELSIO_T3 is not set | ||
574 | # CONFIG_IXGBE is not set | ||
587 | # CONFIG_IXGB is not set | 575 | # CONFIG_IXGB is not set |
588 | # CONFIG_S2IO is not set | 576 | # CONFIG_S2IO is not set |
589 | 577 | # CONFIG_MYRI10GE is not set | |
590 | # | 578 | # CONFIG_NETXEN_NIC is not set |
591 | # Token Ring devices | 579 | # CONFIG_NIU is not set |
592 | # | 580 | # CONFIG_MLX4_CORE is not set |
581 | # CONFIG_TEHUTI is not set | ||
593 | # CONFIG_TR is not set | 582 | # CONFIG_TR is not set |
594 | 583 | ||
595 | # | 584 | # |
596 | # Wireless LAN (non-hamradio) | 585 | # Wireless LAN |
597 | # | 586 | # |
598 | # CONFIG_NET_RADIO is not set | 587 | # CONFIG_WLAN_PRE80211 is not set |
588 | # CONFIG_WLAN_80211 is not set | ||
599 | 589 | ||
600 | # | 590 | # |
601 | # Wan interfaces | 591 | # USB Network Adapters |
602 | # | 592 | # |
593 | # CONFIG_USB_CATC is not set | ||
594 | # CONFIG_USB_KAWETH is not set | ||
595 | # CONFIG_USB_PEGASUS is not set | ||
596 | # CONFIG_USB_RTL8150 is not set | ||
597 | # CONFIG_USB_USBNET_MII is not set | ||
598 | # CONFIG_USB_USBNET is not set | ||
603 | # CONFIG_WAN is not set | 599 | # CONFIG_WAN is not set |
604 | # CONFIG_FDDI is not set | 600 | # CONFIG_FDDI is not set |
605 | # CONFIG_HIPPI is not set | 601 | # CONFIG_HIPPI is not set |
@@ -612,27 +608,23 @@ CONFIG_PPP_DEFLATE=m | |||
612 | CONFIG_PPP_BSDCOMP=m | 608 | CONFIG_PPP_BSDCOMP=m |
613 | # CONFIG_PPP_MPPE is not set | 609 | # CONFIG_PPP_MPPE is not set |
614 | CONFIG_PPPOE=m | 610 | CONFIG_PPPOE=m |
611 | # CONFIG_PPPOL2TP is not set | ||
615 | # CONFIG_SLIP is not set | 612 | # CONFIG_SLIP is not set |
613 | CONFIG_SLHC=m | ||
616 | # CONFIG_NET_FC is not set | 614 | # CONFIG_NET_FC is not set |
617 | # CONFIG_SHAPER is not set | 615 | # CONFIG_SHAPER is not set |
618 | # CONFIG_NETCONSOLE is not set | 616 | # CONFIG_NETCONSOLE is not set |
619 | # CONFIG_NETPOLL is not set | 617 | # CONFIG_NETPOLL is not set |
620 | # CONFIG_NET_POLL_CONTROLLER is not set | 618 | # CONFIG_NET_POLL_CONTROLLER is not set |
621 | |||
622 | # | ||
623 | # ISDN subsystem | ||
624 | # | ||
625 | # CONFIG_ISDN is not set | 619 | # CONFIG_ISDN is not set |
626 | |||
627 | # | ||
628 | # Telephony Support | ||
629 | # | ||
630 | # CONFIG_PHONE is not set | 620 | # CONFIG_PHONE is not set |
631 | 621 | ||
632 | # | 622 | # |
633 | # Input device support | 623 | # Input device support |
634 | # | 624 | # |
635 | CONFIG_INPUT=y | 625 | CONFIG_INPUT=y |
626 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
627 | # CONFIG_INPUT_POLLDEV is not set | ||
636 | 628 | ||
637 | # | 629 | # |
638 | # Userland interfaces | 630 | # Userland interfaces |
@@ -655,11 +647,14 @@ CONFIG_INPUT_KEYBOARD=y | |||
655 | # CONFIG_KEYBOARD_LKKBD is not set | 647 | # CONFIG_KEYBOARD_LKKBD is not set |
656 | # CONFIG_KEYBOARD_XTKBD is not set | 648 | # CONFIG_KEYBOARD_XTKBD is not set |
657 | # CONFIG_KEYBOARD_NEWTON is not set | 649 | # CONFIG_KEYBOARD_NEWTON is not set |
650 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
658 | CONFIG_INPUT_MOUSE=y | 651 | CONFIG_INPUT_MOUSE=y |
659 | # CONFIG_MOUSE_PS2 is not set | 652 | # CONFIG_MOUSE_PS2 is not set |
660 | # CONFIG_MOUSE_SERIAL is not set | 653 | # CONFIG_MOUSE_SERIAL is not set |
654 | # CONFIG_MOUSE_APPLETOUCH is not set | ||
661 | # CONFIG_MOUSE_VSXXXAA is not set | 655 | # CONFIG_MOUSE_VSXXXAA is not set |
662 | # CONFIG_INPUT_JOYSTICK is not set | 656 | # CONFIG_INPUT_JOYSTICK is not set |
657 | # CONFIG_INPUT_TABLET is not set | ||
663 | # CONFIG_INPUT_TOUCHSCREEN is not set | 658 | # CONFIG_INPUT_TOUCHSCREEN is not set |
664 | # CONFIG_INPUT_MISC is not set | 659 | # CONFIG_INPUT_MISC is not set |
665 | 660 | ||
@@ -679,6 +674,7 @@ CONFIG_SERIO_LIBPS2=m | |||
679 | CONFIG_VT=y | 674 | CONFIG_VT=y |
680 | CONFIG_VT_CONSOLE=y | 675 | CONFIG_VT_CONSOLE=y |
681 | CONFIG_HW_CONSOLE=y | 676 | CONFIG_HW_CONSOLE=y |
677 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
682 | # CONFIG_SERIAL_NONSTANDARD is not set | 678 | # CONFIG_SERIAL_NONSTANDARD is not set |
683 | 679 | ||
684 | # | 680 | # |
@@ -686,6 +682,7 @@ CONFIG_HW_CONSOLE=y | |||
686 | # | 682 | # |
687 | CONFIG_SERIAL_8250=y | 683 | CONFIG_SERIAL_8250=y |
688 | CONFIG_SERIAL_8250_CONSOLE=y | 684 | CONFIG_SERIAL_8250_CONSOLE=y |
685 | CONFIG_SERIAL_8250_PCI=y | ||
689 | CONFIG_SERIAL_8250_NR_UARTS=13 | 686 | CONFIG_SERIAL_8250_NR_UARTS=13 |
690 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 687 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
691 | CONFIG_SERIAL_8250_EXTENDED=y | 688 | CONFIG_SERIAL_8250_EXTENDED=y |
@@ -704,38 +701,19 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
704 | CONFIG_UNIX98_PTYS=y | 701 | CONFIG_UNIX98_PTYS=y |
705 | CONFIG_LEGACY_PTYS=y | 702 | CONFIG_LEGACY_PTYS=y |
706 | CONFIG_LEGACY_PTY_COUNT=256 | 703 | CONFIG_LEGACY_PTY_COUNT=256 |
707 | |||
708 | # | ||
709 | # IPMI | ||
710 | # | ||
711 | # CONFIG_IPMI_HANDLER is not set | 704 | # CONFIG_IPMI_HANDLER is not set |
712 | |||
713 | # | ||
714 | # Watchdog Cards | ||
715 | # | ||
716 | # CONFIG_WATCHDOG is not set | 705 | # CONFIG_WATCHDOG is not set |
706 | # CONFIG_HW_RANDOM is not set | ||
717 | CONFIG_GEN_RTC=y | 707 | CONFIG_GEN_RTC=y |
718 | CONFIG_GEN_RTC_X=y | 708 | CONFIG_GEN_RTC_X=y |
719 | # CONFIG_DTLK is not set | ||
720 | # CONFIG_R3964 is not set | 709 | # CONFIG_R3964 is not set |
721 | # CONFIG_APPLICOM is not set | 710 | # CONFIG_APPLICOM is not set |
722 | 711 | # CONFIG_AGP is not set | |
723 | # | ||
724 | # Ftape, the floppy tape device driver | ||
725 | # | ||
726 | # CONFIG_DRM is not set | 712 | # CONFIG_DRM is not set |
727 | CONFIG_RAW_DRIVER=y | 713 | CONFIG_RAW_DRIVER=y |
728 | CONFIG_MAX_RAW_DEVS=256 | 714 | CONFIG_MAX_RAW_DEVS=256 |
729 | |||
730 | # | ||
731 | # TPM devices | ||
732 | # | ||
733 | # CONFIG_TCG_TPM is not set | 715 | # CONFIG_TCG_TPM is not set |
734 | # CONFIG_TELCLOCK is not set | 716 | CONFIG_DEVPORT=y |
735 | |||
736 | # | ||
737 | # I2C support | ||
738 | # | ||
739 | # CONFIG_I2C is not set | 717 | # CONFIG_I2C is not set |
740 | 718 | ||
741 | # | 719 | # |
@@ -743,46 +721,59 @@ CONFIG_MAX_RAW_DEVS=256 | |||
743 | # | 721 | # |
744 | # CONFIG_SPI is not set | 722 | # CONFIG_SPI is not set |
745 | # CONFIG_SPI_MASTER is not set | 723 | # CONFIG_SPI_MASTER is not set |
746 | |||
747 | # | ||
748 | # Dallas's 1-wire bus | ||
749 | # | ||
750 | # CONFIG_W1 is not set | 724 | # CONFIG_W1 is not set |
751 | 725 | # CONFIG_POWER_SUPPLY is not set | |
752 | # | ||
753 | # Hardware Monitoring support | ||
754 | # | ||
755 | # CONFIG_HWMON is not set | 726 | # CONFIG_HWMON is not set |
756 | # CONFIG_HWMON_VID is not set | ||
757 | 727 | ||
758 | # | 728 | # |
759 | # Misc devices | 729 | # Sonics Silicon Backplane |
760 | # | 730 | # |
731 | CONFIG_SSB_POSSIBLE=y | ||
732 | # CONFIG_SSB is not set | ||
761 | 733 | ||
762 | # | 734 | # |
763 | # Multimedia Capabilities Port drivers | 735 | # Multifunction device drivers |
764 | # | 736 | # |
737 | # CONFIG_MFD_SM501 is not set | ||
765 | 738 | ||
766 | # | 739 | # |
767 | # Multimedia devices | 740 | # Multimedia devices |
768 | # | 741 | # |
769 | # CONFIG_VIDEO_DEV is not set | 742 | # CONFIG_VIDEO_DEV is not set |
743 | # CONFIG_DVB_CORE is not set | ||
744 | # CONFIG_DAB is not set | ||
770 | 745 | ||
771 | # | 746 | # |
772 | # Digital Video Broadcasting Devices | 747 | # Graphics support |
773 | # | 748 | # |
774 | # CONFIG_DVB is not set | 749 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
775 | 750 | ||
776 | # | 751 | # |
777 | # Graphics support | 752 | # Display device support |
778 | # | 753 | # |
754 | # CONFIG_DISPLAY_SUPPORT is not set | ||
755 | # CONFIG_VGASTATE is not set | ||
756 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
779 | CONFIG_FB=y | 757 | CONFIG_FB=y |
758 | # CONFIG_FIRMWARE_EDID is not set | ||
759 | # CONFIG_FB_DDC is not set | ||
780 | CONFIG_FB_CFB_FILLRECT=y | 760 | CONFIG_FB_CFB_FILLRECT=y |
781 | CONFIG_FB_CFB_COPYAREA=y | 761 | CONFIG_FB_CFB_COPYAREA=y |
782 | CONFIG_FB_CFB_IMAGEBLIT=y | 762 | CONFIG_FB_CFB_IMAGEBLIT=y |
763 | # CONFIG_FB_SYS_FILLRECT is not set | ||
764 | # CONFIG_FB_SYS_COPYAREA is not set | ||
765 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
766 | # CONFIG_FB_SYS_FOPS is not set | ||
767 | CONFIG_FB_DEFERRED_IO=y | ||
768 | # CONFIG_FB_SVGALIB is not set | ||
783 | # CONFIG_FB_MACMODES is not set | 769 | # CONFIG_FB_MACMODES is not set |
770 | # CONFIG_FB_BACKLIGHT is not set | ||
784 | # CONFIG_FB_MODE_HELPERS is not set | 771 | # CONFIG_FB_MODE_HELPERS is not set |
785 | # CONFIG_FB_TILEBLITTING is not set | 772 | # CONFIG_FB_TILEBLITTING is not set |
773 | |||
774 | # | ||
775 | # Frame buffer hardware drivers | ||
776 | # | ||
786 | # CONFIG_FB_CIRRUS is not set | 777 | # CONFIG_FB_CIRRUS is not set |
787 | # CONFIG_FB_PM2 is not set | 778 | # CONFIG_FB_PM2 is not set |
788 | # CONFIG_FB_CYBER2000 is not set | 779 | # CONFIG_FB_CYBER2000 is not set |
@@ -793,17 +784,20 @@ CONFIG_FB_STI=y | |||
793 | # CONFIG_FB_NVIDIA is not set | 784 | # CONFIG_FB_NVIDIA is not set |
794 | # CONFIG_FB_RIVA is not set | 785 | # CONFIG_FB_RIVA is not set |
795 | # CONFIG_FB_MATROX is not set | 786 | # CONFIG_FB_MATROX is not set |
796 | # CONFIG_FB_RADEON_OLD is not set | ||
797 | # CONFIG_FB_RADEON is not set | 787 | # CONFIG_FB_RADEON is not set |
798 | # CONFIG_FB_ATY128 is not set | 788 | # CONFIG_FB_ATY128 is not set |
799 | # CONFIG_FB_ATY is not set | 789 | # CONFIG_FB_ATY is not set |
790 | # CONFIG_FB_S3 is not set | ||
800 | # CONFIG_FB_SAVAGE is not set | 791 | # CONFIG_FB_SAVAGE is not set |
801 | # CONFIG_FB_SIS is not set | 792 | # CONFIG_FB_SIS is not set |
802 | # CONFIG_FB_NEOMAGIC is not set | 793 | # CONFIG_FB_NEOMAGIC is not set |
803 | # CONFIG_FB_KYRO is not set | 794 | # CONFIG_FB_KYRO is not set |
804 | # CONFIG_FB_3DFX is not set | 795 | # CONFIG_FB_3DFX is not set |
805 | # CONFIG_FB_VOODOO1 is not set | 796 | # CONFIG_FB_VOODOO1 is not set |
797 | # CONFIG_FB_VT8623 is not set | ||
806 | # CONFIG_FB_TRIDENT is not set | 798 | # CONFIG_FB_TRIDENT is not set |
799 | # CONFIG_FB_ARK is not set | ||
800 | # CONFIG_FB_PM3 is not set | ||
807 | # CONFIG_FB_VIRTUAL is not set | 801 | # CONFIG_FB_VIRTUAL is not set |
808 | 802 | ||
809 | # | 803 | # |
@@ -813,21 +807,17 @@ CONFIG_DUMMY_CONSOLE=y | |||
813 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 | 807 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 |
814 | CONFIG_DUMMY_CONSOLE_ROWS=64 | 808 | CONFIG_DUMMY_CONSOLE_ROWS=64 |
815 | CONFIG_FRAMEBUFFER_CONSOLE=y | 809 | CONFIG_FRAMEBUFFER_CONSOLE=y |
810 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
816 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 811 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
817 | CONFIG_STI_CONSOLE=y | 812 | CONFIG_STI_CONSOLE=y |
818 | # CONFIG_FONTS is not set | 813 | # CONFIG_FONTS is not set |
819 | CONFIG_FONT_8x8=y | 814 | CONFIG_FONT_8x8=y |
820 | CONFIG_FONT_8x16=y | 815 | CONFIG_FONT_8x16=y |
821 | |||
822 | # | ||
823 | # Logo configuration | ||
824 | # | ||
825 | CONFIG_LOGO=y | 816 | CONFIG_LOGO=y |
826 | # CONFIG_LOGO_LINUX_MONO is not set | 817 | # CONFIG_LOGO_LINUX_MONO is not set |
827 | # CONFIG_LOGO_LINUX_VGA16 is not set | 818 | # CONFIG_LOGO_LINUX_VGA16 is not set |
828 | # CONFIG_LOGO_LINUX_CLUT224 is not set | 819 | # CONFIG_LOGO_LINUX_CLUT224 is not set |
829 | CONFIG_LOGO_PARISC_CLUT224=y | 820 | CONFIG_LOGO_PARISC_CLUT224=y |
830 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
831 | 821 | ||
832 | # | 822 | # |
833 | # Sound | 823 | # Sound |
@@ -845,9 +835,11 @@ CONFIG_SND_SEQUENCER=y | |||
845 | CONFIG_SND_OSSEMUL=y | 835 | CONFIG_SND_OSSEMUL=y |
846 | CONFIG_SND_MIXER_OSS=y | 836 | CONFIG_SND_MIXER_OSS=y |
847 | CONFIG_SND_PCM_OSS=y | 837 | CONFIG_SND_PCM_OSS=y |
838 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
848 | CONFIG_SND_SEQUENCER_OSS=y | 839 | CONFIG_SND_SEQUENCER_OSS=y |
849 | # CONFIG_SND_DYNAMIC_MINORS is not set | 840 | # CONFIG_SND_DYNAMIC_MINORS is not set |
850 | CONFIG_SND_SUPPORT_OLD_API=y | 841 | CONFIG_SND_SUPPORT_OLD_API=y |
842 | CONFIG_SND_VERBOSE_PROCFS=y | ||
851 | # CONFIG_SND_VERBOSE_PRINTK is not set | 843 | # CONFIG_SND_VERBOSE_PRINTK is not set |
852 | # CONFIG_SND_DEBUG is not set | 844 | # CONFIG_SND_DEBUG is not set |
853 | 845 | ||
@@ -855,7 +847,6 @@ CONFIG_SND_SUPPORT_OLD_API=y | |||
855 | # Generic devices | 847 | # Generic devices |
856 | # | 848 | # |
857 | CONFIG_SND_AC97_CODEC=y | 849 | CONFIG_SND_AC97_CODEC=y |
858 | CONFIG_SND_AC97_BUS=y | ||
859 | # CONFIG_SND_DUMMY is not set | 850 | # CONFIG_SND_DUMMY is not set |
860 | # CONFIG_SND_VIRMIDI is not set | 851 | # CONFIG_SND_VIRMIDI is not set |
861 | # CONFIG_SND_MTPAV is not set | 852 | # CONFIG_SND_MTPAV is not set |
@@ -866,7 +857,7 @@ CONFIG_SND_AC97_BUS=y | |||
866 | # PCI devices | 857 | # PCI devices |
867 | # | 858 | # |
868 | CONFIG_SND_AD1889=y | 859 | CONFIG_SND_AD1889=y |
869 | # CONFIG_SND_AD1889_OPL3 is not set | 860 | # CONFIG_SND_ALS300 is not set |
870 | # CONFIG_SND_ALI5451 is not set | 861 | # CONFIG_SND_ALI5451 is not set |
871 | # CONFIG_SND_ATIIXP is not set | 862 | # CONFIG_SND_ATIIXP is not set |
872 | # CONFIG_SND_ATIIXP_MODEM is not set | 863 | # CONFIG_SND_ATIIXP_MODEM is not set |
@@ -879,6 +870,18 @@ CONFIG_SND_AD1889=y | |||
879 | # CONFIG_SND_CMIPCI is not set | 870 | # CONFIG_SND_CMIPCI is not set |
880 | # CONFIG_SND_CS4281 is not set | 871 | # CONFIG_SND_CS4281 is not set |
881 | # CONFIG_SND_CS46XX is not set | 872 | # CONFIG_SND_CS46XX is not set |
873 | # CONFIG_SND_DARLA20 is not set | ||
874 | # CONFIG_SND_GINA20 is not set | ||
875 | # CONFIG_SND_LAYLA20 is not set | ||
876 | # CONFIG_SND_DARLA24 is not set | ||
877 | # CONFIG_SND_GINA24 is not set | ||
878 | # CONFIG_SND_LAYLA24 is not set | ||
879 | # CONFIG_SND_MONA is not set | ||
880 | # CONFIG_SND_MIA is not set | ||
881 | # CONFIG_SND_ECHO3G is not set | ||
882 | # CONFIG_SND_INDIGO is not set | ||
883 | # CONFIG_SND_INDIGOIO is not set | ||
884 | # CONFIG_SND_INDIGODJ is not set | ||
882 | # CONFIG_SND_EMU10K1 is not set | 885 | # CONFIG_SND_EMU10K1 is not set |
883 | # CONFIG_SND_EMU10K1X is not set | 886 | # CONFIG_SND_EMU10K1X is not set |
884 | # CONFIG_SND_ENS1370 is not set | 887 | # CONFIG_SND_ENS1370 is not set |
@@ -898,6 +901,7 @@ CONFIG_SND_AD1889=y | |||
898 | # CONFIG_SND_MIXART is not set | 901 | # CONFIG_SND_MIXART is not set |
899 | # CONFIG_SND_NM256 is not set | 902 | # CONFIG_SND_NM256 is not set |
900 | # CONFIG_SND_PCXHR is not set | 903 | # CONFIG_SND_PCXHR is not set |
904 | # CONFIG_SND_RIPTIDE is not set | ||
901 | # CONFIG_SND_RME32 is not set | 905 | # CONFIG_SND_RME32 is not set |
902 | # CONFIG_SND_RME96 is not set | 906 | # CONFIG_SND_RME96 is not set |
903 | # CONFIG_SND_RME9652 is not set | 907 | # CONFIG_SND_RME9652 is not set |
@@ -907,22 +911,43 @@ CONFIG_SND_AD1889=y | |||
907 | # CONFIG_SND_VIA82XX_MODEM is not set | 911 | # CONFIG_SND_VIA82XX_MODEM is not set |
908 | # CONFIG_SND_VX222 is not set | 912 | # CONFIG_SND_VX222 is not set |
909 | # CONFIG_SND_YMFPCI is not set | 913 | # CONFIG_SND_YMFPCI is not set |
914 | # CONFIG_SND_AC97_POWER_SAVE is not set | ||
910 | 915 | ||
911 | # | 916 | # |
912 | # USB devices | 917 | # USB devices |
913 | # | 918 | # |
914 | # CONFIG_SND_USB_AUDIO is not set | 919 | # CONFIG_SND_USB_AUDIO is not set |
920 | # CONFIG_SND_USB_CAIAQ is not set | ||
921 | |||
922 | # | ||
923 | # System on Chip audio support | ||
924 | # | ||
925 | # CONFIG_SND_SOC is not set | ||
926 | |||
927 | # | ||
928 | # SoC Audio support for SuperH | ||
929 | # | ||
915 | 930 | ||
916 | # | 931 | # |
917 | # Open Sound System | 932 | # Open Sound System |
918 | # | 933 | # |
919 | # CONFIG_SOUND_PRIME is not set | 934 | # CONFIG_SOUND_PRIME is not set |
935 | CONFIG_AC97_BUS=y | ||
936 | CONFIG_HID_SUPPORT=y | ||
937 | CONFIG_HID=y | ||
938 | # CONFIG_HID_DEBUG is not set | ||
920 | 939 | ||
921 | # | 940 | # |
922 | # USB support | 941 | # USB Input Devices |
923 | # | 942 | # |
943 | CONFIG_USB_HID=y | ||
944 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
945 | # CONFIG_HID_FF is not set | ||
946 | CONFIG_USB_HIDDEV=y | ||
947 | CONFIG_USB_SUPPORT=y | ||
924 | CONFIG_USB_ARCH_HAS_HCD=y | 948 | CONFIG_USB_ARCH_HAS_HCD=y |
925 | CONFIG_USB_ARCH_HAS_OHCI=y | 949 | CONFIG_USB_ARCH_HAS_OHCI=y |
950 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
926 | CONFIG_USB=y | 951 | CONFIG_USB=y |
927 | CONFIG_USB_DEBUG=y | 952 | CONFIG_USB_DEBUG=y |
928 | 953 | ||
@@ -930,7 +955,7 @@ CONFIG_USB_DEBUG=y | |||
930 | # Miscellaneous USB options | 955 | # Miscellaneous USB options |
931 | # | 956 | # |
932 | CONFIG_USB_DEVICEFS=y | 957 | CONFIG_USB_DEVICEFS=y |
933 | # CONFIG_USB_BANDWIDTH is not set | 958 | CONFIG_USB_DEVICE_CLASS=y |
934 | # CONFIG_USB_DYNAMIC_MINORS is not set | 959 | # CONFIG_USB_DYNAMIC_MINORS is not set |
935 | # CONFIG_USB_OTG is not set | 960 | # CONFIG_USB_OTG is not set |
936 | 961 | ||
@@ -940,15 +965,16 @@ CONFIG_USB_DEVICEFS=y | |||
940 | # CONFIG_USB_EHCI_HCD is not set | 965 | # CONFIG_USB_EHCI_HCD is not set |
941 | # CONFIG_USB_ISP116X_HCD is not set | 966 | # CONFIG_USB_ISP116X_HCD is not set |
942 | CONFIG_USB_OHCI_HCD=y | 967 | CONFIG_USB_OHCI_HCD=y |
943 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | 968 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
969 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
944 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 970 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
945 | # CONFIG_USB_UHCI_HCD is not set | 971 | # CONFIG_USB_UHCI_HCD is not set |
946 | # CONFIG_USB_SL811_HCD is not set | 972 | # CONFIG_USB_SL811_HCD is not set |
973 | # CONFIG_USB_R8A66597_HCD is not set | ||
947 | 974 | ||
948 | # | 975 | # |
949 | # USB Device Class drivers | 976 | # USB Device Class drivers |
950 | # | 977 | # |
951 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set | ||
952 | # CONFIG_USB_ACM is not set | 978 | # CONFIG_USB_ACM is not set |
953 | CONFIG_USB_PRINTER=m | 979 | CONFIG_USB_PRINTER=m |
954 | 980 | ||
@@ -970,54 +996,14 @@ CONFIG_USB_STORAGE_SDDR09=y | |||
970 | CONFIG_USB_STORAGE_SDDR55=y | 996 | CONFIG_USB_STORAGE_SDDR55=y |
971 | CONFIG_USB_STORAGE_JUMPSHOT=y | 997 | CONFIG_USB_STORAGE_JUMPSHOT=y |
972 | # CONFIG_USB_STORAGE_ALAUDA is not set | 998 | # CONFIG_USB_STORAGE_ALAUDA is not set |
999 | # CONFIG_USB_STORAGE_KARMA is not set | ||
973 | # CONFIG_USB_LIBUSUAL is not set | 1000 | # CONFIG_USB_LIBUSUAL is not set |
974 | 1001 | ||
975 | # | 1002 | # |
976 | # USB Input Devices | ||
977 | # | ||
978 | CONFIG_USB_HID=y | ||
979 | CONFIG_USB_HIDINPUT=y | ||
980 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
981 | # CONFIG_HID_FF is not set | ||
982 | CONFIG_USB_HIDDEV=y | ||
983 | # CONFIG_USB_AIPTEK is not set | ||
984 | # CONFIG_USB_WACOM is not set | ||
985 | # CONFIG_USB_ACECAD is not set | ||
986 | # CONFIG_USB_KBTAB is not set | ||
987 | # CONFIG_USB_POWERMATE is not set | ||
988 | # CONFIG_USB_MTOUCH is not set | ||
989 | # CONFIG_USB_ITMTOUCH is not set | ||
990 | # CONFIG_USB_EGALAX is not set | ||
991 | # CONFIG_USB_YEALINK is not set | ||
992 | # CONFIG_USB_XPAD is not set | ||
993 | # CONFIG_USB_ATI_REMOTE is not set | ||
994 | # CONFIG_USB_ATI_REMOTE2 is not set | ||
995 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
996 | # CONFIG_USB_APPLETOUCH is not set | ||
997 | |||
998 | # | ||
999 | # USB Imaging devices | 1003 | # USB Imaging devices |
1000 | # | 1004 | # |
1001 | CONFIG_USB_MDC800=m | 1005 | CONFIG_USB_MDC800=m |
1002 | CONFIG_USB_MICROTEK=m | 1006 | CONFIG_USB_MICROTEK=m |
1003 | |||
1004 | # | ||
1005 | # USB Multimedia devices | ||
1006 | # | ||
1007 | # CONFIG_USB_DABUSB is not set | ||
1008 | |||
1009 | # | ||
1010 | # Video4Linux support is needed for USB Multimedia device support | ||
1011 | # | ||
1012 | |||
1013 | # | ||
1014 | # USB Network Adapters | ||
1015 | # | ||
1016 | # CONFIG_USB_CATC is not set | ||
1017 | # CONFIG_USB_KAWETH is not set | ||
1018 | # CONFIG_USB_PEGASUS is not set | ||
1019 | # CONFIG_USB_RTL8150 is not set | ||
1020 | # CONFIG_USB_USBNET is not set | ||
1021 | # CONFIG_USB_MON is not set | 1007 | # CONFIG_USB_MON is not set |
1022 | 1008 | ||
1023 | # | 1009 | # |
@@ -1034,16 +1020,22 @@ CONFIG_USB_MICROTEK=m | |||
1034 | # | 1020 | # |
1035 | # CONFIG_USB_EMI62 is not set | 1021 | # CONFIG_USB_EMI62 is not set |
1036 | # CONFIG_USB_EMI26 is not set | 1022 | # CONFIG_USB_EMI26 is not set |
1023 | # CONFIG_USB_ADUTUX is not set | ||
1037 | # CONFIG_USB_AUERSWALD is not set | 1024 | # CONFIG_USB_AUERSWALD is not set |
1038 | # CONFIG_USB_RIO500 is not set | 1025 | # CONFIG_USB_RIO500 is not set |
1039 | CONFIG_USB_LEGOTOWER=m | 1026 | CONFIG_USB_LEGOTOWER=m |
1040 | # CONFIG_USB_LCD is not set | 1027 | # CONFIG_USB_LCD is not set |
1028 | # CONFIG_USB_BERRY_CHARGE is not set | ||
1041 | # CONFIG_USB_LED is not set | 1029 | # CONFIG_USB_LED is not set |
1030 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
1042 | # CONFIG_USB_CYTHERM is not set | 1031 | # CONFIG_USB_CYTHERM is not set |
1043 | # CONFIG_USB_PHIDGETKIT is not set | 1032 | # CONFIG_USB_PHIDGET is not set |
1044 | # CONFIG_USB_PHIDGETSERVO is not set | ||
1045 | # CONFIG_USB_IDMOUSE is not set | 1033 | # CONFIG_USB_IDMOUSE is not set |
1034 | # CONFIG_USB_FTDI_ELAN is not set | ||
1035 | # CONFIG_USB_APPLEDISPLAY is not set | ||
1046 | # CONFIG_USB_LD is not set | 1036 | # CONFIG_USB_LD is not set |
1037 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1038 | # CONFIG_USB_IOWARRIOR is not set | ||
1047 | # CONFIG_USB_TEST is not set | 1039 | # CONFIG_USB_TEST is not set |
1048 | 1040 | ||
1049 | # | 1041 | # |
@@ -1054,22 +1046,30 @@ CONFIG_USB_LEGOTOWER=m | |||
1054 | # USB Gadget Support | 1046 | # USB Gadget Support |
1055 | # | 1047 | # |
1056 | # CONFIG_USB_GADGET is not set | 1048 | # CONFIG_USB_GADGET is not set |
1049 | # CONFIG_MMC is not set | ||
1050 | # CONFIG_NEW_LEDS is not set | ||
1051 | # CONFIG_INFINIBAND is not set | ||
1052 | # CONFIG_RTC_CLASS is not set | ||
1057 | 1053 | ||
1058 | # | 1054 | # |
1059 | # MMC/SD Card support | 1055 | # DMA Engine support |
1060 | # | 1056 | # |
1061 | # CONFIG_MMC is not set | 1057 | # CONFIG_DMA_ENGINE is not set |
1062 | 1058 | ||
1063 | # | 1059 | # |
1064 | # InfiniBand support | 1060 | # DMA Clients |
1065 | # | 1061 | # |
1066 | # CONFIG_INFINIBAND is not set | ||
1067 | 1062 | ||
1068 | # | 1063 | # |
1069 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 1064 | # DMA Devices |
1070 | # | 1065 | # |
1071 | 1066 | ||
1072 | # | 1067 | # |
1068 | # Userspace I/O | ||
1069 | # | ||
1070 | # CONFIG_UIO is not set | ||
1071 | |||
1072 | # | ||
1073 | # File systems | 1073 | # File systems |
1074 | # | 1074 | # |
1075 | CONFIG_EXT2_FS=y | 1075 | CONFIG_EXT2_FS=y |
@@ -1077,21 +1077,23 @@ CONFIG_EXT2_FS=y | |||
1077 | # CONFIG_EXT2_FS_XIP is not set | 1077 | # CONFIG_EXT2_FS_XIP is not set |
1078 | CONFIG_EXT3_FS=y | 1078 | CONFIG_EXT3_FS=y |
1079 | # CONFIG_EXT3_FS_XATTR is not set | 1079 | # CONFIG_EXT3_FS_XATTR is not set |
1080 | # CONFIG_EXT4DEV_FS is not set | ||
1080 | CONFIG_JBD=y | 1081 | CONFIG_JBD=y |
1081 | # CONFIG_JBD_DEBUG is not set | 1082 | # CONFIG_JBD_DEBUG is not set |
1082 | # CONFIG_REISERFS_FS is not set | 1083 | # CONFIG_REISERFS_FS is not set |
1083 | # CONFIG_JFS_FS is not set | 1084 | # CONFIG_JFS_FS is not set |
1084 | # CONFIG_FS_POSIX_ACL is not set | 1085 | # CONFIG_FS_POSIX_ACL is not set |
1085 | CONFIG_XFS_FS=m | 1086 | CONFIG_XFS_FS=m |
1086 | CONFIG_XFS_EXPORT=y | ||
1087 | # CONFIG_XFS_QUOTA is not set | 1087 | # CONFIG_XFS_QUOTA is not set |
1088 | # CONFIG_XFS_SECURITY is not set | 1088 | # CONFIG_XFS_SECURITY is not set |
1089 | # CONFIG_XFS_POSIX_ACL is not set | 1089 | # CONFIG_XFS_POSIX_ACL is not set |
1090 | # CONFIG_XFS_RT is not set | 1090 | # CONFIG_XFS_RT is not set |
1091 | # CONFIG_GFS2_FS is not set | ||
1091 | # CONFIG_OCFS2_FS is not set | 1092 | # CONFIG_OCFS2_FS is not set |
1092 | # CONFIG_MINIX_FS is not set | 1093 | # CONFIG_MINIX_FS is not set |
1093 | # CONFIG_ROMFS_FS is not set | 1094 | # CONFIG_ROMFS_FS is not set |
1094 | CONFIG_INOTIFY=y | 1095 | CONFIG_INOTIFY=y |
1096 | CONFIG_INOTIFY_USER=y | ||
1095 | # CONFIG_QUOTA is not set | 1097 | # CONFIG_QUOTA is not set |
1096 | CONFIG_DNOTIFY=y | 1098 | CONFIG_DNOTIFY=y |
1097 | # CONFIG_AUTOFS_FS is not set | 1099 | # CONFIG_AUTOFS_FS is not set |
@@ -1121,11 +1123,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
1121 | # | 1123 | # |
1122 | CONFIG_PROC_FS=y | 1124 | CONFIG_PROC_FS=y |
1123 | CONFIG_PROC_KCORE=y | 1125 | CONFIG_PROC_KCORE=y |
1126 | CONFIG_PROC_SYSCTL=y | ||
1124 | CONFIG_SYSFS=y | 1127 | CONFIG_SYSFS=y |
1125 | CONFIG_TMPFS=y | 1128 | CONFIG_TMPFS=y |
1129 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1126 | # CONFIG_HUGETLB_PAGE is not set | 1130 | # CONFIG_HUGETLB_PAGE is not set |
1127 | CONFIG_RAMFS=y | 1131 | CONFIG_RAMFS=y |
1128 | # CONFIG_RELAYFS_FS is not set | ||
1129 | # CONFIG_CONFIGFS_FS is not set | 1132 | # CONFIG_CONFIGFS_FS is not set |
1130 | 1133 | ||
1131 | # | 1134 | # |
@@ -1164,6 +1167,7 @@ CONFIG_LOCKD_V4=y | |||
1164 | CONFIG_EXPORTFS=y | 1167 | CONFIG_EXPORTFS=y |
1165 | CONFIG_NFS_COMMON=y | 1168 | CONFIG_NFS_COMMON=y |
1166 | CONFIG_SUNRPC=y | 1169 | CONFIG_SUNRPC=y |
1170 | # CONFIG_SUNRPC_BIND34 is not set | ||
1167 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 1171 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
1168 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1172 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
1169 | # CONFIG_SMB_FS is not set | 1173 | # CONFIG_SMB_FS is not set |
@@ -1171,7 +1175,6 @@ CONFIG_SUNRPC=y | |||
1171 | # CONFIG_NCP_FS is not set | 1175 | # CONFIG_NCP_FS is not set |
1172 | # CONFIG_CODA_FS is not set | 1176 | # CONFIG_CODA_FS is not set |
1173 | # CONFIG_AFS_FS is not set | 1177 | # CONFIG_AFS_FS is not set |
1174 | # CONFIG_9P_FS is not set | ||
1175 | 1178 | ||
1176 | # | 1179 | # |
1177 | # Partition Types | 1180 | # Partition Types |
@@ -1224,6 +1227,11 @@ CONFIG_NLS_ISO8859_15=m | |||
1224 | CONFIG_NLS_UTF8=m | 1227 | CONFIG_NLS_UTF8=m |
1225 | 1228 | ||
1226 | # | 1229 | # |
1230 | # Distributed Lock Manager | ||
1231 | # | ||
1232 | # CONFIG_DLM is not set | ||
1233 | |||
1234 | # | ||
1227 | # Profiling support | 1235 | # Profiling support |
1228 | # | 1236 | # |
1229 | CONFIG_PROFILING=y | 1237 | CONFIG_PROFILING=y |
@@ -1233,21 +1241,32 @@ CONFIG_OPROFILE=m | |||
1233 | # Kernel hacking | 1241 | # Kernel hacking |
1234 | # | 1242 | # |
1235 | # CONFIG_PRINTK_TIME is not set | 1243 | # CONFIG_PRINTK_TIME is not set |
1244 | CONFIG_ENABLE_MUST_CHECK=y | ||
1236 | CONFIG_MAGIC_SYSRQ=y | 1245 | CONFIG_MAGIC_SYSRQ=y |
1246 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1247 | # CONFIG_DEBUG_FS is not set | ||
1248 | CONFIG_HEADERS_CHECK=y | ||
1237 | CONFIG_DEBUG_KERNEL=y | 1249 | CONFIG_DEBUG_KERNEL=y |
1238 | CONFIG_LOG_BUF_SHIFT=16 | 1250 | # CONFIG_DEBUG_SHIRQ is not set |
1239 | CONFIG_DETECT_SOFTLOCKUP=y | 1251 | CONFIG_DETECT_SOFTLOCKUP=y |
1252 | CONFIG_SCHED_DEBUG=y | ||
1240 | # CONFIG_SCHEDSTATS is not set | 1253 | # CONFIG_SCHEDSTATS is not set |
1254 | # CONFIG_TIMER_STATS is not set | ||
1241 | # CONFIG_DEBUG_SLAB is not set | 1255 | # CONFIG_DEBUG_SLAB is not set |
1242 | CONFIG_DEBUG_MUTEXES=y | 1256 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1257 | # CONFIG_RT_MUTEX_TESTER is not set | ||
1243 | # CONFIG_DEBUG_SPINLOCK is not set | 1258 | # CONFIG_DEBUG_SPINLOCK is not set |
1259 | CONFIG_DEBUG_MUTEXES=y | ||
1244 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1260 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1261 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
1245 | # CONFIG_DEBUG_KOBJECT is not set | 1262 | # CONFIG_DEBUG_KOBJECT is not set |
1263 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
1246 | # CONFIG_DEBUG_INFO is not set | 1264 | # CONFIG_DEBUG_INFO is not set |
1247 | # CONFIG_DEBUG_FS is not set | ||
1248 | # CONFIG_DEBUG_VM is not set | 1265 | # CONFIG_DEBUG_VM is not set |
1266 | # CONFIG_DEBUG_LIST is not set | ||
1249 | CONFIG_FORCED_INLINING=y | 1267 | CONFIG_FORCED_INLINING=y |
1250 | # CONFIG_RCU_TORTURE_TEST is not set | 1268 | # CONFIG_RCU_TORTURE_TEST is not set |
1269 | # CONFIG_FAULT_INJECTION is not set | ||
1251 | CONFIG_DEBUG_RODATA=y | 1270 | CONFIG_DEBUG_RODATA=y |
1252 | 1271 | ||
1253 | # | 1272 | # |
@@ -1255,12 +1274,12 @@ CONFIG_DEBUG_RODATA=y | |||
1255 | # | 1274 | # |
1256 | # CONFIG_KEYS is not set | 1275 | # CONFIG_KEYS is not set |
1257 | # CONFIG_SECURITY is not set | 1276 | # CONFIG_SECURITY is not set |
1258 | |||
1259 | # | ||
1260 | # Cryptographic options | ||
1261 | # | ||
1262 | CONFIG_CRYPTO=y | 1277 | CONFIG_CRYPTO=y |
1278 | CONFIG_CRYPTO_ALGAPI=m | ||
1279 | CONFIG_CRYPTO_BLKCIPHER=m | ||
1280 | CONFIG_CRYPTO_MANAGER=m | ||
1263 | # CONFIG_CRYPTO_HMAC is not set | 1281 | # CONFIG_CRYPTO_HMAC is not set |
1282 | # CONFIG_CRYPTO_XCBC is not set | ||
1264 | CONFIG_CRYPTO_NULL=m | 1283 | CONFIG_CRYPTO_NULL=m |
1265 | # CONFIG_CRYPTO_MD4 is not set | 1284 | # CONFIG_CRYPTO_MD4 is not set |
1266 | CONFIG_CRYPTO_MD5=m | 1285 | CONFIG_CRYPTO_MD5=m |
@@ -1269,7 +1288,15 @@ CONFIG_CRYPTO_MD5=m | |||
1269 | # CONFIG_CRYPTO_SHA512 is not set | 1288 | # CONFIG_CRYPTO_SHA512 is not set |
1270 | # CONFIG_CRYPTO_WP512 is not set | 1289 | # CONFIG_CRYPTO_WP512 is not set |
1271 | # CONFIG_CRYPTO_TGR192 is not set | 1290 | # CONFIG_CRYPTO_TGR192 is not set |
1291 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1292 | # CONFIG_CRYPTO_ECB is not set | ||
1293 | CONFIG_CRYPTO_CBC=m | ||
1294 | # CONFIG_CRYPTO_PCBC is not set | ||
1295 | # CONFIG_CRYPTO_LRW is not set | ||
1296 | # CONFIG_CRYPTO_XTS is not set | ||
1297 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1272 | CONFIG_CRYPTO_DES=m | 1298 | CONFIG_CRYPTO_DES=m |
1299 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1273 | CONFIG_CRYPTO_BLOWFISH=m | 1300 | CONFIG_CRYPTO_BLOWFISH=m |
1274 | # CONFIG_CRYPTO_TWOFISH is not set | 1301 | # CONFIG_CRYPTO_TWOFISH is not set |
1275 | # CONFIG_CRYPTO_SERPENT is not set | 1302 | # CONFIG_CRYPTO_SERPENT is not set |
@@ -1280,21 +1307,28 @@ CONFIG_CRYPTO_BLOWFISH=m | |||
1280 | # CONFIG_CRYPTO_ARC4 is not set | 1307 | # CONFIG_CRYPTO_ARC4 is not set |
1281 | # CONFIG_CRYPTO_KHAZAD is not set | 1308 | # CONFIG_CRYPTO_KHAZAD is not set |
1282 | # CONFIG_CRYPTO_ANUBIS is not set | 1309 | # CONFIG_CRYPTO_ANUBIS is not set |
1310 | # CONFIG_CRYPTO_SEED is not set | ||
1283 | CONFIG_CRYPTO_DEFLATE=m | 1311 | CONFIG_CRYPTO_DEFLATE=m |
1284 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1312 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1285 | CONFIG_CRYPTO_CRC32C=m | 1313 | CONFIG_CRYPTO_CRC32C=m |
1314 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1286 | CONFIG_CRYPTO_TEST=m | 1315 | CONFIG_CRYPTO_TEST=m |
1287 | 1316 | # CONFIG_CRYPTO_AUTHENC is not set | |
1288 | # | 1317 | # CONFIG_CRYPTO_HW is not set |
1289 | # Hardware crypto devices | ||
1290 | # | ||
1291 | 1318 | ||
1292 | # | 1319 | # |
1293 | # Library routines | 1320 | # Library routines |
1294 | # | 1321 | # |
1322 | CONFIG_BITREVERSE=y | ||
1295 | CONFIG_CRC_CCITT=m | 1323 | CONFIG_CRC_CCITT=m |
1296 | # CONFIG_CRC16 is not set | 1324 | # CONFIG_CRC16 is not set |
1325 | # CONFIG_CRC_ITU_T is not set | ||
1297 | CONFIG_CRC32=y | 1326 | CONFIG_CRC32=y |
1327 | # CONFIG_CRC7 is not set | ||
1298 | CONFIG_LIBCRC32C=m | 1328 | CONFIG_LIBCRC32C=m |
1299 | CONFIG_ZLIB_INFLATE=m | 1329 | CONFIG_ZLIB_INFLATE=m |
1300 | CONFIG_ZLIB_DEFLATE=m | 1330 | CONFIG_ZLIB_DEFLATE=m |
1331 | CONFIG_PLIST=y | ||
1332 | CONFIG_HAS_IOMEM=y | ||
1333 | CONFIG_HAS_IOPORT=y | ||
1334 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/parisc/defconfig b/arch/parisc/defconfig index b38b58eb9dc2..448a757b06c6 100644 --- a/arch/parisc/defconfig +++ b/arch/parisc/defconfig | |||
@@ -1,39 +1,51 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.16-pa10 | 3 | # Linux kernel version: 2.6.23 |
4 | # Sun Apr 2 15:26:38 2006 | 4 | # Fri Oct 12 20:54:57 2007 |
5 | # | 5 | # |
6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
10 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
11 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
12 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
13 | CONFIG_GENERIC_BUG=y | ||
14 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 15 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
16 | CONFIG_GENERIC_TIME=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | 17 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_GENERIC_IRQ_PROBE=y | 18 | CONFIG_GENERIC_IRQ_PROBE=y |
19 | CONFIG_IRQ_PER_CPU=y | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
13 | 21 | ||
14 | # | 22 | # |
15 | # Code maturity level options | 23 | # General setup |
16 | # | 24 | # |
17 | CONFIG_EXPERIMENTAL=y | 25 | CONFIG_EXPERIMENTAL=y |
18 | CONFIG_BROKEN_ON_SMP=y | 26 | CONFIG_BROKEN_ON_SMP=y |
19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
20 | |||
21 | # | ||
22 | # General setup | ||
23 | # | ||
24 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
25 | # CONFIG_LOCALVERSION_AUTO is not set | 29 | # CONFIG_LOCALVERSION_AUTO is not set |
26 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
27 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
32 | CONFIG_SYSVIPC_SYSCTL=y | ||
28 | CONFIG_POSIX_MQUEUE=y | 33 | CONFIG_POSIX_MQUEUE=y |
29 | # CONFIG_BSD_PROCESS_ACCT is not set | 34 | # CONFIG_BSD_PROCESS_ACCT is not set |
30 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
36 | # CONFIG_USER_NS is not set | ||
31 | # CONFIG_AUDIT is not set | 37 | # CONFIG_AUDIT is not set |
32 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
33 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
40 | CONFIG_LOG_BUF_SHIFT=16 | ||
41 | CONFIG_SYSFS_DEPRECATED=y | ||
42 | # CONFIG_RELAY is not set | ||
43 | CONFIG_BLK_DEV_INITRD=y | ||
34 | CONFIG_INITRAMFS_SOURCE="" | 44 | CONFIG_INITRAMFS_SOURCE="" |
35 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 45 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
46 | CONFIG_SYSCTL=y | ||
36 | # CONFIG_EMBEDDED is not set | 47 | # CONFIG_EMBEDDED is not set |
48 | CONFIG_SYSCTL_SYSCALL=y | ||
37 | CONFIG_KALLSYMS=y | 49 | CONFIG_KALLSYMS=y |
38 | CONFIG_KALLSYMS_ALL=y | 50 | CONFIG_KALLSYMS_ALL=y |
39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 51 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -43,31 +55,29 @@ CONFIG_BUG=y | |||
43 | CONFIG_ELF_CORE=y | 55 | CONFIG_ELF_CORE=y |
44 | CONFIG_BASE_FULL=y | 56 | CONFIG_BASE_FULL=y |
45 | CONFIG_FUTEX=y | 57 | CONFIG_FUTEX=y |
58 | CONFIG_ANON_INODES=y | ||
46 | CONFIG_EPOLL=y | 59 | CONFIG_EPOLL=y |
60 | CONFIG_SIGNALFD=y | ||
61 | CONFIG_EVENTFD=y | ||
47 | CONFIG_SHMEM=y | 62 | CONFIG_SHMEM=y |
48 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 63 | CONFIG_VM_EVENT_COUNTERS=y |
49 | CONFIG_CC_ALIGN_LABELS=0 | ||
50 | CONFIG_CC_ALIGN_LOOPS=0 | ||
51 | CONFIG_CC_ALIGN_JUMPS=0 | ||
52 | CONFIG_SLAB=y | 64 | CONFIG_SLAB=y |
65 | # CONFIG_SLUB is not set | ||
66 | # CONFIG_SLOB is not set | ||
67 | CONFIG_RT_MUTEXES=y | ||
53 | # CONFIG_TINY_SHMEM is not set | 68 | # CONFIG_TINY_SHMEM is not set |
54 | CONFIG_BASE_SMALL=0 | 69 | CONFIG_BASE_SMALL=0 |
55 | # CONFIG_SLOB is not set | ||
56 | |||
57 | # | ||
58 | # Loadable module support | ||
59 | # | ||
60 | CONFIG_MODULES=y | 70 | CONFIG_MODULES=y |
61 | CONFIG_MODULE_UNLOAD=y | 71 | CONFIG_MODULE_UNLOAD=y |
62 | CONFIG_MODULE_FORCE_UNLOAD=y | 72 | CONFIG_MODULE_FORCE_UNLOAD=y |
63 | CONFIG_OBSOLETE_MODPARM=y | ||
64 | # CONFIG_MODVERSIONS is not set | 73 | # CONFIG_MODVERSIONS is not set |
65 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 74 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
66 | CONFIG_KMOD=y | 75 | CONFIG_KMOD=y |
67 | 76 | CONFIG_BLOCK=y | |
68 | # | 77 | # CONFIG_LBD is not set |
69 | # Block layer | 78 | # CONFIG_BLK_DEV_IO_TRACE is not set |
70 | # | 79 | # CONFIG_LSF is not set |
80 | # CONFIG_BLK_DEV_BSG is not set | ||
71 | 81 | ||
72 | # | 82 | # |
73 | # IO Schedulers | 83 | # IO Schedulers |
@@ -101,6 +111,7 @@ CONFIG_PREEMPT_VOLUNTARY=y | |||
101 | # CONFIG_PREEMPT is not set | 111 | # CONFIG_PREEMPT is not set |
102 | # CONFIG_HZ_100 is not set | 112 | # CONFIG_HZ_100 is not set |
103 | CONFIG_HZ_250=y | 113 | CONFIG_HZ_250=y |
114 | # CONFIG_HZ_300 is not set | ||
104 | # CONFIG_HZ_1000 is not set | 115 | # CONFIG_HZ_1000 is not set |
105 | CONFIG_HZ=250 | 116 | CONFIG_HZ=250 |
106 | CONFIG_SELECT_MEMORY_MODEL=y | 117 | CONFIG_SELECT_MEMORY_MODEL=y |
@@ -111,6 +122,9 @@ CONFIG_FLATMEM=y | |||
111 | CONFIG_FLAT_NODE_MEM_MAP=y | 122 | CONFIG_FLAT_NODE_MEM_MAP=y |
112 | # CONFIG_SPARSEMEM_STATIC is not set | 123 | # CONFIG_SPARSEMEM_STATIC is not set |
113 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 124 | CONFIG_SPLIT_PTLOCK_CPUS=4096 |
125 | # CONFIG_RESOURCES_64BIT is not set | ||
126 | CONFIG_ZONE_DMA_FLAG=0 | ||
127 | CONFIG_VIRT_TO_BUS=y | ||
114 | # CONFIG_HPUX is not set | 128 | # CONFIG_HPUX is not set |
115 | 129 | ||
116 | # | 130 | # |
@@ -125,7 +139,7 @@ CONFIG_EISA=y | |||
125 | CONFIG_EISA_NAMES=y | 139 | CONFIG_EISA_NAMES=y |
126 | # CONFIG_ISA is not set | 140 | # CONFIG_ISA is not set |
127 | CONFIG_PCI=y | 141 | CONFIG_PCI=y |
128 | CONFIG_PCI_LEGACY_PROC=y | 142 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
129 | # CONFIG_PCI_DEBUG is not set | 143 | # CONFIG_PCI_DEBUG is not set |
130 | CONFIG_GSC_DINO=y | 144 | CONFIG_GSC_DINO=y |
131 | CONFIG_PCI_LBA=y | 145 | CONFIG_PCI_LBA=y |
@@ -154,10 +168,6 @@ CONFIG_YENTA_TOSHIBA=y | |||
154 | CONFIG_PD6729=y | 168 | CONFIG_PD6729=y |
155 | CONFIG_I82092=y | 169 | CONFIG_I82092=y |
156 | CONFIG_PCCARD_NONSTATIC=y | 170 | CONFIG_PCCARD_NONSTATIC=y |
157 | |||
158 | # | ||
159 | # PCI Hotplug Support | ||
160 | # | ||
161 | # CONFIG_HOTPLUG_PCI is not set | 171 | # CONFIG_HOTPLUG_PCI is not set |
162 | 172 | ||
163 | # | 173 | # |
@@ -166,6 +176,7 @@ CONFIG_PCCARD_NONSTATIC=y | |||
166 | CONFIG_SUPERIO=y | 176 | CONFIG_SUPERIO=y |
167 | CONFIG_CHASSIS_LCD_LED=y | 177 | CONFIG_CHASSIS_LCD_LED=y |
168 | CONFIG_PDC_CHASSIS=y | 178 | CONFIG_PDC_CHASSIS=y |
179 | CONFIG_PDC_CHASSIS_WARN=y | ||
169 | CONFIG_PDC_STABLE=y | 180 | CONFIG_PDC_STABLE=y |
170 | 181 | ||
171 | # | 182 | # |
@@ -182,13 +193,15 @@ CONFIG_NET=y | |||
182 | # | 193 | # |
183 | # Networking options | 194 | # Networking options |
184 | # | 195 | # |
185 | # CONFIG_NETDEBUG is not set | ||
186 | CONFIG_PACKET=y | 196 | CONFIG_PACKET=y |
187 | CONFIG_PACKET_MMAP=y | 197 | CONFIG_PACKET_MMAP=y |
188 | CONFIG_UNIX=y | 198 | CONFIG_UNIX=y |
189 | CONFIG_XFRM=y | 199 | CONFIG_XFRM=y |
190 | CONFIG_XFRM_USER=m | 200 | CONFIG_XFRM_USER=m |
201 | # CONFIG_XFRM_SUB_POLICY is not set | ||
202 | # CONFIG_XFRM_MIGRATE is not set | ||
191 | CONFIG_NET_KEY=m | 203 | CONFIG_NET_KEY=m |
204 | # CONFIG_NET_KEY_MIGRATE is not set | ||
192 | CONFIG_INET=y | 205 | CONFIG_INET=y |
193 | CONFIG_IP_MULTICAST=y | 206 | CONFIG_IP_MULTICAST=y |
194 | # CONFIG_IP_ADVANCED_ROUTER is not set | 207 | # CONFIG_IP_ADVANCED_ROUTER is not set |
@@ -205,33 +218,39 @@ CONFIG_IP_PNP_BOOTP=y | |||
205 | CONFIG_INET_AH=m | 218 | CONFIG_INET_AH=m |
206 | CONFIG_INET_ESP=m | 219 | CONFIG_INET_ESP=m |
207 | # CONFIG_INET_IPCOMP is not set | 220 | # CONFIG_INET_IPCOMP is not set |
208 | CONFIG_INET_TUNNEL=m | 221 | # CONFIG_INET_XFRM_TUNNEL is not set |
222 | CONFIG_INET_TUNNEL=y | ||
223 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
224 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
225 | CONFIG_INET_XFRM_MODE_BEET=y | ||
226 | # CONFIG_INET_LRO is not set | ||
209 | CONFIG_INET_DIAG=m | 227 | CONFIG_INET_DIAG=m |
210 | CONFIG_INET_TCP_DIAG=m | 228 | CONFIG_INET_TCP_DIAG=m |
211 | # CONFIG_TCP_CONG_ADVANCED is not set | 229 | # CONFIG_TCP_CONG_ADVANCED is not set |
212 | CONFIG_TCP_CONG_BIC=y | 230 | CONFIG_TCP_CONG_CUBIC=y |
231 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
232 | # CONFIG_TCP_MD5SIG is not set | ||
213 | CONFIG_IPV6=y | 233 | CONFIG_IPV6=y |
214 | # CONFIG_IPV6_PRIVACY is not set | 234 | # CONFIG_IPV6_PRIVACY is not set |
235 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
236 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
215 | CONFIG_INET6_AH=y | 237 | CONFIG_INET6_AH=y |
216 | CONFIG_INET6_ESP=y | 238 | CONFIG_INET6_ESP=y |
217 | CONFIG_INET6_IPCOMP=y | 239 | CONFIG_INET6_IPCOMP=y |
240 | # CONFIG_IPV6_MIP6 is not set | ||
241 | CONFIG_INET6_XFRM_TUNNEL=y | ||
218 | CONFIG_INET6_TUNNEL=y | 242 | CONFIG_INET6_TUNNEL=y |
243 | CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
244 | CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
245 | CONFIG_INET6_XFRM_MODE_BEET=y | ||
246 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
247 | CONFIG_IPV6_SIT=y | ||
219 | # CONFIG_IPV6_TUNNEL is not set | 248 | # CONFIG_IPV6_TUNNEL is not set |
249 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
250 | # CONFIG_NETWORK_SECMARK is not set | ||
220 | # CONFIG_NETFILTER is not set | 251 | # CONFIG_NETFILTER is not set |
221 | |||
222 | # | ||
223 | # DCCP Configuration (EXPERIMENTAL) | ||
224 | # | ||
225 | # CONFIG_IP_DCCP is not set | 252 | # CONFIG_IP_DCCP is not set |
226 | |||
227 | # | ||
228 | # SCTP Configuration (EXPERIMENTAL) | ||
229 | # | ||
230 | # CONFIG_IP_SCTP is not set | 253 | # CONFIG_IP_SCTP is not set |
231 | |||
232 | # | ||
233 | # TIPC Configuration (EXPERIMENTAL) | ||
234 | # | ||
235 | # CONFIG_TIPC is not set | 254 | # CONFIG_TIPC is not set |
236 | # CONFIG_ATM is not set | 255 | # CONFIG_ATM is not set |
237 | # CONFIG_BRIDGE is not set | 256 | # CONFIG_BRIDGE is not set |
@@ -243,7 +262,6 @@ CONFIG_LLC2=m | |||
243 | # CONFIG_ATALK is not set | 262 | # CONFIG_ATALK is not set |
244 | # CONFIG_X25 is not set | 263 | # CONFIG_X25 is not set |
245 | # CONFIG_LAPB is not set | 264 | # CONFIG_LAPB is not set |
246 | # CONFIG_NET_DIVERT is not set | ||
247 | # CONFIG_ECONET is not set | 265 | # CONFIG_ECONET is not set |
248 | # CONFIG_WAN_ROUTER is not set | 266 | # CONFIG_WAN_ROUTER is not set |
249 | 267 | ||
@@ -259,7 +277,17 @@ CONFIG_LLC2=m | |||
259 | # CONFIG_HAMRADIO is not set | 277 | # CONFIG_HAMRADIO is not set |
260 | # CONFIG_IRDA is not set | 278 | # CONFIG_IRDA is not set |
261 | # CONFIG_BT is not set | 279 | # CONFIG_BT is not set |
280 | # CONFIG_AF_RXRPC is not set | ||
281 | |||
282 | # | ||
283 | # Wireless | ||
284 | # | ||
285 | # CONFIG_CFG80211 is not set | ||
286 | # CONFIG_WIRELESS_EXT is not set | ||
287 | # CONFIG_MAC80211 is not set | ||
262 | # CONFIG_IEEE80211 is not set | 288 | # CONFIG_IEEE80211 is not set |
289 | # CONFIG_RFKILL is not set | ||
290 | # CONFIG_NET_9P is not set | ||
263 | 291 | ||
264 | # | 292 | # |
265 | # Device Drivers | 293 | # Device Drivers |
@@ -268,41 +296,26 @@ CONFIG_LLC2=m | |||
268 | # | 296 | # |
269 | # Generic Driver Options | 297 | # Generic Driver Options |
270 | # | 298 | # |
299 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
271 | # CONFIG_STANDALONE is not set | 300 | # CONFIG_STANDALONE is not set |
272 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 301 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
273 | CONFIG_FW_LOADER=y | 302 | CONFIG_FW_LOADER=y |
274 | # CONFIG_DEBUG_DRIVER is not set | 303 | # CONFIG_DEBUG_DRIVER is not set |
275 | 304 | # CONFIG_DEBUG_DEVRES is not set | |
276 | # | 305 | # CONFIG_SYS_HYPERVISOR is not set |
277 | # Connector - unified userspace <-> kernelspace linker | ||
278 | # | ||
279 | # CONFIG_CONNECTOR is not set | 306 | # CONFIG_CONNECTOR is not set |
280 | |||
281 | # | ||
282 | # Memory Technology Devices (MTD) | ||
283 | # | ||
284 | # CONFIG_MTD is not set | 307 | # CONFIG_MTD is not set |
285 | |||
286 | # | ||
287 | # Parallel port support | ||
288 | # | ||
289 | CONFIG_PARPORT=y | 308 | CONFIG_PARPORT=y |
290 | CONFIG_PARPORT_PC=m | 309 | CONFIG_PARPORT_PC=m |
291 | # CONFIG_PARPORT_SERIAL is not set | 310 | # CONFIG_PARPORT_SERIAL is not set |
292 | # CONFIG_PARPORT_PC_FIFO is not set | 311 | # CONFIG_PARPORT_PC_FIFO is not set |
293 | # CONFIG_PARPORT_PC_SUPERIO is not set | 312 | # CONFIG_PARPORT_PC_SUPERIO is not set |
294 | CONFIG_PARPORT_PC_PCMCIA=m | 313 | CONFIG_PARPORT_PC_PCMCIA=m |
295 | CONFIG_PARPORT_NOT_PC=y | ||
296 | CONFIG_PARPORT_GSC=y | 314 | CONFIG_PARPORT_GSC=y |
315 | # CONFIG_PARPORT_AX88796 is not set | ||
297 | CONFIG_PARPORT_1284=y | 316 | CONFIG_PARPORT_1284=y |
298 | 317 | CONFIG_PARPORT_NOT_PC=y | |
299 | # | 318 | CONFIG_BLK_DEV=y |
300 | # Plug and Play support | ||
301 | # | ||
302 | |||
303 | # | ||
304 | # Block devices | ||
305 | # | ||
306 | # CONFIG_PARIDE is not set | 319 | # CONFIG_PARIDE is not set |
307 | # CONFIG_BLK_CPQ_DA is not set | 320 | # CONFIG_BLK_CPQ_DA is not set |
308 | # CONFIG_BLK_CPQ_CISS_DA is not set | 321 | # CONFIG_BLK_CPQ_CISS_DA is not set |
@@ -317,13 +330,14 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y | |||
317 | CONFIG_BLK_DEV_RAM=y | 330 | CONFIG_BLK_DEV_RAM=y |
318 | CONFIG_BLK_DEV_RAM_COUNT=16 | 331 | CONFIG_BLK_DEV_RAM_COUNT=16 |
319 | CONFIG_BLK_DEV_RAM_SIZE=6144 | 332 | CONFIG_BLK_DEV_RAM_SIZE=6144 |
320 | CONFIG_BLK_DEV_INITRD=y | 333 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
321 | # CONFIG_CDROM_PKTCDVD is not set | 334 | # CONFIG_CDROM_PKTCDVD is not set |
322 | # CONFIG_ATA_OVER_ETH is not set | 335 | # CONFIG_ATA_OVER_ETH is not set |
323 | 336 | CONFIG_MISC_DEVICES=y | |
324 | # | 337 | # CONFIG_PHANTOM is not set |
325 | # ATA/ATAPI/MFM/RLL support | 338 | # CONFIG_EEPROM_93CX6 is not set |
326 | # | 339 | # CONFIG_SGI_IOC4 is not set |
340 | # CONFIG_TIFM_CORE is not set | ||
327 | CONFIG_IDE=y | 341 | CONFIG_IDE=y |
328 | CONFIG_BLK_DEV_IDE=y | 342 | CONFIG_BLK_DEV_IDE=y |
329 | 343 | ||
@@ -334,24 +348,32 @@ CONFIG_BLK_DEV_IDE=y | |||
334 | CONFIG_BLK_DEV_IDEDISK=y | 348 | CONFIG_BLK_DEV_IDEDISK=y |
335 | CONFIG_IDEDISK_MULTI_MODE=y | 349 | CONFIG_IDEDISK_MULTI_MODE=y |
336 | CONFIG_BLK_DEV_IDECS=y | 350 | CONFIG_BLK_DEV_IDECS=y |
351 | # CONFIG_BLK_DEV_DELKIN is not set | ||
337 | CONFIG_BLK_DEV_IDECD=y | 352 | CONFIG_BLK_DEV_IDECD=y |
338 | # CONFIG_BLK_DEV_IDETAPE is not set | 353 | # CONFIG_BLK_DEV_IDETAPE is not set |
339 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 354 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
340 | CONFIG_BLK_DEV_IDESCSI=y | 355 | CONFIG_BLK_DEV_IDESCSI=y |
341 | # CONFIG_IDE_TASK_IOCTL is not set | 356 | # CONFIG_IDE_TASK_IOCTL is not set |
357 | CONFIG_IDE_PROC_FS=y | ||
342 | 358 | ||
343 | # | 359 | # |
344 | # IDE chipset support/bugfixes | 360 | # IDE chipset support/bugfixes |
345 | # | 361 | # |
346 | CONFIG_IDE_GENERIC=y | 362 | CONFIG_IDE_GENERIC=y |
363 | # CONFIG_BLK_DEV_PLATFORM is not set | ||
364 | |||
365 | # | ||
366 | # PCI IDE chipsets support | ||
367 | # | ||
347 | CONFIG_BLK_DEV_IDEPCI=y | 368 | CONFIG_BLK_DEV_IDEPCI=y |
348 | CONFIG_IDEPCI_SHARE_IRQ=y | 369 | CONFIG_IDEPCI_SHARE_IRQ=y |
370 | CONFIG_IDEPCI_PCIBUS_ORDER=y | ||
349 | # CONFIG_BLK_DEV_OFFBOARD is not set | 371 | # CONFIG_BLK_DEV_OFFBOARD is not set |
350 | CONFIG_BLK_DEV_GENERIC=y | 372 | CONFIG_BLK_DEV_GENERIC=y |
351 | # CONFIG_BLK_DEV_OPTI621 is not set | 373 | # CONFIG_BLK_DEV_OPTI621 is not set |
352 | CONFIG_BLK_DEV_IDEDMA_PCI=y | 374 | CONFIG_BLK_DEV_IDEDMA_PCI=y |
353 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | 375 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set |
354 | # CONFIG_IDEDMA_PCI_AUTO is not set | 376 | CONFIG_IDEDMA_ONLYDISK=y |
355 | # CONFIG_BLK_DEV_AEC62XX is not set | 377 | # CONFIG_BLK_DEV_AEC62XX is not set |
356 | # CONFIG_BLK_DEV_ALI15X3 is not set | 378 | # CONFIG_BLK_DEV_ALI15X3 is not set |
357 | # CONFIG_BLK_DEV_AMD74XX is not set | 379 | # CONFIG_BLK_DEV_AMD74XX is not set |
@@ -362,8 +384,10 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y | |||
362 | # CONFIG_BLK_DEV_CS5530 is not set | 384 | # CONFIG_BLK_DEV_CS5530 is not set |
363 | # CONFIG_BLK_DEV_HPT34X is not set | 385 | # CONFIG_BLK_DEV_HPT34X is not set |
364 | # CONFIG_BLK_DEV_HPT366 is not set | 386 | # CONFIG_BLK_DEV_HPT366 is not set |
387 | # CONFIG_BLK_DEV_JMICRON is not set | ||
365 | # CONFIG_BLK_DEV_SC1200 is not set | 388 | # CONFIG_BLK_DEV_SC1200 is not set |
366 | # CONFIG_BLK_DEV_PIIX is not set | 389 | # CONFIG_BLK_DEV_PIIX is not set |
390 | # CONFIG_BLK_DEV_IT8213 is not set | ||
367 | # CONFIG_BLK_DEV_IT821X is not set | 391 | # CONFIG_BLK_DEV_IT821X is not set |
368 | CONFIG_BLK_DEV_NS87415=y | 392 | CONFIG_BLK_DEV_NS87415=y |
369 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 393 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
@@ -373,10 +397,10 @@ CONFIG_BLK_DEV_NS87415=y | |||
373 | # CONFIG_BLK_DEV_SLC90E66 is not set | 397 | # CONFIG_BLK_DEV_SLC90E66 is not set |
374 | # CONFIG_BLK_DEV_TRM290 is not set | 398 | # CONFIG_BLK_DEV_TRM290 is not set |
375 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 399 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
400 | # CONFIG_BLK_DEV_TC86C001 is not set | ||
376 | # CONFIG_IDE_ARM is not set | 401 | # CONFIG_IDE_ARM is not set |
377 | CONFIG_BLK_DEV_IDEDMA=y | 402 | CONFIG_BLK_DEV_IDEDMA=y |
378 | # CONFIG_IDEDMA_IVB is not set | 403 | # CONFIG_IDEDMA_IVB is not set |
379 | # CONFIG_IDEDMA_AUTO is not set | ||
380 | # CONFIG_BLK_DEV_HD is not set | 404 | # CONFIG_BLK_DEV_HD is not set |
381 | 405 | ||
382 | # | 406 | # |
@@ -384,6 +408,9 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
384 | # | 408 | # |
385 | # CONFIG_RAID_ATTRS is not set | 409 | # CONFIG_RAID_ATTRS is not set |
386 | CONFIG_SCSI=y | 410 | CONFIG_SCSI=y |
411 | CONFIG_SCSI_DMA=y | ||
412 | # CONFIG_SCSI_TGT is not set | ||
413 | # CONFIG_SCSI_NETLINK is not set | ||
387 | CONFIG_SCSI_PROC_FS=y | 414 | CONFIG_SCSI_PROC_FS=y |
388 | 415 | ||
389 | # | 416 | # |
@@ -403,18 +430,17 @@ CONFIG_CHR_DEV_SG=y | |||
403 | # CONFIG_SCSI_MULTI_LUN is not set | 430 | # CONFIG_SCSI_MULTI_LUN is not set |
404 | # CONFIG_SCSI_CONSTANTS is not set | 431 | # CONFIG_SCSI_CONSTANTS is not set |
405 | # CONFIG_SCSI_LOGGING is not set | 432 | # CONFIG_SCSI_LOGGING is not set |
433 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
434 | CONFIG_SCSI_WAIT_SCAN=m | ||
406 | 435 | ||
407 | # | 436 | # |
408 | # SCSI Transport Attributes | 437 | # SCSI Transports |
409 | # | 438 | # |
410 | CONFIG_SCSI_SPI_ATTRS=y | 439 | CONFIG_SCSI_SPI_ATTRS=y |
411 | # CONFIG_SCSI_FC_ATTRS is not set | 440 | # CONFIG_SCSI_FC_ATTRS is not set |
412 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 441 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
413 | # CONFIG_SCSI_SAS_ATTRS is not set | 442 | # CONFIG_SCSI_SAS_LIBSAS is not set |
414 | 443 | CONFIG_SCSI_LOWLEVEL=y | |
415 | # | ||
416 | # SCSI low-level drivers | ||
417 | # | ||
418 | # CONFIG_ISCSI_TCP is not set | 444 | # CONFIG_ISCSI_TCP is not set |
419 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 445 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
420 | # CONFIG_SCSI_3W_9XXX is not set | 446 | # CONFIG_SCSI_3W_9XXX is not set |
@@ -424,11 +450,13 @@ CONFIG_SCSI_SPI_ATTRS=y | |||
424 | # CONFIG_SCSI_AIC7XXX is not set | 450 | # CONFIG_SCSI_AIC7XXX is not set |
425 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 451 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
426 | # CONFIG_SCSI_AIC79XX is not set | 452 | # CONFIG_SCSI_AIC79XX is not set |
453 | # CONFIG_SCSI_AIC94XX is not set | ||
427 | # CONFIG_SCSI_DPT_I2O is not set | 454 | # CONFIG_SCSI_DPT_I2O is not set |
455 | # CONFIG_SCSI_ARCMSR is not set | ||
428 | # CONFIG_MEGARAID_NEWGEN is not set | 456 | # CONFIG_MEGARAID_NEWGEN is not set |
429 | # CONFIG_MEGARAID_LEGACY is not set | 457 | # CONFIG_MEGARAID_LEGACY is not set |
430 | # CONFIG_MEGARAID_SAS is not set | 458 | # CONFIG_MEGARAID_SAS is not set |
431 | # CONFIG_SCSI_SATA is not set | 459 | # CONFIG_SCSI_HPTIOP is not set |
432 | # CONFIG_SCSI_DMX3191D is not set | 460 | # CONFIG_SCSI_DMX3191D is not set |
433 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 461 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
434 | # CONFIG_SCSI_IPS is not set | 462 | # CONFIG_SCSI_IPS is not set |
@@ -438,55 +466,45 @@ CONFIG_SCSI_SPI_ATTRS=y | |||
438 | # CONFIG_SCSI_IMM is not set | 466 | # CONFIG_SCSI_IMM is not set |
439 | CONFIG_SCSI_LASI700=y | 467 | CONFIG_SCSI_LASI700=y |
440 | CONFIG_53C700_LE_ON_BE=y | 468 | CONFIG_53C700_LE_ON_BE=y |
469 | # CONFIG_SCSI_STEX is not set | ||
441 | CONFIG_SCSI_SYM53C8XX_2=y | 470 | CONFIG_SCSI_SYM53C8XX_2=y |
442 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 | 471 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 |
443 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 472 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
444 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 473 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
445 | CONFIG_SCSI_SYM53C8XX_MMIO=y | 474 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
446 | # CONFIG_SCSI_IPR is not set | ||
447 | CONFIG_SCSI_ZALON=y | 475 | CONFIG_SCSI_ZALON=y |
448 | CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 | 476 | CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 |
449 | CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 | 477 | CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 |
450 | CONFIG_SCSI_NCR53C8XX_SYNC=20 | 478 | CONFIG_SCSI_NCR53C8XX_SYNC=20 |
451 | # CONFIG_SCSI_NCR53C8XX_PROFILE is not set | ||
452 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
453 | # CONFIG_SCSI_QLOGIC_1280 is not set | 479 | # CONFIG_SCSI_QLOGIC_1280 is not set |
454 | # CONFIG_SCSI_QLA_FC is not set | 480 | # CONFIG_SCSI_QLA_FC is not set |
481 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
455 | # CONFIG_SCSI_LPFC is not set | 482 | # CONFIG_SCSI_LPFC is not set |
456 | # CONFIG_SCSI_SIM710 is not set | 483 | # CONFIG_SCSI_SIM710 is not set |
457 | # CONFIG_SCSI_DC395x is not set | 484 | # CONFIG_SCSI_DC395x is not set |
458 | # CONFIG_SCSI_DC390T is not set | 485 | # CONFIG_SCSI_DC390T is not set |
459 | # CONFIG_SCSI_NSP32 is not set | 486 | # CONFIG_SCSI_NSP32 is not set |
460 | # CONFIG_SCSI_DEBUG is not set | 487 | # CONFIG_SCSI_DEBUG is not set |
461 | 488 | # CONFIG_SCSI_SRP is not set | |
462 | # | 489 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set |
463 | # PCMCIA SCSI adapter support | 490 | # CONFIG_ATA is not set |
464 | # | ||
465 | # CONFIG_PCMCIA_AHA152X is not set | ||
466 | # CONFIG_PCMCIA_FDOMAIN is not set | ||
467 | # CONFIG_PCMCIA_NINJA_SCSI is not set | ||
468 | # CONFIG_PCMCIA_QLOGIC is not set | ||
469 | # CONFIG_PCMCIA_SYM53C500 is not set | ||
470 | |||
471 | # | ||
472 | # Multi-device support (RAID and LVM) | ||
473 | # | ||
474 | CONFIG_MD=y | 491 | CONFIG_MD=y |
475 | CONFIG_BLK_DEV_MD=y | 492 | CONFIG_BLK_DEV_MD=y |
476 | CONFIG_MD_LINEAR=y | 493 | CONFIG_MD_LINEAR=y |
477 | CONFIG_MD_RAID0=y | 494 | CONFIG_MD_RAID0=y |
478 | CONFIG_MD_RAID1=y | 495 | CONFIG_MD_RAID1=y |
479 | CONFIG_MD_RAID10=y | 496 | CONFIG_MD_RAID10=y |
480 | CONFIG_MD_RAID5=y | 497 | # CONFIG_MD_RAID456 is not set |
481 | CONFIG_MD_RAID6=y | ||
482 | # CONFIG_MD_MULTIPATH is not set | 498 | # CONFIG_MD_MULTIPATH is not set |
483 | # CONFIG_MD_FAULTY is not set | 499 | # CONFIG_MD_FAULTY is not set |
484 | CONFIG_BLK_DEV_DM=y | 500 | CONFIG_BLK_DEV_DM=y |
501 | # CONFIG_DM_DEBUG is not set | ||
485 | # CONFIG_DM_CRYPT is not set | 502 | # CONFIG_DM_CRYPT is not set |
486 | # CONFIG_DM_SNAPSHOT is not set | 503 | # CONFIG_DM_SNAPSHOT is not set |
487 | # CONFIG_DM_MIRROR is not set | 504 | # CONFIG_DM_MIRROR is not set |
488 | # CONFIG_DM_ZERO is not set | 505 | # CONFIG_DM_ZERO is not set |
489 | # CONFIG_DM_MULTIPATH is not set | 506 | # CONFIG_DM_MULTIPATH is not set |
507 | # CONFIG_DM_DELAY is not set | ||
490 | 508 | ||
491 | # | 509 | # |
492 | # Fusion MPT device support | 510 | # Fusion MPT device support |
@@ -499,35 +517,20 @@ CONFIG_BLK_DEV_DM=y | |||
499 | # | 517 | # |
500 | # IEEE 1394 (FireWire) support | 518 | # IEEE 1394 (FireWire) support |
501 | # | 519 | # |
520 | # CONFIG_FIREWIRE is not set | ||
502 | # CONFIG_IEEE1394 is not set | 521 | # CONFIG_IEEE1394 is not set |
503 | |||
504 | # | ||
505 | # I2O device support | ||
506 | # | ||
507 | # CONFIG_I2O is not set | 522 | # CONFIG_I2O is not set |
508 | |||
509 | # | ||
510 | # Network device support | ||
511 | # | ||
512 | CONFIG_NETDEVICES=y | 523 | CONFIG_NETDEVICES=y |
524 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
513 | CONFIG_DUMMY=m | 525 | CONFIG_DUMMY=m |
514 | CONFIG_BONDING=m | 526 | CONFIG_BONDING=m |
527 | # CONFIG_MACVLAN is not set | ||
515 | # CONFIG_EQUALIZER is not set | 528 | # CONFIG_EQUALIZER is not set |
516 | CONFIG_TUN=m | 529 | CONFIG_TUN=m |
517 | 530 | # CONFIG_VETH is not set | |
518 | # | 531 | # CONFIG_IP1000 is not set |
519 | # ARCnet devices | ||
520 | # | ||
521 | # CONFIG_ARCNET is not set | 532 | # CONFIG_ARCNET is not set |
522 | |||
523 | # | ||
524 | # PHY device support | ||
525 | # | ||
526 | # CONFIG_PHYLIB is not set | 533 | # CONFIG_PHYLIB is not set |
527 | |||
528 | # | ||
529 | # Ethernet (10 or 100Mbit) | ||
530 | # | ||
531 | CONFIG_NET_ETHERNET=y | 534 | CONFIG_NET_ETHERNET=y |
532 | CONFIG_MII=m | 535 | CONFIG_MII=m |
533 | CONFIG_LASI_82596=y | 536 | CONFIG_LASI_82596=y |
@@ -536,10 +539,6 @@ CONFIG_LASI_82596=y | |||
536 | # CONFIG_CASSINI is not set | 539 | # CONFIG_CASSINI is not set |
537 | # CONFIG_NET_VENDOR_3COM is not set | 540 | # CONFIG_NET_VENDOR_3COM is not set |
538 | # CONFIG_NET_VENDOR_SMC is not set | 541 | # CONFIG_NET_VENDOR_SMC is not set |
539 | |||
540 | # | ||
541 | # Tulip family network device support | ||
542 | # | ||
543 | CONFIG_NET_TULIP=y | 542 | CONFIG_NET_TULIP=y |
544 | # CONFIG_DE2104X is not set | 543 | # CONFIG_DE2104X is not set |
545 | CONFIG_TULIP=y | 544 | CONFIG_TULIP=y |
@@ -554,6 +553,10 @@ CONFIG_TULIP=y | |||
554 | # CONFIG_PCMCIA_XIRTULIP is not set | 553 | # CONFIG_PCMCIA_XIRTULIP is not set |
555 | # CONFIG_DEPCA is not set | 554 | # CONFIG_DEPCA is not set |
556 | # CONFIG_HP100 is not set | 555 | # CONFIG_HP100 is not set |
556 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
557 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
558 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
559 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
557 | CONFIG_NET_PCI=y | 560 | CONFIG_NET_PCI=y |
558 | # CONFIG_PCNET32 is not set | 561 | # CONFIG_PCNET32 is not set |
559 | # CONFIG_AMD8111_ETH is not set | 562 | # CONFIG_AMD8111_ETH is not set |
@@ -561,7 +564,6 @@ CONFIG_NET_PCI=y | |||
561 | # CONFIG_AC3200 is not set | 564 | # CONFIG_AC3200 is not set |
562 | # CONFIG_B44 is not set | 565 | # CONFIG_B44 is not set |
563 | # CONFIG_FORCEDETH is not set | 566 | # CONFIG_FORCEDETH is not set |
564 | # CONFIG_DGRS is not set | ||
565 | # CONFIG_EEPRO100 is not set | 567 | # CONFIG_EEPRO100 is not set |
566 | # CONFIG_E100 is not set | 568 | # CONFIG_E100 is not set |
567 | # CONFIG_LNE390 is not set | 569 | # CONFIG_LNE390 is not set |
@@ -577,15 +579,14 @@ CONFIG_NET_PCI=y | |||
577 | # CONFIG_SUNDANCE is not set | 579 | # CONFIG_SUNDANCE is not set |
578 | # CONFIG_TLAN is not set | 580 | # CONFIG_TLAN is not set |
579 | # CONFIG_VIA_RHINE is not set | 581 | # CONFIG_VIA_RHINE is not set |
582 | # CONFIG_SC92031 is not set | ||
580 | # CONFIG_NET_POCKET is not set | 583 | # CONFIG_NET_POCKET is not set |
581 | 584 | CONFIG_NETDEV_1000=y | |
582 | # | ||
583 | # Ethernet (1000 Mbit) | ||
584 | # | ||
585 | CONFIG_ACENIC=y | 585 | CONFIG_ACENIC=y |
586 | # CONFIG_ACENIC_OMIT_TIGON_I is not set | 586 | # CONFIG_ACENIC_OMIT_TIGON_I is not set |
587 | # CONFIG_DL2K is not set | 587 | # CONFIG_DL2K is not set |
588 | # CONFIG_E1000 is not set | 588 | # CONFIG_E1000 is not set |
589 | # CONFIG_E1000E is not set | ||
589 | # CONFIG_NS83820 is not set | 590 | # CONFIG_NS83820 is not set |
590 | # CONFIG_HAMACHI is not set | 591 | # CONFIG_HAMACHI is not set |
591 | # CONFIG_YELLOWFIN is not set | 592 | # CONFIG_YELLOWFIN is not set |
@@ -597,64 +598,36 @@ CONFIG_ACENIC=y | |||
597 | # CONFIG_VIA_VELOCITY is not set | 598 | # CONFIG_VIA_VELOCITY is not set |
598 | CONFIG_TIGON3=y | 599 | CONFIG_TIGON3=y |
599 | # CONFIG_BNX2 is not set | 600 | # CONFIG_BNX2 is not set |
600 | 601 | # CONFIG_QLA3XXX is not set | |
601 | # | 602 | # CONFIG_ATL1 is not set |
602 | # Ethernet (10000 Mbit) | 603 | CONFIG_NETDEV_10000=y |
603 | # | ||
604 | # CONFIG_CHELSIO_T1 is not set | 604 | # CONFIG_CHELSIO_T1 is not set |
605 | # CONFIG_CHELSIO_T3 is not set | ||
606 | # CONFIG_IXGBE is not set | ||
605 | # CONFIG_IXGB is not set | 607 | # CONFIG_IXGB is not set |
606 | # CONFIG_S2IO is not set | 608 | # CONFIG_S2IO is not set |
607 | 609 | # CONFIG_MYRI10GE is not set | |
608 | # | 610 | # CONFIG_NETXEN_NIC is not set |
609 | # Token Ring devices | 611 | # CONFIG_NIU is not set |
610 | # | 612 | # CONFIG_MLX4_CORE is not set |
613 | # CONFIG_TEHUTI is not set | ||
611 | # CONFIG_TR is not set | 614 | # CONFIG_TR is not set |
612 | 615 | ||
613 | # | 616 | # |
614 | # Wireless LAN (non-hamradio) | 617 | # Wireless LAN |
615 | # | ||
616 | CONFIG_NET_RADIO=y | ||
617 | |||
618 | # | ||
619 | # Obsolete Wireless cards support (pre-802.11) | ||
620 | # | ||
621 | # CONFIG_STRIP is not set | ||
622 | # CONFIG_PCMCIA_WAVELAN is not set | ||
623 | # CONFIG_PCMCIA_NETWAVE is not set | ||
624 | |||
625 | # | ||
626 | # Wireless 802.11 Frequency Hopping cards support | ||
627 | # | ||
628 | # CONFIG_PCMCIA_RAYCS is not set | ||
629 | |||
630 | # | ||
631 | # Wireless 802.11b ISA/PCI cards support | ||
632 | # | ||
633 | CONFIG_HERMES=y | ||
634 | # CONFIG_PLX_HERMES is not set | ||
635 | # CONFIG_TMD_HERMES is not set | ||
636 | # CONFIG_NORTEL_HERMES is not set | ||
637 | # CONFIG_PCI_HERMES is not set | ||
638 | # CONFIG_ATMEL is not set | ||
639 | |||
640 | # | ||
641 | # Wireless 802.11b Pcmcia/Cardbus cards support | ||
642 | # | 618 | # |
643 | CONFIG_PCMCIA_HERMES=y | 619 | # CONFIG_WLAN_PRE80211 is not set |
644 | CONFIG_PCMCIA_SPECTRUM=y | 620 | # CONFIG_WLAN_80211 is not set |
645 | # CONFIG_AIRO_CS is not set | ||
646 | # CONFIG_PCMCIA_WL3501 is not set | ||
647 | 621 | ||
648 | # | 622 | # |
649 | # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support | 623 | # USB Network Adapters |
650 | # | ||
651 | # CONFIG_PRISM54 is not set | ||
652 | # CONFIG_HOSTAP is not set | ||
653 | CONFIG_NET_WIRELESS=y | ||
654 | |||
655 | # | ||
656 | # PCMCIA network device support | ||
657 | # | 624 | # |
625 | # CONFIG_USB_CATC is not set | ||
626 | # CONFIG_USB_KAWETH is not set | ||
627 | # CONFIG_USB_PEGASUS is not set | ||
628 | # CONFIG_USB_RTL8150 is not set | ||
629 | # CONFIG_USB_USBNET_MII is not set | ||
630 | # CONFIG_USB_USBNET is not set | ||
658 | CONFIG_NET_PCMCIA=y | 631 | CONFIG_NET_PCMCIA=y |
659 | # CONFIG_PCMCIA_3C589 is not set | 632 | # CONFIG_PCMCIA_3C589 is not set |
660 | # CONFIG_PCMCIA_3C574 is not set | 633 | # CONFIG_PCMCIA_3C574 is not set |
@@ -664,10 +637,6 @@ CONFIG_NET_PCMCIA=y | |||
664 | # CONFIG_PCMCIA_SMC91C92 is not set | 637 | # CONFIG_PCMCIA_SMC91C92 is not set |
665 | # CONFIG_PCMCIA_XIRC2PS is not set | 638 | # CONFIG_PCMCIA_XIRC2PS is not set |
666 | # CONFIG_PCMCIA_AXNET is not set | 639 | # CONFIG_PCMCIA_AXNET is not set |
667 | |||
668 | # | ||
669 | # Wan interfaces | ||
670 | # | ||
671 | # CONFIG_WAN is not set | 640 | # CONFIG_WAN is not set |
672 | # CONFIG_FDDI is not set | 641 | # CONFIG_FDDI is not set |
673 | # CONFIG_HIPPI is not set | 642 | # CONFIG_HIPPI is not set |
@@ -681,27 +650,23 @@ CONFIG_PPP_DEFLATE=m | |||
681 | CONFIG_PPP_BSDCOMP=m | 650 | CONFIG_PPP_BSDCOMP=m |
682 | # CONFIG_PPP_MPPE is not set | 651 | # CONFIG_PPP_MPPE is not set |
683 | CONFIG_PPPOE=m | 652 | CONFIG_PPPOE=m |
653 | # CONFIG_PPPOL2TP is not set | ||
684 | # CONFIG_SLIP is not set | 654 | # CONFIG_SLIP is not set |
655 | CONFIG_SLHC=m | ||
685 | # CONFIG_NET_FC is not set | 656 | # CONFIG_NET_FC is not set |
686 | # CONFIG_SHAPER is not set | 657 | # CONFIG_SHAPER is not set |
687 | # CONFIG_NETCONSOLE is not set | 658 | # CONFIG_NETCONSOLE is not set |
688 | # CONFIG_NETPOLL is not set | 659 | # CONFIG_NETPOLL is not set |
689 | # CONFIG_NET_POLL_CONTROLLER is not set | 660 | # CONFIG_NET_POLL_CONTROLLER is not set |
690 | |||
691 | # | ||
692 | # ISDN subsystem | ||
693 | # | ||
694 | # CONFIG_ISDN is not set | 661 | # CONFIG_ISDN is not set |
695 | |||
696 | # | ||
697 | # Telephony Support | ||
698 | # | ||
699 | # CONFIG_PHONE is not set | 662 | # CONFIG_PHONE is not set |
700 | 663 | ||
701 | # | 664 | # |
702 | # Input device support | 665 | # Input device support |
703 | # | 666 | # |
704 | CONFIG_INPUT=y | 667 | CONFIG_INPUT=y |
668 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
669 | # CONFIG_INPUT_POLLDEV is not set | ||
705 | 670 | ||
706 | # | 671 | # |
707 | # Userland interfaces | 672 | # Userland interfaces |
@@ -726,14 +691,23 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y | |||
726 | # CONFIG_KEYBOARD_LKKBD is not set | 691 | # CONFIG_KEYBOARD_LKKBD is not set |
727 | # CONFIG_KEYBOARD_XTKBD is not set | 692 | # CONFIG_KEYBOARD_XTKBD is not set |
728 | # CONFIG_KEYBOARD_NEWTON is not set | 693 | # CONFIG_KEYBOARD_NEWTON is not set |
694 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
729 | # CONFIG_KEYBOARD_HIL_OLD is not set | 695 | # CONFIG_KEYBOARD_HIL_OLD is not set |
730 | CONFIG_KEYBOARD_HIL=y | 696 | CONFIG_KEYBOARD_HIL=y |
731 | CONFIG_INPUT_MOUSE=y | 697 | CONFIG_INPUT_MOUSE=y |
732 | CONFIG_MOUSE_PS2=y | 698 | CONFIG_MOUSE_PS2=y |
699 | CONFIG_MOUSE_PS2_ALPS=y | ||
700 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
701 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
702 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
703 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
704 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
733 | CONFIG_MOUSE_SERIAL=y | 705 | CONFIG_MOUSE_SERIAL=y |
706 | # CONFIG_MOUSE_APPLETOUCH is not set | ||
734 | # CONFIG_MOUSE_VSXXXAA is not set | 707 | # CONFIG_MOUSE_VSXXXAA is not set |
735 | CONFIG_MOUSE_HIL=y | 708 | CONFIG_MOUSE_HIL=y |
736 | # CONFIG_INPUT_JOYSTICK is not set | 709 | # CONFIG_INPUT_JOYSTICK is not set |
710 | # CONFIG_INPUT_TABLET is not set | ||
737 | # CONFIG_INPUT_TOUCHSCREEN is not set | 711 | # CONFIG_INPUT_TOUCHSCREEN is not set |
738 | # CONFIG_INPUT_MISC is not set | 712 | # CONFIG_INPUT_MISC is not set |
739 | 713 | ||
@@ -757,6 +731,7 @@ CONFIG_SERIO_LIBPS2=y | |||
757 | CONFIG_VT=y | 731 | CONFIG_VT=y |
758 | CONFIG_VT_CONSOLE=y | 732 | CONFIG_VT_CONSOLE=y |
759 | CONFIG_HW_CONSOLE=y | 733 | CONFIG_HW_CONSOLE=y |
734 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | ||
760 | # CONFIG_SERIAL_NONSTANDARD is not set | 735 | # CONFIG_SERIAL_NONSTANDARD is not set |
761 | 736 | ||
762 | # | 737 | # |
@@ -764,6 +739,8 @@ CONFIG_HW_CONSOLE=y | |||
764 | # | 739 | # |
765 | CONFIG_SERIAL_8250=y | 740 | CONFIG_SERIAL_8250=y |
766 | CONFIG_SERIAL_8250_CONSOLE=y | 741 | CONFIG_SERIAL_8250_CONSOLE=y |
742 | CONFIG_SERIAL_8250_GSC=y | ||
743 | CONFIG_SERIAL_8250_PCI=y | ||
767 | CONFIG_SERIAL_8250_CS=y | 744 | CONFIG_SERIAL_8250_CS=y |
768 | CONFIG_SERIAL_8250_NR_UARTS=17 | 745 | CONFIG_SERIAL_8250_NR_UARTS=17 |
769 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 746 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
@@ -788,25 +765,14 @@ CONFIG_PRINTER=m | |||
788 | # CONFIG_LP_CONSOLE is not set | 765 | # CONFIG_LP_CONSOLE is not set |
789 | CONFIG_PPDEV=m | 766 | CONFIG_PPDEV=m |
790 | # CONFIG_TIPAR is not set | 767 | # CONFIG_TIPAR is not set |
791 | |||
792 | # | ||
793 | # IPMI | ||
794 | # | ||
795 | # CONFIG_IPMI_HANDLER is not set | 768 | # CONFIG_IPMI_HANDLER is not set |
796 | |||
797 | # | ||
798 | # Watchdog Cards | ||
799 | # | ||
800 | # CONFIG_WATCHDOG is not set | 769 | # CONFIG_WATCHDOG is not set |
770 | # CONFIG_HW_RANDOM is not set | ||
801 | CONFIG_GEN_RTC=y | 771 | CONFIG_GEN_RTC=y |
802 | CONFIG_GEN_RTC_X=y | 772 | CONFIG_GEN_RTC_X=y |
803 | # CONFIG_DTLK is not set | ||
804 | # CONFIG_R3964 is not set | 773 | # CONFIG_R3964 is not set |
805 | # CONFIG_APPLICOM is not set | 774 | # CONFIG_APPLICOM is not set |
806 | 775 | # CONFIG_AGP is not set | |
807 | # | ||
808 | # Ftape, the floppy tape device driver | ||
809 | # | ||
810 | # CONFIG_DRM is not set | 776 | # CONFIG_DRM is not set |
811 | 777 | ||
812 | # | 778 | # |
@@ -816,16 +782,8 @@ CONFIG_GEN_RTC_X=y | |||
816 | # CONFIG_CARDMAN_4000 is not set | 782 | # CONFIG_CARDMAN_4000 is not set |
817 | # CONFIG_CARDMAN_4040 is not set | 783 | # CONFIG_CARDMAN_4040 is not set |
818 | # CONFIG_RAW_DRIVER is not set | 784 | # CONFIG_RAW_DRIVER is not set |
819 | |||
820 | # | ||
821 | # TPM devices | ||
822 | # | ||
823 | # CONFIG_TCG_TPM is not set | 785 | # CONFIG_TCG_TPM is not set |
824 | # CONFIG_TELCLOCK is not set | 786 | CONFIG_DEVPORT=y |
825 | |||
826 | # | ||
827 | # I2C support | ||
828 | # | ||
829 | # CONFIG_I2C is not set | 787 | # CONFIG_I2C is not set |
830 | 788 | ||
831 | # | 789 | # |
@@ -833,46 +791,59 @@ CONFIG_GEN_RTC_X=y | |||
833 | # | 791 | # |
834 | # CONFIG_SPI is not set | 792 | # CONFIG_SPI is not set |
835 | # CONFIG_SPI_MASTER is not set | 793 | # CONFIG_SPI_MASTER is not set |
836 | |||
837 | # | ||
838 | # Dallas's 1-wire bus | ||
839 | # | ||
840 | # CONFIG_W1 is not set | 794 | # CONFIG_W1 is not set |
841 | 795 | # CONFIG_POWER_SUPPLY is not set | |
842 | # | ||
843 | # Hardware Monitoring support | ||
844 | # | ||
845 | # CONFIG_HWMON is not set | 796 | # CONFIG_HWMON is not set |
846 | # CONFIG_HWMON_VID is not set | ||
847 | 797 | ||
848 | # | 798 | # |
849 | # Misc devices | 799 | # Sonics Silicon Backplane |
850 | # | 800 | # |
801 | CONFIG_SSB_POSSIBLE=y | ||
802 | # CONFIG_SSB is not set | ||
851 | 803 | ||
852 | # | 804 | # |
853 | # Multimedia Capabilities Port drivers | 805 | # Multifunction device drivers |
854 | # | 806 | # |
807 | # CONFIG_MFD_SM501 is not set | ||
855 | 808 | ||
856 | # | 809 | # |
857 | # Multimedia devices | 810 | # Multimedia devices |
858 | # | 811 | # |
859 | # CONFIG_VIDEO_DEV is not set | 812 | # CONFIG_VIDEO_DEV is not set |
813 | # CONFIG_DVB_CORE is not set | ||
814 | # CONFIG_DAB is not set | ||
860 | 815 | ||
861 | # | 816 | # |
862 | # Digital Video Broadcasting Devices | 817 | # Graphics support |
863 | # | 818 | # |
864 | # CONFIG_DVB is not set | 819 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
865 | 820 | ||
866 | # | 821 | # |
867 | # Graphics support | 822 | # Display device support |
868 | # | 823 | # |
824 | # CONFIG_DISPLAY_SUPPORT is not set | ||
825 | # CONFIG_VGASTATE is not set | ||
826 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
869 | CONFIG_FB=y | 827 | CONFIG_FB=y |
828 | # CONFIG_FIRMWARE_EDID is not set | ||
829 | # CONFIG_FB_DDC is not set | ||
870 | CONFIG_FB_CFB_FILLRECT=y | 830 | CONFIG_FB_CFB_FILLRECT=y |
871 | CONFIG_FB_CFB_COPYAREA=y | 831 | CONFIG_FB_CFB_COPYAREA=y |
872 | CONFIG_FB_CFB_IMAGEBLIT=y | 832 | CONFIG_FB_CFB_IMAGEBLIT=y |
833 | # CONFIG_FB_SYS_FILLRECT is not set | ||
834 | # CONFIG_FB_SYS_COPYAREA is not set | ||
835 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
836 | # CONFIG_FB_SYS_FOPS is not set | ||
837 | CONFIG_FB_DEFERRED_IO=y | ||
838 | # CONFIG_FB_SVGALIB is not set | ||
873 | # CONFIG_FB_MACMODES is not set | 839 | # CONFIG_FB_MACMODES is not set |
840 | # CONFIG_FB_BACKLIGHT is not set | ||
874 | CONFIG_FB_MODE_HELPERS=y | 841 | CONFIG_FB_MODE_HELPERS=y |
875 | CONFIG_FB_TILEBLITTING=y | 842 | CONFIG_FB_TILEBLITTING=y |
843 | |||
844 | # | ||
845 | # Frame buffer hardware drivers | ||
846 | # | ||
876 | # CONFIG_FB_CIRRUS is not set | 847 | # CONFIG_FB_CIRRUS is not set |
877 | # CONFIG_FB_PM2 is not set | 848 | # CONFIG_FB_PM2 is not set |
878 | # CONFIG_FB_CYBER2000 is not set | 849 | # CONFIG_FB_CYBER2000 is not set |
@@ -883,17 +854,20 @@ CONFIG_FB_STI=y | |||
883 | # CONFIG_FB_NVIDIA is not set | 854 | # CONFIG_FB_NVIDIA is not set |
884 | # CONFIG_FB_RIVA is not set | 855 | # CONFIG_FB_RIVA is not set |
885 | # CONFIG_FB_MATROX is not set | 856 | # CONFIG_FB_MATROX is not set |
886 | # CONFIG_FB_RADEON_OLD is not set | ||
887 | # CONFIG_FB_RADEON is not set | 857 | # CONFIG_FB_RADEON is not set |
888 | # CONFIG_FB_ATY128 is not set | 858 | # CONFIG_FB_ATY128 is not set |
889 | # CONFIG_FB_ATY is not set | 859 | # CONFIG_FB_ATY is not set |
860 | # CONFIG_FB_S3 is not set | ||
890 | # CONFIG_FB_SAVAGE is not set | 861 | # CONFIG_FB_SAVAGE is not set |
891 | # CONFIG_FB_SIS is not set | 862 | # CONFIG_FB_SIS is not set |
892 | # CONFIG_FB_NEOMAGIC is not set | 863 | # CONFIG_FB_NEOMAGIC is not set |
893 | # CONFIG_FB_KYRO is not set | 864 | # CONFIG_FB_KYRO is not set |
894 | # CONFIG_FB_3DFX is not set | 865 | # CONFIG_FB_3DFX is not set |
895 | # CONFIG_FB_VOODOO1 is not set | 866 | # CONFIG_FB_VOODOO1 is not set |
867 | # CONFIG_FB_VT8623 is not set | ||
896 | # CONFIG_FB_TRIDENT is not set | 868 | # CONFIG_FB_TRIDENT is not set |
869 | # CONFIG_FB_ARK is not set | ||
870 | # CONFIG_FB_PM3 is not set | ||
897 | # CONFIG_FB_VIRTUAL is not set | 871 | # CONFIG_FB_VIRTUAL is not set |
898 | 872 | ||
899 | # | 873 | # |
@@ -903,6 +877,7 @@ CONFIG_DUMMY_CONSOLE=y | |||
903 | CONFIG_DUMMY_CONSOLE_COLUMNS=128 | 877 | CONFIG_DUMMY_CONSOLE_COLUMNS=128 |
904 | CONFIG_DUMMY_CONSOLE_ROWS=48 | 878 | CONFIG_DUMMY_CONSOLE_ROWS=48 |
905 | CONFIG_FRAMEBUFFER_CONSOLE=y | 879 | CONFIG_FRAMEBUFFER_CONSOLE=y |
880 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
906 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 881 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
907 | CONFIG_STI_CONSOLE=y | 882 | CONFIG_STI_CONSOLE=y |
908 | CONFIG_FONTS=y | 883 | CONFIG_FONTS=y |
@@ -916,16 +891,11 @@ CONFIG_FONT_8x16=y | |||
916 | # CONFIG_FONT_SUN8x16 is not set | 891 | # CONFIG_FONT_SUN8x16 is not set |
917 | # CONFIG_FONT_SUN12x22 is not set | 892 | # CONFIG_FONT_SUN12x22 is not set |
918 | # CONFIG_FONT_10x18 is not set | 893 | # CONFIG_FONT_10x18 is not set |
919 | |||
920 | # | ||
921 | # Logo configuration | ||
922 | # | ||
923 | CONFIG_LOGO=y | 894 | CONFIG_LOGO=y |
924 | # CONFIG_LOGO_LINUX_MONO is not set | 895 | # CONFIG_LOGO_LINUX_MONO is not set |
925 | # CONFIG_LOGO_LINUX_VGA16 is not set | 896 | # CONFIG_LOGO_LINUX_VGA16 is not set |
926 | # CONFIG_LOGO_LINUX_CLUT224 is not set | 897 | # CONFIG_LOGO_LINUX_CLUT224 is not set |
927 | CONFIG_LOGO_PARISC_CLUT224=y | 898 | CONFIG_LOGO_PARISC_CLUT224=y |
928 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
929 | 899 | ||
930 | # | 900 | # |
931 | # Sound | 901 | # Sound |
@@ -938,35 +908,36 @@ CONFIG_SOUND=y | |||
938 | CONFIG_SND=y | 908 | CONFIG_SND=y |
939 | CONFIG_SND_TIMER=y | 909 | CONFIG_SND_TIMER=y |
940 | CONFIG_SND_PCM=y | 910 | CONFIG_SND_PCM=y |
941 | CONFIG_SND_HWDEP=y | ||
942 | CONFIG_SND_SEQUENCER=y | 911 | CONFIG_SND_SEQUENCER=y |
943 | # CONFIG_SND_SEQ_DUMMY is not set | 912 | # CONFIG_SND_SEQ_DUMMY is not set |
944 | CONFIG_SND_OSSEMUL=y | 913 | CONFIG_SND_OSSEMUL=y |
945 | CONFIG_SND_MIXER_OSS=y | 914 | CONFIG_SND_MIXER_OSS=y |
946 | CONFIG_SND_PCM_OSS=y | 915 | CONFIG_SND_PCM_OSS=y |
916 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
947 | CONFIG_SND_SEQUENCER_OSS=y | 917 | CONFIG_SND_SEQUENCER_OSS=y |
948 | CONFIG_SND_DYNAMIC_MINORS=y | 918 | CONFIG_SND_DYNAMIC_MINORS=y |
949 | CONFIG_SND_SUPPORT_OLD_API=y | 919 | CONFIG_SND_SUPPORT_OLD_API=y |
920 | CONFIG_SND_VERBOSE_PROCFS=y | ||
950 | # CONFIG_SND_VERBOSE_PRINTK is not set | 921 | # CONFIG_SND_VERBOSE_PRINTK is not set |
951 | # CONFIG_SND_DEBUG is not set | 922 | # CONFIG_SND_DEBUG is not set |
952 | 923 | ||
953 | # | 924 | # |
954 | # Generic devices | 925 | # Generic devices |
955 | # | 926 | # |
956 | CONFIG_SND_OPL3_LIB=y | ||
957 | CONFIG_SND_AC97_CODEC=y | 927 | CONFIG_SND_AC97_CODEC=y |
958 | CONFIG_SND_AC97_BUS=y | ||
959 | # CONFIG_SND_DUMMY is not set | 928 | # CONFIG_SND_DUMMY is not set |
960 | # CONFIG_SND_VIRMIDI is not set | 929 | # CONFIG_SND_VIRMIDI is not set |
961 | # CONFIG_SND_MTPAV is not set | 930 | # CONFIG_SND_MTPAV is not set |
931 | # CONFIG_SND_MTS64 is not set | ||
962 | # CONFIG_SND_SERIAL_U16550 is not set | 932 | # CONFIG_SND_SERIAL_U16550 is not set |
963 | # CONFIG_SND_MPU401 is not set | 933 | # CONFIG_SND_MPU401 is not set |
934 | # CONFIG_SND_PORTMAN2X4 is not set | ||
964 | 935 | ||
965 | # | 936 | # |
966 | # PCI devices | 937 | # PCI devices |
967 | # | 938 | # |
968 | CONFIG_SND_AD1889=y | 939 | CONFIG_SND_AD1889=y |
969 | CONFIG_SND_AD1889_OPL3=y | 940 | # CONFIG_SND_ALS300 is not set |
970 | # CONFIG_SND_ALI5451 is not set | 941 | # CONFIG_SND_ALI5451 is not set |
971 | # CONFIG_SND_ATIIXP is not set | 942 | # CONFIG_SND_ATIIXP is not set |
972 | # CONFIG_SND_ATIIXP_MODEM is not set | 943 | # CONFIG_SND_ATIIXP_MODEM is not set |
@@ -979,6 +950,18 @@ CONFIG_SND_AD1889_OPL3=y | |||
979 | # CONFIG_SND_CMIPCI is not set | 950 | # CONFIG_SND_CMIPCI is not set |
980 | # CONFIG_SND_CS4281 is not set | 951 | # CONFIG_SND_CS4281 is not set |
981 | # CONFIG_SND_CS46XX is not set | 952 | # CONFIG_SND_CS46XX is not set |
953 | # CONFIG_SND_DARLA20 is not set | ||
954 | # CONFIG_SND_GINA20 is not set | ||
955 | # CONFIG_SND_LAYLA20 is not set | ||
956 | # CONFIG_SND_DARLA24 is not set | ||
957 | # CONFIG_SND_GINA24 is not set | ||
958 | # CONFIG_SND_LAYLA24 is not set | ||
959 | # CONFIG_SND_MONA is not set | ||
960 | # CONFIG_SND_MIA is not set | ||
961 | # CONFIG_SND_ECHO3G is not set | ||
962 | # CONFIG_SND_INDIGO is not set | ||
963 | # CONFIG_SND_INDIGOIO is not set | ||
964 | # CONFIG_SND_INDIGODJ is not set | ||
982 | # CONFIG_SND_EMU10K1 is not set | 965 | # CONFIG_SND_EMU10K1 is not set |
983 | # CONFIG_SND_EMU10K1X is not set | 966 | # CONFIG_SND_EMU10K1X is not set |
984 | # CONFIG_SND_ENS1370 is not set | 967 | # CONFIG_SND_ENS1370 is not set |
@@ -998,6 +981,7 @@ CONFIG_SND_AD1889_OPL3=y | |||
998 | # CONFIG_SND_MIXART is not set | 981 | # CONFIG_SND_MIXART is not set |
999 | # CONFIG_SND_NM256 is not set | 982 | # CONFIG_SND_NM256 is not set |
1000 | # CONFIG_SND_PCXHR is not set | 983 | # CONFIG_SND_PCXHR is not set |
984 | # CONFIG_SND_RIPTIDE is not set | ||
1001 | # CONFIG_SND_RME32 is not set | 985 | # CONFIG_SND_RME32 is not set |
1002 | # CONFIG_SND_RME96 is not set | 986 | # CONFIG_SND_RME96 is not set |
1003 | # CONFIG_SND_RME9652 is not set | 987 | # CONFIG_SND_RME9652 is not set |
@@ -1007,15 +991,19 @@ CONFIG_SND_AD1889_OPL3=y | |||
1007 | # CONFIG_SND_VIA82XX_MODEM is not set | 991 | # CONFIG_SND_VIA82XX_MODEM is not set |
1008 | # CONFIG_SND_VX222 is not set | 992 | # CONFIG_SND_VX222 is not set |
1009 | # CONFIG_SND_YMFPCI is not set | 993 | # CONFIG_SND_YMFPCI is not set |
994 | # CONFIG_SND_AC97_POWER_SAVE is not set | ||
1010 | 995 | ||
1011 | # | 996 | # |
1012 | # USB devices | 997 | # USB devices |
1013 | # | 998 | # |
1014 | # CONFIG_SND_USB_AUDIO is not set | 999 | # CONFIG_SND_USB_AUDIO is not set |
1000 | # CONFIG_SND_USB_CAIAQ is not set | ||
1015 | 1001 | ||
1016 | # | 1002 | # |
1017 | # PCMCIA devices | 1003 | # PCMCIA devices |
1018 | # | 1004 | # |
1005 | # CONFIG_SND_VXPOCKET is not set | ||
1006 | # CONFIG_SND_PDAUDIOCF is not set | ||
1019 | 1007 | ||
1020 | # | 1008 | # |
1021 | # GSC devices | 1009 | # GSC devices |
@@ -1023,15 +1011,34 @@ CONFIG_SND_AD1889_OPL3=y | |||
1023 | CONFIG_SND_HARMONY=y | 1011 | CONFIG_SND_HARMONY=y |
1024 | 1012 | ||
1025 | # | 1013 | # |
1014 | # System on Chip audio support | ||
1015 | # | ||
1016 | # CONFIG_SND_SOC is not set | ||
1017 | |||
1018 | # | ||
1019 | # SoC Audio support for SuperH | ||
1020 | # | ||
1021 | |||
1022 | # | ||
1026 | # Open Sound System | 1023 | # Open Sound System |
1027 | # | 1024 | # |
1028 | # CONFIG_SOUND_PRIME is not set | 1025 | # CONFIG_SOUND_PRIME is not set |
1026 | CONFIG_AC97_BUS=y | ||
1027 | CONFIG_HID_SUPPORT=y | ||
1028 | CONFIG_HID=y | ||
1029 | CONFIG_HID_DEBUG=y | ||
1029 | 1030 | ||
1030 | # | 1031 | # |
1031 | # USB support | 1032 | # USB Input Devices |
1032 | # | 1033 | # |
1034 | CONFIG_USB_HID=y | ||
1035 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
1036 | # CONFIG_HID_FF is not set | ||
1037 | # CONFIG_USB_HIDDEV is not set | ||
1038 | CONFIG_USB_SUPPORT=y | ||
1033 | CONFIG_USB_ARCH_HAS_HCD=y | 1039 | CONFIG_USB_ARCH_HAS_HCD=y |
1034 | CONFIG_USB_ARCH_HAS_OHCI=y | 1040 | CONFIG_USB_ARCH_HAS_OHCI=y |
1041 | CONFIG_USB_ARCH_HAS_EHCI=y | ||
1035 | CONFIG_USB=y | 1042 | CONFIG_USB=y |
1036 | # CONFIG_USB_DEBUG is not set | 1043 | # CONFIG_USB_DEBUG is not set |
1037 | 1044 | ||
@@ -1039,7 +1046,7 @@ CONFIG_USB=y | |||
1039 | # Miscellaneous USB options | 1046 | # Miscellaneous USB options |
1040 | # | 1047 | # |
1041 | CONFIG_USB_DEVICEFS=y | 1048 | CONFIG_USB_DEVICEFS=y |
1042 | # CONFIG_USB_BANDWIDTH is not set | 1049 | CONFIG_USB_DEVICE_CLASS=y |
1043 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1050 | # CONFIG_USB_DYNAMIC_MINORS is not set |
1044 | # CONFIG_USB_OTG is not set | 1051 | # CONFIG_USB_OTG is not set |
1045 | 1052 | ||
@@ -1049,15 +1056,16 @@ CONFIG_USB_DEVICEFS=y | |||
1049 | # CONFIG_USB_EHCI_HCD is not set | 1056 | # CONFIG_USB_EHCI_HCD is not set |
1050 | # CONFIG_USB_ISP116X_HCD is not set | 1057 | # CONFIG_USB_ISP116X_HCD is not set |
1051 | CONFIG_USB_OHCI_HCD=y | 1058 | CONFIG_USB_OHCI_HCD=y |
1052 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | 1059 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
1060 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | ||
1053 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 1061 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
1054 | CONFIG_USB_UHCI_HCD=y | 1062 | CONFIG_USB_UHCI_HCD=y |
1055 | # CONFIG_USB_SL811_HCD is not set | 1063 | # CONFIG_USB_SL811_HCD is not set |
1064 | # CONFIG_USB_R8A66597_HCD is not set | ||
1056 | 1065 | ||
1057 | # | 1066 | # |
1058 | # USB Device Class drivers | 1067 | # USB Device Class drivers |
1059 | # | 1068 | # |
1060 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set | ||
1061 | # CONFIG_USB_ACM is not set | 1069 | # CONFIG_USB_ACM is not set |
1062 | # CONFIG_USB_PRINTER is not set | 1070 | # CONFIG_USB_PRINTER is not set |
1063 | 1071 | ||
@@ -1072,52 +1080,10 @@ CONFIG_USB_UHCI_HCD=y | |||
1072 | # CONFIG_USB_LIBUSUAL is not set | 1080 | # CONFIG_USB_LIBUSUAL is not set |
1073 | 1081 | ||
1074 | # | 1082 | # |
1075 | # USB Input Devices | ||
1076 | # | ||
1077 | CONFIG_USB_HID=y | ||
1078 | CONFIG_USB_HIDINPUT=y | ||
1079 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
1080 | # CONFIG_HID_FF is not set | ||
1081 | # CONFIG_USB_HIDDEV is not set | ||
1082 | # CONFIG_USB_AIPTEK is not set | ||
1083 | # CONFIG_USB_WACOM is not set | ||
1084 | # CONFIG_USB_ACECAD is not set | ||
1085 | # CONFIG_USB_KBTAB is not set | ||
1086 | # CONFIG_USB_POWERMATE is not set | ||
1087 | # CONFIG_USB_MTOUCH is not set | ||
1088 | # CONFIG_USB_ITMTOUCH is not set | ||
1089 | # CONFIG_USB_EGALAX is not set | ||
1090 | # CONFIG_USB_YEALINK is not set | ||
1091 | # CONFIG_USB_XPAD is not set | ||
1092 | # CONFIG_USB_ATI_REMOTE is not set | ||
1093 | # CONFIG_USB_ATI_REMOTE2 is not set | ||
1094 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
1095 | # CONFIG_USB_APPLETOUCH is not set | ||
1096 | |||
1097 | # | ||
1098 | # USB Imaging devices | 1083 | # USB Imaging devices |
1099 | # | 1084 | # |
1100 | # CONFIG_USB_MDC800 is not set | 1085 | # CONFIG_USB_MDC800 is not set |
1101 | # CONFIG_USB_MICROTEK is not set | 1086 | # CONFIG_USB_MICROTEK is not set |
1102 | |||
1103 | # | ||
1104 | # USB Multimedia devices | ||
1105 | # | ||
1106 | # CONFIG_USB_DABUSB is not set | ||
1107 | |||
1108 | # | ||
1109 | # Video4Linux support is needed for USB Multimedia device support | ||
1110 | # | ||
1111 | |||
1112 | # | ||
1113 | # USB Network Adapters | ||
1114 | # | ||
1115 | # CONFIG_USB_CATC is not set | ||
1116 | # CONFIG_USB_KAWETH is not set | ||
1117 | # CONFIG_USB_PEGASUS is not set | ||
1118 | # CONFIG_USB_RTL8150 is not set | ||
1119 | # CONFIG_USB_USBNET is not set | ||
1120 | # CONFIG_USB_ZD1201 is not set | ||
1121 | CONFIG_USB_MON=y | 1087 | CONFIG_USB_MON=y |
1122 | 1088 | ||
1123 | # | 1089 | # |
@@ -1135,16 +1101,22 @@ CONFIG_USB_MON=y | |||
1135 | # | 1101 | # |
1136 | # CONFIG_USB_EMI62 is not set | 1102 | # CONFIG_USB_EMI62 is not set |
1137 | # CONFIG_USB_EMI26 is not set | 1103 | # CONFIG_USB_EMI26 is not set |
1104 | # CONFIG_USB_ADUTUX is not set | ||
1138 | # CONFIG_USB_AUERSWALD is not set | 1105 | # CONFIG_USB_AUERSWALD is not set |
1139 | # CONFIG_USB_RIO500 is not set | 1106 | # CONFIG_USB_RIO500 is not set |
1140 | # CONFIG_USB_LEGOTOWER is not set | 1107 | # CONFIG_USB_LEGOTOWER is not set |
1141 | # CONFIG_USB_LCD is not set | 1108 | # CONFIG_USB_LCD is not set |
1109 | # CONFIG_USB_BERRY_CHARGE is not set | ||
1142 | # CONFIG_USB_LED is not set | 1110 | # CONFIG_USB_LED is not set |
1111 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
1143 | # CONFIG_USB_CYTHERM is not set | 1112 | # CONFIG_USB_CYTHERM is not set |
1144 | # CONFIG_USB_PHIDGETKIT is not set | 1113 | # CONFIG_USB_PHIDGET is not set |
1145 | # CONFIG_USB_PHIDGETSERVO is not set | ||
1146 | # CONFIG_USB_IDMOUSE is not set | 1114 | # CONFIG_USB_IDMOUSE is not set |
1115 | # CONFIG_USB_FTDI_ELAN is not set | ||
1116 | # CONFIG_USB_APPLEDISPLAY is not set | ||
1147 | # CONFIG_USB_LD is not set | 1117 | # CONFIG_USB_LD is not set |
1118 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1119 | # CONFIG_USB_IOWARRIOR is not set | ||
1148 | # CONFIG_USB_TEST is not set | 1120 | # CONFIG_USB_TEST is not set |
1149 | 1121 | ||
1150 | # | 1122 | # |
@@ -1155,20 +1127,29 @@ CONFIG_USB_MON=y | |||
1155 | # USB Gadget Support | 1127 | # USB Gadget Support |
1156 | # | 1128 | # |
1157 | # CONFIG_USB_GADGET is not set | 1129 | # CONFIG_USB_GADGET is not set |
1130 | # CONFIG_MMC is not set | ||
1131 | # CONFIG_NEW_LEDS is not set | ||
1132 | # CONFIG_INFINIBAND is not set | ||
1133 | # CONFIG_RTC_CLASS is not set | ||
1158 | 1134 | ||
1159 | # | 1135 | # |
1160 | # MMC/SD Card support | 1136 | # DMA Engine support |
1161 | # | 1137 | # |
1162 | # CONFIG_MMC is not set | 1138 | # CONFIG_DMA_ENGINE is not set |
1163 | 1139 | ||
1164 | # | 1140 | # |
1165 | # InfiniBand support | 1141 | # DMA Clients |
1166 | # | 1142 | # |
1167 | # CONFIG_INFINIBAND is not set | ||
1168 | 1143 | ||
1169 | # | 1144 | # |
1170 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 1145 | # DMA Devices |
1146 | # | ||
1147 | # CONFIG_AUXDISPLAY is not set | ||
1148 | |||
1149 | # | ||
1150 | # Userspace I/O | ||
1171 | # | 1151 | # |
1152 | # CONFIG_UIO is not set | ||
1172 | 1153 | ||
1173 | # | 1154 | # |
1174 | # File systems | 1155 | # File systems |
@@ -1178,16 +1159,19 @@ CONFIG_EXT2_FS=y | |||
1178 | # CONFIG_EXT2_FS_XIP is not set | 1159 | # CONFIG_EXT2_FS_XIP is not set |
1179 | CONFIG_EXT3_FS=y | 1160 | CONFIG_EXT3_FS=y |
1180 | # CONFIG_EXT3_FS_XATTR is not set | 1161 | # CONFIG_EXT3_FS_XATTR is not set |
1162 | # CONFIG_EXT4DEV_FS is not set | ||
1181 | CONFIG_JBD=y | 1163 | CONFIG_JBD=y |
1182 | # CONFIG_JBD_DEBUG is not set | 1164 | # CONFIG_JBD_DEBUG is not set |
1183 | # CONFIG_REISERFS_FS is not set | 1165 | # CONFIG_REISERFS_FS is not set |
1184 | # CONFIG_JFS_FS is not set | 1166 | # CONFIG_JFS_FS is not set |
1185 | CONFIG_FS_POSIX_ACL=y | 1167 | CONFIG_FS_POSIX_ACL=y |
1186 | # CONFIG_XFS_FS is not set | 1168 | # CONFIG_XFS_FS is not set |
1169 | # CONFIG_GFS2_FS is not set | ||
1187 | # CONFIG_OCFS2_FS is not set | 1170 | # CONFIG_OCFS2_FS is not set |
1188 | # CONFIG_MINIX_FS is not set | 1171 | # CONFIG_MINIX_FS is not set |
1189 | # CONFIG_ROMFS_FS is not set | 1172 | # CONFIG_ROMFS_FS is not set |
1190 | CONFIG_INOTIFY=y | 1173 | CONFIG_INOTIFY=y |
1174 | CONFIG_INOTIFY_USER=y | ||
1191 | # CONFIG_QUOTA is not set | 1175 | # CONFIG_QUOTA is not set |
1192 | CONFIG_DNOTIFY=y | 1176 | CONFIG_DNOTIFY=y |
1193 | CONFIG_AUTOFS_FS=y | 1177 | CONFIG_AUTOFS_FS=y |
@@ -1217,11 +1201,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
1217 | # | 1201 | # |
1218 | CONFIG_PROC_FS=y | 1202 | CONFIG_PROC_FS=y |
1219 | CONFIG_PROC_KCORE=y | 1203 | CONFIG_PROC_KCORE=y |
1204 | CONFIG_PROC_SYSCTL=y | ||
1220 | CONFIG_SYSFS=y | 1205 | CONFIG_SYSFS=y |
1221 | CONFIG_TMPFS=y | 1206 | CONFIG_TMPFS=y |
1207 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1222 | # CONFIG_HUGETLB_PAGE is not set | 1208 | # CONFIG_HUGETLB_PAGE is not set |
1223 | CONFIG_RAMFS=y | 1209 | CONFIG_RAMFS=y |
1224 | # CONFIG_RELAYFS_FS is not set | ||
1225 | # CONFIG_CONFIGFS_FS is not set | 1210 | # CONFIG_CONFIGFS_FS is not set |
1226 | 1211 | ||
1227 | # | 1212 | # |
@@ -1229,6 +1214,7 @@ CONFIG_RAMFS=y | |||
1229 | # | 1214 | # |
1230 | # CONFIG_ADFS_FS is not set | 1215 | # CONFIG_ADFS_FS is not set |
1231 | # CONFIG_AFFS_FS is not set | 1216 | # CONFIG_AFFS_FS is not set |
1217 | # CONFIG_ECRYPT_FS is not set | ||
1232 | # CONFIG_HFS_FS is not set | 1218 | # CONFIG_HFS_FS is not set |
1233 | # CONFIG_HFSPLUS_FS is not set | 1219 | # CONFIG_HFSPLUS_FS is not set |
1234 | # CONFIG_BEFS_FS is not set | 1220 | # CONFIG_BEFS_FS is not set |
@@ -1261,6 +1247,7 @@ CONFIG_EXPORTFS=y | |||
1261 | CONFIG_NFS_COMMON=y | 1247 | CONFIG_NFS_COMMON=y |
1262 | CONFIG_SUNRPC=y | 1248 | CONFIG_SUNRPC=y |
1263 | CONFIG_SUNRPC_GSS=y | 1249 | CONFIG_SUNRPC_GSS=y |
1250 | # CONFIG_SUNRPC_BIND34 is not set | ||
1264 | CONFIG_RPCSEC_GSS_KRB5=y | 1251 | CONFIG_RPCSEC_GSS_KRB5=y |
1265 | CONFIG_RPCSEC_GSS_SPKM3=m | 1252 | CONFIG_RPCSEC_GSS_SPKM3=m |
1266 | CONFIG_SMB_FS=m | 1253 | CONFIG_SMB_FS=m |
@@ -1268,12 +1255,13 @@ CONFIG_SMB_NLS_DEFAULT=y | |||
1268 | CONFIG_SMB_NLS_REMOTE="cp437" | 1255 | CONFIG_SMB_NLS_REMOTE="cp437" |
1269 | CONFIG_CIFS=m | 1256 | CONFIG_CIFS=m |
1270 | # CONFIG_CIFS_STATS is not set | 1257 | # CONFIG_CIFS_STATS is not set |
1258 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
1271 | # CONFIG_CIFS_XATTR is not set | 1259 | # CONFIG_CIFS_XATTR is not set |
1260 | # CONFIG_CIFS_DEBUG2 is not set | ||
1272 | # CONFIG_CIFS_EXPERIMENTAL is not set | 1261 | # CONFIG_CIFS_EXPERIMENTAL is not set |
1273 | # CONFIG_NCP_FS is not set | 1262 | # CONFIG_NCP_FS is not set |
1274 | # CONFIG_CODA_FS is not set | 1263 | # CONFIG_CODA_FS is not set |
1275 | # CONFIG_AFS_FS is not set | 1264 | # CONFIG_AFS_FS is not set |
1276 | # CONFIG_9P_FS is not set | ||
1277 | 1265 | ||
1278 | # | 1266 | # |
1279 | # Partition Types | 1267 | # Partition Types |
@@ -1326,6 +1314,11 @@ CONFIG_NLS_KOI8_U=m | |||
1326 | CONFIG_NLS_UTF8=y | 1314 | CONFIG_NLS_UTF8=y |
1327 | 1315 | ||
1328 | # | 1316 | # |
1317 | # Distributed Lock Manager | ||
1318 | # | ||
1319 | # CONFIG_DLM is not set | ||
1320 | |||
1321 | # | ||
1329 | # Profiling support | 1322 | # Profiling support |
1330 | # | 1323 | # |
1331 | CONFIG_PROFILING=y | 1324 | CONFIG_PROFILING=y |
@@ -1335,21 +1328,32 @@ CONFIG_OPROFILE=m | |||
1335 | # Kernel hacking | 1328 | # Kernel hacking |
1336 | # | 1329 | # |
1337 | # CONFIG_PRINTK_TIME is not set | 1330 | # CONFIG_PRINTK_TIME is not set |
1331 | CONFIG_ENABLE_MUST_CHECK=y | ||
1338 | CONFIG_MAGIC_SYSRQ=y | 1332 | CONFIG_MAGIC_SYSRQ=y |
1333 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1334 | # CONFIG_DEBUG_FS is not set | ||
1335 | CONFIG_HEADERS_CHECK=y | ||
1339 | CONFIG_DEBUG_KERNEL=y | 1336 | CONFIG_DEBUG_KERNEL=y |
1340 | CONFIG_LOG_BUF_SHIFT=16 | 1337 | # CONFIG_DEBUG_SHIRQ is not set |
1341 | CONFIG_DETECT_SOFTLOCKUP=y | 1338 | CONFIG_DETECT_SOFTLOCKUP=y |
1339 | CONFIG_SCHED_DEBUG=y | ||
1342 | # CONFIG_SCHEDSTATS is not set | 1340 | # CONFIG_SCHEDSTATS is not set |
1341 | # CONFIG_TIMER_STATS is not set | ||
1343 | # CONFIG_DEBUG_SLAB is not set | 1342 | # CONFIG_DEBUG_SLAB is not set |
1344 | CONFIG_DEBUG_MUTEXES=y | 1343 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1344 | # CONFIG_RT_MUTEX_TESTER is not set | ||
1345 | # CONFIG_DEBUG_SPINLOCK is not set | 1345 | # CONFIG_DEBUG_SPINLOCK is not set |
1346 | CONFIG_DEBUG_MUTEXES=y | ||
1346 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1347 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1348 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
1347 | # CONFIG_DEBUG_KOBJECT is not set | 1349 | # CONFIG_DEBUG_KOBJECT is not set |
1350 | CONFIG_DEBUG_BUGVERBOSE=y | ||
1348 | # CONFIG_DEBUG_INFO is not set | 1351 | # CONFIG_DEBUG_INFO is not set |
1349 | # CONFIG_DEBUG_FS is not set | ||
1350 | # CONFIG_DEBUG_VM is not set | 1352 | # CONFIG_DEBUG_VM is not set |
1353 | # CONFIG_DEBUG_LIST is not set | ||
1351 | CONFIG_FORCED_INLINING=y | 1354 | CONFIG_FORCED_INLINING=y |
1352 | # CONFIG_RCU_TORTURE_TEST is not set | 1355 | # CONFIG_RCU_TORTURE_TEST is not set |
1356 | # CONFIG_FAULT_INJECTION is not set | ||
1353 | # CONFIG_DEBUG_RODATA is not set | 1357 | # CONFIG_DEBUG_RODATA is not set |
1354 | 1358 | ||
1355 | # | 1359 | # |
@@ -1358,12 +1362,13 @@ CONFIG_FORCED_INLINING=y | |||
1358 | CONFIG_KEYS=y | 1362 | CONFIG_KEYS=y |
1359 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | 1363 | CONFIG_KEYS_DEBUG_PROC_KEYS=y |
1360 | # CONFIG_SECURITY is not set | 1364 | # CONFIG_SECURITY is not set |
1361 | |||
1362 | # | ||
1363 | # Cryptographic options | ||
1364 | # | ||
1365 | CONFIG_CRYPTO=y | 1365 | CONFIG_CRYPTO=y |
1366 | CONFIG_CRYPTO_ALGAPI=y | ||
1367 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1368 | CONFIG_CRYPTO_HASH=y | ||
1369 | CONFIG_CRYPTO_MANAGER=y | ||
1366 | CONFIG_CRYPTO_HMAC=y | 1370 | CONFIG_CRYPTO_HMAC=y |
1371 | # CONFIG_CRYPTO_XCBC is not set | ||
1367 | CONFIG_CRYPTO_NULL=m | 1372 | CONFIG_CRYPTO_NULL=m |
1368 | CONFIG_CRYPTO_MD4=m | 1373 | CONFIG_CRYPTO_MD4=m |
1369 | CONFIG_CRYPTO_MD5=y | 1374 | CONFIG_CRYPTO_MD5=y |
@@ -1372,9 +1377,18 @@ CONFIG_CRYPTO_SHA256=m | |||
1372 | CONFIG_CRYPTO_SHA512=m | 1377 | CONFIG_CRYPTO_SHA512=m |
1373 | CONFIG_CRYPTO_WP512=m | 1378 | CONFIG_CRYPTO_WP512=m |
1374 | CONFIG_CRYPTO_TGR192=m | 1379 | CONFIG_CRYPTO_TGR192=m |
1380 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1381 | # CONFIG_CRYPTO_ECB is not set | ||
1382 | CONFIG_CRYPTO_CBC=y | ||
1383 | # CONFIG_CRYPTO_PCBC is not set | ||
1384 | # CONFIG_CRYPTO_LRW is not set | ||
1385 | # CONFIG_CRYPTO_XTS is not set | ||
1386 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1375 | CONFIG_CRYPTO_DES=y | 1387 | CONFIG_CRYPTO_DES=y |
1388 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1376 | CONFIG_CRYPTO_BLOWFISH=m | 1389 | CONFIG_CRYPTO_BLOWFISH=m |
1377 | CONFIG_CRYPTO_TWOFISH=m | 1390 | CONFIG_CRYPTO_TWOFISH=m |
1391 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1378 | CONFIG_CRYPTO_SERPENT=m | 1392 | CONFIG_CRYPTO_SERPENT=m |
1379 | CONFIG_CRYPTO_AES=m | 1393 | CONFIG_CRYPTO_AES=m |
1380 | CONFIG_CRYPTO_CAST5=m | 1394 | CONFIG_CRYPTO_CAST5=m |
@@ -1383,21 +1397,28 @@ CONFIG_CRYPTO_TEA=m | |||
1383 | CONFIG_CRYPTO_ARC4=m | 1397 | CONFIG_CRYPTO_ARC4=m |
1384 | CONFIG_CRYPTO_KHAZAD=m | 1398 | CONFIG_CRYPTO_KHAZAD=m |
1385 | CONFIG_CRYPTO_ANUBIS=m | 1399 | CONFIG_CRYPTO_ANUBIS=m |
1400 | # CONFIG_CRYPTO_SEED is not set | ||
1386 | CONFIG_CRYPTO_DEFLATE=y | 1401 | CONFIG_CRYPTO_DEFLATE=y |
1387 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1402 | CONFIG_CRYPTO_MICHAEL_MIC=m |
1388 | CONFIG_CRYPTO_CRC32C=m | 1403 | CONFIG_CRYPTO_CRC32C=m |
1404 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1389 | CONFIG_CRYPTO_TEST=m | 1405 | CONFIG_CRYPTO_TEST=m |
1390 | 1406 | # CONFIG_CRYPTO_AUTHENC is not set | |
1391 | # | 1407 | # CONFIG_CRYPTO_HW is not set |
1392 | # Hardware crypto devices | ||
1393 | # | ||
1394 | 1408 | ||
1395 | # | 1409 | # |
1396 | # Library routines | 1410 | # Library routines |
1397 | # | 1411 | # |
1412 | CONFIG_BITREVERSE=y | ||
1398 | CONFIG_CRC_CCITT=m | 1413 | CONFIG_CRC_CCITT=m |
1399 | # CONFIG_CRC16 is not set | 1414 | # CONFIG_CRC16 is not set |
1415 | # CONFIG_CRC_ITU_T is not set | ||
1400 | CONFIG_CRC32=y | 1416 | CONFIG_CRC32=y |
1417 | # CONFIG_CRC7 is not set | ||
1401 | CONFIG_LIBCRC32C=m | 1418 | CONFIG_LIBCRC32C=m |
1402 | CONFIG_ZLIB_INFLATE=y | 1419 | CONFIG_ZLIB_INFLATE=y |
1403 | CONFIG_ZLIB_DEFLATE=y | 1420 | CONFIG_ZLIB_DEFLATE=y |
1421 | CONFIG_PLIST=y | ||
1422 | CONFIG_HAS_IOMEM=y | ||
1423 | CONFIG_HAS_IOPORT=y | ||
1424 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/parisc/hpux/gate.S b/arch/parisc/hpux/gate.S index 0b9d5b1e4b37..38a1c1b8d4e8 100644 --- a/arch/parisc/hpux/gate.S +++ b/arch/parisc/hpux/gate.S | |||
@@ -20,7 +20,7 @@ | |||
20 | .import hpux_call_table | 20 | .import hpux_call_table |
21 | .import hpux_syscall_exit,code | 21 | .import hpux_syscall_exit,code |
22 | 22 | ||
23 | .align 4096 | 23 | .align PAGE_SIZE |
24 | ENTRY(hpux_gateway_page) | 24 | ENTRY(hpux_gateway_page) |
25 | nop | 25 | nop |
26 | #ifdef CONFIG_64BIT | 26 | #ifdef CONFIG_64BIT |
@@ -103,5 +103,5 @@ syscall_nosys: | |||
103 | ldo -ENOSYS(%r0),%r28 | 103 | ldo -ENOSYS(%r0),%r28 |
104 | ENDPROC(hpux_gateway_page) | 104 | ENDPROC(hpux_gateway_page) |
105 | 105 | ||
106 | .align 4096 | 106 | .align PAGE_SIZE |
107 | ENTRY(end_hpux_gateway_page) | 107 | ENTRY(end_hpux_gateway_page) |
diff --git a/arch/parisc/kernel/asm-offsets.c b/arch/parisc/kernel/asm-offsets.c index d3b7917a87cb..eaa79bc14d94 100644 --- a/arch/parisc/kernel/asm-offsets.c +++ b/arch/parisc/kernel/asm-offsets.c | |||
@@ -290,9 +290,6 @@ int main(void) | |||
290 | DEFINE(ASM_PTE_ENTRY_SIZE, PTE_ENTRY_SIZE); | 290 | DEFINE(ASM_PTE_ENTRY_SIZE, PTE_ENTRY_SIZE); |
291 | DEFINE(ASM_PFN_PTE_SHIFT, PFN_PTE_SHIFT); | 291 | DEFINE(ASM_PFN_PTE_SHIFT, PFN_PTE_SHIFT); |
292 | DEFINE(ASM_PT_INITIAL, PT_INITIAL); | 292 | DEFINE(ASM_PT_INITIAL, PT_INITIAL); |
293 | DEFINE(ASM_PAGE_SIZE, PAGE_SIZE); | ||
294 | DEFINE(ASM_PAGE_SIZE_DIV64, PAGE_SIZE/64); | ||
295 | DEFINE(ASM_PAGE_SIZE_DIV128, PAGE_SIZE/128); | ||
296 | BLANK(); | 293 | BLANK(); |
297 | DEFINE(EXCDATA_IP, offsetof(struct exception_data, fault_ip)); | 294 | DEFINE(EXCDATA_IP, offsetof(struct exception_data, fault_ip)); |
298 | DEFINE(EXCDATA_SPACE, offsetof(struct exception_data, fault_space)); | 295 | DEFINE(EXCDATA_SPACE, offsetof(struct exception_data, fault_space)); |
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 42598abf4576..111d47284eac 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
@@ -98,7 +98,6 @@ | |||
98 | * The "get_stack" macros are responsible for determining the | 98 | * The "get_stack" macros are responsible for determining the |
99 | * kernel stack value. | 99 | * kernel stack value. |
100 | * | 100 | * |
101 | * For Faults: | ||
102 | * If sr7 == 0 | 101 | * If sr7 == 0 |
103 | * Already using a kernel stack, so call the | 102 | * Already using a kernel stack, so call the |
104 | * get_stack_use_r30 macro to push a pt_regs structure | 103 | * get_stack_use_r30 macro to push a pt_regs structure |
@@ -110,26 +109,6 @@ | |||
110 | * task pointer pointed to by cr30. Set the stack | 109 | * task pointer pointed to by cr30. Set the stack |
111 | * pointer to point to the end of the task structure. | 110 | * pointer to point to the end of the task structure. |
112 | * | 111 | * |
113 | * For Interrupts: | ||
114 | * If sr7 == 0 | ||
115 | * Already using a kernel stack, check to see if r30 | ||
116 | * is already pointing to the per processor interrupt | ||
117 | * stack. If it is, call the get_stack_use_r30 macro | ||
118 | * to push a pt_regs structure on the stack, and store | ||
119 | * registers there. Otherwise, call get_stack_use_cr31 | ||
120 | * to get a pointer to the base of the interrupt stack | ||
121 | * and push a pt_regs structure on that stack. | ||
122 | * else | ||
123 | * Need to set up a kernel stack, so call the | ||
124 | * get_stack_use_cr30 macro to set up a pointer | ||
125 | * to the pt_regs structure contained within the | ||
126 | * task pointer pointed to by cr30. Set the stack | ||
127 | * pointer to point to the end of the task structure. | ||
128 | * N.B: We don't use the interrupt stack for the | ||
129 | * first interrupt from userland, because signals/ | ||
130 | * resched's are processed when returning to userland, | ||
131 | * and we can sleep in those cases. | ||
132 | * | ||
133 | * Note that we use shadowed registers for temps until | 112 | * Note that we use shadowed registers for temps until |
134 | * we can save %r26 and %r29. %r26 is used to preserve | 113 | * we can save %r26 and %r29. %r26 is used to preserve |
135 | * %r8 (a shadowed register) which temporarily contained | 114 | * %r8 (a shadowed register) which temporarily contained |
@@ -652,7 +631,7 @@ | |||
652 | 631 | ||
653 | .text | 632 | .text |
654 | 633 | ||
655 | .align 4096 | 634 | .align PAGE_SIZE |
656 | 635 | ||
657 | ENTRY(fault_vector_20) | 636 | ENTRY(fault_vector_20) |
658 | /* First vector is invalid (0) */ | 637 | /* First vector is invalid (0) */ |
@@ -904,7 +883,7 @@ ENDPROC(_switch_to) | |||
904 | * | 883 | * |
905 | */ | 884 | */ |
906 | 885 | ||
907 | .align 4096 | 886 | .align PAGE_SIZE |
908 | 887 | ||
909 | ENTRY(syscall_exit_rfi) | 888 | ENTRY(syscall_exit_rfi) |
910 | mfctl %cr30,%r16 | 889 | mfctl %cr30,%r16 |
@@ -1086,23 +1065,13 @@ intr_do_preempt: | |||
1086 | 1065 | ||
1087 | intr_extint: | 1066 | intr_extint: |
1088 | CMPIB=,n 0,%r16,1f | 1067 | CMPIB=,n 0,%r16,1f |
1068 | |||
1089 | get_stack_use_cr30 | 1069 | get_stack_use_cr30 |
1090 | b,n 3f | 1070 | b,n 2f |
1091 | 1071 | ||
1092 | 1: | 1072 | 1: |
1093 | #if 0 /* Interrupt Stack support not working yet! */ | ||
1094 | mfctl %cr31,%r1 | ||
1095 | copy %r30,%r17 | ||
1096 | /* FIXME! depi below has hardcoded idea of interrupt stack size (32k)*/ | ||
1097 | DEPI 0,31,15,%r17 | ||
1098 | CMPB=,n %r1,%r17,2f | ||
1099 | get_stack_use_cr31 | ||
1100 | b,n 3f | ||
1101 | #endif | ||
1102 | 2: | ||
1103 | get_stack_use_r30 | 1073 | get_stack_use_r30 |
1104 | 1074 | 2: | |
1105 | 3: | ||
1106 | save_specials %r29 | 1075 | save_specials %r29 |
1107 | virt_map | 1076 | virt_map |
1108 | save_general %r29 | 1077 | save_general %r29 |
diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S index 9676c486bb63..a7b8859488bb 100644 --- a/arch/parisc/kernel/head.S +++ b/arch/parisc/kernel/head.S | |||
@@ -95,7 +95,7 @@ $bss_loop: | |||
95 | 95 | ||
96 | 1: | 96 | 1: |
97 | stw %r3,0(%r4) | 97 | stw %r3,0(%r4) |
98 | ldo (ASM_PAGE_SIZE >> PxD_VALUE_SHIFT)(%r3),%r3 | 98 | ldo (PAGE_SIZE >> PxD_VALUE_SHIFT)(%r3),%r3 |
99 | addib,> -1,%r1,1b | 99 | addib,> -1,%r1,1b |
100 | #if PT_NLEVELS == 3 | 100 | #if PT_NLEVELS == 3 |
101 | ldo ASM_PMD_ENTRY_SIZE(%r4),%r4 | 101 | ldo ASM_PMD_ENTRY_SIZE(%r4),%r4 |
@@ -128,10 +128,6 @@ $pgt_fill_loop: | |||
128 | /* And the stack pointer too */ | 128 | /* And the stack pointer too */ |
129 | ldo THREAD_SZ_ALGN(%r6),%sp | 129 | ldo THREAD_SZ_ALGN(%r6),%sp |
130 | 130 | ||
131 | /* And the interrupt stack */ | ||
132 | load32 interrupt_stack,%r6 | ||
133 | mtctl %r6,%cr31 | ||
134 | |||
135 | #ifdef CONFIG_SMP | 131 | #ifdef CONFIG_SMP |
136 | /* Set the smp rendevous address into page zero. | 132 | /* Set the smp rendevous address into page zero. |
137 | ** It would be safer to do this in init_smp_config() but | 133 | ** It would be safer to do this in init_smp_config() but |
diff --git a/arch/parisc/kernel/hpmc.S b/arch/parisc/kernel/hpmc.S index 43b41df0b541..2cbf13b3ef11 100644 --- a/arch/parisc/kernel/hpmc.S +++ b/arch/parisc/kernel/hpmc.S | |||
@@ -55,13 +55,13 @@ | |||
55 | * IODC requires 7K byte stack. That leaves 1K byte for os_hpmc. | 55 | * IODC requires 7K byte stack. That leaves 1K byte for os_hpmc. |
56 | */ | 56 | */ |
57 | 57 | ||
58 | .align 4096 | 58 | .align PAGE_SIZE |
59 | hpmc_stack: | 59 | hpmc_stack: |
60 | .block 16384 | 60 | .block 16384 |
61 | 61 | ||
62 | #define HPMC_IODC_BUF_SIZE 0x8000 | 62 | #define HPMC_IODC_BUF_SIZE 0x8000 |
63 | 63 | ||
64 | .align 4096 | 64 | .align PAGE_SIZE |
65 | hpmc_iodc_buf: | 65 | hpmc_iodc_buf: |
66 | .block HPMC_IODC_BUF_SIZE | 66 | .block HPMC_IODC_BUF_SIZE |
67 | 67 | ||
diff --git a/arch/parisc/kernel/init_task.c b/arch/parisc/kernel/init_task.c index 446f98d3fd7b..26198a074d67 100644 --- a/arch/parisc/kernel/init_task.c +++ b/arch/parisc/kernel/init_task.c | |||
@@ -49,7 +49,6 @@ EXPORT_SYMBOL(init_mm); | |||
49 | * way process stacks are handled. This is done by having a special | 49 | * way process stacks are handled. This is done by having a special |
50 | * "init_task" linker map entry.. | 50 | * "init_task" linker map entry.. |
51 | */ | 51 | */ |
52 | unsigned char interrupt_stack[ISTACK_SIZE] __attribute__ ((section("init_istack"), aligned(4096))); | ||
53 | union thread_union init_thread_union | 52 | union thread_union init_thread_union |
54 | __attribute__((aligned(128))) __attribute__((__section__(".data.init_task"))) = | 53 | __attribute__((aligned(128))) __attribute__((__section__(".data.init_task"))) = |
55 | { INIT_THREAD_INFO(init_task) }; | 54 | { INIT_THREAD_INFO(init_task) }; |
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S index 90b240878520..5901092e0196 100644 --- a/arch/parisc/kernel/pacache.S +++ b/arch/parisc/kernel/pacache.S | |||
@@ -289,7 +289,7 @@ ENTRY(copy_user_page_asm) | |||
289 | */ | 289 | */ |
290 | 290 | ||
291 | ldd 0(%r25), %r19 | 291 | ldd 0(%r25), %r19 |
292 | ldi ASM_PAGE_SIZE_DIV128, %r1 | 292 | ldi (PAGE_SIZE / 128), %r1 |
293 | 293 | ||
294 | ldw 64(%r25), %r0 /* prefetch 1 cacheline ahead */ | 294 | ldw 64(%r25), %r0 /* prefetch 1 cacheline ahead */ |
295 | ldw 128(%r25), %r0 /* prefetch 2 */ | 295 | ldw 128(%r25), %r0 /* prefetch 2 */ |
@@ -355,7 +355,7 @@ ENTRY(copy_user_page_asm) | |||
355 | * use ldd/std on a 32 bit kernel. | 355 | * use ldd/std on a 32 bit kernel. |
356 | */ | 356 | */ |
357 | ldw 0(%r25), %r19 | 357 | ldw 0(%r25), %r19 |
358 | ldi ASM_PAGE_SIZE_DIV64, %r1 | 358 | ldi (PAGE_SIZE / 64), %r1 |
359 | 359 | ||
360 | 1: | 360 | 1: |
361 | ldw 4(%r25), %r20 | 361 | ldw 4(%r25), %r20 |
@@ -553,7 +553,7 @@ ENTRY(__clear_user_page_asm) | |||
553 | pdtlb 0(%r28) | 553 | pdtlb 0(%r28) |
554 | 554 | ||
555 | #ifdef CONFIG_64BIT | 555 | #ifdef CONFIG_64BIT |
556 | ldi ASM_PAGE_SIZE_DIV128, %r1 | 556 | ldi (PAGE_SIZE / 128), %r1 |
557 | 557 | ||
558 | /* PREFETCH (Write) has not (yet) been proven to help here */ | 558 | /* PREFETCH (Write) has not (yet) been proven to help here */ |
559 | /* #define PREFETCHW_OP ldd 256(%0), %r0 */ | 559 | /* #define PREFETCHW_OP ldd 256(%0), %r0 */ |
@@ -578,7 +578,7 @@ ENTRY(__clear_user_page_asm) | |||
578 | ldo 128(%r28), %r28 | 578 | ldo 128(%r28), %r28 |
579 | 579 | ||
580 | #else /* ! CONFIG_64BIT */ | 580 | #else /* ! CONFIG_64BIT */ |
581 | ldi ASM_PAGE_SIZE_DIV64, %r1 | 581 | ldi (PAGE_SIZE / 64), %r1 |
582 | 582 | ||
583 | 1: | 583 | 1: |
584 | stw %r0, 0(%r28) | 584 | stw %r0, 0(%r28) |
diff --git a/arch/parisc/kernel/parisc_ksyms.c b/arch/parisc/kernel/parisc_ksyms.c index 7aca704e96f0..671ee5b9950c 100644 --- a/arch/parisc/kernel/parisc_ksyms.c +++ b/arch/parisc/kernel/parisc_ksyms.c | |||
@@ -122,31 +122,9 @@ EXPORT_SYMBOL($$divI_12); | |||
122 | EXPORT_SYMBOL($$divI_14); | 122 | EXPORT_SYMBOL($$divI_14); |
123 | EXPORT_SYMBOL($$divI_15); | 123 | EXPORT_SYMBOL($$divI_15); |
124 | 124 | ||
125 | extern void __ashrdi3(void); | ||
126 | extern void __ashldi3(void); | ||
127 | extern void __lshrdi3(void); | ||
128 | extern void __muldi3(void); | ||
129 | |||
130 | EXPORT_SYMBOL(__ashrdi3); | ||
131 | EXPORT_SYMBOL(__ashldi3); | ||
132 | EXPORT_SYMBOL(__lshrdi3); | ||
133 | EXPORT_SYMBOL(__muldi3); | ||
134 | |||
135 | asmlinkage void * __canonicalize_funcptr_for_compare(void *); | 125 | asmlinkage void * __canonicalize_funcptr_for_compare(void *); |
136 | EXPORT_SYMBOL(__canonicalize_funcptr_for_compare); | 126 | EXPORT_SYMBOL(__canonicalize_funcptr_for_compare); |
137 | 127 | ||
138 | #ifdef CONFIG_64BIT | ||
139 | extern void __divdi3(void); | ||
140 | extern void __udivdi3(void); | ||
141 | extern void __umoddi3(void); | ||
142 | extern void __moddi3(void); | ||
143 | |||
144 | EXPORT_SYMBOL(__divdi3); | ||
145 | EXPORT_SYMBOL(__udivdi3); | ||
146 | EXPORT_SYMBOL(__umoddi3); | ||
147 | EXPORT_SYMBOL(__moddi3); | ||
148 | #endif | ||
149 | |||
150 | #ifndef CONFIG_64BIT | 128 | #ifndef CONFIG_64BIT |
151 | extern void $$dyncall(void); | 129 | extern void $$dyncall(void); |
152 | EXPORT_SYMBOL($$dyncall); | 130 | EXPORT_SYMBOL($$dyncall); |
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c index 23c1388df1f5..9448d4e91142 100644 --- a/arch/parisc/kernel/pci-dma.c +++ b/arch/parisc/kernel/pci-dma.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
26 | #include <linux/string.h> | 26 | #include <linux/string.h> |
27 | #include <linux/types.h> | 27 | #include <linux/types.h> |
28 | #include <linux/scatterlist.h> | ||
28 | 29 | ||
29 | #include <asm/cacheflush.h> | 30 | #include <asm/cacheflush.h> |
30 | #include <asm/dma.h> /* for DMA_CHUNK_SIZE */ | 31 | #include <asm/dma.h> /* for DMA_CHUNK_SIZE */ |
@@ -569,11 +570,10 @@ static void *fail_alloc_consistent(struct device *dev, size_t size, | |||
569 | static void *pa11_dma_alloc_noncoherent(struct device *dev, size_t size, | 570 | static void *pa11_dma_alloc_noncoherent(struct device *dev, size_t size, |
570 | dma_addr_t *dma_handle, gfp_t flag) | 571 | dma_addr_t *dma_handle, gfp_t flag) |
571 | { | 572 | { |
572 | void *addr = NULL; | 573 | void *addr; |
573 | 574 | ||
574 | /* rely on kmalloc to be cacheline aligned */ | 575 | addr = (void *)__get_free_pages(flag, get_order(size)); |
575 | addr = kmalloc(size, flag); | 576 | if (addr) |
576 | if(addr) | ||
577 | *dma_handle = (dma_addr_t)virt_to_phys(addr); | 577 | *dma_handle = (dma_addr_t)virt_to_phys(addr); |
578 | 578 | ||
579 | return addr; | 579 | return addr; |
@@ -582,7 +582,7 @@ static void *pa11_dma_alloc_noncoherent(struct device *dev, size_t size, | |||
582 | static void pa11_dma_free_noncoherent(struct device *dev, size_t size, | 582 | static void pa11_dma_free_noncoherent(struct device *dev, size_t size, |
583 | void *vaddr, dma_addr_t iova) | 583 | void *vaddr, dma_addr_t iova) |
584 | { | 584 | { |
585 | kfree(vaddr); | 585 | free_pages((unsigned long)vaddr, get_order(size)); |
586 | return; | 586 | return; |
587 | } | 587 | } |
588 | 588 | ||
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c index 563df0072dee..507d0ac99f66 100644 --- a/arch/parisc/kernel/pci.c +++ b/arch/parisc/kernel/pci.c | |||
@@ -194,37 +194,13 @@ void __init pcibios_init_bus(struct pci_bus *bus) | |||
194 | pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bridge_ctl); | 194 | pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bridge_ctl); |
195 | } | 195 | } |
196 | 196 | ||
197 | |||
198 | /* KLUGE: Link the child and parent resources - generic PCI didn't */ | ||
199 | static void | ||
200 | pcibios_link_hba_resources( struct resource *hba_res, struct resource *r) | ||
201 | { | ||
202 | if (!r->parent) { | ||
203 | printk(KERN_EMERG "PCI: resource not parented! [%p-%p]\n", | ||
204 | (void*) r->start, (void*) r->end); | ||
205 | r->parent = hba_res; | ||
206 | |||
207 | /* reverse link is harder *sigh* */ | ||
208 | if (r->parent->child) { | ||
209 | if (r->parent->sibling) { | ||
210 | struct resource *next = r->parent->sibling; | ||
211 | while (next->sibling) | ||
212 | next = next->sibling; | ||
213 | next->sibling = r; | ||
214 | } else { | ||
215 | r->parent->sibling = r; | ||
216 | } | ||
217 | } else | ||
218 | r->parent->child = r; | ||
219 | } | ||
220 | } | ||
221 | |||
222 | /* called by drivers/pci/setup-bus.c:pci_setup_bridge(). */ | 197 | /* called by drivers/pci/setup-bus.c:pci_setup_bridge(). */ |
223 | void __devinit pcibios_resource_to_bus(struct pci_dev *dev, | 198 | void __devinit pcibios_resource_to_bus(struct pci_dev *dev, |
224 | struct pci_bus_region *region, struct resource *res) | 199 | struct pci_bus_region *region, struct resource *res) |
225 | { | 200 | { |
226 | struct pci_bus *bus = dev->bus; | 201 | #ifdef CONFIG_64BIT |
227 | struct pci_hba_data *hba = HBA_DATA(bus->bridge->platform_data); | 202 | struct pci_hba_data *hba = HBA_DATA(dev->bus->bridge->platform_data); |
203 | #endif | ||
228 | 204 | ||
229 | if (res->flags & IORESOURCE_IO) { | 205 | if (res->flags & IORESOURCE_IO) { |
230 | /* | 206 | /* |
@@ -243,23 +219,15 @@ void __devinit pcibios_resource_to_bus(struct pci_dev *dev, | |||
243 | } | 219 | } |
244 | 220 | ||
245 | DBG_RES("pcibios_resource_to_bus(%02x %s [%lx,%lx])\n", | 221 | DBG_RES("pcibios_resource_to_bus(%02x %s [%lx,%lx])\n", |
246 | bus->number, res->flags & IORESOURCE_IO ? "IO" : "MEM", | 222 | dev->bus->number, res->flags & IORESOURCE_IO ? "IO" : "MEM", |
247 | region->start, region->end); | 223 | region->start, region->end); |
248 | |||
249 | /* KLUGE ALERT | ||
250 | ** if this resource isn't linked to a "parent", then it seems | ||
251 | ** to be a child of the HBA - lets link it in. | ||
252 | */ | ||
253 | pcibios_link_hba_resources(&hba->io_space, bus->resource[0]); | ||
254 | pcibios_link_hba_resources(&hba->lmmio_space, bus->resource[1]); | ||
255 | } | 224 | } |
256 | 225 | ||
257 | void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, | 226 | void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, |
258 | struct pci_bus_region *region) | 227 | struct pci_bus_region *region) |
259 | { | 228 | { |
260 | #ifdef CONFIG_64BIT | 229 | #ifdef CONFIG_64BIT |
261 | struct pci_bus *bus = dev->bus; | 230 | struct pci_hba_data *hba = HBA_DATA(dev->bus->bridge->platform_data); |
262 | struct pci_hba_data *hba = HBA_DATA(bus->bridge->platform_data); | ||
263 | #endif | 231 | #endif |
264 | 232 | ||
265 | if (res->flags & IORESOURCE_MEM) { | 233 | if (res->flags & IORESOURCE_MEM) { |
diff --git a/arch/parisc/kernel/processor.c b/arch/parisc/kernel/processor.c index 549f5484342c..370086fb8333 100644 --- a/arch/parisc/kernel/processor.c +++ b/arch/parisc/kernel/processor.c | |||
@@ -82,7 +82,12 @@ static int __cpuinit processor_probe(struct parisc_device *dev) | |||
82 | unsigned long cpuid; | 82 | unsigned long cpuid; |
83 | struct cpuinfo_parisc *p; | 83 | struct cpuinfo_parisc *p; |
84 | 84 | ||
85 | #ifndef CONFIG_SMP | 85 | #ifdef CONFIG_SMP |
86 | if (num_online_cpus() >= NR_CPUS) { | ||
87 | printk(KERN_INFO "num_online_cpus() >= NR_CPUS\n"); | ||
88 | return 1; | ||
89 | } | ||
90 | #else | ||
86 | if (boot_cpu_data.cpu_count > 0) { | 91 | if (boot_cpu_data.cpu_count > 0) { |
87 | printk(KERN_INFO "CONFIG_SMP=n ignoring additional CPUs\n"); | 92 | printk(KERN_INFO "CONFIG_SMP=n ignoring additional CPUs\n"); |
88 | return 1; | 93 | return 1; |
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index d7bc7bb42c94..85fc7754ec25 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
@@ -432,22 +432,10 @@ smp_cpu_init(int cpunum) | |||
432 | void __init smp_callin(void) | 432 | void __init smp_callin(void) |
433 | { | 433 | { |
434 | int slave_id = cpu_now_booting; | 434 | int slave_id = cpu_now_booting; |
435 | #if 0 | ||
436 | void *istack; | ||
437 | #endif | ||
438 | 435 | ||
439 | smp_cpu_init(slave_id); | 436 | smp_cpu_init(slave_id); |
440 | preempt_disable(); | 437 | preempt_disable(); |
441 | 438 | ||
442 | #if 0 /* NOT WORKING YET - see entry.S */ | ||
443 | istack = (void *)__get_free_pages(GFP_KERNEL,ISTACK_ORDER); | ||
444 | if (istack == NULL) { | ||
445 | printk(KERN_CRIT "Failed to allocate interrupt stack for cpu %d\n",slave_id); | ||
446 | BUG(); | ||
447 | } | ||
448 | mtctl(istack,31); | ||
449 | #endif | ||
450 | |||
451 | flush_cache_all_local(); /* start with known state */ | 439 | flush_cache_all_local(); /* start with known state */ |
452 | flush_tlb_all_local(NULL); | 440 | flush_tlb_all_local(NULL); |
453 | 441 | ||
diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c index 2989c6682bf6..50bbf33ee00c 100644 --- a/arch/parisc/kernel/sys_parisc32.c +++ b/arch/parisc/kernel/sys_parisc32.c | |||
@@ -473,3 +473,10 @@ long sys32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char __user *buf, | |||
473 | return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low, | 473 | return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low, |
474 | buf, len); | 474 | buf, len); |
475 | } | 475 | } |
476 | |||
477 | asmlinkage long compat_sys_fallocate(int fd, int mode, u32 offhi, u32 offlo, | ||
478 | u32 lenhi, u32 lenlo) | ||
479 | { | ||
480 | return sys_fallocate(fd, mode, ((loff_t)offhi << 32) | offlo, | ||
481 | ((loff_t)lenhi << 32) | lenlo); | ||
482 | } | ||
diff --git a/arch/parisc/kernel/syscall.S b/arch/parisc/kernel/syscall.S index 56f6231cb863..69b6eebc466e 100644 --- a/arch/parisc/kernel/syscall.S +++ b/arch/parisc/kernel/syscall.S | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <asm/asm-offsets.h> | 10 | #include <asm/asm-offsets.h> |
11 | #include <asm/unistd.h> | 11 | #include <asm/unistd.h> |
12 | #include <asm/errno.h> | 12 | #include <asm/errno.h> |
13 | #include <asm/page.h> | ||
13 | #include <asm/psw.h> | 14 | #include <asm/psw.h> |
14 | #include <asm/thread_info.h> | 15 | #include <asm/thread_info.h> |
15 | #include <asm/assembly.h> | 16 | #include <asm/assembly.h> |
@@ -38,7 +39,7 @@ | |||
38 | * pointers. | 39 | * pointers. |
39 | */ | 40 | */ |
40 | 41 | ||
41 | .align ASM_PAGE_SIZE | 42 | .align PAGE_SIZE |
42 | ENTRY(linux_gateway_page) | 43 | ENTRY(linux_gateway_page) |
43 | 44 | ||
44 | /* ADDRESS 0x00 to 0xb0 = 176 bytes / 4 bytes per insn = 44 insns */ | 45 | /* ADDRESS 0x00 to 0xb0 = 176 bytes / 4 bytes per insn = 44 insns */ |
@@ -597,7 +598,7 @@ cas_action: | |||
597 | 598 | ||
598 | 599 | ||
599 | /* Make sure nothing else is placed on this page */ | 600 | /* Make sure nothing else is placed on this page */ |
600 | .align ASM_PAGE_SIZE | 601 | .align PAGE_SIZE |
601 | END(linux_gateway_page) | 602 | END(linux_gateway_page) |
602 | ENTRY(end_linux_gateway_page) | 603 | ENTRY(end_linux_gateway_page) |
603 | 604 | ||
@@ -608,7 +609,7 @@ ENTRY(end_linux_gateway_page) | |||
608 | 609 | ||
609 | .section .rodata,"a" | 610 | .section .rodata,"a" |
610 | 611 | ||
611 | .align ASM_PAGE_SIZE | 612 | .align PAGE_SIZE |
612 | /* Light-weight-syscall table */ | 613 | /* Light-weight-syscall table */ |
613 | /* Start of lws table. */ | 614 | /* Start of lws table. */ |
614 | ENTRY(lws_table) | 615 | ENTRY(lws_table) |
@@ -617,13 +618,13 @@ ENTRY(lws_table) | |||
617 | END(lws_table) | 618 | END(lws_table) |
618 | /* End of lws table */ | 619 | /* End of lws table */ |
619 | 620 | ||
620 | .align ASM_PAGE_SIZE | 621 | .align PAGE_SIZE |
621 | ENTRY(sys_call_table) | 622 | ENTRY(sys_call_table) |
622 | #include "syscall_table.S" | 623 | #include "syscall_table.S" |
623 | END(sys_call_table) | 624 | END(sys_call_table) |
624 | 625 | ||
625 | #ifdef CONFIG_64BIT | 626 | #ifdef CONFIG_64BIT |
626 | .align ASM_PAGE_SIZE | 627 | .align PAGE_SIZE |
627 | ENTRY(sys_call_table64) | 628 | ENTRY(sys_call_table64) |
628 | #define SYSCALL_TABLE_64BIT | 629 | #define SYSCALL_TABLE_64BIT |
629 | #include "syscall_table.S" | 630 | #include "syscall_table.S" |
@@ -636,7 +637,7 @@ END(sys_call_table64) | |||
636 | will use this set of locks | 637 | will use this set of locks |
637 | */ | 638 | */ |
638 | .section .data | 639 | .section .data |
639 | .align 4096 | 640 | .align PAGE_SIZE |
640 | ENTRY(lws_lock_start) | 641 | ENTRY(lws_lock_start) |
641 | /* lws locks */ | 642 | /* lws locks */ |
642 | .align 16 | 643 | .align 16 |
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S index 2540786a970f..117438e9eb2a 100644 --- a/arch/parisc/kernel/syscall_table.S +++ b/arch/parisc/kernel/syscall_table.S | |||
@@ -403,6 +403,7 @@ | |||
403 | ENTRY_COMP(signalfd) | 403 | ENTRY_COMP(signalfd) |
404 | ENTRY_COMP(timerfd) | 404 | ENTRY_COMP(timerfd) |
405 | ENTRY_SAME(eventfd) | 405 | ENTRY_SAME(eventfd) |
406 | ENTRY_COMP(fallocate) /* 305 */ | ||
406 | 407 | ||
407 | /* Nothing yet */ | 408 | /* Nothing yet */ |
408 | 409 | ||
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c index 8b3062a5c812..24be86bba94d 100644 --- a/arch/parisc/kernel/time.c +++ b/arch/parisc/kernel/time.c | |||
@@ -189,16 +189,14 @@ static struct clocksource clocksource_cr16 = { | |||
189 | #ifdef CONFIG_SMP | 189 | #ifdef CONFIG_SMP |
190 | int update_cr16_clocksource(void) | 190 | int update_cr16_clocksource(void) |
191 | { | 191 | { |
192 | int change = 0; | ||
193 | |||
194 | /* since the cr16 cycle counters are not synchronized across CPUs, | 192 | /* since the cr16 cycle counters are not synchronized across CPUs, |
195 | we'll check if we should switch to a safe clocksource: */ | 193 | we'll check if we should switch to a safe clocksource: */ |
196 | if (clocksource_cr16.rating != 0 && num_online_cpus() > 1) { | 194 | if (clocksource_cr16.rating != 0 && num_online_cpus() > 1) { |
197 | clocksource_change_rating(&clocksource_cr16, 0); | 195 | clocksource_change_rating(&clocksource_cr16, 0); |
198 | change = 1; | 196 | return 1; |
199 | } | 197 | } |
200 | 198 | ||
201 | return change; | 199 | return 0; |
202 | } | 200 | } |
203 | #else | 201 | #else |
204 | int update_cr16_clocksource(void) | 202 | int update_cr16_clocksource(void) |
diff --git a/arch/parisc/kernel/unwind.c b/arch/parisc/kernel/unwind.c index cf780cb3b916..701b2d2d8882 100644 --- a/arch/parisc/kernel/unwind.c +++ b/arch/parisc/kernel/unwind.c | |||
@@ -209,8 +209,8 @@ static int unwind_init(void) | |||
209 | 209 | ||
210 | static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int frame_size) | 210 | static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int frame_size) |
211 | { | 211 | { |
212 | void handle_interruption(int, struct pt_regs *); | 212 | extern void handle_interruption(int, struct pt_regs *); |
213 | static unsigned long *hi = (unsigned long)&handle_interruption; | 213 | static unsigned long *hi = (unsigned long *)&handle_interruption; |
214 | 214 | ||
215 | if (pc == get_func_addr(hi)) { | 215 | if (pc == get_func_addr(hi)) { |
216 | struct pt_regs *regs = (struct pt_regs *)(info->sp - frame_size - PT_SZ_ALGN); | 216 | struct pt_regs *regs = (struct pt_regs *)(info->sp - frame_size - PT_SZ_ALGN); |
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S index ee7a16eb6fdd..40d0ff9b81ab 100644 --- a/arch/parisc/kernel/vmlinux.lds.S +++ b/arch/parisc/kernel/vmlinux.lds.S | |||
@@ -46,168 +46,211 @@ jiffies = jiffies_64; | |||
46 | #endif | 46 | #endif |
47 | SECTIONS | 47 | SECTIONS |
48 | { | 48 | { |
49 | . = KERNEL_BINARY_TEXT_START; | ||
49 | 50 | ||
50 | . = KERNEL_BINARY_TEXT_START; | 51 | _text = .; /* Text and read-only data */ |
51 | 52 | .text ALIGN(16) : { | |
52 | _text = .; /* Text and read-only data */ | 53 | TEXT_TEXT |
53 | .text ALIGN(16) : { | 54 | SCHED_TEXT |
54 | TEXT_TEXT | 55 | LOCK_TEXT |
55 | SCHED_TEXT | 56 | *(.text.do_softirq) |
56 | LOCK_TEXT | 57 | *(.text.sys_exit) |
57 | *(.text.do_softirq) | 58 | *(.text.do_sigaltstack) |
58 | *(.text.sys_exit) | 59 | *(.text.do_fork) |
59 | *(.text.do_sigaltstack) | 60 | *(.text.*) |
60 | *(.text.do_fork) | 61 | *(.fixup) |
61 | *(.text.*) | 62 | *(.lock.text) /* out-of-line lock text */ |
62 | *(.fixup) | 63 | *(.gnu.warning) |
63 | *(.lock.text) /* out-of-line lock text */ | ||
64 | *(.gnu.warning) | ||
65 | } = 0 | 64 | } = 0 |
65 | /* End of text section */ | ||
66 | _etext = .; | ||
66 | 67 | ||
67 | _etext = .; /* End of text section */ | 68 | RODATA |
69 | BUG_TABLE | ||
68 | 70 | ||
69 | RODATA | 71 | /* writeable */ |
70 | 72 | /* Make sure this is page aligned so | |
71 | BUG_TABLE | 73 | * that we can properly leave these |
72 | 74 | * as writable | |
73 | /* writeable */ | 75 | */ |
74 | . = ALIGN(ASM_PAGE_SIZE); /* Make sure this is page aligned so | 76 | . = ALIGN(PAGE_SIZE); |
75 | that we can properly leave these | 77 | data_start = .; |
76 | as writable */ | 78 | . = ALIGN(16); |
77 | data_start = .; | 79 | /* Exception table */ |
78 | 80 | __ex_table : { | |
79 | . = ALIGN(16); /* Exception table */ | 81 | __start___ex_table = .; |
80 | __start___ex_table = .; | 82 | *(__ex_table) |
81 | __ex_table : { *(__ex_table) } | 83 | __stop___ex_table = .; |
82 | __stop___ex_table = .; | 84 | } |
83 | 85 | ||
84 | NOTES | 86 | NOTES |
85 | 87 | ||
86 | __start___unwind = .; /* unwind info */ | 88 | /* unwind info */ |
87 | .PARISC.unwind : { *(.PARISC.unwind) } | 89 | .PARISC.unwind : { |
88 | __stop___unwind = .; | 90 | __start___unwind = .; |
91 | *(.PARISC.unwind) | ||
92 | __stop___unwind = .; | ||
93 | } | ||
89 | 94 | ||
90 | /* rarely changed data like cpu maps */ | 95 | /* rarely changed data like cpu maps */ |
91 | . = ALIGN(16); | 96 | . = ALIGN(16); |
92 | .data.read_mostly : { *(.data.read_mostly) } | 97 | .data.read_mostly : { |
98 | *(.data.read_mostly) | ||
99 | } | ||
93 | 100 | ||
94 | . = ALIGN(L1_CACHE_BYTES); | 101 | . = ALIGN(L1_CACHE_BYTES); |
95 | .data : { /* Data */ | 102 | /* Data */ |
96 | DATA_DATA | 103 | .data : { |
97 | CONSTRUCTORS | 104 | DATA_DATA |
105 | CONSTRUCTORS | ||
98 | } | 106 | } |
99 | 107 | ||
100 | . = ALIGN(L1_CACHE_BYTES); | 108 | . = ALIGN(L1_CACHE_BYTES); |
101 | .data.cacheline_aligned : { *(.data.cacheline_aligned) } | 109 | .data.cacheline_aligned : { |
110 | *(.data.cacheline_aligned) | ||
111 | } | ||
102 | 112 | ||
103 | /* PA-RISC locks requires 16-byte alignment */ | 113 | /* PA-RISC locks requires 16-byte alignment */ |
104 | . = ALIGN(16); | 114 | . = ALIGN(16); |
105 | .data.lock_aligned : { *(.data.lock_aligned) } | 115 | .data.lock_aligned : { |
116 | *(.data.lock_aligned) | ||
117 | } | ||
106 | 118 | ||
107 | . = ALIGN(ASM_PAGE_SIZE); | 119 | /* nosave data is really only used for software suspend...it's here |
108 | /* nosave data is really only used for software suspend...it's here | 120 | * just in case we ever implement it |
109 | * just in case we ever implement it */ | 121 | */ |
110 | __nosave_begin = .; | 122 | . = ALIGN(PAGE_SIZE); |
111 | .data_nosave : { *(.data.nosave) } | 123 | __nosave_begin = .; |
112 | . = ALIGN(ASM_PAGE_SIZE); | 124 | .data_nosave : { |
113 | __nosave_end = .; | 125 | *(.data.nosave) |
126 | } | ||
127 | . = ALIGN(PAGE_SIZE); | ||
128 | __nosave_end = .; | ||
114 | 129 | ||
115 | _edata = .; /* End of data section */ | 130 | /* End of data section */ |
131 | _edata = .; | ||
116 | 132 | ||
117 | __bss_start = .; /* BSS */ | 133 | /* BSS */ |
118 | /* page table entries need to be PAGE_SIZE aligned */ | 134 | __bss_start = .; |
119 | . = ALIGN(ASM_PAGE_SIZE); | 135 | /* page table entries need to be PAGE_SIZE aligned */ |
120 | .data.vmpages : { | 136 | . = ALIGN(PAGE_SIZE); |
121 | *(.data.vm0.pmd) | 137 | .data.vmpages : { |
122 | *(.data.vm0.pgd) | 138 | *(.data.vm0.pmd) |
123 | *(.data.vm0.pte) | 139 | *(.data.vm0.pgd) |
140 | *(.data.vm0.pte) | ||
124 | } | 141 | } |
125 | .bss : { *(.bss) *(COMMON) } | 142 | .bss : { |
126 | __bss_stop = .; | 143 | *(.bss) |
127 | 144 | *(COMMON) | |
145 | } | ||
146 | __bss_stop = .; | ||
128 | 147 | ||
129 | /* assembler code expects init_task to be 16k aligned */ | ||
130 | . = ALIGN(16384); /* init_task */ | ||
131 | .data.init_task : { *(.data.init_task) } | ||
132 | 148 | ||
133 | /* The interrupt stack is currently partially coded, but not yet | 149 | /* assembler code expects init_task to be 16k aligned */ |
134 | * implemented */ | 150 | . = ALIGN(16384); |
135 | . = ALIGN(16384); | 151 | /* init_task */ |
136 | init_istack : { *(init_istack) } | 152 | .data.init_task : { |
153 | *(.data.init_task) | ||
154 | } | ||
137 | 155 | ||
138 | #ifdef CONFIG_64BIT | 156 | #ifdef CONFIG_64BIT |
139 | . = ALIGN(16); /* Linkage tables */ | 157 | . = ALIGN(16); |
140 | .opd : { *(.opd) } PROVIDE (__gp = .); | 158 | /* Linkage tables */ |
141 | .plt : { *(.plt) } | 159 | .opd : { |
142 | .dlt : { *(.dlt) } | 160 | *(.opd) |
161 | } PROVIDE (__gp = .); | ||
162 | .plt : { | ||
163 | *(.plt) | ||
164 | } | ||
165 | .dlt : { | ||
166 | *(.dlt) | ||
167 | } | ||
143 | #endif | 168 | #endif |
144 | 169 | ||
145 | /* reserve space for interrupt stack by aligning __init* to 16k */ | 170 | /* reserve space for interrupt stack by aligning __init* to 16k */ |
146 | . = ALIGN(16384); | 171 | . = ALIGN(16384); |
147 | __init_begin = .; | 172 | __init_begin = .; |
148 | .init.text : { | 173 | .init.text : { |
149 | _sinittext = .; | 174 | _sinittext = .; |
150 | *(.init.text) | 175 | *(.init.text) |
151 | _einittext = .; | 176 | _einittext = .; |
152 | } | 177 | } |
153 | .init.data : { *(.init.data) } | 178 | .init.data : { |
154 | . = ALIGN(16); | 179 | *(.init.data) |
155 | __setup_start = .; | 180 | } |
156 | .init.setup : { *(.init.setup) } | 181 | . = ALIGN(16); |
157 | __setup_end = .; | 182 | .init.setup : { |
158 | __initcall_start = .; | 183 | __setup_start = .; |
159 | .initcall.init : { | 184 | *(.init.setup) |
160 | INITCALLS | 185 | __setup_end = .; |
161 | } | 186 | } |
162 | __initcall_end = .; | 187 | .initcall.init : { |
163 | __con_initcall_start = .; | 188 | __initcall_start = .; |
164 | .con_initcall.init : { *(.con_initcall.init) } | 189 | INITCALLS |
165 | __con_initcall_end = .; | 190 | __initcall_end = .; |
166 | SECURITY_INIT | 191 | } |
167 | /* alternate instruction replacement. This is a mechanism x86 uses | 192 | .con_initcall.init : { |
168 | * to detect the CPU type and replace generic instruction sequences | 193 | __con_initcall_start = .; |
169 | * with CPU specific ones. We don't currently do this in PA, but | 194 | *(.con_initcall.init) |
170 | * it seems like a good idea... */ | 195 | __con_initcall_end = .; |
171 | . = ALIGN(4); | 196 | } |
172 | __alt_instructions = .; | 197 | SECURITY_INIT |
173 | .altinstructions : { *(.altinstructions) } | 198 | |
174 | __alt_instructions_end = .; | 199 | /* alternate instruction replacement. This is a mechanism x86 uses |
175 | .altinstr_replacement : { *(.altinstr_replacement) } | 200 | * to detect the CPU type and replace generic instruction sequences |
176 | /* .exit.text is discard at runtime, not link time, to deal with references | 201 | * with CPU specific ones. We don't currently do this in PA, but |
177 | from .altinstructions and .eh_frame */ | 202 | * it seems like a good idea... |
178 | .exit.text : { *(.exit.text) } | 203 | */ |
179 | .exit.data : { *(.exit.data) } | 204 | . = ALIGN(4); |
205 | .altinstructions : { | ||
206 | __alt_instructions = .; | ||
207 | *(.altinstructions) | ||
208 | __alt_instructions_end = .; | ||
209 | } | ||
210 | .altinstr_replacement : { | ||
211 | *(.altinstr_replacement) | ||
212 | } | ||
213 | |||
214 | /* .exit.text is discard at runtime, not link time, to deal with references | ||
215 | * from .altinstructions and .eh_frame | ||
216 | */ | ||
217 | .exit.text : { | ||
218 | *(.exit.text) | ||
219 | } | ||
220 | .exit.data : { | ||
221 | *(.exit.data) | ||
222 | } | ||
180 | #ifdef CONFIG_BLK_DEV_INITRD | 223 | #ifdef CONFIG_BLK_DEV_INITRD |
181 | . = ALIGN(ASM_PAGE_SIZE); | 224 | . = ALIGN(PAGE_SIZE); |
182 | __initramfs_start = .; | 225 | .init.ramfs : { |
183 | .init.ramfs : { *(.init.ramfs) } | 226 | __initramfs_start = .; |
184 | __initramfs_end = .; | 227 | *(.init.ramfs) |
228 | __initramfs_end = .; | ||
229 | } | ||
185 | #endif | 230 | #endif |
186 | 231 | ||
187 | PERCPU(ASM_PAGE_SIZE) | 232 | PERCPU(PAGE_SIZE) |
233 | . = ALIGN(PAGE_SIZE); | ||
234 | __init_end = .; | ||
235 | /* freed after init ends here */ | ||
236 | _end = . ; | ||
188 | 237 | ||
189 | . = ALIGN(ASM_PAGE_SIZE); | 238 | /* Sections to be discarded */ |
190 | __init_end = .; | 239 | /DISCARD/ : { |
191 | /* freed after init ends here */ | 240 | *(.exitcall.exit) |
192 | |||
193 | _end = . ; | ||
194 | |||
195 | /* Sections to be discarded */ | ||
196 | /DISCARD/ : { | ||
197 | *(.exitcall.exit) | ||
198 | #ifdef CONFIG_64BIT | 241 | #ifdef CONFIG_64BIT |
199 | /* temporary hack until binutils is fixed to not emit these | 242 | /* temporary hack until binutils is fixed to not emit these |
200 | for static binaries */ | 243 | * for static binaries |
201 | *(.interp) | 244 | */ |
202 | *(.dynsym) | 245 | *(.interp) |
203 | *(.dynstr) | 246 | *(.dynsym) |
204 | *(.dynamic) | 247 | *(.dynstr) |
205 | *(.hash) | 248 | *(.dynamic) |
206 | *(.gnu.hash) | 249 | *(.hash) |
250 | *(.gnu.hash) | ||
207 | #endif | 251 | #endif |
208 | } | 252 | } |
209 | 253 | ||
210 | STABS_DEBUG | 254 | STABS_DEBUG |
211 | .note 0 : { *(.note) } | 255 | .note 0 : { *(.note) } |
212 | |||
213 | } | 256 | } |
diff --git a/arch/parisc/lib/Makefile b/arch/parisc/lib/Makefile index 5f2e6904d14a..7ce406c7daf5 100644 --- a/arch/parisc/lib/Makefile +++ b/arch/parisc/lib/Makefile | |||
@@ -4,4 +4,4 @@ | |||
4 | 4 | ||
5 | lib-y := lusercopy.o bitops.o checksum.o io.o memset.o fixup.o memcpy.o | 5 | lib-y := lusercopy.o bitops.o checksum.o io.o memset.o fixup.o memcpy.o |
6 | 6 | ||
7 | obj-y := iomap.o | 7 | obj-y := libgcc/ milli/ iomap.o |
diff --git a/arch/parisc/lib/libgcc/Makefile b/arch/parisc/lib/libgcc/Makefile new file mode 100644 index 000000000000..b67a85ad9c87 --- /dev/null +++ b/arch/parisc/lib/libgcc/Makefile | |||
@@ -0,0 +1,4 @@ | |||
1 | obj-y := __ashldi3.o __ashrdi3.o __clzsi2.o __divdi3.o __divsi3.o \ | ||
2 | __lshrdi3.o __moddi3.o __modsi3.o __udivdi3.o \ | ||
3 | __udivmoddi4.o __udivmodsi4.o __udivsi3.o \ | ||
4 | __umoddi3.o __umodsi3.o __muldi3.o __umulsidi3.o | ||
diff --git a/arch/parisc/lib/libgcc/__ashldi3.c b/arch/parisc/lib/libgcc/__ashldi3.c new file mode 100644 index 000000000000..a14a257abb2b --- /dev/null +++ b/arch/parisc/lib/libgcc/__ashldi3.c | |||
@@ -0,0 +1,19 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | u64 __ashldi3(u64 v, int cnt) | ||
4 | { | ||
5 | int c = cnt & 31; | ||
6 | u32 vl = (u32) v; | ||
7 | u32 vh = (u32) (v >> 32); | ||
8 | |||
9 | if (cnt & 32) { | ||
10 | vh = (vl << c); | ||
11 | vl = 0; | ||
12 | } else { | ||
13 | vh = (vh << c) + (vl >> (32 - c)); | ||
14 | vl = (vl << c); | ||
15 | } | ||
16 | |||
17 | return ((u64) vh << 32) + vl; | ||
18 | } | ||
19 | EXPORT_SYMBOL(__ashldi3); | ||
diff --git a/arch/parisc/lib/libgcc/__ashrdi3.c b/arch/parisc/lib/libgcc/__ashrdi3.c new file mode 100644 index 000000000000..8636a5aa4f77 --- /dev/null +++ b/arch/parisc/lib/libgcc/__ashrdi3.c | |||
@@ -0,0 +1,19 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | u64 __ashrdi3(u64 v, int cnt) | ||
4 | { | ||
5 | int c = cnt & 31; | ||
6 | u32 vl = (u32) v; | ||
7 | u32 vh = (u32) (v >> 32); | ||
8 | |||
9 | if (cnt & 32) { | ||
10 | vl = ((s32) vh >> c); | ||
11 | vh = (s32) vh >> 31; | ||
12 | } else { | ||
13 | vl = (vl >> c) + (vh << (32 - c)); | ||
14 | vh = ((s32) vh >> c); | ||
15 | } | ||
16 | |||
17 | return ((u64) vh << 32) + vl; | ||
18 | } | ||
19 | EXPORT_SYMBOL(__ashrdi3); | ||
diff --git a/arch/parisc/lib/libgcc/__clzsi2.c b/arch/parisc/lib/libgcc/__clzsi2.c new file mode 100644 index 000000000000..a7aa2f55a9c6 --- /dev/null +++ b/arch/parisc/lib/libgcc/__clzsi2.c | |||
@@ -0,0 +1,30 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | u32 __clzsi2(u32 v) | ||
4 | { | ||
5 | int p = 31; | ||
6 | |||
7 | if (v & 0xffff0000) { | ||
8 | p -= 16; | ||
9 | v >>= 16; | ||
10 | } | ||
11 | if (v & 0xff00) { | ||
12 | p -= 8; | ||
13 | v >>= 8; | ||
14 | } | ||
15 | if (v & 0xf0) { | ||
16 | p -= 4; | ||
17 | v >>= 4; | ||
18 | } | ||
19 | if (v & 0xc) { | ||
20 | p -= 2; | ||
21 | v >>= 2; | ||
22 | } | ||
23 | if (v & 0x2) { | ||
24 | p -= 1; | ||
25 | v >>= 1; | ||
26 | } | ||
27 | |||
28 | return p; | ||
29 | } | ||
30 | EXPORT_SYMBOL(__clzsi2); | ||
diff --git a/arch/parisc/lib/libgcc/__divdi3.c b/arch/parisc/lib/libgcc/__divdi3.c new file mode 100644 index 000000000000..f23c6fe2838b --- /dev/null +++ b/arch/parisc/lib/libgcc/__divdi3.c | |||
@@ -0,0 +1,23 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | s64 __divdi3(s64 num, s64 den) | ||
4 | { | ||
5 | int minus = 0; | ||
6 | s64 v; | ||
7 | |||
8 | if (num < 0) { | ||
9 | num = -num; | ||
10 | minus = 1; | ||
11 | } | ||
12 | if (den < 0) { | ||
13 | den = -den; | ||
14 | minus ^= 1; | ||
15 | } | ||
16 | |||
17 | v = __udivmoddi4(num, den, NULL); | ||
18 | if (minus) | ||
19 | v = -v; | ||
20 | |||
21 | return v; | ||
22 | } | ||
23 | EXPORT_SYMBOL(__divdi3); | ||
diff --git a/arch/parisc/lib/libgcc/__divsi3.c b/arch/parisc/lib/libgcc/__divsi3.c new file mode 100644 index 000000000000..730fb530680d --- /dev/null +++ b/arch/parisc/lib/libgcc/__divsi3.c | |||
@@ -0,0 +1,23 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | s32 __divsi3(s32 num, s32 den) | ||
4 | { | ||
5 | int minus = 0; | ||
6 | s32 v; | ||
7 | |||
8 | if (num < 0) { | ||
9 | num = -num; | ||
10 | minus = 1; | ||
11 | } | ||
12 | if (den < 0) { | ||
13 | den = -den; | ||
14 | minus ^= 1; | ||
15 | } | ||
16 | |||
17 | v = __udivmodsi4(num, den, NULL); | ||
18 | if (minus) | ||
19 | v = -v; | ||
20 | |||
21 | return v; | ||
22 | } | ||
23 | EXPORT_SYMBOL(__divsi3); | ||
diff --git a/arch/parisc/lib/libgcc/__lshrdi3.c b/arch/parisc/lib/libgcc/__lshrdi3.c new file mode 100644 index 000000000000..4a820708ec57 --- /dev/null +++ b/arch/parisc/lib/libgcc/__lshrdi3.c | |||
@@ -0,0 +1,19 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | u64 __lshrdi3(u64 v, int cnt) | ||
4 | { | ||
5 | int c = cnt & 31; | ||
6 | u32 vl = (u32) v; | ||
7 | u32 vh = (u32) (v >> 32); | ||
8 | |||
9 | if (cnt & 32) { | ||
10 | vl = (vh >> c); | ||
11 | vh = 0; | ||
12 | } else { | ||
13 | vl = (vl >> c) + (vh << (32 - c)); | ||
14 | vh = (vh >> c); | ||
15 | } | ||
16 | |||
17 | return ((u64) vh << 32) + vl; | ||
18 | } | ||
19 | EXPORT_SYMBOL(__lshrdi3); | ||
diff --git a/arch/parisc/lib/libgcc/__moddi3.c b/arch/parisc/lib/libgcc/__moddi3.c new file mode 100644 index 000000000000..ed64bbafc989 --- /dev/null +++ b/arch/parisc/lib/libgcc/__moddi3.c | |||
@@ -0,0 +1,23 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | s64 __moddi3(s64 num, s64 den) | ||
4 | { | ||
5 | int minus = 0; | ||
6 | s64 v; | ||
7 | |||
8 | if (num < 0) { | ||
9 | num = -num; | ||
10 | minus = 1; | ||
11 | } | ||
12 | if (den < 0) { | ||
13 | den = -den; | ||
14 | minus ^= 1; | ||
15 | } | ||
16 | |||
17 | (void)__udivmoddi4(num, den, (u64 *) & v); | ||
18 | if (minus) | ||
19 | v = -v; | ||
20 | |||
21 | return v; | ||
22 | } | ||
23 | EXPORT_SYMBOL(__moddi3); | ||
diff --git a/arch/parisc/lib/libgcc/__modsi3.c b/arch/parisc/lib/libgcc/__modsi3.c new file mode 100644 index 000000000000..62f773efaeea --- /dev/null +++ b/arch/parisc/lib/libgcc/__modsi3.c | |||
@@ -0,0 +1,23 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | s32 __modsi3(s32 num, s32 den) | ||
4 | { | ||
5 | int minus = 0; | ||
6 | s32 v; | ||
7 | |||
8 | if (num < 0) { | ||
9 | num = -num; | ||
10 | minus = 1; | ||
11 | } | ||
12 | if (den < 0) { | ||
13 | den = -den; | ||
14 | minus ^= 1; | ||
15 | } | ||
16 | |||
17 | (void)__udivmodsi4(num, den, (u32 *) & v); | ||
18 | if (minus) | ||
19 | v = -v; | ||
20 | |||
21 | return v; | ||
22 | } | ||
23 | EXPORT_SYMBOL(__modsi3); | ||
diff --git a/arch/parisc/lib/libgcc/__muldi3.c b/arch/parisc/lib/libgcc/__muldi3.c new file mode 100644 index 000000000000..3308abdd5580 --- /dev/null +++ b/arch/parisc/lib/libgcc/__muldi3.c | |||
@@ -0,0 +1,22 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | union DWunion { | ||
4 | struct { | ||
5 | s32 high; | ||
6 | s32 low; | ||
7 | } s; | ||
8 | s64 ll; | ||
9 | }; | ||
10 | |||
11 | s64 __muldi3(s64 u, s64 v) | ||
12 | { | ||
13 | const union DWunion uu = { .ll = u }; | ||
14 | const union DWunion vv = { .ll = v }; | ||
15 | union DWunion w = { .ll = __umulsidi3(uu.s.low, vv.s.low) }; | ||
16 | |||
17 | w.s.high += ((u32)uu.s.low * (u32)vv.s.high | ||
18 | + (u32)uu.s.high * (u32)vv.s.low); | ||
19 | |||
20 | return w.ll; | ||
21 | } | ||
22 | EXPORT_SYMBOL(__muldi3); | ||
diff --git a/arch/parisc/lib/libgcc/__udivdi3.c b/arch/parisc/lib/libgcc/__udivdi3.c new file mode 100644 index 000000000000..740023d690f5 --- /dev/null +++ b/arch/parisc/lib/libgcc/__udivdi3.c | |||
@@ -0,0 +1,7 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | u64 __udivdi3(u64 num, u64 den) | ||
4 | { | ||
5 | return __udivmoddi4(num, den, NULL); | ||
6 | } | ||
7 | EXPORT_SYMBOL(__udivdi3); | ||
diff --git a/arch/parisc/lib/libgcc/__udivmoddi4.c b/arch/parisc/lib/libgcc/__udivmoddi4.c new file mode 100644 index 000000000000..2df0caa5a7d8 --- /dev/null +++ b/arch/parisc/lib/libgcc/__udivmoddi4.c | |||
@@ -0,0 +1,31 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | u64 __udivmoddi4(u64 num, u64 den, u64 * rem_p) | ||
4 | { | ||
5 | u64 quot = 0, qbit = 1; | ||
6 | |||
7 | if (den == 0) { | ||
8 | BUG(); | ||
9 | } | ||
10 | |||
11 | /* Left-justify denominator and count shift */ | ||
12 | while ((s64) den >= 0) { | ||
13 | den <<= 1; | ||
14 | qbit <<= 1; | ||
15 | } | ||
16 | |||
17 | while (qbit) { | ||
18 | if (den <= num) { | ||
19 | num -= den; | ||
20 | quot += qbit; | ||
21 | } | ||
22 | den >>= 1; | ||
23 | qbit >>= 1; | ||
24 | } | ||
25 | |||
26 | if (rem_p) | ||
27 | *rem_p = num; | ||
28 | |||
29 | return quot; | ||
30 | } | ||
31 | EXPORT_SYMBOL(__udivmoddi4); | ||
diff --git a/arch/parisc/lib/libgcc/__udivmodsi4.c b/arch/parisc/lib/libgcc/__udivmodsi4.c new file mode 100644 index 000000000000..2a2fc28b2026 --- /dev/null +++ b/arch/parisc/lib/libgcc/__udivmodsi4.c | |||
@@ -0,0 +1,31 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | u32 __udivmodsi4(u32 num, u32 den, u32 * rem_p) | ||
4 | { | ||
5 | u32 quot = 0, qbit = 1; | ||
6 | |||
7 | if (den == 0) { | ||
8 | BUG(); | ||
9 | } | ||
10 | |||
11 | /* Left-justify denominator and count shift */ | ||
12 | while ((s32) den >= 0) { | ||
13 | den <<= 1; | ||
14 | qbit <<= 1; | ||
15 | } | ||
16 | |||
17 | while (qbit) { | ||
18 | if (den <= num) { | ||
19 | num -= den; | ||
20 | quot += qbit; | ||
21 | } | ||
22 | den >>= 1; | ||
23 | qbit >>= 1; | ||
24 | } | ||
25 | |||
26 | if (rem_p) | ||
27 | *rem_p = num; | ||
28 | |||
29 | return quot; | ||
30 | } | ||
31 | EXPORT_SYMBOL(__udivmodsi4); | ||
diff --git a/arch/parisc/lib/libgcc/__udivsi3.c b/arch/parisc/lib/libgcc/__udivsi3.c new file mode 100644 index 000000000000..756a44164e90 --- /dev/null +++ b/arch/parisc/lib/libgcc/__udivsi3.c | |||
@@ -0,0 +1,7 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | u32 __udivsi3(u32 num, u32 den) | ||
4 | { | ||
5 | return __udivmodsi4(num, den, NULL); | ||
6 | } | ||
7 | EXPORT_SYMBOL(__udivsi3); | ||
diff --git a/arch/parisc/lib/libgcc/__umoddi3.c b/arch/parisc/lib/libgcc/__umoddi3.c new file mode 100644 index 000000000000..ac744e948bc1 --- /dev/null +++ b/arch/parisc/lib/libgcc/__umoddi3.c | |||
@@ -0,0 +1,10 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | u64 __umoddi3(u64 num, u64 den) | ||
4 | { | ||
5 | u64 v; | ||
6 | |||
7 | (void)__udivmoddi4(num, den, &v); | ||
8 | return v; | ||
9 | } | ||
10 | EXPORT_SYMBOL(__umoddi3); | ||
diff --git a/arch/parisc/lib/libgcc/__umodsi3.c b/arch/parisc/lib/libgcc/__umodsi3.c new file mode 100644 index 000000000000..51f55aa89f9a --- /dev/null +++ b/arch/parisc/lib/libgcc/__umodsi3.c | |||
@@ -0,0 +1,10 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | u32 __umodsi3(u32 num, u32 den) | ||
4 | { | ||
5 | u32 v; | ||
6 | |||
7 | (void)__udivmodsi4(num, den, &v); | ||
8 | return v; | ||
9 | } | ||
10 | EXPORT_SYMBOL(__umodsi3); | ||
diff --git a/arch/parisc/lib/libgcc/__umulsidi3.c b/arch/parisc/lib/libgcc/__umulsidi3.c new file mode 100644 index 000000000000..396f669164d4 --- /dev/null +++ b/arch/parisc/lib/libgcc/__umulsidi3.c | |||
@@ -0,0 +1,46 @@ | |||
1 | #include "libgcc.h" | ||
2 | |||
3 | #define __ll_B ((u32) 1 << (32 / 2)) | ||
4 | #define __ll_lowpart(t) ((u32) (t) & (__ll_B - 1)) | ||
5 | #define __ll_highpart(t) ((u32) (t) >> 16) | ||
6 | |||
7 | #define umul_ppmm(w1, w0, u, v) \ | ||
8 | do { \ | ||
9 | u32 __x0, __x1, __x2, __x3; \ | ||
10 | u16 __ul, __vl, __uh, __vh; \ | ||
11 | \ | ||
12 | __ul = __ll_lowpart (u); \ | ||
13 | __uh = __ll_highpart (u); \ | ||
14 | __vl = __ll_lowpart (v); \ | ||
15 | __vh = __ll_highpart (v); \ | ||
16 | \ | ||
17 | __x0 = (u32) __ul * __vl; \ | ||
18 | __x1 = (u32) __ul * __vh; \ | ||
19 | __x2 = (u32) __uh * __vl; \ | ||
20 | __x3 = (u32) __uh * __vh; \ | ||
21 | \ | ||
22 | __x1 += __ll_highpart (__x0);/* this can't give carry */ \ | ||
23 | __x1 += __x2; /* but this indeed can */ \ | ||
24 | if (__x1 < __x2) /* did we get it? */ \ | ||
25 | __x3 += __ll_B; /* yes, add it in the proper pos. */ \ | ||
26 | \ | ||
27 | (w1) = __x3 + __ll_highpart (__x1); \ | ||
28 | (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0); \ | ||
29 | } while (0) | ||
30 | |||
31 | union DWunion { | ||
32 | struct { | ||
33 | s32 high; | ||
34 | s32 low; | ||
35 | } s; | ||
36 | s64 ll; | ||
37 | }; | ||
38 | |||
39 | u64 __umulsidi3(u32 u, u32 v) | ||
40 | { | ||
41 | union DWunion __w; | ||
42 | |||
43 | umul_ppmm(__w.s.high, __w.s.low, u, v); | ||
44 | |||
45 | return __w.ll; | ||
46 | } | ||
diff --git a/arch/parisc/lib/libgcc/libgcc.h b/arch/parisc/lib/libgcc/libgcc.h new file mode 100644 index 000000000000..5a6f7a510fbd --- /dev/null +++ b/arch/parisc/lib/libgcc/libgcc.h | |||
@@ -0,0 +1,32 @@ | |||
1 | #ifndef _PA_LIBGCC_H_ | ||
2 | #define _PA_LIBGCC_H_ | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | #include <linux/module.h> | ||
6 | |||
7 | /* Cribbed from klibc/libgcc/ */ | ||
8 | u64 __ashldi3(u64 v, int cnt); | ||
9 | u64 __ashrdi3(u64 v, int cnt); | ||
10 | |||
11 | u32 __clzsi2(u32 v); | ||
12 | |||
13 | s64 __divdi3(s64 num, s64 den); | ||
14 | s32 __divsi3(s32 num, s32 den); | ||
15 | |||
16 | u64 __lshrdi3(u64 v, int cnt); | ||
17 | |||
18 | s64 __moddi3(s64 num, s64 den); | ||
19 | s32 __modsi3(s32 num, s32 den); | ||
20 | |||
21 | u64 __udivdi3(u64 num, u64 den); | ||
22 | u32 __udivsi3(u32 num, u32 den); | ||
23 | |||
24 | u64 __udivmoddi4(u64 num, u64 den, u64 * rem_p); | ||
25 | u32 __udivmodsi4(u32 num, u32 den, u32 * rem_p); | ||
26 | |||
27 | u64 __umulsidi3(u32 u, u32 v); | ||
28 | |||
29 | u64 __umoddi3(u64 num, u64 den); | ||
30 | u32 __umodsi3(u32 num, u32 den); | ||
31 | |||
32 | #endif /*_PA_LIBGCC_H_*/ | ||
diff --git a/arch/parisc/lib/memcpy.c b/arch/parisc/lib/memcpy.c index 2c43ebe99a9c..d22042d33100 100644 --- a/arch/parisc/lib/memcpy.c +++ b/arch/parisc/lib/memcpy.c | |||
@@ -139,12 +139,12 @@ DECLARE_PER_CPU(struct exception_data, exception_data); | |||
139 | #define stw(_s,_t,_o,_a,_e) def_store_insn(stw,"r",_s,_t,_o,_a,_e) | 139 | #define stw(_s,_t,_o,_a,_e) def_store_insn(stw,"r",_s,_t,_o,_a,_e) |
140 | 140 | ||
141 | #ifdef CONFIG_PREFETCH | 141 | #ifdef CONFIG_PREFETCH |
142 | extern inline void prefetch_src(const void *addr) | 142 | static inline void prefetch_src(const void *addr) |
143 | { | 143 | { |
144 | __asm__("ldw 0(" s_space ",%0), %%r0" : : "r" (addr)); | 144 | __asm__("ldw 0(" s_space ",%0), %%r0" : : "r" (addr)); |
145 | } | 145 | } |
146 | 146 | ||
147 | extern inline void prefetch_dst(const void *addr) | 147 | static inline void prefetch_dst(const void *addr) |
148 | { | 148 | { |
149 | __asm__("ldd 0(" d_space ",%0), %%r0" : : "r" (addr)); | 149 | __asm__("ldd 0(" d_space ",%0), %%r0" : : "r" (addr)); |
150 | } | 150 | } |
diff --git a/arch/parisc/lib/milli/Makefile b/arch/parisc/lib/milli/Makefile new file mode 100644 index 000000000000..9b24e9b1f3cb --- /dev/null +++ b/arch/parisc/lib/milli/Makefile | |||
@@ -0,0 +1 @@ | |||
obj-y := dyncall.o divI.o divU.o remI.o remU.o div_const.o mulI.o | |||
diff --git a/arch/parisc/lib/milli/divI.S b/arch/parisc/lib/milli/divI.S new file mode 100644 index 000000000000..ac106b7b6f24 --- /dev/null +++ b/arch/parisc/lib/milli/divI.S | |||
@@ -0,0 +1,254 @@ | |||
1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
3 | and Alan Modra <alan@linuxcare.com.au>. | ||
4 | |||
5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
6 | |||
7 | This file is part of GCC and is released under the terms of | ||
8 | of the GNU General Public License as published by the Free Software | ||
9 | Foundation; either version 2, or (at your option) any later version. | ||
10 | See the file COPYING in the top-level GCC source directory for a copy | ||
11 | of the license. */ | ||
12 | |||
13 | #include "milli.h" | ||
14 | |||
15 | #ifdef L_divI | ||
16 | /* ROUTINES: $$divI, $$divoI | ||
17 | |||
18 | Single precision divide for signed binary integers. | ||
19 | |||
20 | The quotient is truncated towards zero. | ||
21 | The sign of the quotient is the XOR of the signs of the dividend and | ||
22 | divisor. | ||
23 | Divide by zero is trapped. | ||
24 | Divide of -2**31 by -1 is trapped for $$divoI but not for $$divI. | ||
25 | |||
26 | INPUT REGISTERS: | ||
27 | . arg0 == dividend | ||
28 | . arg1 == divisor | ||
29 | . mrp == return pc | ||
30 | . sr0 == return space when called externally | ||
31 | |||
32 | OUTPUT REGISTERS: | ||
33 | . arg0 = undefined | ||
34 | . arg1 = undefined | ||
35 | . ret1 = quotient | ||
36 | |||
37 | OTHER REGISTERS AFFECTED: | ||
38 | . r1 = undefined | ||
39 | |||
40 | SIDE EFFECTS: | ||
41 | . Causes a trap under the following conditions: | ||
42 | . divisor is zero (traps with ADDIT,= 0,25,0) | ||
43 | . dividend==-2**31 and divisor==-1 and routine is $$divoI | ||
44 | . (traps with ADDO 26,25,0) | ||
45 | . Changes memory at the following places: | ||
46 | . NONE | ||
47 | |||
48 | PERMISSIBLE CONTEXT: | ||
49 | . Unwindable. | ||
50 | . Suitable for internal or external millicode. | ||
51 | . Assumes the special millicode register conventions. | ||
52 | |||
53 | DISCUSSION: | ||
54 | . Branchs to other millicode routines using BE | ||
55 | . $$div_# for # being 2,3,4,5,6,7,8,9,10,12,14,15 | ||
56 | . | ||
57 | . For selected divisors, calls a divide by constant routine written by | ||
58 | . Karl Pettis. Eligible divisors are 1..15 excluding 11 and 13. | ||
59 | . | ||
60 | . The only overflow case is -2**31 divided by -1. | ||
61 | . Both routines return -2**31 but only $$divoI traps. */ | ||
62 | |||
63 | RDEFINE(temp,r1) | ||
64 | RDEFINE(retreg,ret1) /* r29 */ | ||
65 | RDEFINE(temp1,arg0) | ||
66 | SUBSPA_MILLI_DIV | ||
67 | ATTR_MILLI | ||
68 | .import $$divI_2,millicode | ||
69 | .import $$divI_3,millicode | ||
70 | .import $$divI_4,millicode | ||
71 | .import $$divI_5,millicode | ||
72 | .import $$divI_6,millicode | ||
73 | .import $$divI_7,millicode | ||
74 | .import $$divI_8,millicode | ||
75 | .import $$divI_9,millicode | ||
76 | .import $$divI_10,millicode | ||
77 | .import $$divI_12,millicode | ||
78 | .import $$divI_14,millicode | ||
79 | .import $$divI_15,millicode | ||
80 | .export $$divI,millicode | ||
81 | .export $$divoI,millicode | ||
82 | .proc | ||
83 | .callinfo millicode | ||
84 | .entry | ||
85 | GSYM($$divoI) | ||
86 | comib,=,n -1,arg1,LREF(negative1) /* when divisor == -1 */ | ||
87 | GSYM($$divI) | ||
88 | ldo -1(arg1),temp /* is there at most one bit set ? */ | ||
89 | and,<> arg1,temp,r0 /* if not, don't use power of 2 divide */ | ||
90 | addi,> 0,arg1,r0 /* if divisor > 0, use power of 2 divide */ | ||
91 | b,n LREF(neg_denom) | ||
92 | LSYM(pow2) | ||
93 | addi,>= 0,arg0,retreg /* if numerator is negative, add the */ | ||
94 | add arg0,temp,retreg /* (denominaotr -1) to correct for shifts */ | ||
95 | extru,= arg1,15,16,temp /* test denominator with 0xffff0000 */ | ||
96 | extrs retreg,15,16,retreg /* retreg = retreg >> 16 */ | ||
97 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 16) */ | ||
98 | ldi 0xcc,temp1 /* setup 0xcc in temp1 */ | ||
99 | extru,= arg1,23,8,temp /* test denominator with 0xff00 */ | ||
100 | extrs retreg,23,24,retreg /* retreg = retreg >> 8 */ | ||
101 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 8) */ | ||
102 | ldi 0xaa,temp /* setup 0xaa in temp */ | ||
103 | extru,= arg1,27,4,r0 /* test denominator with 0xf0 */ | ||
104 | extrs retreg,27,28,retreg /* retreg = retreg >> 4 */ | ||
105 | and,= arg1,temp1,r0 /* test denominator with 0xcc */ | ||
106 | extrs retreg,29,30,retreg /* retreg = retreg >> 2 */ | ||
107 | and,= arg1,temp,r0 /* test denominator with 0xaa */ | ||
108 | extrs retreg,30,31,retreg /* retreg = retreg >> 1 */ | ||
109 | MILLIRETN | ||
110 | LSYM(neg_denom) | ||
111 | addi,< 0,arg1,r0 /* if arg1 >= 0, it's not power of 2 */ | ||
112 | b,n LREF(regular_seq) | ||
113 | sub r0,arg1,temp /* make denominator positive */ | ||
114 | comb,=,n arg1,temp,LREF(regular_seq) /* test against 0x80000000 and 0 */ | ||
115 | ldo -1(temp),retreg /* is there at most one bit set ? */ | ||
116 | and,= temp,retreg,r0 /* if so, the denominator is power of 2 */ | ||
117 | b,n LREF(regular_seq) | ||
118 | sub r0,arg0,retreg /* negate numerator */ | ||
119 | comb,=,n arg0,retreg,LREF(regular_seq) /* test against 0x80000000 */ | ||
120 | copy retreg,arg0 /* set up arg0, arg1 and temp */ | ||
121 | copy temp,arg1 /* before branching to pow2 */ | ||
122 | b LREF(pow2) | ||
123 | ldo -1(arg1),temp | ||
124 | LSYM(regular_seq) | ||
125 | comib,>>=,n 15,arg1,LREF(small_divisor) | ||
126 | add,>= 0,arg0,retreg /* move dividend, if retreg < 0, */ | ||
127 | LSYM(normal) | ||
128 | subi 0,retreg,retreg /* make it positive */ | ||
129 | sub 0,arg1,temp /* clear carry, */ | ||
130 | /* negate the divisor */ | ||
131 | ds 0,temp,0 /* set V-bit to the comple- */ | ||
132 | /* ment of the divisor sign */ | ||
133 | add retreg,retreg,retreg /* shift msb bit into carry */ | ||
134 | ds r0,arg1,temp /* 1st divide step, if no carry */ | ||
135 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
136 | ds temp,arg1,temp /* 2nd divide step */ | ||
137 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
138 | ds temp,arg1,temp /* 3rd divide step */ | ||
139 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
140 | ds temp,arg1,temp /* 4th divide step */ | ||
141 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
142 | ds temp,arg1,temp /* 5th divide step */ | ||
143 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
144 | ds temp,arg1,temp /* 6th divide step */ | ||
145 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
146 | ds temp,arg1,temp /* 7th divide step */ | ||
147 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
148 | ds temp,arg1,temp /* 8th divide step */ | ||
149 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
150 | ds temp,arg1,temp /* 9th divide step */ | ||
151 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
152 | ds temp,arg1,temp /* 10th divide step */ | ||
153 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
154 | ds temp,arg1,temp /* 11th divide step */ | ||
155 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
156 | ds temp,arg1,temp /* 12th divide step */ | ||
157 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
158 | ds temp,arg1,temp /* 13th divide step */ | ||
159 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
160 | ds temp,arg1,temp /* 14th divide step */ | ||
161 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
162 | ds temp,arg1,temp /* 15th divide step */ | ||
163 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
164 | ds temp,arg1,temp /* 16th divide step */ | ||
165 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
166 | ds temp,arg1,temp /* 17th divide step */ | ||
167 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
168 | ds temp,arg1,temp /* 18th divide step */ | ||
169 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
170 | ds temp,arg1,temp /* 19th divide step */ | ||
171 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
172 | ds temp,arg1,temp /* 20th divide step */ | ||
173 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
174 | ds temp,arg1,temp /* 21st divide step */ | ||
175 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
176 | ds temp,arg1,temp /* 22nd divide step */ | ||
177 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
178 | ds temp,arg1,temp /* 23rd divide step */ | ||
179 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
180 | ds temp,arg1,temp /* 24th divide step */ | ||
181 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
182 | ds temp,arg1,temp /* 25th divide step */ | ||
183 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
184 | ds temp,arg1,temp /* 26th divide step */ | ||
185 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
186 | ds temp,arg1,temp /* 27th divide step */ | ||
187 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
188 | ds temp,arg1,temp /* 28th divide step */ | ||
189 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
190 | ds temp,arg1,temp /* 29th divide step */ | ||
191 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
192 | ds temp,arg1,temp /* 30th divide step */ | ||
193 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
194 | ds temp,arg1,temp /* 31st divide step */ | ||
195 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
196 | ds temp,arg1,temp /* 32nd divide step, */ | ||
197 | addc retreg,retreg,retreg /* shift last retreg bit into retreg */ | ||
198 | xor,>= arg0,arg1,0 /* get correct sign of quotient */ | ||
199 | sub 0,retreg,retreg /* based on operand signs */ | ||
200 | MILLIRETN | ||
201 | nop | ||
202 | |||
203 | LSYM(small_divisor) | ||
204 | |||
205 | #if defined(CONFIG_64BIT) | ||
206 | /* Clear the upper 32 bits of the arg1 register. We are working with */ | ||
207 | /* small divisors (and 32-bit integers) We must not be mislead */ | ||
208 | /* by "1" bits left in the upper 32 bits. */ | ||
209 | depd %r0,31,32,%r25 | ||
210 | #endif | ||
211 | blr,n arg1,r0 | ||
212 | nop | ||
213 | /* table for divisor == 0,1, ... ,15 */ | ||
214 | addit,= 0,arg1,r0 /* trap if divisor == 0 */ | ||
215 | nop | ||
216 | MILLIRET /* divisor == 1 */ | ||
217 | copy arg0,retreg | ||
218 | MILLI_BEN($$divI_2) /* divisor == 2 */ | ||
219 | nop | ||
220 | MILLI_BEN($$divI_3) /* divisor == 3 */ | ||
221 | nop | ||
222 | MILLI_BEN($$divI_4) /* divisor == 4 */ | ||
223 | nop | ||
224 | MILLI_BEN($$divI_5) /* divisor == 5 */ | ||
225 | nop | ||
226 | MILLI_BEN($$divI_6) /* divisor == 6 */ | ||
227 | nop | ||
228 | MILLI_BEN($$divI_7) /* divisor == 7 */ | ||
229 | nop | ||
230 | MILLI_BEN($$divI_8) /* divisor == 8 */ | ||
231 | nop | ||
232 | MILLI_BEN($$divI_9) /* divisor == 9 */ | ||
233 | nop | ||
234 | MILLI_BEN($$divI_10) /* divisor == 10 */ | ||
235 | nop | ||
236 | b LREF(normal) /* divisor == 11 */ | ||
237 | add,>= 0,arg0,retreg | ||
238 | MILLI_BEN($$divI_12) /* divisor == 12 */ | ||
239 | nop | ||
240 | b LREF(normal) /* divisor == 13 */ | ||
241 | add,>= 0,arg0,retreg | ||
242 | MILLI_BEN($$divI_14) /* divisor == 14 */ | ||
243 | nop | ||
244 | MILLI_BEN($$divI_15) /* divisor == 15 */ | ||
245 | nop | ||
246 | |||
247 | LSYM(negative1) | ||
248 | sub 0,arg0,retreg /* result is negation of dividend */ | ||
249 | MILLIRET | ||
250 | addo arg0,arg1,r0 /* trap iff dividend==0x80000000 && divisor==-1 */ | ||
251 | .exit | ||
252 | .procend | ||
253 | .end | ||
254 | #endif | ||
diff --git a/arch/parisc/lib/milli/divU.S b/arch/parisc/lib/milli/divU.S new file mode 100644 index 000000000000..9287fe2546fa --- /dev/null +++ b/arch/parisc/lib/milli/divU.S | |||
@@ -0,0 +1,235 @@ | |||
1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
3 | and Alan Modra <alan@linuxcare.com.au>. | ||
4 | |||
5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
6 | |||
7 | This file is part of GCC and is released under the terms of | ||
8 | of the GNU General Public License as published by the Free Software | ||
9 | Foundation; either version 2, or (at your option) any later version. | ||
10 | See the file COPYING in the top-level GCC source directory for a copy | ||
11 | of the license. */ | ||
12 | |||
13 | #include "milli.h" | ||
14 | |||
15 | #ifdef L_divU | ||
16 | /* ROUTINE: $$divU | ||
17 | . | ||
18 | . Single precision divide for unsigned integers. | ||
19 | . | ||
20 | . Quotient is truncated towards zero. | ||
21 | . Traps on divide by zero. | ||
22 | |||
23 | INPUT REGISTERS: | ||
24 | . arg0 == dividend | ||
25 | . arg1 == divisor | ||
26 | . mrp == return pc | ||
27 | . sr0 == return space when called externally | ||
28 | |||
29 | OUTPUT REGISTERS: | ||
30 | . arg0 = undefined | ||
31 | . arg1 = undefined | ||
32 | . ret1 = quotient | ||
33 | |||
34 | OTHER REGISTERS AFFECTED: | ||
35 | . r1 = undefined | ||
36 | |||
37 | SIDE EFFECTS: | ||
38 | . Causes a trap under the following conditions: | ||
39 | . divisor is zero | ||
40 | . Changes memory at the following places: | ||
41 | . NONE | ||
42 | |||
43 | PERMISSIBLE CONTEXT: | ||
44 | . Unwindable. | ||
45 | . Does not create a stack frame. | ||
46 | . Suitable for internal or external millicode. | ||
47 | . Assumes the special millicode register conventions. | ||
48 | |||
49 | DISCUSSION: | ||
50 | . Branchs to other millicode routines using BE: | ||
51 | . $$divU_# for 3,5,6,7,9,10,12,14,15 | ||
52 | . | ||
53 | . For selected small divisors calls the special divide by constant | ||
54 | . routines written by Karl Pettis. These are: 3,5,6,7,9,10,12,14,15. */ | ||
55 | |||
56 | RDEFINE(temp,r1) | ||
57 | RDEFINE(retreg,ret1) /* r29 */ | ||
58 | RDEFINE(temp1,arg0) | ||
59 | SUBSPA_MILLI_DIV | ||
60 | ATTR_MILLI | ||
61 | .export $$divU,millicode | ||
62 | .import $$divU_3,millicode | ||
63 | .import $$divU_5,millicode | ||
64 | .import $$divU_6,millicode | ||
65 | .import $$divU_7,millicode | ||
66 | .import $$divU_9,millicode | ||
67 | .import $$divU_10,millicode | ||
68 | .import $$divU_12,millicode | ||
69 | .import $$divU_14,millicode | ||
70 | .import $$divU_15,millicode | ||
71 | .proc | ||
72 | .callinfo millicode | ||
73 | .entry | ||
74 | GSYM($$divU) | ||
75 | /* The subtract is not nullified since it does no harm and can be used | ||
76 | by the two cases that branch back to "normal". */ | ||
77 | ldo -1(arg1),temp /* is there at most one bit set ? */ | ||
78 | and,= arg1,temp,r0 /* if so, denominator is power of 2 */ | ||
79 | b LREF(regular_seq) | ||
80 | addit,= 0,arg1,0 /* trap for zero dvr */ | ||
81 | copy arg0,retreg | ||
82 | extru,= arg1,15,16,temp /* test denominator with 0xffff0000 */ | ||
83 | extru retreg,15,16,retreg /* retreg = retreg >> 16 */ | ||
84 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 16) */ | ||
85 | ldi 0xcc,temp1 /* setup 0xcc in temp1 */ | ||
86 | extru,= arg1,23,8,temp /* test denominator with 0xff00 */ | ||
87 | extru retreg,23,24,retreg /* retreg = retreg >> 8 */ | ||
88 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 8) */ | ||
89 | ldi 0xaa,temp /* setup 0xaa in temp */ | ||
90 | extru,= arg1,27,4,r0 /* test denominator with 0xf0 */ | ||
91 | extru retreg,27,28,retreg /* retreg = retreg >> 4 */ | ||
92 | and,= arg1,temp1,r0 /* test denominator with 0xcc */ | ||
93 | extru retreg,29,30,retreg /* retreg = retreg >> 2 */ | ||
94 | and,= arg1,temp,r0 /* test denominator with 0xaa */ | ||
95 | extru retreg,30,31,retreg /* retreg = retreg >> 1 */ | ||
96 | MILLIRETN | ||
97 | nop | ||
98 | LSYM(regular_seq) | ||
99 | comib,>= 15,arg1,LREF(special_divisor) | ||
100 | subi 0,arg1,temp /* clear carry, negate the divisor */ | ||
101 | ds r0,temp,r0 /* set V-bit to 1 */ | ||
102 | LSYM(normal) | ||
103 | add arg0,arg0,retreg /* shift msb bit into carry */ | ||
104 | ds r0,arg1,temp /* 1st divide step, if no carry */ | ||
105 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
106 | ds temp,arg1,temp /* 2nd divide step */ | ||
107 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
108 | ds temp,arg1,temp /* 3rd divide step */ | ||
109 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
110 | ds temp,arg1,temp /* 4th divide step */ | ||
111 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
112 | ds temp,arg1,temp /* 5th divide step */ | ||
113 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
114 | ds temp,arg1,temp /* 6th divide step */ | ||
115 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
116 | ds temp,arg1,temp /* 7th divide step */ | ||
117 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
118 | ds temp,arg1,temp /* 8th divide step */ | ||
119 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
120 | ds temp,arg1,temp /* 9th divide step */ | ||
121 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
122 | ds temp,arg1,temp /* 10th divide step */ | ||
123 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
124 | ds temp,arg1,temp /* 11th divide step */ | ||
125 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
126 | ds temp,arg1,temp /* 12th divide step */ | ||
127 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
128 | ds temp,arg1,temp /* 13th divide step */ | ||
129 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
130 | ds temp,arg1,temp /* 14th divide step */ | ||
131 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
132 | ds temp,arg1,temp /* 15th divide step */ | ||
133 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
134 | ds temp,arg1,temp /* 16th divide step */ | ||
135 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
136 | ds temp,arg1,temp /* 17th divide step */ | ||
137 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
138 | ds temp,arg1,temp /* 18th divide step */ | ||
139 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
140 | ds temp,arg1,temp /* 19th divide step */ | ||
141 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
142 | ds temp,arg1,temp /* 20th divide step */ | ||
143 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
144 | ds temp,arg1,temp /* 21st divide step */ | ||
145 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
146 | ds temp,arg1,temp /* 22nd divide step */ | ||
147 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
148 | ds temp,arg1,temp /* 23rd divide step */ | ||
149 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
150 | ds temp,arg1,temp /* 24th divide step */ | ||
151 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
152 | ds temp,arg1,temp /* 25th divide step */ | ||
153 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
154 | ds temp,arg1,temp /* 26th divide step */ | ||
155 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
156 | ds temp,arg1,temp /* 27th divide step */ | ||
157 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
158 | ds temp,arg1,temp /* 28th divide step */ | ||
159 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
160 | ds temp,arg1,temp /* 29th divide step */ | ||
161 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
162 | ds temp,arg1,temp /* 30th divide step */ | ||
163 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
164 | ds temp,arg1,temp /* 31st divide step */ | ||
165 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
166 | ds temp,arg1,temp /* 32nd divide step, */ | ||
167 | MILLIRET | ||
168 | addc retreg,retreg,retreg /* shift last retreg bit into retreg */ | ||
169 | |||
170 | /* Handle the cases where divisor is a small constant or has high bit on. */ | ||
171 | LSYM(special_divisor) | ||
172 | /* blr arg1,r0 */ | ||
173 | /* comib,>,n 0,arg1,LREF(big_divisor) ; nullify previous instruction */ | ||
174 | |||
175 | /* Pratap 8/13/90. The 815 Stirling chip set has a bug that prevents us from | ||
176 | generating such a blr, comib sequence. A problem in nullification. So I | ||
177 | rewrote this code. */ | ||
178 | |||
179 | #if defined(CONFIG_64BIT) | ||
180 | /* Clear the upper 32 bits of the arg1 register. We are working with | ||
181 | small divisors (and 32-bit unsigned integers) We must not be mislead | ||
182 | by "1" bits left in the upper 32 bits. */ | ||
183 | depd %r0,31,32,%r25 | ||
184 | #endif | ||
185 | comib,> 0,arg1,LREF(big_divisor) | ||
186 | nop | ||
187 | blr arg1,r0 | ||
188 | nop | ||
189 | |||
190 | LSYM(zero_divisor) /* this label is here to provide external visibility */ | ||
191 | addit,= 0,arg1,0 /* trap for zero dvr */ | ||
192 | nop | ||
193 | MILLIRET /* divisor == 1 */ | ||
194 | copy arg0,retreg | ||
195 | MILLIRET /* divisor == 2 */ | ||
196 | extru arg0,30,31,retreg | ||
197 | MILLI_BEN($$divU_3) /* divisor == 3 */ | ||
198 | nop | ||
199 | MILLIRET /* divisor == 4 */ | ||
200 | extru arg0,29,30,retreg | ||
201 | MILLI_BEN($$divU_5) /* divisor == 5 */ | ||
202 | nop | ||
203 | MILLI_BEN($$divU_6) /* divisor == 6 */ | ||
204 | nop | ||
205 | MILLI_BEN($$divU_7) /* divisor == 7 */ | ||
206 | nop | ||
207 | MILLIRET /* divisor == 8 */ | ||
208 | extru arg0,28,29,retreg | ||
209 | MILLI_BEN($$divU_9) /* divisor == 9 */ | ||
210 | nop | ||
211 | MILLI_BEN($$divU_10) /* divisor == 10 */ | ||
212 | nop | ||
213 | b LREF(normal) /* divisor == 11 */ | ||
214 | ds r0,temp,r0 /* set V-bit to 1 */ | ||
215 | MILLI_BEN($$divU_12) /* divisor == 12 */ | ||
216 | nop | ||
217 | b LREF(normal) /* divisor == 13 */ | ||
218 | ds r0,temp,r0 /* set V-bit to 1 */ | ||
219 | MILLI_BEN($$divU_14) /* divisor == 14 */ | ||
220 | nop | ||
221 | MILLI_BEN($$divU_15) /* divisor == 15 */ | ||
222 | nop | ||
223 | |||
224 | /* Handle the case where the high bit is on in the divisor. | ||
225 | Compute: if( dividend>=divisor) quotient=1; else quotient=0; | ||
226 | Note: dividend>==divisor iff dividend-divisor does not borrow | ||
227 | and not borrow iff carry. */ | ||
228 | LSYM(big_divisor) | ||
229 | sub arg0,arg1,r0 | ||
230 | MILLIRET | ||
231 | addc r0,r0,retreg | ||
232 | .exit | ||
233 | .procend | ||
234 | .end | ||
235 | #endif | ||
diff --git a/arch/parisc/lib/milli/div_const.S b/arch/parisc/lib/milli/div_const.S new file mode 100644 index 000000000000..dd660076e944 --- /dev/null +++ b/arch/parisc/lib/milli/div_const.S | |||
@@ -0,0 +1,682 @@ | |||
1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
3 | and Alan Modra <alan@linuxcare.com.au>. | ||
4 | |||
5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
6 | |||
7 | This file is part of GCC and is released under the terms of | ||
8 | of the GNU General Public License as published by the Free Software | ||
9 | Foundation; either version 2, or (at your option) any later version. | ||
10 | See the file COPYING in the top-level GCC source directory for a copy | ||
11 | of the license. */ | ||
12 | |||
13 | #include "milli.h" | ||
14 | |||
15 | #ifdef L_div_const | ||
16 | /* ROUTINE: $$divI_2 | ||
17 | . $$divI_3 $$divU_3 | ||
18 | . $$divI_4 | ||
19 | . $$divI_5 $$divU_5 | ||
20 | . $$divI_6 $$divU_6 | ||
21 | . $$divI_7 $$divU_7 | ||
22 | . $$divI_8 | ||
23 | . $$divI_9 $$divU_9 | ||
24 | . $$divI_10 $$divU_10 | ||
25 | . | ||
26 | . $$divI_12 $$divU_12 | ||
27 | . | ||
28 | . $$divI_14 $$divU_14 | ||
29 | . $$divI_15 $$divU_15 | ||
30 | . $$divI_16 | ||
31 | . $$divI_17 $$divU_17 | ||
32 | . | ||
33 | . Divide by selected constants for single precision binary integers. | ||
34 | |||
35 | INPUT REGISTERS: | ||
36 | . arg0 == dividend | ||
37 | . mrp == return pc | ||
38 | . sr0 == return space when called externally | ||
39 | |||
40 | OUTPUT REGISTERS: | ||
41 | . arg0 = undefined | ||
42 | . arg1 = undefined | ||
43 | . ret1 = quotient | ||
44 | |||
45 | OTHER REGISTERS AFFECTED: | ||
46 | . r1 = undefined | ||
47 | |||
48 | SIDE EFFECTS: | ||
49 | . Causes a trap under the following conditions: NONE | ||
50 | . Changes memory at the following places: NONE | ||
51 | |||
52 | PERMISSIBLE CONTEXT: | ||
53 | . Unwindable. | ||
54 | . Does not create a stack frame. | ||
55 | . Suitable for internal or external millicode. | ||
56 | . Assumes the special millicode register conventions. | ||
57 | |||
58 | DISCUSSION: | ||
59 | . Calls other millicode routines using mrp: NONE | ||
60 | . Calls other millicode routines: NONE */ | ||
61 | |||
62 | |||
63 | /* TRUNCATED DIVISION BY SMALL INTEGERS | ||
64 | |||
65 | We are interested in q(x) = floor(x/y), where x >= 0 and y > 0 | ||
66 | (with y fixed). | ||
67 | |||
68 | Let a = floor(z/y), for some choice of z. Note that z will be | ||
69 | chosen so that division by z is cheap. | ||
70 | |||
71 | Let r be the remainder(z/y). In other words, r = z - ay. | ||
72 | |||
73 | Now, our method is to choose a value for b such that | ||
74 | |||
75 | q'(x) = floor((ax+b)/z) | ||
76 | |||
77 | is equal to q(x) over as large a range of x as possible. If the | ||
78 | two are equal over a sufficiently large range, and if it is easy to | ||
79 | form the product (ax), and it is easy to divide by z, then we can | ||
80 | perform the division much faster than the general division algorithm. | ||
81 | |||
82 | So, we want the following to be true: | ||
83 | |||
84 | . For x in the following range: | ||
85 | . | ||
86 | . ky <= x < (k+1)y | ||
87 | . | ||
88 | . implies that | ||
89 | . | ||
90 | . k <= (ax+b)/z < (k+1) | ||
91 | |||
92 | We want to determine b such that this is true for all k in the | ||
93 | range {0..K} for some maximum K. | ||
94 | |||
95 | Since (ax+b) is an increasing function of x, we can take each | ||
96 | bound separately to determine the "best" value for b. | ||
97 | |||
98 | (ax+b)/z < (k+1) implies | ||
99 | |||
100 | (a((k+1)y-1)+b < (k+1)z implies | ||
101 | |||
102 | b < a + (k+1)(z-ay) implies | ||
103 | |||
104 | b < a + (k+1)r | ||
105 | |||
106 | This needs to be true for all k in the range {0..K}. In | ||
107 | particular, it is true for k = 0 and this leads to a maximum | ||
108 | acceptable value for b. | ||
109 | |||
110 | b < a+r or b <= a+r-1 | ||
111 | |||
112 | Taking the other bound, we have | ||
113 | |||
114 | k <= (ax+b)/z implies | ||
115 | |||
116 | k <= (aky+b)/z implies | ||
117 | |||
118 | k(z-ay) <= b implies | ||
119 | |||
120 | kr <= b | ||
121 | |||
122 | Clearly, the largest range for k will be achieved by maximizing b, | ||
123 | when r is not zero. When r is zero, then the simplest choice for b | ||
124 | is 0. When r is not 0, set | ||
125 | |||
126 | . b = a+r-1 | ||
127 | |||
128 | Now, by construction, q'(x) = floor((ax+b)/z) = q(x) = floor(x/y) | ||
129 | for all x in the range: | ||
130 | |||
131 | . 0 <= x < (K+1)y | ||
132 | |||
133 | We need to determine what K is. Of our two bounds, | ||
134 | |||
135 | . b < a+(k+1)r is satisfied for all k >= 0, by construction. | ||
136 | |||
137 | The other bound is | ||
138 | |||
139 | . kr <= b | ||
140 | |||
141 | This is always true if r = 0. If r is not 0 (the usual case), then | ||
142 | K = floor((a+r-1)/r), is the maximum value for k. | ||
143 | |||
144 | Therefore, the formula q'(x) = floor((ax+b)/z) yields the correct | ||
145 | answer for q(x) = floor(x/y) when x is in the range | ||
146 | |||
147 | (0,(K+1)y-1) K = floor((a+r-1)/r) | ||
148 | |||
149 | To be most useful, we want (K+1)y-1 = (max x) >= 2**32-1 so that | ||
150 | the formula for q'(x) yields the correct value of q(x) for all x | ||
151 | representable by a single word in HPPA. | ||
152 | |||
153 | We are also constrained in that computing the product (ax), adding | ||
154 | b, and dividing by z must all be done quickly, otherwise we will be | ||
155 | better off going through the general algorithm using the DS | ||
156 | instruction, which uses approximately 70 cycles. | ||
157 | |||
158 | For each y, there is a choice of z which satisfies the constraints | ||
159 | for (K+1)y >= 2**32. We may not, however, be able to satisfy the | ||
160 | timing constraints for arbitrary y. It seems that z being equal to | ||
161 | a power of 2 or a power of 2 minus 1 is as good as we can do, since | ||
162 | it minimizes the time to do division by z. We want the choice of z | ||
163 | to also result in a value for (a) that minimizes the computation of | ||
164 | the product (ax). This is best achieved if (a) has a regular bit | ||
165 | pattern (so the multiplication can be done with shifts and adds). | ||
166 | The value of (a) also needs to be less than 2**32 so the product is | ||
167 | always guaranteed to fit in 2 words. | ||
168 | |||
169 | In actual practice, the following should be done: | ||
170 | |||
171 | 1) For negative x, you should take the absolute value and remember | ||
172 | . the fact so that the result can be negated. This obviously does | ||
173 | . not apply in the unsigned case. | ||
174 | 2) For even y, you should factor out the power of 2 that divides y | ||
175 | . and divide x by it. You can then proceed by dividing by the | ||
176 | . odd factor of y. | ||
177 | |||
178 | Here is a table of some odd values of y, and corresponding choices | ||
179 | for z which are "good". | ||
180 | |||
181 | y z r a (hex) max x (hex) | ||
182 | |||
183 | 3 2**32 1 55555555 100000001 | ||
184 | 5 2**32 1 33333333 100000003 | ||
185 | 7 2**24-1 0 249249 (infinite) | ||
186 | 9 2**24-1 0 1c71c7 (infinite) | ||
187 | 11 2**20-1 0 1745d (infinite) | ||
188 | 13 2**24-1 0 13b13b (infinite) | ||
189 | 15 2**32 1 11111111 10000000d | ||
190 | 17 2**32 1 f0f0f0f 10000000f | ||
191 | |||
192 | If r is 1, then b = a+r-1 = a. This simplifies the computation | ||
193 | of (ax+b), since you can compute (x+1)(a) instead. If r is 0, | ||
194 | then b = 0 is ok to use which simplifies (ax+b). | ||
195 | |||
196 | The bit patterns for 55555555, 33333333, and 11111111 are obviously | ||
197 | very regular. The bit patterns for the other values of a above are: | ||
198 | |||
199 | y (hex) (binary) | ||
200 | |||
201 | 7 249249 001001001001001001001001 << regular >> | ||
202 | 9 1c71c7 000111000111000111000111 << regular >> | ||
203 | 11 1745d 000000010111010001011101 << irregular >> | ||
204 | 13 13b13b 000100111011000100111011 << irregular >> | ||
205 | |||
206 | The bit patterns for (a) corresponding to (y) of 11 and 13 may be | ||
207 | too irregular to warrant using this method. | ||
208 | |||
209 | When z is a power of 2 minus 1, then the division by z is slightly | ||
210 | more complicated, involving an iterative solution. | ||
211 | |||
212 | The code presented here solves division by 1 through 17, except for | ||
213 | 11 and 13. There are algorithms for both signed and unsigned | ||
214 | quantities given. | ||
215 | |||
216 | TIMINGS (cycles) | ||
217 | |||
218 | divisor positive negative unsigned | ||
219 | |||
220 | . 1 2 2 2 | ||
221 | . 2 4 4 2 | ||
222 | . 3 19 21 19 | ||
223 | . 4 4 4 2 | ||
224 | . 5 18 22 19 | ||
225 | . 6 19 22 19 | ||
226 | . 8 4 4 2 | ||
227 | . 10 18 19 17 | ||
228 | . 12 18 20 18 | ||
229 | . 15 16 18 16 | ||
230 | . 16 4 4 2 | ||
231 | . 17 16 18 16 | ||
232 | |||
233 | Now, the algorithm for 7, 9, and 14 is an iterative one. That is, | ||
234 | a loop body is executed until the tentative quotient is 0. The | ||
235 | number of times the loop body is executed varies depending on the | ||
236 | dividend, but is never more than two times. If the dividend is | ||
237 | less than the divisor, then the loop body is not executed at all. | ||
238 | Each iteration adds 4 cycles to the timings. | ||
239 | |||
240 | divisor positive negative unsigned | ||
241 | |||
242 | . 7 19+4n 20+4n 20+4n n = number of iterations | ||
243 | . 9 21+4n 22+4n 21+4n | ||
244 | . 14 21+4n 22+4n 20+4n | ||
245 | |||
246 | To give an idea of how the number of iterations varies, here is a | ||
247 | table of dividend versus number of iterations when dividing by 7. | ||
248 | |||
249 | smallest largest required | ||
250 | dividend dividend iterations | ||
251 | |||
252 | . 0 6 0 | ||
253 | . 7 0x6ffffff 1 | ||
254 | 0x1000006 0xffffffff 2 | ||
255 | |||
256 | There is some overlap in the range of numbers requiring 1 and 2 | ||
257 | iterations. */ | ||
258 | |||
259 | RDEFINE(t2,r1) | ||
260 | RDEFINE(x2,arg0) /* r26 */ | ||
261 | RDEFINE(t1,arg1) /* r25 */ | ||
262 | RDEFINE(x1,ret1) /* r29 */ | ||
263 | |||
264 | SUBSPA_MILLI_DIV | ||
265 | ATTR_MILLI | ||
266 | |||
267 | .proc | ||
268 | .callinfo millicode | ||
269 | .entry | ||
270 | /* NONE of these routines require a stack frame | ||
271 | ALL of these routines are unwindable from millicode */ | ||
272 | |||
273 | GSYM($$divide_by_constant) | ||
274 | .export $$divide_by_constant,millicode | ||
275 | /* Provides a "nice" label for the code covered by the unwind descriptor | ||
276 | for things like gprof. */ | ||
277 | |||
278 | /* DIVISION BY 2 (shift by 1) */ | ||
279 | GSYM($$divI_2) | ||
280 | .export $$divI_2,millicode | ||
281 | comclr,>= arg0,0,0 | ||
282 | addi 1,arg0,arg0 | ||
283 | MILLIRET | ||
284 | extrs arg0,30,31,ret1 | ||
285 | |||
286 | |||
287 | /* DIVISION BY 4 (shift by 2) */ | ||
288 | GSYM($$divI_4) | ||
289 | .export $$divI_4,millicode | ||
290 | comclr,>= arg0,0,0 | ||
291 | addi 3,arg0,arg0 | ||
292 | MILLIRET | ||
293 | extrs arg0,29,30,ret1 | ||
294 | |||
295 | |||
296 | /* DIVISION BY 8 (shift by 3) */ | ||
297 | GSYM($$divI_8) | ||
298 | .export $$divI_8,millicode | ||
299 | comclr,>= arg0,0,0 | ||
300 | addi 7,arg0,arg0 | ||
301 | MILLIRET | ||
302 | extrs arg0,28,29,ret1 | ||
303 | |||
304 | /* DIVISION BY 16 (shift by 4) */ | ||
305 | GSYM($$divI_16) | ||
306 | .export $$divI_16,millicode | ||
307 | comclr,>= arg0,0,0 | ||
308 | addi 15,arg0,arg0 | ||
309 | MILLIRET | ||
310 | extrs arg0,27,28,ret1 | ||
311 | |||
312 | /**************************************************************************** | ||
313 | * | ||
314 | * DIVISION BY DIVISORS OF FFFFFFFF, and powers of 2 times these | ||
315 | * | ||
316 | * includes 3,5,15,17 and also 6,10,12 | ||
317 | * | ||
318 | ****************************************************************************/ | ||
319 | |||
320 | /* DIVISION BY 3 (use z = 2**32; a = 55555555) */ | ||
321 | |||
322 | GSYM($$divI_3) | ||
323 | .export $$divI_3,millicode | ||
324 | comb,<,N x2,0,LREF(neg3) | ||
325 | |||
326 | addi 1,x2,x2 /* this cannot overflow */ | ||
327 | extru x2,1,2,x1 /* multiply by 5 to get started */ | ||
328 | sh2add x2,x2,x2 | ||
329 | b LREF(pos) | ||
330 | addc x1,0,x1 | ||
331 | |||
332 | LSYM(neg3) | ||
333 | subi 1,x2,x2 /* this cannot overflow */ | ||
334 | extru x2,1,2,x1 /* multiply by 5 to get started */ | ||
335 | sh2add x2,x2,x2 | ||
336 | b LREF(neg) | ||
337 | addc x1,0,x1 | ||
338 | |||
339 | GSYM($$divU_3) | ||
340 | .export $$divU_3,millicode | ||
341 | addi 1,x2,x2 /* this CAN overflow */ | ||
342 | addc 0,0,x1 | ||
343 | shd x1,x2,30,t1 /* multiply by 5 to get started */ | ||
344 | sh2add x2,x2,x2 | ||
345 | b LREF(pos) | ||
346 | addc x1,t1,x1 | ||
347 | |||
348 | /* DIVISION BY 5 (use z = 2**32; a = 33333333) */ | ||
349 | |||
350 | GSYM($$divI_5) | ||
351 | .export $$divI_5,millicode | ||
352 | comb,<,N x2,0,LREF(neg5) | ||
353 | |||
354 | addi 3,x2,t1 /* this cannot overflow */ | ||
355 | sh1add x2,t1,x2 /* multiply by 3 to get started */ | ||
356 | b LREF(pos) | ||
357 | addc 0,0,x1 | ||
358 | |||
359 | LSYM(neg5) | ||
360 | sub 0,x2,x2 /* negate x2 */ | ||
361 | addi 1,x2,x2 /* this cannot overflow */ | ||
362 | shd 0,x2,31,x1 /* get top bit (can be 1) */ | ||
363 | sh1add x2,x2,x2 /* multiply by 3 to get started */ | ||
364 | b LREF(neg) | ||
365 | addc x1,0,x1 | ||
366 | |||
367 | GSYM($$divU_5) | ||
368 | .export $$divU_5,millicode | ||
369 | addi 1,x2,x2 /* this CAN overflow */ | ||
370 | addc 0,0,x1 | ||
371 | shd x1,x2,31,t1 /* multiply by 3 to get started */ | ||
372 | sh1add x2,x2,x2 | ||
373 | b LREF(pos) | ||
374 | addc t1,x1,x1 | ||
375 | |||
376 | /* DIVISION BY 6 (shift to divide by 2 then divide by 3) */ | ||
377 | GSYM($$divI_6) | ||
378 | .export $$divI_6,millicode | ||
379 | comb,<,N x2,0,LREF(neg6) | ||
380 | extru x2,30,31,x2 /* divide by 2 */ | ||
381 | addi 5,x2,t1 /* compute 5*(x2+1) = 5*x2+5 */ | ||
382 | sh2add x2,t1,x2 /* multiply by 5 to get started */ | ||
383 | b LREF(pos) | ||
384 | addc 0,0,x1 | ||
385 | |||
386 | LSYM(neg6) | ||
387 | subi 2,x2,x2 /* negate, divide by 2, and add 1 */ | ||
388 | /* negation and adding 1 are done */ | ||
389 | /* at the same time by the SUBI */ | ||
390 | extru x2,30,31,x2 | ||
391 | shd 0,x2,30,x1 | ||
392 | sh2add x2,x2,x2 /* multiply by 5 to get started */ | ||
393 | b LREF(neg) | ||
394 | addc x1,0,x1 | ||
395 | |||
396 | GSYM($$divU_6) | ||
397 | .export $$divU_6,millicode | ||
398 | extru x2,30,31,x2 /* divide by 2 */ | ||
399 | addi 1,x2,x2 /* cannot carry */ | ||
400 | shd 0,x2,30,x1 /* multiply by 5 to get started */ | ||
401 | sh2add x2,x2,x2 | ||
402 | b LREF(pos) | ||
403 | addc x1,0,x1 | ||
404 | |||
405 | /* DIVISION BY 10 (shift to divide by 2 then divide by 5) */ | ||
406 | GSYM($$divU_10) | ||
407 | .export $$divU_10,millicode | ||
408 | extru x2,30,31,x2 /* divide by 2 */ | ||
409 | addi 3,x2,t1 /* compute 3*(x2+1) = (3*x2)+3 */ | ||
410 | sh1add x2,t1,x2 /* multiply by 3 to get started */ | ||
411 | addc 0,0,x1 | ||
412 | LSYM(pos) | ||
413 | shd x1,x2,28,t1 /* multiply by 0x11 */ | ||
414 | shd x2,0,28,t2 | ||
415 | add x2,t2,x2 | ||
416 | addc x1,t1,x1 | ||
417 | LSYM(pos_for_17) | ||
418 | shd x1,x2,24,t1 /* multiply by 0x101 */ | ||
419 | shd x2,0,24,t2 | ||
420 | add x2,t2,x2 | ||
421 | addc x1,t1,x1 | ||
422 | |||
423 | shd x1,x2,16,t1 /* multiply by 0x10001 */ | ||
424 | shd x2,0,16,t2 | ||
425 | add x2,t2,x2 | ||
426 | MILLIRET | ||
427 | addc x1,t1,x1 | ||
428 | |||
429 | GSYM($$divI_10) | ||
430 | .export $$divI_10,millicode | ||
431 | comb,< x2,0,LREF(neg10) | ||
432 | copy 0,x1 | ||
433 | extru x2,30,31,x2 /* divide by 2 */ | ||
434 | addib,TR 1,x2,LREF(pos) /* add 1 (cannot overflow) */ | ||
435 | sh1add x2,x2,x2 /* multiply by 3 to get started */ | ||
436 | |||
437 | LSYM(neg10) | ||
438 | subi 2,x2,x2 /* negate, divide by 2, and add 1 */ | ||
439 | /* negation and adding 1 are done */ | ||
440 | /* at the same time by the SUBI */ | ||
441 | extru x2,30,31,x2 | ||
442 | sh1add x2,x2,x2 /* multiply by 3 to get started */ | ||
443 | LSYM(neg) | ||
444 | shd x1,x2,28,t1 /* multiply by 0x11 */ | ||
445 | shd x2,0,28,t2 | ||
446 | add x2,t2,x2 | ||
447 | addc x1,t1,x1 | ||
448 | LSYM(neg_for_17) | ||
449 | shd x1,x2,24,t1 /* multiply by 0x101 */ | ||
450 | shd x2,0,24,t2 | ||
451 | add x2,t2,x2 | ||
452 | addc x1,t1,x1 | ||
453 | |||
454 | shd x1,x2,16,t1 /* multiply by 0x10001 */ | ||
455 | shd x2,0,16,t2 | ||
456 | add x2,t2,x2 | ||
457 | addc x1,t1,x1 | ||
458 | MILLIRET | ||
459 | sub 0,x1,x1 | ||
460 | |||
461 | /* DIVISION BY 12 (shift to divide by 4 then divide by 3) */ | ||
462 | GSYM($$divI_12) | ||
463 | .export $$divI_12,millicode | ||
464 | comb,< x2,0,LREF(neg12) | ||
465 | copy 0,x1 | ||
466 | extru x2,29,30,x2 /* divide by 4 */ | ||
467 | addib,tr 1,x2,LREF(pos) /* compute 5*(x2+1) = 5*x2+5 */ | ||
468 | sh2add x2,x2,x2 /* multiply by 5 to get started */ | ||
469 | |||
470 | LSYM(neg12) | ||
471 | subi 4,x2,x2 /* negate, divide by 4, and add 1 */ | ||
472 | /* negation and adding 1 are done */ | ||
473 | /* at the same time by the SUBI */ | ||
474 | extru x2,29,30,x2 | ||
475 | b LREF(neg) | ||
476 | sh2add x2,x2,x2 /* multiply by 5 to get started */ | ||
477 | |||
478 | GSYM($$divU_12) | ||
479 | .export $$divU_12,millicode | ||
480 | extru x2,29,30,x2 /* divide by 4 */ | ||
481 | addi 5,x2,t1 /* cannot carry */ | ||
482 | sh2add x2,t1,x2 /* multiply by 5 to get started */ | ||
483 | b LREF(pos) | ||
484 | addc 0,0,x1 | ||
485 | |||
486 | /* DIVISION BY 15 (use z = 2**32; a = 11111111) */ | ||
487 | GSYM($$divI_15) | ||
488 | .export $$divI_15,millicode | ||
489 | comb,< x2,0,LREF(neg15) | ||
490 | copy 0,x1 | ||
491 | addib,tr 1,x2,LREF(pos)+4 | ||
492 | shd x1,x2,28,t1 | ||
493 | |||
494 | LSYM(neg15) | ||
495 | b LREF(neg) | ||
496 | subi 1,x2,x2 | ||
497 | |||
498 | GSYM($$divU_15) | ||
499 | .export $$divU_15,millicode | ||
500 | addi 1,x2,x2 /* this CAN overflow */ | ||
501 | b LREF(pos) | ||
502 | addc 0,0,x1 | ||
503 | |||
504 | /* DIVISION BY 17 (use z = 2**32; a = f0f0f0f) */ | ||
505 | GSYM($$divI_17) | ||
506 | .export $$divI_17,millicode | ||
507 | comb,<,n x2,0,LREF(neg17) | ||
508 | addi 1,x2,x2 /* this cannot overflow */ | ||
509 | shd 0,x2,28,t1 /* multiply by 0xf to get started */ | ||
510 | shd x2,0,28,t2 | ||
511 | sub t2,x2,x2 | ||
512 | b LREF(pos_for_17) | ||
513 | subb t1,0,x1 | ||
514 | |||
515 | LSYM(neg17) | ||
516 | subi 1,x2,x2 /* this cannot overflow */ | ||
517 | shd 0,x2,28,t1 /* multiply by 0xf to get started */ | ||
518 | shd x2,0,28,t2 | ||
519 | sub t2,x2,x2 | ||
520 | b LREF(neg_for_17) | ||
521 | subb t1,0,x1 | ||
522 | |||
523 | GSYM($$divU_17) | ||
524 | .export $$divU_17,millicode | ||
525 | addi 1,x2,x2 /* this CAN overflow */ | ||
526 | addc 0,0,x1 | ||
527 | shd x1,x2,28,t1 /* multiply by 0xf to get started */ | ||
528 | LSYM(u17) | ||
529 | shd x2,0,28,t2 | ||
530 | sub t2,x2,x2 | ||
531 | b LREF(pos_for_17) | ||
532 | subb t1,x1,x1 | ||
533 | |||
534 | |||
535 | /* DIVISION BY DIVISORS OF FFFFFF, and powers of 2 times these | ||
536 | includes 7,9 and also 14 | ||
537 | |||
538 | |||
539 | z = 2**24-1 | ||
540 | r = z mod x = 0 | ||
541 | |||
542 | so choose b = 0 | ||
543 | |||
544 | Also, in order to divide by z = 2**24-1, we approximate by dividing | ||
545 | by (z+1) = 2**24 (which is easy), and then correcting. | ||
546 | |||
547 | (ax) = (z+1)q' + r | ||
548 | . = zq' + (q'+r) | ||
549 | |||
550 | So to compute (ax)/z, compute q' = (ax)/(z+1) and r = (ax) mod (z+1) | ||
551 | Then the true remainder of (ax)/z is (q'+r). Repeat the process | ||
552 | with this new remainder, adding the tentative quotients together, | ||
553 | until a tentative quotient is 0 (and then we are done). There is | ||
554 | one last correction to be done. It is possible that (q'+r) = z. | ||
555 | If so, then (q'+r)/(z+1) = 0 and it looks like we are done. But, | ||
556 | in fact, we need to add 1 more to the quotient. Now, it turns | ||
557 | out that this happens if and only if the original value x is | ||
558 | an exact multiple of y. So, to avoid a three instruction test at | ||
559 | the end, instead use 1 instruction to add 1 to x at the beginning. */ | ||
560 | |||
561 | /* DIVISION BY 7 (use z = 2**24-1; a = 249249) */ | ||
562 | GSYM($$divI_7) | ||
563 | .export $$divI_7,millicode | ||
564 | comb,<,n x2,0,LREF(neg7) | ||
565 | LSYM(7) | ||
566 | addi 1,x2,x2 /* cannot overflow */ | ||
567 | shd 0,x2,29,x1 | ||
568 | sh3add x2,x2,x2 | ||
569 | addc x1,0,x1 | ||
570 | LSYM(pos7) | ||
571 | shd x1,x2,26,t1 | ||
572 | shd x2,0,26,t2 | ||
573 | add x2,t2,x2 | ||
574 | addc x1,t1,x1 | ||
575 | |||
576 | shd x1,x2,20,t1 | ||
577 | shd x2,0,20,t2 | ||
578 | add x2,t2,x2 | ||
579 | addc x1,t1,t1 | ||
580 | |||
581 | /* computed <t1,x2>. Now divide it by (2**24 - 1) */ | ||
582 | |||
583 | copy 0,x1 | ||
584 | shd,= t1,x2,24,t1 /* tentative quotient */ | ||
585 | LSYM(1) | ||
586 | addb,tr t1,x1,LREF(2) /* add to previous quotient */ | ||
587 | extru x2,31,24,x2 /* new remainder (unadjusted) */ | ||
588 | |||
589 | MILLIRETN | ||
590 | |||
591 | LSYM(2) | ||
592 | addb,tr t1,x2,LREF(1) /* adjust remainder */ | ||
593 | extru,= x2,7,8,t1 /* new quotient */ | ||
594 | |||
595 | LSYM(neg7) | ||
596 | subi 1,x2,x2 /* negate x2 and add 1 */ | ||
597 | LSYM(8) | ||
598 | shd 0,x2,29,x1 | ||
599 | sh3add x2,x2,x2 | ||
600 | addc x1,0,x1 | ||
601 | |||
602 | LSYM(neg7_shift) | ||
603 | shd x1,x2,26,t1 | ||
604 | shd x2,0,26,t2 | ||
605 | add x2,t2,x2 | ||
606 | addc x1,t1,x1 | ||
607 | |||
608 | shd x1,x2,20,t1 | ||
609 | shd x2,0,20,t2 | ||
610 | add x2,t2,x2 | ||
611 | addc x1,t1,t1 | ||
612 | |||
613 | /* computed <t1,x2>. Now divide it by (2**24 - 1) */ | ||
614 | |||
615 | copy 0,x1 | ||
616 | shd,= t1,x2,24,t1 /* tentative quotient */ | ||
617 | LSYM(3) | ||
618 | addb,tr t1,x1,LREF(4) /* add to previous quotient */ | ||
619 | extru x2,31,24,x2 /* new remainder (unadjusted) */ | ||
620 | |||
621 | MILLIRET | ||
622 | sub 0,x1,x1 /* negate result */ | ||
623 | |||
624 | LSYM(4) | ||
625 | addb,tr t1,x2,LREF(3) /* adjust remainder */ | ||
626 | extru,= x2,7,8,t1 /* new quotient */ | ||
627 | |||
628 | GSYM($$divU_7) | ||
629 | .export $$divU_7,millicode | ||
630 | addi 1,x2,x2 /* can carry */ | ||
631 | addc 0,0,x1 | ||
632 | shd x1,x2,29,t1 | ||
633 | sh3add x2,x2,x2 | ||
634 | b LREF(pos7) | ||
635 | addc t1,x1,x1 | ||
636 | |||
637 | /* DIVISION BY 9 (use z = 2**24-1; a = 1c71c7) */ | ||
638 | GSYM($$divI_9) | ||
639 | .export $$divI_9,millicode | ||
640 | comb,<,n x2,0,LREF(neg9) | ||
641 | addi 1,x2,x2 /* cannot overflow */ | ||
642 | shd 0,x2,29,t1 | ||
643 | shd x2,0,29,t2 | ||
644 | sub t2,x2,x2 | ||
645 | b LREF(pos7) | ||
646 | subb t1,0,x1 | ||
647 | |||
648 | LSYM(neg9) | ||
649 | subi 1,x2,x2 /* negate and add 1 */ | ||
650 | shd 0,x2,29,t1 | ||
651 | shd x2,0,29,t2 | ||
652 | sub t2,x2,x2 | ||
653 | b LREF(neg7_shift) | ||
654 | subb t1,0,x1 | ||
655 | |||
656 | GSYM($$divU_9) | ||
657 | .export $$divU_9,millicode | ||
658 | addi 1,x2,x2 /* can carry */ | ||
659 | addc 0,0,x1 | ||
660 | shd x1,x2,29,t1 | ||
661 | shd x2,0,29,t2 | ||
662 | sub t2,x2,x2 | ||
663 | b LREF(pos7) | ||
664 | subb t1,x1,x1 | ||
665 | |||
666 | /* DIVISION BY 14 (shift to divide by 2 then divide by 7) */ | ||
667 | GSYM($$divI_14) | ||
668 | .export $$divI_14,millicode | ||
669 | comb,<,n x2,0,LREF(neg14) | ||
670 | GSYM($$divU_14) | ||
671 | .export $$divU_14,millicode | ||
672 | b LREF(7) /* go to 7 case */ | ||
673 | extru x2,30,31,x2 /* divide by 2 */ | ||
674 | |||
675 | LSYM(neg14) | ||
676 | subi 2,x2,x2 /* negate (and add 2) */ | ||
677 | b LREF(8) | ||
678 | extru x2,30,31,x2 /* divide by 2 */ | ||
679 | .exit | ||
680 | .procend | ||
681 | .end | ||
682 | #endif | ||
diff --git a/arch/parisc/lib/milli/dyncall.S b/arch/parisc/lib/milli/dyncall.S new file mode 100644 index 000000000000..27f9ca558d0a --- /dev/null +++ b/arch/parisc/lib/milli/dyncall.S | |||
@@ -0,0 +1,32 @@ | |||
1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
3 | and Alan Modra <alan@linuxcare.com.au>. | ||
4 | |||
5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
6 | |||
7 | This file is part of GCC and is released under the terms of | ||
8 | of the GNU General Public License as published by the Free Software | ||
9 | Foundation; either version 2, or (at your option) any later version. | ||
10 | See the file COPYING in the top-level GCC source directory for a copy | ||
11 | of the license. */ | ||
12 | |||
13 | #include "milli.h" | ||
14 | |||
15 | #ifdef L_dyncall | ||
16 | SUBSPA_MILLI | ||
17 | ATTR_DATA | ||
18 | GSYM($$dyncall) | ||
19 | .export $$dyncall,millicode | ||
20 | .proc | ||
21 | .callinfo millicode | ||
22 | .entry | ||
23 | bb,>=,n %r22,30,LREF(1) ; branch if not plabel address | ||
24 | depi 0,31,2,%r22 ; clear the two least significant bits | ||
25 | ldw 4(%r22),%r19 ; load new LTP value | ||
26 | ldw 0(%r22),%r22 ; load address of target | ||
27 | LSYM(1) | ||
28 | bv %r0(%r22) ; branch to the real target | ||
29 | stw %r2,-24(%r30) ; save return address into frame marker | ||
30 | .exit | ||
31 | .procend | ||
32 | #endif | ||
diff --git a/arch/parisc/lib/milli/milli.S b/arch/parisc/lib/milli/milli.S new file mode 100644 index 000000000000..47c6cde712e3 --- /dev/null +++ b/arch/parisc/lib/milli/milli.S | |||
@@ -0,0 +1,2071 @@ | |||
1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
3 | and Alan Modra <alan@linuxcare.com.au>. | ||
4 | |||
5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
6 | |||
7 | This file is part of GCC and is released under the terms of | ||
8 | of the GNU General Public License as published by the Free Software | ||
9 | Foundation; either version 2, or (at your option) any later version. | ||
10 | See the file COPYING in the top-level GCC source directory for a copy | ||
11 | of the license. */ | ||
12 | |||
13 | #ifdef CONFIG_64BIT | ||
14 | .level 2.0w | ||
15 | #endif | ||
16 | |||
17 | /* Hardware General Registers. */ | ||
18 | r0: .reg %r0 | ||
19 | r1: .reg %r1 | ||
20 | r2: .reg %r2 | ||
21 | r3: .reg %r3 | ||
22 | r4: .reg %r4 | ||
23 | r5: .reg %r5 | ||
24 | r6: .reg %r6 | ||
25 | r7: .reg %r7 | ||
26 | r8: .reg %r8 | ||
27 | r9: .reg %r9 | ||
28 | r10: .reg %r10 | ||
29 | r11: .reg %r11 | ||
30 | r12: .reg %r12 | ||
31 | r13: .reg %r13 | ||
32 | r14: .reg %r14 | ||
33 | r15: .reg %r15 | ||
34 | r16: .reg %r16 | ||
35 | r17: .reg %r17 | ||
36 | r18: .reg %r18 | ||
37 | r19: .reg %r19 | ||
38 | r20: .reg %r20 | ||
39 | r21: .reg %r21 | ||
40 | r22: .reg %r22 | ||
41 | r23: .reg %r23 | ||
42 | r24: .reg %r24 | ||
43 | r25: .reg %r25 | ||
44 | r26: .reg %r26 | ||
45 | r27: .reg %r27 | ||
46 | r28: .reg %r28 | ||
47 | r29: .reg %r29 | ||
48 | r30: .reg %r30 | ||
49 | r31: .reg %r31 | ||
50 | |||
51 | /* Hardware Space Registers. */ | ||
52 | sr0: .reg %sr0 | ||
53 | sr1: .reg %sr1 | ||
54 | sr2: .reg %sr2 | ||
55 | sr3: .reg %sr3 | ||
56 | sr4: .reg %sr4 | ||
57 | sr5: .reg %sr5 | ||
58 | sr6: .reg %sr6 | ||
59 | sr7: .reg %sr7 | ||
60 | |||
61 | /* Hardware Floating Point Registers. */ | ||
62 | fr0: .reg %fr0 | ||
63 | fr1: .reg %fr1 | ||
64 | fr2: .reg %fr2 | ||
65 | fr3: .reg %fr3 | ||
66 | fr4: .reg %fr4 | ||
67 | fr5: .reg %fr5 | ||
68 | fr6: .reg %fr6 | ||
69 | fr7: .reg %fr7 | ||
70 | fr8: .reg %fr8 | ||
71 | fr9: .reg %fr9 | ||
72 | fr10: .reg %fr10 | ||
73 | fr11: .reg %fr11 | ||
74 | fr12: .reg %fr12 | ||
75 | fr13: .reg %fr13 | ||
76 | fr14: .reg %fr14 | ||
77 | fr15: .reg %fr15 | ||
78 | |||
79 | /* Hardware Control Registers. */ | ||
80 | cr11: .reg %cr11 | ||
81 | sar: .reg %cr11 /* Shift Amount Register */ | ||
82 | |||
83 | /* Software Architecture General Registers. */ | ||
84 | rp: .reg r2 /* return pointer */ | ||
85 | #ifdef CONFIG_64BIT | ||
86 | mrp: .reg r2 /* millicode return pointer */ | ||
87 | #else | ||
88 | mrp: .reg r31 /* millicode return pointer */ | ||
89 | #endif | ||
90 | ret0: .reg r28 /* return value */ | ||
91 | ret1: .reg r29 /* return value (high part of double) */ | ||
92 | sp: .reg r30 /* stack pointer */ | ||
93 | dp: .reg r27 /* data pointer */ | ||
94 | arg0: .reg r26 /* argument */ | ||
95 | arg1: .reg r25 /* argument or high part of double argument */ | ||
96 | arg2: .reg r24 /* argument */ | ||
97 | arg3: .reg r23 /* argument or high part of double argument */ | ||
98 | |||
99 | /* Software Architecture Space Registers. */ | ||
100 | /* sr0 ; return link from BLE */ | ||
101 | sret: .reg sr1 /* return value */ | ||
102 | sarg: .reg sr1 /* argument */ | ||
103 | /* sr4 ; PC SPACE tracker */ | ||
104 | /* sr5 ; process private data */ | ||
105 | |||
106 | /* Frame Offsets (millicode convention!) Used when calling other | ||
107 | millicode routines. Stack unwinding is dependent upon these | ||
108 | definitions. */ | ||
109 | r31_slot: .equ -20 /* "current RP" slot */ | ||
110 | sr0_slot: .equ -16 /* "static link" slot */ | ||
111 | #if defined(CONFIG_64BIT) | ||
112 | mrp_slot: .equ -16 /* "current RP" slot */ | ||
113 | psp_slot: .equ -8 /* "previous SP" slot */ | ||
114 | #else | ||
115 | mrp_slot: .equ -20 /* "current RP" slot (replacing "r31_slot") */ | ||
116 | #endif | ||
117 | |||
118 | |||
119 | #define DEFINE(name,value)name: .EQU value | ||
120 | #define RDEFINE(name,value)name: .REG value | ||
121 | #ifdef milliext | ||
122 | #define MILLI_BE(lbl) BE lbl(sr7,r0) | ||
123 | #define MILLI_BEN(lbl) BE,n lbl(sr7,r0) | ||
124 | #define MILLI_BLE(lbl) BLE lbl(sr7,r0) | ||
125 | #define MILLI_BLEN(lbl) BLE,n lbl(sr7,r0) | ||
126 | #define MILLIRETN BE,n 0(sr0,mrp) | ||
127 | #define MILLIRET BE 0(sr0,mrp) | ||
128 | #define MILLI_RETN BE,n 0(sr0,mrp) | ||
129 | #define MILLI_RET BE 0(sr0,mrp) | ||
130 | #else | ||
131 | #define MILLI_BE(lbl) B lbl | ||
132 | #define MILLI_BEN(lbl) B,n lbl | ||
133 | #define MILLI_BLE(lbl) BL lbl,mrp | ||
134 | #define MILLI_BLEN(lbl) BL,n lbl,mrp | ||
135 | #define MILLIRETN BV,n 0(mrp) | ||
136 | #define MILLIRET BV 0(mrp) | ||
137 | #define MILLI_RETN BV,n 0(mrp) | ||
138 | #define MILLI_RET BV 0(mrp) | ||
139 | #endif | ||
140 | |||
141 | #define CAT(a,b) a##b | ||
142 | |||
143 | #define SUBSPA_MILLI .section .text | ||
144 | #define SUBSPA_MILLI_DIV .section .text.div,"ax",@progbits! .align 16 | ||
145 | #define SUBSPA_MILLI_MUL .section .text.mul,"ax",@progbits! .align 16 | ||
146 | #define ATTR_MILLI | ||
147 | #define SUBSPA_DATA .section .data | ||
148 | #define ATTR_DATA | ||
149 | #define GLOBAL $global$ | ||
150 | #define GSYM(sym) !sym: | ||
151 | #define LSYM(sym) !CAT(.L,sym:) | ||
152 | #define LREF(sym) CAT(.L,sym) | ||
153 | |||
154 | #ifdef L_dyncall | ||
155 | SUBSPA_MILLI | ||
156 | ATTR_DATA | ||
157 | GSYM($$dyncall) | ||
158 | .export $$dyncall,millicode | ||
159 | .proc | ||
160 | .callinfo millicode | ||
161 | .entry | ||
162 | bb,>=,n %r22,30,LREF(1) ; branch if not plabel address | ||
163 | depi 0,31,2,%r22 ; clear the two least significant bits | ||
164 | ldw 4(%r22),%r19 ; load new LTP value | ||
165 | ldw 0(%r22),%r22 ; load address of target | ||
166 | LSYM(1) | ||
167 | bv %r0(%r22) ; branch to the real target | ||
168 | stw %r2,-24(%r30) ; save return address into frame marker | ||
169 | .exit | ||
170 | .procend | ||
171 | #endif | ||
172 | |||
173 | #ifdef L_divI | ||
174 | /* ROUTINES: $$divI, $$divoI | ||
175 | |||
176 | Single precision divide for signed binary integers. | ||
177 | |||
178 | The quotient is truncated towards zero. | ||
179 | The sign of the quotient is the XOR of the signs of the dividend and | ||
180 | divisor. | ||
181 | Divide by zero is trapped. | ||
182 | Divide of -2**31 by -1 is trapped for $$divoI but not for $$divI. | ||
183 | |||
184 | INPUT REGISTERS: | ||
185 | . arg0 == dividend | ||
186 | . arg1 == divisor | ||
187 | . mrp == return pc | ||
188 | . sr0 == return space when called externally | ||
189 | |||
190 | OUTPUT REGISTERS: | ||
191 | . arg0 = undefined | ||
192 | . arg1 = undefined | ||
193 | . ret1 = quotient | ||
194 | |||
195 | OTHER REGISTERS AFFECTED: | ||
196 | . r1 = undefined | ||
197 | |||
198 | SIDE EFFECTS: | ||
199 | . Causes a trap under the following conditions: | ||
200 | . divisor is zero (traps with ADDIT,= 0,25,0) | ||
201 | . dividend==-2**31 and divisor==-1 and routine is $$divoI | ||
202 | . (traps with ADDO 26,25,0) | ||
203 | . Changes memory at the following places: | ||
204 | . NONE | ||
205 | |||
206 | PERMISSIBLE CONTEXT: | ||
207 | . Unwindable. | ||
208 | . Suitable for internal or external millicode. | ||
209 | . Assumes the special millicode register conventions. | ||
210 | |||
211 | DISCUSSION: | ||
212 | . Branchs to other millicode routines using BE | ||
213 | . $$div_# for # being 2,3,4,5,6,7,8,9,10,12,14,15 | ||
214 | . | ||
215 | . For selected divisors, calls a divide by constant routine written by | ||
216 | . Karl Pettis. Eligible divisors are 1..15 excluding 11 and 13. | ||
217 | . | ||
218 | . The only overflow case is -2**31 divided by -1. | ||
219 | . Both routines return -2**31 but only $$divoI traps. */ | ||
220 | |||
221 | RDEFINE(temp,r1) | ||
222 | RDEFINE(retreg,ret1) /* r29 */ | ||
223 | RDEFINE(temp1,arg0) | ||
224 | SUBSPA_MILLI_DIV | ||
225 | ATTR_MILLI | ||
226 | .import $$divI_2,millicode | ||
227 | .import $$divI_3,millicode | ||
228 | .import $$divI_4,millicode | ||
229 | .import $$divI_5,millicode | ||
230 | .import $$divI_6,millicode | ||
231 | .import $$divI_7,millicode | ||
232 | .import $$divI_8,millicode | ||
233 | .import $$divI_9,millicode | ||
234 | .import $$divI_10,millicode | ||
235 | .import $$divI_12,millicode | ||
236 | .import $$divI_14,millicode | ||
237 | .import $$divI_15,millicode | ||
238 | .export $$divI,millicode | ||
239 | .export $$divoI,millicode | ||
240 | .proc | ||
241 | .callinfo millicode | ||
242 | .entry | ||
243 | GSYM($$divoI) | ||
244 | comib,=,n -1,arg1,LREF(negative1) /* when divisor == -1 */ | ||
245 | GSYM($$divI) | ||
246 | ldo -1(arg1),temp /* is there at most one bit set ? */ | ||
247 | and,<> arg1,temp,r0 /* if not, don't use power of 2 divide */ | ||
248 | addi,> 0,arg1,r0 /* if divisor > 0, use power of 2 divide */ | ||
249 | b,n LREF(neg_denom) | ||
250 | LSYM(pow2) | ||
251 | addi,>= 0,arg0,retreg /* if numerator is negative, add the */ | ||
252 | add arg0,temp,retreg /* (denominaotr -1) to correct for shifts */ | ||
253 | extru,= arg1,15,16,temp /* test denominator with 0xffff0000 */ | ||
254 | extrs retreg,15,16,retreg /* retreg = retreg >> 16 */ | ||
255 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 16) */ | ||
256 | ldi 0xcc,temp1 /* setup 0xcc in temp1 */ | ||
257 | extru,= arg1,23,8,temp /* test denominator with 0xff00 */ | ||
258 | extrs retreg,23,24,retreg /* retreg = retreg >> 8 */ | ||
259 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 8) */ | ||
260 | ldi 0xaa,temp /* setup 0xaa in temp */ | ||
261 | extru,= arg1,27,4,r0 /* test denominator with 0xf0 */ | ||
262 | extrs retreg,27,28,retreg /* retreg = retreg >> 4 */ | ||
263 | and,= arg1,temp1,r0 /* test denominator with 0xcc */ | ||
264 | extrs retreg,29,30,retreg /* retreg = retreg >> 2 */ | ||
265 | and,= arg1,temp,r0 /* test denominator with 0xaa */ | ||
266 | extrs retreg,30,31,retreg /* retreg = retreg >> 1 */ | ||
267 | MILLIRETN | ||
268 | LSYM(neg_denom) | ||
269 | addi,< 0,arg1,r0 /* if arg1 >= 0, it's not power of 2 */ | ||
270 | b,n LREF(regular_seq) | ||
271 | sub r0,arg1,temp /* make denominator positive */ | ||
272 | comb,=,n arg1,temp,LREF(regular_seq) /* test against 0x80000000 and 0 */ | ||
273 | ldo -1(temp),retreg /* is there at most one bit set ? */ | ||
274 | and,= temp,retreg,r0 /* if so, the denominator is power of 2 */ | ||
275 | b,n LREF(regular_seq) | ||
276 | sub r0,arg0,retreg /* negate numerator */ | ||
277 | comb,=,n arg0,retreg,LREF(regular_seq) /* test against 0x80000000 */ | ||
278 | copy retreg,arg0 /* set up arg0, arg1 and temp */ | ||
279 | copy temp,arg1 /* before branching to pow2 */ | ||
280 | b LREF(pow2) | ||
281 | ldo -1(arg1),temp | ||
282 | LSYM(regular_seq) | ||
283 | comib,>>=,n 15,arg1,LREF(small_divisor) | ||
284 | add,>= 0,arg0,retreg /* move dividend, if retreg < 0, */ | ||
285 | LSYM(normal) | ||
286 | subi 0,retreg,retreg /* make it positive */ | ||
287 | sub 0,arg1,temp /* clear carry, */ | ||
288 | /* negate the divisor */ | ||
289 | ds 0,temp,0 /* set V-bit to the comple- */ | ||
290 | /* ment of the divisor sign */ | ||
291 | add retreg,retreg,retreg /* shift msb bit into carry */ | ||
292 | ds r0,arg1,temp /* 1st divide step, if no carry */ | ||
293 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
294 | ds temp,arg1,temp /* 2nd divide step */ | ||
295 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
296 | ds temp,arg1,temp /* 3rd divide step */ | ||
297 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
298 | ds temp,arg1,temp /* 4th divide step */ | ||
299 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
300 | ds temp,arg1,temp /* 5th divide step */ | ||
301 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
302 | ds temp,arg1,temp /* 6th divide step */ | ||
303 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
304 | ds temp,arg1,temp /* 7th divide step */ | ||
305 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
306 | ds temp,arg1,temp /* 8th divide step */ | ||
307 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
308 | ds temp,arg1,temp /* 9th divide step */ | ||
309 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
310 | ds temp,arg1,temp /* 10th divide step */ | ||
311 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
312 | ds temp,arg1,temp /* 11th divide step */ | ||
313 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
314 | ds temp,arg1,temp /* 12th divide step */ | ||
315 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
316 | ds temp,arg1,temp /* 13th divide step */ | ||
317 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
318 | ds temp,arg1,temp /* 14th divide step */ | ||
319 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
320 | ds temp,arg1,temp /* 15th divide step */ | ||
321 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
322 | ds temp,arg1,temp /* 16th divide step */ | ||
323 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
324 | ds temp,arg1,temp /* 17th divide step */ | ||
325 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
326 | ds temp,arg1,temp /* 18th divide step */ | ||
327 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
328 | ds temp,arg1,temp /* 19th divide step */ | ||
329 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
330 | ds temp,arg1,temp /* 20th divide step */ | ||
331 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
332 | ds temp,arg1,temp /* 21st divide step */ | ||
333 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
334 | ds temp,arg1,temp /* 22nd divide step */ | ||
335 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
336 | ds temp,arg1,temp /* 23rd divide step */ | ||
337 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
338 | ds temp,arg1,temp /* 24th divide step */ | ||
339 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
340 | ds temp,arg1,temp /* 25th divide step */ | ||
341 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
342 | ds temp,arg1,temp /* 26th divide step */ | ||
343 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
344 | ds temp,arg1,temp /* 27th divide step */ | ||
345 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
346 | ds temp,arg1,temp /* 28th divide step */ | ||
347 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
348 | ds temp,arg1,temp /* 29th divide step */ | ||
349 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
350 | ds temp,arg1,temp /* 30th divide step */ | ||
351 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
352 | ds temp,arg1,temp /* 31st divide step */ | ||
353 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
354 | ds temp,arg1,temp /* 32nd divide step, */ | ||
355 | addc retreg,retreg,retreg /* shift last retreg bit into retreg */ | ||
356 | xor,>= arg0,arg1,0 /* get correct sign of quotient */ | ||
357 | sub 0,retreg,retreg /* based on operand signs */ | ||
358 | MILLIRETN | ||
359 | nop | ||
360 | |||
361 | LSYM(small_divisor) | ||
362 | |||
363 | #if defined(CONFIG_64BIT) | ||
364 | /* Clear the upper 32 bits of the arg1 register. We are working with */ | ||
365 | /* small divisors (and 32-bit integers) We must not be mislead */ | ||
366 | /* by "1" bits left in the upper 32 bits. */ | ||
367 | depd %r0,31,32,%r25 | ||
368 | #endif | ||
369 | blr,n arg1,r0 | ||
370 | nop | ||
371 | /* table for divisor == 0,1, ... ,15 */ | ||
372 | addit,= 0,arg1,r0 /* trap if divisor == 0 */ | ||
373 | nop | ||
374 | MILLIRET /* divisor == 1 */ | ||
375 | copy arg0,retreg | ||
376 | MILLI_BEN($$divI_2) /* divisor == 2 */ | ||
377 | nop | ||
378 | MILLI_BEN($$divI_3) /* divisor == 3 */ | ||
379 | nop | ||
380 | MILLI_BEN($$divI_4) /* divisor == 4 */ | ||
381 | nop | ||
382 | MILLI_BEN($$divI_5) /* divisor == 5 */ | ||
383 | nop | ||
384 | MILLI_BEN($$divI_6) /* divisor == 6 */ | ||
385 | nop | ||
386 | MILLI_BEN($$divI_7) /* divisor == 7 */ | ||
387 | nop | ||
388 | MILLI_BEN($$divI_8) /* divisor == 8 */ | ||
389 | nop | ||
390 | MILLI_BEN($$divI_9) /* divisor == 9 */ | ||
391 | nop | ||
392 | MILLI_BEN($$divI_10) /* divisor == 10 */ | ||
393 | nop | ||
394 | b LREF(normal) /* divisor == 11 */ | ||
395 | add,>= 0,arg0,retreg | ||
396 | MILLI_BEN($$divI_12) /* divisor == 12 */ | ||
397 | nop | ||
398 | b LREF(normal) /* divisor == 13 */ | ||
399 | add,>= 0,arg0,retreg | ||
400 | MILLI_BEN($$divI_14) /* divisor == 14 */ | ||
401 | nop | ||
402 | MILLI_BEN($$divI_15) /* divisor == 15 */ | ||
403 | nop | ||
404 | |||
405 | LSYM(negative1) | ||
406 | sub 0,arg0,retreg /* result is negation of dividend */ | ||
407 | MILLIRET | ||
408 | addo arg0,arg1,r0 /* trap iff dividend==0x80000000 && divisor==-1 */ | ||
409 | .exit | ||
410 | .procend | ||
411 | .end | ||
412 | #endif | ||
413 | |||
414 | #ifdef L_divU | ||
415 | /* ROUTINE: $$divU | ||
416 | . | ||
417 | . Single precision divide for unsigned integers. | ||
418 | . | ||
419 | . Quotient is truncated towards zero. | ||
420 | . Traps on divide by zero. | ||
421 | |||
422 | INPUT REGISTERS: | ||
423 | . arg0 == dividend | ||
424 | . arg1 == divisor | ||
425 | . mrp == return pc | ||
426 | . sr0 == return space when called externally | ||
427 | |||
428 | OUTPUT REGISTERS: | ||
429 | . arg0 = undefined | ||
430 | . arg1 = undefined | ||
431 | . ret1 = quotient | ||
432 | |||
433 | OTHER REGISTERS AFFECTED: | ||
434 | . r1 = undefined | ||
435 | |||
436 | SIDE EFFECTS: | ||
437 | . Causes a trap under the following conditions: | ||
438 | . divisor is zero | ||
439 | . Changes memory at the following places: | ||
440 | . NONE | ||
441 | |||
442 | PERMISSIBLE CONTEXT: | ||
443 | . Unwindable. | ||
444 | . Does not create a stack frame. | ||
445 | . Suitable for internal or external millicode. | ||
446 | . Assumes the special millicode register conventions. | ||
447 | |||
448 | DISCUSSION: | ||
449 | . Branchs to other millicode routines using BE: | ||
450 | . $$divU_# for 3,5,6,7,9,10,12,14,15 | ||
451 | . | ||
452 | . For selected small divisors calls the special divide by constant | ||
453 | . routines written by Karl Pettis. These are: 3,5,6,7,9,10,12,14,15. */ | ||
454 | |||
455 | RDEFINE(temp,r1) | ||
456 | RDEFINE(retreg,ret1) /* r29 */ | ||
457 | RDEFINE(temp1,arg0) | ||
458 | SUBSPA_MILLI_DIV | ||
459 | ATTR_MILLI | ||
460 | .export $$divU,millicode | ||
461 | .import $$divU_3,millicode | ||
462 | .import $$divU_5,millicode | ||
463 | .import $$divU_6,millicode | ||
464 | .import $$divU_7,millicode | ||
465 | .import $$divU_9,millicode | ||
466 | .import $$divU_10,millicode | ||
467 | .import $$divU_12,millicode | ||
468 | .import $$divU_14,millicode | ||
469 | .import $$divU_15,millicode | ||
470 | .proc | ||
471 | .callinfo millicode | ||
472 | .entry | ||
473 | GSYM($$divU) | ||
474 | /* The subtract is not nullified since it does no harm and can be used | ||
475 | by the two cases that branch back to "normal". */ | ||
476 | ldo -1(arg1),temp /* is there at most one bit set ? */ | ||
477 | and,= arg1,temp,r0 /* if so, denominator is power of 2 */ | ||
478 | b LREF(regular_seq) | ||
479 | addit,= 0,arg1,0 /* trap for zero dvr */ | ||
480 | copy arg0,retreg | ||
481 | extru,= arg1,15,16,temp /* test denominator with 0xffff0000 */ | ||
482 | extru retreg,15,16,retreg /* retreg = retreg >> 16 */ | ||
483 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 16) */ | ||
484 | ldi 0xcc,temp1 /* setup 0xcc in temp1 */ | ||
485 | extru,= arg1,23,8,temp /* test denominator with 0xff00 */ | ||
486 | extru retreg,23,24,retreg /* retreg = retreg >> 8 */ | ||
487 | or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 8) */ | ||
488 | ldi 0xaa,temp /* setup 0xaa in temp */ | ||
489 | extru,= arg1,27,4,r0 /* test denominator with 0xf0 */ | ||
490 | extru retreg,27,28,retreg /* retreg = retreg >> 4 */ | ||
491 | and,= arg1,temp1,r0 /* test denominator with 0xcc */ | ||
492 | extru retreg,29,30,retreg /* retreg = retreg >> 2 */ | ||
493 | and,= arg1,temp,r0 /* test denominator with 0xaa */ | ||
494 | extru retreg,30,31,retreg /* retreg = retreg >> 1 */ | ||
495 | MILLIRETN | ||
496 | nop | ||
497 | LSYM(regular_seq) | ||
498 | comib,>= 15,arg1,LREF(special_divisor) | ||
499 | subi 0,arg1,temp /* clear carry, negate the divisor */ | ||
500 | ds r0,temp,r0 /* set V-bit to 1 */ | ||
501 | LSYM(normal) | ||
502 | add arg0,arg0,retreg /* shift msb bit into carry */ | ||
503 | ds r0,arg1,temp /* 1st divide step, if no carry */ | ||
504 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
505 | ds temp,arg1,temp /* 2nd divide step */ | ||
506 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
507 | ds temp,arg1,temp /* 3rd divide step */ | ||
508 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
509 | ds temp,arg1,temp /* 4th divide step */ | ||
510 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
511 | ds temp,arg1,temp /* 5th divide step */ | ||
512 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
513 | ds temp,arg1,temp /* 6th divide step */ | ||
514 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
515 | ds temp,arg1,temp /* 7th divide step */ | ||
516 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
517 | ds temp,arg1,temp /* 8th divide step */ | ||
518 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
519 | ds temp,arg1,temp /* 9th divide step */ | ||
520 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
521 | ds temp,arg1,temp /* 10th divide step */ | ||
522 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
523 | ds temp,arg1,temp /* 11th divide step */ | ||
524 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
525 | ds temp,arg1,temp /* 12th divide step */ | ||
526 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
527 | ds temp,arg1,temp /* 13th divide step */ | ||
528 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
529 | ds temp,arg1,temp /* 14th divide step */ | ||
530 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
531 | ds temp,arg1,temp /* 15th divide step */ | ||
532 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
533 | ds temp,arg1,temp /* 16th divide step */ | ||
534 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
535 | ds temp,arg1,temp /* 17th divide step */ | ||
536 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
537 | ds temp,arg1,temp /* 18th divide step */ | ||
538 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
539 | ds temp,arg1,temp /* 19th divide step */ | ||
540 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
541 | ds temp,arg1,temp /* 20th divide step */ | ||
542 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
543 | ds temp,arg1,temp /* 21st divide step */ | ||
544 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
545 | ds temp,arg1,temp /* 22nd divide step */ | ||
546 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
547 | ds temp,arg1,temp /* 23rd divide step */ | ||
548 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
549 | ds temp,arg1,temp /* 24th divide step */ | ||
550 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
551 | ds temp,arg1,temp /* 25th divide step */ | ||
552 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
553 | ds temp,arg1,temp /* 26th divide step */ | ||
554 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
555 | ds temp,arg1,temp /* 27th divide step */ | ||
556 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
557 | ds temp,arg1,temp /* 28th divide step */ | ||
558 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
559 | ds temp,arg1,temp /* 29th divide step */ | ||
560 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
561 | ds temp,arg1,temp /* 30th divide step */ | ||
562 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
563 | ds temp,arg1,temp /* 31st divide step */ | ||
564 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
565 | ds temp,arg1,temp /* 32nd divide step, */ | ||
566 | MILLIRET | ||
567 | addc retreg,retreg,retreg /* shift last retreg bit into retreg */ | ||
568 | |||
569 | /* Handle the cases where divisor is a small constant or has high bit on. */ | ||
570 | LSYM(special_divisor) | ||
571 | /* blr arg1,r0 */ | ||
572 | /* comib,>,n 0,arg1,LREF(big_divisor) ; nullify previous instruction */ | ||
573 | |||
574 | /* Pratap 8/13/90. The 815 Stirling chip set has a bug that prevents us from | ||
575 | generating such a blr, comib sequence. A problem in nullification. So I | ||
576 | rewrote this code. */ | ||
577 | |||
578 | #if defined(CONFIG_64BIT) | ||
579 | /* Clear the upper 32 bits of the arg1 register. We are working with | ||
580 | small divisors (and 32-bit unsigned integers) We must not be mislead | ||
581 | by "1" bits left in the upper 32 bits. */ | ||
582 | depd %r0,31,32,%r25 | ||
583 | #endif | ||
584 | comib,> 0,arg1,LREF(big_divisor) | ||
585 | nop | ||
586 | blr arg1,r0 | ||
587 | nop | ||
588 | |||
589 | LSYM(zero_divisor) /* this label is here to provide external visibility */ | ||
590 | addit,= 0,arg1,0 /* trap for zero dvr */ | ||
591 | nop | ||
592 | MILLIRET /* divisor == 1 */ | ||
593 | copy arg0,retreg | ||
594 | MILLIRET /* divisor == 2 */ | ||
595 | extru arg0,30,31,retreg | ||
596 | MILLI_BEN($$divU_3) /* divisor == 3 */ | ||
597 | nop | ||
598 | MILLIRET /* divisor == 4 */ | ||
599 | extru arg0,29,30,retreg | ||
600 | MILLI_BEN($$divU_5) /* divisor == 5 */ | ||
601 | nop | ||
602 | MILLI_BEN($$divU_6) /* divisor == 6 */ | ||
603 | nop | ||
604 | MILLI_BEN($$divU_7) /* divisor == 7 */ | ||
605 | nop | ||
606 | MILLIRET /* divisor == 8 */ | ||
607 | extru arg0,28,29,retreg | ||
608 | MILLI_BEN($$divU_9) /* divisor == 9 */ | ||
609 | nop | ||
610 | MILLI_BEN($$divU_10) /* divisor == 10 */ | ||
611 | nop | ||
612 | b LREF(normal) /* divisor == 11 */ | ||
613 | ds r0,temp,r0 /* set V-bit to 1 */ | ||
614 | MILLI_BEN($$divU_12) /* divisor == 12 */ | ||
615 | nop | ||
616 | b LREF(normal) /* divisor == 13 */ | ||
617 | ds r0,temp,r0 /* set V-bit to 1 */ | ||
618 | MILLI_BEN($$divU_14) /* divisor == 14 */ | ||
619 | nop | ||
620 | MILLI_BEN($$divU_15) /* divisor == 15 */ | ||
621 | nop | ||
622 | |||
623 | /* Handle the case where the high bit is on in the divisor. | ||
624 | Compute: if( dividend>=divisor) quotient=1; else quotient=0; | ||
625 | Note: dividend>==divisor iff dividend-divisor does not borrow | ||
626 | and not borrow iff carry. */ | ||
627 | LSYM(big_divisor) | ||
628 | sub arg0,arg1,r0 | ||
629 | MILLIRET | ||
630 | addc r0,r0,retreg | ||
631 | .exit | ||
632 | .procend | ||
633 | .end | ||
634 | #endif | ||
635 | |||
636 | #ifdef L_remI | ||
637 | /* ROUTINE: $$remI | ||
638 | |||
639 | DESCRIPTION: | ||
640 | . $$remI returns the remainder of the division of two signed 32-bit | ||
641 | . integers. The sign of the remainder is the same as the sign of | ||
642 | . the dividend. | ||
643 | |||
644 | |||
645 | INPUT REGISTERS: | ||
646 | . arg0 == dividend | ||
647 | . arg1 == divisor | ||
648 | . mrp == return pc | ||
649 | . sr0 == return space when called externally | ||
650 | |||
651 | OUTPUT REGISTERS: | ||
652 | . arg0 = destroyed | ||
653 | . arg1 = destroyed | ||
654 | . ret1 = remainder | ||
655 | |||
656 | OTHER REGISTERS AFFECTED: | ||
657 | . r1 = undefined | ||
658 | |||
659 | SIDE EFFECTS: | ||
660 | . Causes a trap under the following conditions: DIVIDE BY ZERO | ||
661 | . Changes memory at the following places: NONE | ||
662 | |||
663 | PERMISSIBLE CONTEXT: | ||
664 | . Unwindable | ||
665 | . Does not create a stack frame | ||
666 | . Is usable for internal or external microcode | ||
667 | |||
668 | DISCUSSION: | ||
669 | . Calls other millicode routines via mrp: NONE | ||
670 | . Calls other millicode routines: NONE */ | ||
671 | |||
672 | RDEFINE(tmp,r1) | ||
673 | RDEFINE(retreg,ret1) | ||
674 | |||
675 | SUBSPA_MILLI | ||
676 | ATTR_MILLI | ||
677 | .proc | ||
678 | .callinfo millicode | ||
679 | .entry | ||
680 | GSYM($$remI) | ||
681 | GSYM($$remoI) | ||
682 | .export $$remI,MILLICODE | ||
683 | .export $$remoI,MILLICODE | ||
684 | ldo -1(arg1),tmp /* is there at most one bit set ? */ | ||
685 | and,<> arg1,tmp,r0 /* if not, don't use power of 2 */ | ||
686 | addi,> 0,arg1,r0 /* if denominator > 0, use power */ | ||
687 | /* of 2 */ | ||
688 | b,n LREF(neg_denom) | ||
689 | LSYM(pow2) | ||
690 | comb,>,n 0,arg0,LREF(neg_num) /* is numerator < 0 ? */ | ||
691 | and arg0,tmp,retreg /* get the result */ | ||
692 | MILLIRETN | ||
693 | LSYM(neg_num) | ||
694 | subi 0,arg0,arg0 /* negate numerator */ | ||
695 | and arg0,tmp,retreg /* get the result */ | ||
696 | subi 0,retreg,retreg /* negate result */ | ||
697 | MILLIRETN | ||
698 | LSYM(neg_denom) | ||
699 | addi,< 0,arg1,r0 /* if arg1 >= 0, it's not power */ | ||
700 | /* of 2 */ | ||
701 | b,n LREF(regular_seq) | ||
702 | sub r0,arg1,tmp /* make denominator positive */ | ||
703 | comb,=,n arg1,tmp,LREF(regular_seq) /* test against 0x80000000 and 0 */ | ||
704 | ldo -1(tmp),retreg /* is there at most one bit set ? */ | ||
705 | and,= tmp,retreg,r0 /* if not, go to regular_seq */ | ||
706 | b,n LREF(regular_seq) | ||
707 | comb,>,n 0,arg0,LREF(neg_num_2) /* if arg0 < 0, negate it */ | ||
708 | and arg0,retreg,retreg | ||
709 | MILLIRETN | ||
710 | LSYM(neg_num_2) | ||
711 | subi 0,arg0,tmp /* test against 0x80000000 */ | ||
712 | and tmp,retreg,retreg | ||
713 | subi 0,retreg,retreg | ||
714 | MILLIRETN | ||
715 | LSYM(regular_seq) | ||
716 | addit,= 0,arg1,0 /* trap if div by zero */ | ||
717 | add,>= 0,arg0,retreg /* move dividend, if retreg < 0, */ | ||
718 | sub 0,retreg,retreg /* make it positive */ | ||
719 | sub 0,arg1, tmp /* clear carry, */ | ||
720 | /* negate the divisor */ | ||
721 | ds 0, tmp,0 /* set V-bit to the comple- */ | ||
722 | /* ment of the divisor sign */ | ||
723 | or 0,0, tmp /* clear tmp */ | ||
724 | add retreg,retreg,retreg /* shift msb bit into carry */ | ||
725 | ds tmp,arg1, tmp /* 1st divide step, if no carry */ | ||
726 | /* out, msb of quotient = 0 */ | ||
727 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
728 | LSYM(t1) | ||
729 | ds tmp,arg1, tmp /* 2nd divide step */ | ||
730 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
731 | ds tmp,arg1, tmp /* 3rd divide step */ | ||
732 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
733 | ds tmp,arg1, tmp /* 4th divide step */ | ||
734 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
735 | ds tmp,arg1, tmp /* 5th divide step */ | ||
736 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
737 | ds tmp,arg1, tmp /* 6th divide step */ | ||
738 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
739 | ds tmp,arg1, tmp /* 7th divide step */ | ||
740 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
741 | ds tmp,arg1, tmp /* 8th divide step */ | ||
742 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
743 | ds tmp,arg1, tmp /* 9th divide step */ | ||
744 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
745 | ds tmp,arg1, tmp /* 10th divide step */ | ||
746 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
747 | ds tmp,arg1, tmp /* 11th divide step */ | ||
748 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
749 | ds tmp,arg1, tmp /* 12th divide step */ | ||
750 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
751 | ds tmp,arg1, tmp /* 13th divide step */ | ||
752 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
753 | ds tmp,arg1, tmp /* 14th divide step */ | ||
754 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
755 | ds tmp,arg1, tmp /* 15th divide step */ | ||
756 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
757 | ds tmp,arg1, tmp /* 16th divide step */ | ||
758 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
759 | ds tmp,arg1, tmp /* 17th divide step */ | ||
760 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
761 | ds tmp,arg1, tmp /* 18th divide step */ | ||
762 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
763 | ds tmp,arg1, tmp /* 19th divide step */ | ||
764 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
765 | ds tmp,arg1, tmp /* 20th divide step */ | ||
766 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
767 | ds tmp,arg1, tmp /* 21st divide step */ | ||
768 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
769 | ds tmp,arg1, tmp /* 22nd divide step */ | ||
770 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
771 | ds tmp,arg1, tmp /* 23rd divide step */ | ||
772 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
773 | ds tmp,arg1, tmp /* 24th divide step */ | ||
774 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
775 | ds tmp,arg1, tmp /* 25th divide step */ | ||
776 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
777 | ds tmp,arg1, tmp /* 26th divide step */ | ||
778 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
779 | ds tmp,arg1, tmp /* 27th divide step */ | ||
780 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
781 | ds tmp,arg1, tmp /* 28th divide step */ | ||
782 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
783 | ds tmp,arg1, tmp /* 29th divide step */ | ||
784 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
785 | ds tmp,arg1, tmp /* 30th divide step */ | ||
786 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
787 | ds tmp,arg1, tmp /* 31st divide step */ | ||
788 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
789 | ds tmp,arg1, tmp /* 32nd divide step, */ | ||
790 | addc retreg,retreg,retreg /* shift last bit into retreg */ | ||
791 | movb,>=,n tmp,retreg,LREF(finish) /* branch if pos. tmp */ | ||
792 | add,< arg1,0,0 /* if arg1 > 0, add arg1 */ | ||
793 | add,tr tmp,arg1,retreg /* for correcting remainder tmp */ | ||
794 | sub tmp,arg1,retreg /* else add absolute value arg1 */ | ||
795 | LSYM(finish) | ||
796 | add,>= arg0,0,0 /* set sign of remainder */ | ||
797 | sub 0,retreg,retreg /* to sign of dividend */ | ||
798 | MILLIRET | ||
799 | nop | ||
800 | .exit | ||
801 | .procend | ||
802 | #ifdef milliext | ||
803 | .origin 0x00000200 | ||
804 | #endif | ||
805 | .end | ||
806 | #endif | ||
807 | |||
808 | #ifdef L_remU | ||
809 | /* ROUTINE: $$remU | ||
810 | . Single precision divide for remainder with unsigned binary integers. | ||
811 | . | ||
812 | . The remainder must be dividend-(dividend/divisor)*divisor. | ||
813 | . Divide by zero is trapped. | ||
814 | |||
815 | INPUT REGISTERS: | ||
816 | . arg0 == dividend | ||
817 | . arg1 == divisor | ||
818 | . mrp == return pc | ||
819 | . sr0 == return space when called externally | ||
820 | |||
821 | OUTPUT REGISTERS: | ||
822 | . arg0 = undefined | ||
823 | . arg1 = undefined | ||
824 | . ret1 = remainder | ||
825 | |||
826 | OTHER REGISTERS AFFECTED: | ||
827 | . r1 = undefined | ||
828 | |||
829 | SIDE EFFECTS: | ||
830 | . Causes a trap under the following conditions: DIVIDE BY ZERO | ||
831 | . Changes memory at the following places: NONE | ||
832 | |||
833 | PERMISSIBLE CONTEXT: | ||
834 | . Unwindable. | ||
835 | . Does not create a stack frame. | ||
836 | . Suitable for internal or external millicode. | ||
837 | . Assumes the special millicode register conventions. | ||
838 | |||
839 | DISCUSSION: | ||
840 | . Calls other millicode routines using mrp: NONE | ||
841 | . Calls other millicode routines: NONE */ | ||
842 | |||
843 | |||
844 | RDEFINE(temp,r1) | ||
845 | RDEFINE(rmndr,ret1) /* r29 */ | ||
846 | SUBSPA_MILLI | ||
847 | ATTR_MILLI | ||
848 | .export $$remU,millicode | ||
849 | .proc | ||
850 | .callinfo millicode | ||
851 | .entry | ||
852 | GSYM($$remU) | ||
853 | ldo -1(arg1),temp /* is there at most one bit set ? */ | ||
854 | and,= arg1,temp,r0 /* if not, don't use power of 2 */ | ||
855 | b LREF(regular_seq) | ||
856 | addit,= 0,arg1,r0 /* trap on div by zero */ | ||
857 | and arg0,temp,rmndr /* get the result for power of 2 */ | ||
858 | MILLIRETN | ||
859 | LSYM(regular_seq) | ||
860 | comib,>=,n 0,arg1,LREF(special_case) | ||
861 | subi 0,arg1,rmndr /* clear carry, negate the divisor */ | ||
862 | ds r0,rmndr,r0 /* set V-bit to 1 */ | ||
863 | add arg0,arg0,temp /* shift msb bit into carry */ | ||
864 | ds r0,arg1,rmndr /* 1st divide step, if no carry */ | ||
865 | addc temp,temp,temp /* shift temp with/into carry */ | ||
866 | ds rmndr,arg1,rmndr /* 2nd divide step */ | ||
867 | addc temp,temp,temp /* shift temp with/into carry */ | ||
868 | ds rmndr,arg1,rmndr /* 3rd divide step */ | ||
869 | addc temp,temp,temp /* shift temp with/into carry */ | ||
870 | ds rmndr,arg1,rmndr /* 4th divide step */ | ||
871 | addc temp,temp,temp /* shift temp with/into carry */ | ||
872 | ds rmndr,arg1,rmndr /* 5th divide step */ | ||
873 | addc temp,temp,temp /* shift temp with/into carry */ | ||
874 | ds rmndr,arg1,rmndr /* 6th divide step */ | ||
875 | addc temp,temp,temp /* shift temp with/into carry */ | ||
876 | ds rmndr,arg1,rmndr /* 7th divide step */ | ||
877 | addc temp,temp,temp /* shift temp with/into carry */ | ||
878 | ds rmndr,arg1,rmndr /* 8th divide step */ | ||
879 | addc temp,temp,temp /* shift temp with/into carry */ | ||
880 | ds rmndr,arg1,rmndr /* 9th divide step */ | ||
881 | addc temp,temp,temp /* shift temp with/into carry */ | ||
882 | ds rmndr,arg1,rmndr /* 10th divide step */ | ||
883 | addc temp,temp,temp /* shift temp with/into carry */ | ||
884 | ds rmndr,arg1,rmndr /* 11th divide step */ | ||
885 | addc temp,temp,temp /* shift temp with/into carry */ | ||
886 | ds rmndr,arg1,rmndr /* 12th divide step */ | ||
887 | addc temp,temp,temp /* shift temp with/into carry */ | ||
888 | ds rmndr,arg1,rmndr /* 13th divide step */ | ||
889 | addc temp,temp,temp /* shift temp with/into carry */ | ||
890 | ds rmndr,arg1,rmndr /* 14th divide step */ | ||
891 | addc temp,temp,temp /* shift temp with/into carry */ | ||
892 | ds rmndr,arg1,rmndr /* 15th divide step */ | ||
893 | addc temp,temp,temp /* shift temp with/into carry */ | ||
894 | ds rmndr,arg1,rmndr /* 16th divide step */ | ||
895 | addc temp,temp,temp /* shift temp with/into carry */ | ||
896 | ds rmndr,arg1,rmndr /* 17th divide step */ | ||
897 | addc temp,temp,temp /* shift temp with/into carry */ | ||
898 | ds rmndr,arg1,rmndr /* 18th divide step */ | ||
899 | addc temp,temp,temp /* shift temp with/into carry */ | ||
900 | ds rmndr,arg1,rmndr /* 19th divide step */ | ||
901 | addc temp,temp,temp /* shift temp with/into carry */ | ||
902 | ds rmndr,arg1,rmndr /* 20th divide step */ | ||
903 | addc temp,temp,temp /* shift temp with/into carry */ | ||
904 | ds rmndr,arg1,rmndr /* 21st divide step */ | ||
905 | addc temp,temp,temp /* shift temp with/into carry */ | ||
906 | ds rmndr,arg1,rmndr /* 22nd divide step */ | ||
907 | addc temp,temp,temp /* shift temp with/into carry */ | ||
908 | ds rmndr,arg1,rmndr /* 23rd divide step */ | ||
909 | addc temp,temp,temp /* shift temp with/into carry */ | ||
910 | ds rmndr,arg1,rmndr /* 24th divide step */ | ||
911 | addc temp,temp,temp /* shift temp with/into carry */ | ||
912 | ds rmndr,arg1,rmndr /* 25th divide step */ | ||
913 | addc temp,temp,temp /* shift temp with/into carry */ | ||
914 | ds rmndr,arg1,rmndr /* 26th divide step */ | ||
915 | addc temp,temp,temp /* shift temp with/into carry */ | ||
916 | ds rmndr,arg1,rmndr /* 27th divide step */ | ||
917 | addc temp,temp,temp /* shift temp with/into carry */ | ||
918 | ds rmndr,arg1,rmndr /* 28th divide step */ | ||
919 | addc temp,temp,temp /* shift temp with/into carry */ | ||
920 | ds rmndr,arg1,rmndr /* 29th divide step */ | ||
921 | addc temp,temp,temp /* shift temp with/into carry */ | ||
922 | ds rmndr,arg1,rmndr /* 30th divide step */ | ||
923 | addc temp,temp,temp /* shift temp with/into carry */ | ||
924 | ds rmndr,arg1,rmndr /* 31st divide step */ | ||
925 | addc temp,temp,temp /* shift temp with/into carry */ | ||
926 | ds rmndr,arg1,rmndr /* 32nd divide step, */ | ||
927 | comiclr,<= 0,rmndr,r0 | ||
928 | add rmndr,arg1,rmndr /* correction */ | ||
929 | MILLIRETN | ||
930 | nop | ||
931 | |||
932 | /* Putting >= on the last DS and deleting COMICLR does not work! */ | ||
933 | LSYM(special_case) | ||
934 | sub,>>= arg0,arg1,rmndr | ||
935 | copy arg0,rmndr | ||
936 | MILLIRETN | ||
937 | nop | ||
938 | .exit | ||
939 | .procend | ||
940 | .end | ||
941 | #endif | ||
942 | |||
943 | #ifdef L_div_const | ||
944 | /* ROUTINE: $$divI_2 | ||
945 | . $$divI_3 $$divU_3 | ||
946 | . $$divI_4 | ||
947 | . $$divI_5 $$divU_5 | ||
948 | . $$divI_6 $$divU_6 | ||
949 | . $$divI_7 $$divU_7 | ||
950 | . $$divI_8 | ||
951 | . $$divI_9 $$divU_9 | ||
952 | . $$divI_10 $$divU_10 | ||
953 | . | ||
954 | . $$divI_12 $$divU_12 | ||
955 | . | ||
956 | . $$divI_14 $$divU_14 | ||
957 | . $$divI_15 $$divU_15 | ||
958 | . $$divI_16 | ||
959 | . $$divI_17 $$divU_17 | ||
960 | . | ||
961 | . Divide by selected constants for single precision binary integers. | ||
962 | |||
963 | INPUT REGISTERS: | ||
964 | . arg0 == dividend | ||
965 | . mrp == return pc | ||
966 | . sr0 == return space when called externally | ||
967 | |||
968 | OUTPUT REGISTERS: | ||
969 | . arg0 = undefined | ||
970 | . arg1 = undefined | ||
971 | . ret1 = quotient | ||
972 | |||
973 | OTHER REGISTERS AFFECTED: | ||
974 | . r1 = undefined | ||
975 | |||
976 | SIDE EFFECTS: | ||
977 | . Causes a trap under the following conditions: NONE | ||
978 | . Changes memory at the following places: NONE | ||
979 | |||
980 | PERMISSIBLE CONTEXT: | ||
981 | . Unwindable. | ||
982 | . Does not create a stack frame. | ||
983 | . Suitable for internal or external millicode. | ||
984 | . Assumes the special millicode register conventions. | ||
985 | |||
986 | DISCUSSION: | ||
987 | . Calls other millicode routines using mrp: NONE | ||
988 | . Calls other millicode routines: NONE */ | ||
989 | |||
990 | |||
991 | /* TRUNCATED DIVISION BY SMALL INTEGERS | ||
992 | |||
993 | We are interested in q(x) = floor(x/y), where x >= 0 and y > 0 | ||
994 | (with y fixed). | ||
995 | |||
996 | Let a = floor(z/y), for some choice of z. Note that z will be | ||
997 | chosen so that division by z is cheap. | ||
998 | |||
999 | Let r be the remainder(z/y). In other words, r = z - ay. | ||
1000 | |||
1001 | Now, our method is to choose a value for b such that | ||
1002 | |||
1003 | q'(x) = floor((ax+b)/z) | ||
1004 | |||
1005 | is equal to q(x) over as large a range of x as possible. If the | ||
1006 | two are equal over a sufficiently large range, and if it is easy to | ||
1007 | form the product (ax), and it is easy to divide by z, then we can | ||
1008 | perform the division much faster than the general division algorithm. | ||
1009 | |||
1010 | So, we want the following to be true: | ||
1011 | |||
1012 | . For x in the following range: | ||
1013 | . | ||
1014 | . ky <= x < (k+1)y | ||
1015 | . | ||
1016 | . implies that | ||
1017 | . | ||
1018 | . k <= (ax+b)/z < (k+1) | ||
1019 | |||
1020 | We want to determine b such that this is true for all k in the | ||
1021 | range {0..K} for some maximum K. | ||
1022 | |||
1023 | Since (ax+b) is an increasing function of x, we can take each | ||
1024 | bound separately to determine the "best" value for b. | ||
1025 | |||
1026 | (ax+b)/z < (k+1) implies | ||
1027 | |||
1028 | (a((k+1)y-1)+b < (k+1)z implies | ||
1029 | |||
1030 | b < a + (k+1)(z-ay) implies | ||
1031 | |||
1032 | b < a + (k+1)r | ||
1033 | |||
1034 | This needs to be true for all k in the range {0..K}. In | ||
1035 | particular, it is true for k = 0 and this leads to a maximum | ||
1036 | acceptable value for b. | ||
1037 | |||
1038 | b < a+r or b <= a+r-1 | ||
1039 | |||
1040 | Taking the other bound, we have | ||
1041 | |||
1042 | k <= (ax+b)/z implies | ||
1043 | |||
1044 | k <= (aky+b)/z implies | ||
1045 | |||
1046 | k(z-ay) <= b implies | ||
1047 | |||
1048 | kr <= b | ||
1049 | |||
1050 | Clearly, the largest range for k will be achieved by maximizing b, | ||
1051 | when r is not zero. When r is zero, then the simplest choice for b | ||
1052 | is 0. When r is not 0, set | ||
1053 | |||
1054 | . b = a+r-1 | ||
1055 | |||
1056 | Now, by construction, q'(x) = floor((ax+b)/z) = q(x) = floor(x/y) | ||
1057 | for all x in the range: | ||
1058 | |||
1059 | . 0 <= x < (K+1)y | ||
1060 | |||
1061 | We need to determine what K is. Of our two bounds, | ||
1062 | |||
1063 | . b < a+(k+1)r is satisfied for all k >= 0, by construction. | ||
1064 | |||
1065 | The other bound is | ||
1066 | |||
1067 | . kr <= b | ||
1068 | |||
1069 | This is always true if r = 0. If r is not 0 (the usual case), then | ||
1070 | K = floor((a+r-1)/r), is the maximum value for k. | ||
1071 | |||
1072 | Therefore, the formula q'(x) = floor((ax+b)/z) yields the correct | ||
1073 | answer for q(x) = floor(x/y) when x is in the range | ||
1074 | |||
1075 | (0,(K+1)y-1) K = floor((a+r-1)/r) | ||
1076 | |||
1077 | To be most useful, we want (K+1)y-1 = (max x) >= 2**32-1 so that | ||
1078 | the formula for q'(x) yields the correct value of q(x) for all x | ||
1079 | representable by a single word in HPPA. | ||
1080 | |||
1081 | We are also constrained in that computing the product (ax), adding | ||
1082 | b, and dividing by z must all be done quickly, otherwise we will be | ||
1083 | better off going through the general algorithm using the DS | ||
1084 | instruction, which uses approximately 70 cycles. | ||
1085 | |||
1086 | For each y, there is a choice of z which satisfies the constraints | ||
1087 | for (K+1)y >= 2**32. We may not, however, be able to satisfy the | ||
1088 | timing constraints for arbitrary y. It seems that z being equal to | ||
1089 | a power of 2 or a power of 2 minus 1 is as good as we can do, since | ||
1090 | it minimizes the time to do division by z. We want the choice of z | ||
1091 | to also result in a value for (a) that minimizes the computation of | ||
1092 | the product (ax). This is best achieved if (a) has a regular bit | ||
1093 | pattern (so the multiplication can be done with shifts and adds). | ||
1094 | The value of (a) also needs to be less than 2**32 so the product is | ||
1095 | always guaranteed to fit in 2 words. | ||
1096 | |||
1097 | In actual practice, the following should be done: | ||
1098 | |||
1099 | 1) For negative x, you should take the absolute value and remember | ||
1100 | . the fact so that the result can be negated. This obviously does | ||
1101 | . not apply in the unsigned case. | ||
1102 | 2) For even y, you should factor out the power of 2 that divides y | ||
1103 | . and divide x by it. You can then proceed by dividing by the | ||
1104 | . odd factor of y. | ||
1105 | |||
1106 | Here is a table of some odd values of y, and corresponding choices | ||
1107 | for z which are "good". | ||
1108 | |||
1109 | y z r a (hex) max x (hex) | ||
1110 | |||
1111 | 3 2**32 1 55555555 100000001 | ||
1112 | 5 2**32 1 33333333 100000003 | ||
1113 | 7 2**24-1 0 249249 (infinite) | ||
1114 | 9 2**24-1 0 1c71c7 (infinite) | ||
1115 | 11 2**20-1 0 1745d (infinite) | ||
1116 | 13 2**24-1 0 13b13b (infinite) | ||
1117 | 15 2**32 1 11111111 10000000d | ||
1118 | 17 2**32 1 f0f0f0f 10000000f | ||
1119 | |||
1120 | If r is 1, then b = a+r-1 = a. This simplifies the computation | ||
1121 | of (ax+b), since you can compute (x+1)(a) instead. If r is 0, | ||
1122 | then b = 0 is ok to use which simplifies (ax+b). | ||
1123 | |||
1124 | The bit patterns for 55555555, 33333333, and 11111111 are obviously | ||
1125 | very regular. The bit patterns for the other values of a above are: | ||
1126 | |||
1127 | y (hex) (binary) | ||
1128 | |||
1129 | 7 249249 001001001001001001001001 << regular >> | ||
1130 | 9 1c71c7 000111000111000111000111 << regular >> | ||
1131 | 11 1745d 000000010111010001011101 << irregular >> | ||
1132 | 13 13b13b 000100111011000100111011 << irregular >> | ||
1133 | |||
1134 | The bit patterns for (a) corresponding to (y) of 11 and 13 may be | ||
1135 | too irregular to warrant using this method. | ||
1136 | |||
1137 | When z is a power of 2 minus 1, then the division by z is slightly | ||
1138 | more complicated, involving an iterative solution. | ||
1139 | |||
1140 | The code presented here solves division by 1 through 17, except for | ||
1141 | 11 and 13. There are algorithms for both signed and unsigned | ||
1142 | quantities given. | ||
1143 | |||
1144 | TIMINGS (cycles) | ||
1145 | |||
1146 | divisor positive negative unsigned | ||
1147 | |||
1148 | . 1 2 2 2 | ||
1149 | . 2 4 4 2 | ||
1150 | . 3 19 21 19 | ||
1151 | . 4 4 4 2 | ||
1152 | . 5 18 22 19 | ||
1153 | . 6 19 22 19 | ||
1154 | . 8 4 4 2 | ||
1155 | . 10 18 19 17 | ||
1156 | . 12 18 20 18 | ||
1157 | . 15 16 18 16 | ||
1158 | . 16 4 4 2 | ||
1159 | . 17 16 18 16 | ||
1160 | |||
1161 | Now, the algorithm for 7, 9, and 14 is an iterative one. That is, | ||
1162 | a loop body is executed until the tentative quotient is 0. The | ||
1163 | number of times the loop body is executed varies depending on the | ||
1164 | dividend, but is never more than two times. If the dividend is | ||
1165 | less than the divisor, then the loop body is not executed at all. | ||
1166 | Each iteration adds 4 cycles to the timings. | ||
1167 | |||
1168 | divisor positive negative unsigned | ||
1169 | |||
1170 | . 7 19+4n 20+4n 20+4n n = number of iterations | ||
1171 | . 9 21+4n 22+4n 21+4n | ||
1172 | . 14 21+4n 22+4n 20+4n | ||
1173 | |||
1174 | To give an idea of how the number of iterations varies, here is a | ||
1175 | table of dividend versus number of iterations when dividing by 7. | ||
1176 | |||
1177 | smallest largest required | ||
1178 | dividend dividend iterations | ||
1179 | |||
1180 | . 0 6 0 | ||
1181 | . 7 0x6ffffff 1 | ||
1182 | 0x1000006 0xffffffff 2 | ||
1183 | |||
1184 | There is some overlap in the range of numbers requiring 1 and 2 | ||
1185 | iterations. */ | ||
1186 | |||
1187 | RDEFINE(t2,r1) | ||
1188 | RDEFINE(x2,arg0) /* r26 */ | ||
1189 | RDEFINE(t1,arg1) /* r25 */ | ||
1190 | RDEFINE(x1,ret1) /* r29 */ | ||
1191 | |||
1192 | SUBSPA_MILLI_DIV | ||
1193 | ATTR_MILLI | ||
1194 | |||
1195 | .proc | ||
1196 | .callinfo millicode | ||
1197 | .entry | ||
1198 | /* NONE of these routines require a stack frame | ||
1199 | ALL of these routines are unwindable from millicode */ | ||
1200 | |||
1201 | GSYM($$divide_by_constant) | ||
1202 | .export $$divide_by_constant,millicode | ||
1203 | /* Provides a "nice" label for the code covered by the unwind descriptor | ||
1204 | for things like gprof. */ | ||
1205 | |||
1206 | /* DIVISION BY 2 (shift by 1) */ | ||
1207 | GSYM($$divI_2) | ||
1208 | .export $$divI_2,millicode | ||
1209 | comclr,>= arg0,0,0 | ||
1210 | addi 1,arg0,arg0 | ||
1211 | MILLIRET | ||
1212 | extrs arg0,30,31,ret1 | ||
1213 | |||
1214 | |||
1215 | /* DIVISION BY 4 (shift by 2) */ | ||
1216 | GSYM($$divI_4) | ||
1217 | .export $$divI_4,millicode | ||
1218 | comclr,>= arg0,0,0 | ||
1219 | addi 3,arg0,arg0 | ||
1220 | MILLIRET | ||
1221 | extrs arg0,29,30,ret1 | ||
1222 | |||
1223 | |||
1224 | /* DIVISION BY 8 (shift by 3) */ | ||
1225 | GSYM($$divI_8) | ||
1226 | .export $$divI_8,millicode | ||
1227 | comclr,>= arg0,0,0 | ||
1228 | addi 7,arg0,arg0 | ||
1229 | MILLIRET | ||
1230 | extrs arg0,28,29,ret1 | ||
1231 | |||
1232 | /* DIVISION BY 16 (shift by 4) */ | ||
1233 | GSYM($$divI_16) | ||
1234 | .export $$divI_16,millicode | ||
1235 | comclr,>= arg0,0,0 | ||
1236 | addi 15,arg0,arg0 | ||
1237 | MILLIRET | ||
1238 | extrs arg0,27,28,ret1 | ||
1239 | |||
1240 | /**************************************************************************** | ||
1241 | * | ||
1242 | * DIVISION BY DIVISORS OF FFFFFFFF, and powers of 2 times these | ||
1243 | * | ||
1244 | * includes 3,5,15,17 and also 6,10,12 | ||
1245 | * | ||
1246 | ****************************************************************************/ | ||
1247 | |||
1248 | /* DIVISION BY 3 (use z = 2**32; a = 55555555) */ | ||
1249 | |||
1250 | GSYM($$divI_3) | ||
1251 | .export $$divI_3,millicode | ||
1252 | comb,<,N x2,0,LREF(neg3) | ||
1253 | |||
1254 | addi 1,x2,x2 /* this cannot overflow */ | ||
1255 | extru x2,1,2,x1 /* multiply by 5 to get started */ | ||
1256 | sh2add x2,x2,x2 | ||
1257 | b LREF(pos) | ||
1258 | addc x1,0,x1 | ||
1259 | |||
1260 | LSYM(neg3) | ||
1261 | subi 1,x2,x2 /* this cannot overflow */ | ||
1262 | extru x2,1,2,x1 /* multiply by 5 to get started */ | ||
1263 | sh2add x2,x2,x2 | ||
1264 | b LREF(neg) | ||
1265 | addc x1,0,x1 | ||
1266 | |||
1267 | GSYM($$divU_3) | ||
1268 | .export $$divU_3,millicode | ||
1269 | addi 1,x2,x2 /* this CAN overflow */ | ||
1270 | addc 0,0,x1 | ||
1271 | shd x1,x2,30,t1 /* multiply by 5 to get started */ | ||
1272 | sh2add x2,x2,x2 | ||
1273 | b LREF(pos) | ||
1274 | addc x1,t1,x1 | ||
1275 | |||
1276 | /* DIVISION BY 5 (use z = 2**32; a = 33333333) */ | ||
1277 | |||
1278 | GSYM($$divI_5) | ||
1279 | .export $$divI_5,millicode | ||
1280 | comb,<,N x2,0,LREF(neg5) | ||
1281 | |||
1282 | addi 3,x2,t1 /* this cannot overflow */ | ||
1283 | sh1add x2,t1,x2 /* multiply by 3 to get started */ | ||
1284 | b LREF(pos) | ||
1285 | addc 0,0,x1 | ||
1286 | |||
1287 | LSYM(neg5) | ||
1288 | sub 0,x2,x2 /* negate x2 */ | ||
1289 | addi 1,x2,x2 /* this cannot overflow */ | ||
1290 | shd 0,x2,31,x1 /* get top bit (can be 1) */ | ||
1291 | sh1add x2,x2,x2 /* multiply by 3 to get started */ | ||
1292 | b LREF(neg) | ||
1293 | addc x1,0,x1 | ||
1294 | |||
1295 | GSYM($$divU_5) | ||
1296 | .export $$divU_5,millicode | ||
1297 | addi 1,x2,x2 /* this CAN overflow */ | ||
1298 | addc 0,0,x1 | ||
1299 | shd x1,x2,31,t1 /* multiply by 3 to get started */ | ||
1300 | sh1add x2,x2,x2 | ||
1301 | b LREF(pos) | ||
1302 | addc t1,x1,x1 | ||
1303 | |||
1304 | /* DIVISION BY 6 (shift to divide by 2 then divide by 3) */ | ||
1305 | GSYM($$divI_6) | ||
1306 | .export $$divI_6,millicode | ||
1307 | comb,<,N x2,0,LREF(neg6) | ||
1308 | extru x2,30,31,x2 /* divide by 2 */ | ||
1309 | addi 5,x2,t1 /* compute 5*(x2+1) = 5*x2+5 */ | ||
1310 | sh2add x2,t1,x2 /* multiply by 5 to get started */ | ||
1311 | b LREF(pos) | ||
1312 | addc 0,0,x1 | ||
1313 | |||
1314 | LSYM(neg6) | ||
1315 | subi 2,x2,x2 /* negate, divide by 2, and add 1 */ | ||
1316 | /* negation and adding 1 are done */ | ||
1317 | /* at the same time by the SUBI */ | ||
1318 | extru x2,30,31,x2 | ||
1319 | shd 0,x2,30,x1 | ||
1320 | sh2add x2,x2,x2 /* multiply by 5 to get started */ | ||
1321 | b LREF(neg) | ||
1322 | addc x1,0,x1 | ||
1323 | |||
1324 | GSYM($$divU_6) | ||
1325 | .export $$divU_6,millicode | ||
1326 | extru x2,30,31,x2 /* divide by 2 */ | ||
1327 | addi 1,x2,x2 /* cannot carry */ | ||
1328 | shd 0,x2,30,x1 /* multiply by 5 to get started */ | ||
1329 | sh2add x2,x2,x2 | ||
1330 | b LREF(pos) | ||
1331 | addc x1,0,x1 | ||
1332 | |||
1333 | /* DIVISION BY 10 (shift to divide by 2 then divide by 5) */ | ||
1334 | GSYM($$divU_10) | ||
1335 | .export $$divU_10,millicode | ||
1336 | extru x2,30,31,x2 /* divide by 2 */ | ||
1337 | addi 3,x2,t1 /* compute 3*(x2+1) = (3*x2)+3 */ | ||
1338 | sh1add x2,t1,x2 /* multiply by 3 to get started */ | ||
1339 | addc 0,0,x1 | ||
1340 | LSYM(pos) | ||
1341 | shd x1,x2,28,t1 /* multiply by 0x11 */ | ||
1342 | shd x2,0,28,t2 | ||
1343 | add x2,t2,x2 | ||
1344 | addc x1,t1,x1 | ||
1345 | LSYM(pos_for_17) | ||
1346 | shd x1,x2,24,t1 /* multiply by 0x101 */ | ||
1347 | shd x2,0,24,t2 | ||
1348 | add x2,t2,x2 | ||
1349 | addc x1,t1,x1 | ||
1350 | |||
1351 | shd x1,x2,16,t1 /* multiply by 0x10001 */ | ||
1352 | shd x2,0,16,t2 | ||
1353 | add x2,t2,x2 | ||
1354 | MILLIRET | ||
1355 | addc x1,t1,x1 | ||
1356 | |||
1357 | GSYM($$divI_10) | ||
1358 | .export $$divI_10,millicode | ||
1359 | comb,< x2,0,LREF(neg10) | ||
1360 | copy 0,x1 | ||
1361 | extru x2,30,31,x2 /* divide by 2 */ | ||
1362 | addib,TR 1,x2,LREF(pos) /* add 1 (cannot overflow) */ | ||
1363 | sh1add x2,x2,x2 /* multiply by 3 to get started */ | ||
1364 | |||
1365 | LSYM(neg10) | ||
1366 | subi 2,x2,x2 /* negate, divide by 2, and add 1 */ | ||
1367 | /* negation and adding 1 are done */ | ||
1368 | /* at the same time by the SUBI */ | ||
1369 | extru x2,30,31,x2 | ||
1370 | sh1add x2,x2,x2 /* multiply by 3 to get started */ | ||
1371 | LSYM(neg) | ||
1372 | shd x1,x2,28,t1 /* multiply by 0x11 */ | ||
1373 | shd x2,0,28,t2 | ||
1374 | add x2,t2,x2 | ||
1375 | addc x1,t1,x1 | ||
1376 | LSYM(neg_for_17) | ||
1377 | shd x1,x2,24,t1 /* multiply by 0x101 */ | ||
1378 | shd x2,0,24,t2 | ||
1379 | add x2,t2,x2 | ||
1380 | addc x1,t1,x1 | ||
1381 | |||
1382 | shd x1,x2,16,t1 /* multiply by 0x10001 */ | ||
1383 | shd x2,0,16,t2 | ||
1384 | add x2,t2,x2 | ||
1385 | addc x1,t1,x1 | ||
1386 | MILLIRET | ||
1387 | sub 0,x1,x1 | ||
1388 | |||
1389 | /* DIVISION BY 12 (shift to divide by 4 then divide by 3) */ | ||
1390 | GSYM($$divI_12) | ||
1391 | .export $$divI_12,millicode | ||
1392 | comb,< x2,0,LREF(neg12) | ||
1393 | copy 0,x1 | ||
1394 | extru x2,29,30,x2 /* divide by 4 */ | ||
1395 | addib,tr 1,x2,LREF(pos) /* compute 5*(x2+1) = 5*x2+5 */ | ||
1396 | sh2add x2,x2,x2 /* multiply by 5 to get started */ | ||
1397 | |||
1398 | LSYM(neg12) | ||
1399 | subi 4,x2,x2 /* negate, divide by 4, and add 1 */ | ||
1400 | /* negation and adding 1 are done */ | ||
1401 | /* at the same time by the SUBI */ | ||
1402 | extru x2,29,30,x2 | ||
1403 | b LREF(neg) | ||
1404 | sh2add x2,x2,x2 /* multiply by 5 to get started */ | ||
1405 | |||
1406 | GSYM($$divU_12) | ||
1407 | .export $$divU_12,millicode | ||
1408 | extru x2,29,30,x2 /* divide by 4 */ | ||
1409 | addi 5,x2,t1 /* cannot carry */ | ||
1410 | sh2add x2,t1,x2 /* multiply by 5 to get started */ | ||
1411 | b LREF(pos) | ||
1412 | addc 0,0,x1 | ||
1413 | |||
1414 | /* DIVISION BY 15 (use z = 2**32; a = 11111111) */ | ||
1415 | GSYM($$divI_15) | ||
1416 | .export $$divI_15,millicode | ||
1417 | comb,< x2,0,LREF(neg15) | ||
1418 | copy 0,x1 | ||
1419 | addib,tr 1,x2,LREF(pos)+4 | ||
1420 | shd x1,x2,28,t1 | ||
1421 | |||
1422 | LSYM(neg15) | ||
1423 | b LREF(neg) | ||
1424 | subi 1,x2,x2 | ||
1425 | |||
1426 | GSYM($$divU_15) | ||
1427 | .export $$divU_15,millicode | ||
1428 | addi 1,x2,x2 /* this CAN overflow */ | ||
1429 | b LREF(pos) | ||
1430 | addc 0,0,x1 | ||
1431 | |||
1432 | /* DIVISION BY 17 (use z = 2**32; a = f0f0f0f) */ | ||
1433 | GSYM($$divI_17) | ||
1434 | .export $$divI_17,millicode | ||
1435 | comb,<,n x2,0,LREF(neg17) | ||
1436 | addi 1,x2,x2 /* this cannot overflow */ | ||
1437 | shd 0,x2,28,t1 /* multiply by 0xf to get started */ | ||
1438 | shd x2,0,28,t2 | ||
1439 | sub t2,x2,x2 | ||
1440 | b LREF(pos_for_17) | ||
1441 | subb t1,0,x1 | ||
1442 | |||
1443 | LSYM(neg17) | ||
1444 | subi 1,x2,x2 /* this cannot overflow */ | ||
1445 | shd 0,x2,28,t1 /* multiply by 0xf to get started */ | ||
1446 | shd x2,0,28,t2 | ||
1447 | sub t2,x2,x2 | ||
1448 | b LREF(neg_for_17) | ||
1449 | subb t1,0,x1 | ||
1450 | |||
1451 | GSYM($$divU_17) | ||
1452 | .export $$divU_17,millicode | ||
1453 | addi 1,x2,x2 /* this CAN overflow */ | ||
1454 | addc 0,0,x1 | ||
1455 | shd x1,x2,28,t1 /* multiply by 0xf to get started */ | ||
1456 | LSYM(u17) | ||
1457 | shd x2,0,28,t2 | ||
1458 | sub t2,x2,x2 | ||
1459 | b LREF(pos_for_17) | ||
1460 | subb t1,x1,x1 | ||
1461 | |||
1462 | |||
1463 | /* DIVISION BY DIVISORS OF FFFFFF, and powers of 2 times these | ||
1464 | includes 7,9 and also 14 | ||
1465 | |||
1466 | |||
1467 | z = 2**24-1 | ||
1468 | r = z mod x = 0 | ||
1469 | |||
1470 | so choose b = 0 | ||
1471 | |||
1472 | Also, in order to divide by z = 2**24-1, we approximate by dividing | ||
1473 | by (z+1) = 2**24 (which is easy), and then correcting. | ||
1474 | |||
1475 | (ax) = (z+1)q' + r | ||
1476 | . = zq' + (q'+r) | ||
1477 | |||
1478 | So to compute (ax)/z, compute q' = (ax)/(z+1) and r = (ax) mod (z+1) | ||
1479 | Then the true remainder of (ax)/z is (q'+r). Repeat the process | ||
1480 | with this new remainder, adding the tentative quotients together, | ||
1481 | until a tentative quotient is 0 (and then we are done). There is | ||
1482 | one last correction to be done. It is possible that (q'+r) = z. | ||
1483 | If so, then (q'+r)/(z+1) = 0 and it looks like we are done. But, | ||
1484 | in fact, we need to add 1 more to the quotient. Now, it turns | ||
1485 | out that this happens if and only if the original value x is | ||
1486 | an exact multiple of y. So, to avoid a three instruction test at | ||
1487 | the end, instead use 1 instruction to add 1 to x at the beginning. */ | ||
1488 | |||
1489 | /* DIVISION BY 7 (use z = 2**24-1; a = 249249) */ | ||
1490 | GSYM($$divI_7) | ||
1491 | .export $$divI_7,millicode | ||
1492 | comb,<,n x2,0,LREF(neg7) | ||
1493 | LSYM(7) | ||
1494 | addi 1,x2,x2 /* cannot overflow */ | ||
1495 | shd 0,x2,29,x1 | ||
1496 | sh3add x2,x2,x2 | ||
1497 | addc x1,0,x1 | ||
1498 | LSYM(pos7) | ||
1499 | shd x1,x2,26,t1 | ||
1500 | shd x2,0,26,t2 | ||
1501 | add x2,t2,x2 | ||
1502 | addc x1,t1,x1 | ||
1503 | |||
1504 | shd x1,x2,20,t1 | ||
1505 | shd x2,0,20,t2 | ||
1506 | add x2,t2,x2 | ||
1507 | addc x1,t1,t1 | ||
1508 | |||
1509 | /* computed <t1,x2>. Now divide it by (2**24 - 1) */ | ||
1510 | |||
1511 | copy 0,x1 | ||
1512 | shd,= t1,x2,24,t1 /* tentative quotient */ | ||
1513 | LSYM(1) | ||
1514 | addb,tr t1,x1,LREF(2) /* add to previous quotient */ | ||
1515 | extru x2,31,24,x2 /* new remainder (unadjusted) */ | ||
1516 | |||
1517 | MILLIRETN | ||
1518 | |||
1519 | LSYM(2) | ||
1520 | addb,tr t1,x2,LREF(1) /* adjust remainder */ | ||
1521 | extru,= x2,7,8,t1 /* new quotient */ | ||
1522 | |||
1523 | LSYM(neg7) | ||
1524 | subi 1,x2,x2 /* negate x2 and add 1 */ | ||
1525 | LSYM(8) | ||
1526 | shd 0,x2,29,x1 | ||
1527 | sh3add x2,x2,x2 | ||
1528 | addc x1,0,x1 | ||
1529 | |||
1530 | LSYM(neg7_shift) | ||
1531 | shd x1,x2,26,t1 | ||
1532 | shd x2,0,26,t2 | ||
1533 | add x2,t2,x2 | ||
1534 | addc x1,t1,x1 | ||
1535 | |||
1536 | shd x1,x2,20,t1 | ||
1537 | shd x2,0,20,t2 | ||
1538 | add x2,t2,x2 | ||
1539 | addc x1,t1,t1 | ||
1540 | |||
1541 | /* computed <t1,x2>. Now divide it by (2**24 - 1) */ | ||
1542 | |||
1543 | copy 0,x1 | ||
1544 | shd,= t1,x2,24,t1 /* tentative quotient */ | ||
1545 | LSYM(3) | ||
1546 | addb,tr t1,x1,LREF(4) /* add to previous quotient */ | ||
1547 | extru x2,31,24,x2 /* new remainder (unadjusted) */ | ||
1548 | |||
1549 | MILLIRET | ||
1550 | sub 0,x1,x1 /* negate result */ | ||
1551 | |||
1552 | LSYM(4) | ||
1553 | addb,tr t1,x2,LREF(3) /* adjust remainder */ | ||
1554 | extru,= x2,7,8,t1 /* new quotient */ | ||
1555 | |||
1556 | GSYM($$divU_7) | ||
1557 | .export $$divU_7,millicode | ||
1558 | addi 1,x2,x2 /* can carry */ | ||
1559 | addc 0,0,x1 | ||
1560 | shd x1,x2,29,t1 | ||
1561 | sh3add x2,x2,x2 | ||
1562 | b LREF(pos7) | ||
1563 | addc t1,x1,x1 | ||
1564 | |||
1565 | /* DIVISION BY 9 (use z = 2**24-1; a = 1c71c7) */ | ||
1566 | GSYM($$divI_9) | ||
1567 | .export $$divI_9,millicode | ||
1568 | comb,<,n x2,0,LREF(neg9) | ||
1569 | addi 1,x2,x2 /* cannot overflow */ | ||
1570 | shd 0,x2,29,t1 | ||
1571 | shd x2,0,29,t2 | ||
1572 | sub t2,x2,x2 | ||
1573 | b LREF(pos7) | ||
1574 | subb t1,0,x1 | ||
1575 | |||
1576 | LSYM(neg9) | ||
1577 | subi 1,x2,x2 /* negate and add 1 */ | ||
1578 | shd 0,x2,29,t1 | ||
1579 | shd x2,0,29,t2 | ||
1580 | sub t2,x2,x2 | ||
1581 | b LREF(neg7_shift) | ||
1582 | subb t1,0,x1 | ||
1583 | |||
1584 | GSYM($$divU_9) | ||
1585 | .export $$divU_9,millicode | ||
1586 | addi 1,x2,x2 /* can carry */ | ||
1587 | addc 0,0,x1 | ||
1588 | shd x1,x2,29,t1 | ||
1589 | shd x2,0,29,t2 | ||
1590 | sub t2,x2,x2 | ||
1591 | b LREF(pos7) | ||
1592 | subb t1,x1,x1 | ||
1593 | |||
1594 | /* DIVISION BY 14 (shift to divide by 2 then divide by 7) */ | ||
1595 | GSYM($$divI_14) | ||
1596 | .export $$divI_14,millicode | ||
1597 | comb,<,n x2,0,LREF(neg14) | ||
1598 | GSYM($$divU_14) | ||
1599 | .export $$divU_14,millicode | ||
1600 | b LREF(7) /* go to 7 case */ | ||
1601 | extru x2,30,31,x2 /* divide by 2 */ | ||
1602 | |||
1603 | LSYM(neg14) | ||
1604 | subi 2,x2,x2 /* negate (and add 2) */ | ||
1605 | b LREF(8) | ||
1606 | extru x2,30,31,x2 /* divide by 2 */ | ||
1607 | .exit | ||
1608 | .procend | ||
1609 | .end | ||
1610 | #endif | ||
1611 | |||
1612 | #ifdef L_mulI | ||
1613 | /* VERSION "@(#)$$mulI $ Revision: 12.4 $ $ Date: 94/03/17 17:18:51 $" */ | ||
1614 | /****************************************************************************** | ||
1615 | This routine is used on PA2.0 processors when gcc -mno-fpregs is used | ||
1616 | |||
1617 | ROUTINE: $$mulI | ||
1618 | |||
1619 | |||
1620 | DESCRIPTION: | ||
1621 | |||
1622 | $$mulI multiplies two single word integers, giving a single | ||
1623 | word result. | ||
1624 | |||
1625 | |||
1626 | INPUT REGISTERS: | ||
1627 | |||
1628 | arg0 = Operand 1 | ||
1629 | arg1 = Operand 2 | ||
1630 | r31 == return pc | ||
1631 | sr0 == return space when called externally | ||
1632 | |||
1633 | |||
1634 | OUTPUT REGISTERS: | ||
1635 | |||
1636 | arg0 = undefined | ||
1637 | arg1 = undefined | ||
1638 | ret1 = result | ||
1639 | |||
1640 | OTHER REGISTERS AFFECTED: | ||
1641 | |||
1642 | r1 = undefined | ||
1643 | |||
1644 | SIDE EFFECTS: | ||
1645 | |||
1646 | Causes a trap under the following conditions: NONE | ||
1647 | Changes memory at the following places: NONE | ||
1648 | |||
1649 | PERMISSIBLE CONTEXT: | ||
1650 | |||
1651 | Unwindable | ||
1652 | Does not create a stack frame | ||
1653 | Is usable for internal or external microcode | ||
1654 | |||
1655 | DISCUSSION: | ||
1656 | |||
1657 | Calls other millicode routines via mrp: NONE | ||
1658 | Calls other millicode routines: NONE | ||
1659 | |||
1660 | ***************************************************************************/ | ||
1661 | |||
1662 | |||
1663 | #define a0 %arg0 | ||
1664 | #define a1 %arg1 | ||
1665 | #define t0 %r1 | ||
1666 | #define r %ret1 | ||
1667 | |||
1668 | #define a0__128a0 zdep a0,24,25,a0 | ||
1669 | #define a0__256a0 zdep a0,23,24,a0 | ||
1670 | #define a1_ne_0_b_l0 comb,<> a1,0,LREF(l0) | ||
1671 | #define a1_ne_0_b_l1 comb,<> a1,0,LREF(l1) | ||
1672 | #define a1_ne_0_b_l2 comb,<> a1,0,LREF(l2) | ||
1673 | #define b_n_ret_t0 b,n LREF(ret_t0) | ||
1674 | #define b_e_shift b LREF(e_shift) | ||
1675 | #define b_e_t0ma0 b LREF(e_t0ma0) | ||
1676 | #define b_e_t0 b LREF(e_t0) | ||
1677 | #define b_e_t0a0 b LREF(e_t0a0) | ||
1678 | #define b_e_t02a0 b LREF(e_t02a0) | ||
1679 | #define b_e_t04a0 b LREF(e_t04a0) | ||
1680 | #define b_e_2t0 b LREF(e_2t0) | ||
1681 | #define b_e_2t0a0 b LREF(e_2t0a0) | ||
1682 | #define b_e_2t04a0 b LREF(e2t04a0) | ||
1683 | #define b_e_3t0 b LREF(e_3t0) | ||
1684 | #define b_e_4t0 b LREF(e_4t0) | ||
1685 | #define b_e_4t0a0 b LREF(e_4t0a0) | ||
1686 | #define b_e_4t08a0 b LREF(e4t08a0) | ||
1687 | #define b_e_5t0 b LREF(e_5t0) | ||
1688 | #define b_e_8t0 b LREF(e_8t0) | ||
1689 | #define b_e_8t0a0 b LREF(e_8t0a0) | ||
1690 | #define r__r_a0 add r,a0,r | ||
1691 | #define r__r_2a0 sh1add a0,r,r | ||
1692 | #define r__r_4a0 sh2add a0,r,r | ||
1693 | #define r__r_8a0 sh3add a0,r,r | ||
1694 | #define r__r_t0 add r,t0,r | ||
1695 | #define r__r_2t0 sh1add t0,r,r | ||
1696 | #define r__r_4t0 sh2add t0,r,r | ||
1697 | #define r__r_8t0 sh3add t0,r,r | ||
1698 | #define t0__3a0 sh1add a0,a0,t0 | ||
1699 | #define t0__4a0 sh2add a0,0,t0 | ||
1700 | #define t0__5a0 sh2add a0,a0,t0 | ||
1701 | #define t0__8a0 sh3add a0,0,t0 | ||
1702 | #define t0__9a0 sh3add a0,a0,t0 | ||
1703 | #define t0__16a0 zdep a0,27,28,t0 | ||
1704 | #define t0__32a0 zdep a0,26,27,t0 | ||
1705 | #define t0__64a0 zdep a0,25,26,t0 | ||
1706 | #define t0__128a0 zdep a0,24,25,t0 | ||
1707 | #define t0__t0ma0 sub t0,a0,t0 | ||
1708 | #define t0__t0_a0 add t0,a0,t0 | ||
1709 | #define t0__t0_2a0 sh1add a0,t0,t0 | ||
1710 | #define t0__t0_4a0 sh2add a0,t0,t0 | ||
1711 | #define t0__t0_8a0 sh3add a0,t0,t0 | ||
1712 | #define t0__2t0_a0 sh1add t0,a0,t0 | ||
1713 | #define t0__3t0 sh1add t0,t0,t0 | ||
1714 | #define t0__4t0 sh2add t0,0,t0 | ||
1715 | #define t0__4t0_a0 sh2add t0,a0,t0 | ||
1716 | #define t0__5t0 sh2add t0,t0,t0 | ||
1717 | #define t0__8t0 sh3add t0,0,t0 | ||
1718 | #define t0__8t0_a0 sh3add t0,a0,t0 | ||
1719 | #define t0__9t0 sh3add t0,t0,t0 | ||
1720 | #define t0__16t0 zdep t0,27,28,t0 | ||
1721 | #define t0__32t0 zdep t0,26,27,t0 | ||
1722 | #define t0__256a0 zdep a0,23,24,t0 | ||
1723 | |||
1724 | |||
1725 | SUBSPA_MILLI | ||
1726 | ATTR_MILLI | ||
1727 | .align 16 | ||
1728 | .proc | ||
1729 | .callinfo millicode | ||
1730 | .export $$mulI,millicode | ||
1731 | GSYM($$mulI) | ||
1732 | combt,<<= a1,a0,LREF(l4) /* swap args if unsigned a1>a0 */ | ||
1733 | copy 0,r /* zero out the result */ | ||
1734 | xor a0,a1,a0 /* swap a0 & a1 using the */ | ||
1735 | xor a0,a1,a1 /* old xor trick */ | ||
1736 | xor a0,a1,a0 | ||
1737 | LSYM(l4) | ||
1738 | combt,<= 0,a0,LREF(l3) /* if a0>=0 then proceed like unsigned */ | ||
1739 | zdep a1,30,8,t0 /* t0 = (a1&0xff)<<1 ********* */ | ||
1740 | sub,> 0,a1,t0 /* otherwise negate both and */ | ||
1741 | combt,<=,n a0,t0,LREF(l2) /* swap back if |a0|<|a1| */ | ||
1742 | sub 0,a0,a1 | ||
1743 | movb,tr,n t0,a0,LREF(l2) /* 10th inst. */ | ||
1744 | |||
1745 | LSYM(l0) r__r_t0 /* add in this partial product */ | ||
1746 | LSYM(l1) a0__256a0 /* a0 <<= 8 ****************** */ | ||
1747 | LSYM(l2) zdep a1,30,8,t0 /* t0 = (a1&0xff)<<1 ********* */ | ||
1748 | LSYM(l3) blr t0,0 /* case on these 8 bits ****** */ | ||
1749 | extru a1,23,24,a1 /* a1 >>= 8 ****************** */ | ||
1750 | |||
1751 | /*16 insts before this. */ | ||
1752 | /* a0 <<= 8 ************************** */ | ||
1753 | LSYM(x0) a1_ne_0_b_l2 ! a0__256a0 ! MILLIRETN ! nop | ||
1754 | LSYM(x1) a1_ne_0_b_l1 ! r__r_a0 ! MILLIRETN ! nop | ||
1755 | LSYM(x2) a1_ne_0_b_l1 ! r__r_2a0 ! MILLIRETN ! nop | ||
1756 | LSYM(x3) a1_ne_0_b_l0 ! t0__3a0 ! MILLIRET ! r__r_t0 | ||
1757 | LSYM(x4) a1_ne_0_b_l1 ! r__r_4a0 ! MILLIRETN ! nop | ||
1758 | LSYM(x5) a1_ne_0_b_l0 ! t0__5a0 ! MILLIRET ! r__r_t0 | ||
1759 | LSYM(x6) t0__3a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN | ||
1760 | LSYM(x7) t0__3a0 ! a1_ne_0_b_l0 ! r__r_4a0 ! b_n_ret_t0 | ||
1761 | LSYM(x8) a1_ne_0_b_l1 ! r__r_8a0 ! MILLIRETN ! nop | ||
1762 | LSYM(x9) a1_ne_0_b_l0 ! t0__9a0 ! MILLIRET ! r__r_t0 | ||
1763 | LSYM(x10) t0__5a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN | ||
1764 | LSYM(x11) t0__3a0 ! a1_ne_0_b_l0 ! r__r_8a0 ! b_n_ret_t0 | ||
1765 | LSYM(x12) t0__3a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN | ||
1766 | LSYM(x13) t0__5a0 ! a1_ne_0_b_l0 ! r__r_8a0 ! b_n_ret_t0 | ||
1767 | LSYM(x14) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0 | ||
1768 | LSYM(x15) t0__5a0 ! a1_ne_0_b_l0 ! t0__3t0 ! b_n_ret_t0 | ||
1769 | LSYM(x16) t0__16a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
1770 | LSYM(x17) t0__9a0 ! a1_ne_0_b_l0 ! t0__t0_8a0 ! b_n_ret_t0 | ||
1771 | LSYM(x18) t0__9a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN | ||
1772 | LSYM(x19) t0__9a0 ! a1_ne_0_b_l0 ! t0__2t0_a0 ! b_n_ret_t0 | ||
1773 | LSYM(x20) t0__5a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN | ||
1774 | LSYM(x21) t0__5a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0 | ||
1775 | LSYM(x22) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0 | ||
1776 | LSYM(x23) t0__5a0 ! t0__2t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
1777 | LSYM(x24) t0__3a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN | ||
1778 | LSYM(x25) t0__5a0 ! a1_ne_0_b_l0 ! t0__5t0 ! b_n_ret_t0 | ||
1779 | LSYM(x26) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0 | ||
1780 | LSYM(x27) t0__3a0 ! a1_ne_0_b_l0 ! t0__9t0 ! b_n_ret_t0 | ||
1781 | LSYM(x28) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
1782 | LSYM(x29) t0__3a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
1783 | LSYM(x30) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_2t0 | ||
1784 | LSYM(x31) t0__32a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
1785 | LSYM(x32) t0__32a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
1786 | LSYM(x33) t0__8a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0 | ||
1787 | LSYM(x34) t0__16a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0 | ||
1788 | LSYM(x35) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__t0_8a0 | ||
1789 | LSYM(x36) t0__9a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN | ||
1790 | LSYM(x37) t0__9a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0 | ||
1791 | LSYM(x38) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0 | ||
1792 | LSYM(x39) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
1793 | LSYM(x40) t0__5a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN | ||
1794 | LSYM(x41) t0__5a0 ! a1_ne_0_b_l0 ! t0__8t0_a0 ! b_n_ret_t0 | ||
1795 | LSYM(x42) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0 | ||
1796 | LSYM(x43) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
1797 | LSYM(x44) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
1798 | LSYM(x45) t0__9a0 ! a1_ne_0_b_l0 ! t0__5t0 ! b_n_ret_t0 | ||
1799 | LSYM(x46) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_a0 | ||
1800 | LSYM(x47) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_2a0 | ||
1801 | LSYM(x48) t0__3a0 ! a1_ne_0_b_l0 ! t0__16t0 ! b_n_ret_t0 | ||
1802 | LSYM(x49) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_4a0 | ||
1803 | LSYM(x50) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_2t0 | ||
1804 | LSYM(x51) t0__9a0 ! t0__t0_8a0 ! b_e_t0 ! t0__3t0 | ||
1805 | LSYM(x52) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
1806 | LSYM(x53) t0__3a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
1807 | LSYM(x54) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_2t0 | ||
1808 | LSYM(x55) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__2t0_a0 | ||
1809 | LSYM(x56) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
1810 | LSYM(x57) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__3t0 | ||
1811 | LSYM(x58) t0__3a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
1812 | LSYM(x59) t0__9a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__3t0 | ||
1813 | LSYM(x60) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_4t0 | ||
1814 | LSYM(x61) t0__5a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0 | ||
1815 | LSYM(x62) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0 | ||
1816 | LSYM(x63) t0__64a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
1817 | LSYM(x64) t0__64a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
1818 | LSYM(x65) t0__8a0 ! a1_ne_0_b_l0 ! t0__8t0_a0 ! b_n_ret_t0 | ||
1819 | LSYM(x66) t0__32a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0 | ||
1820 | LSYM(x67) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
1821 | LSYM(x68) t0__8a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
1822 | LSYM(x69) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
1823 | LSYM(x70) t0__64a0 ! t0__t0_4a0 ! b_e_t0 ! t0__t0_2a0 | ||
1824 | LSYM(x71) t0__9a0 ! t0__8t0 ! b_e_t0 ! t0__t0ma0 | ||
1825 | LSYM(x72) t0__9a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN | ||
1826 | LSYM(x73) t0__9a0 ! t0__8t0_a0 ! b_e_shift ! r__r_t0 | ||
1827 | LSYM(x74) t0__9a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0 | ||
1828 | LSYM(x75) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
1829 | LSYM(x76) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
1830 | LSYM(x77) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
1831 | LSYM(x78) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
1832 | LSYM(x79) t0__16a0 ! t0__5t0 ! b_e_t0 ! t0__t0ma0 | ||
1833 | LSYM(x80) t0__16a0 ! t0__5t0 ! b_e_shift ! r__r_t0 | ||
1834 | LSYM(x81) t0__9a0 ! t0__9t0 ! b_e_shift ! r__r_t0 | ||
1835 | LSYM(x82) t0__5a0 ! t0__8t0_a0 ! b_e_shift ! r__r_2t0 | ||
1836 | LSYM(x83) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
1837 | LSYM(x84) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
1838 | LSYM(x85) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__5t0 | ||
1839 | LSYM(x86) t0__5a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
1840 | LSYM(x87) t0__9a0 ! t0__9t0 ! b_e_t02a0 ! t0__t0_4a0 | ||
1841 | LSYM(x88) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
1842 | LSYM(x89) t0__5a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
1843 | LSYM(x90) t0__9a0 ! t0__5t0 ! b_e_shift ! r__r_2t0 | ||
1844 | LSYM(x91) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__2t0_a0 | ||
1845 | LSYM(x92) t0__5a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__2t0_a0 | ||
1846 | LSYM(x93) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__3t0 | ||
1847 | LSYM(x94) t0__9a0 ! t0__5t0 ! b_e_2t0 ! t0__t0_2a0 | ||
1848 | LSYM(x95) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__5t0 | ||
1849 | LSYM(x96) t0__8a0 ! t0__3t0 ! b_e_shift ! r__r_4t0 | ||
1850 | LSYM(x97) t0__8a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0 | ||
1851 | LSYM(x98) t0__32a0 ! t0__3t0 ! b_e_t0 ! t0__t0_2a0 | ||
1852 | LSYM(x99) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__3t0 | ||
1853 | LSYM(x100) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_4t0 | ||
1854 | LSYM(x101) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0 | ||
1855 | LSYM(x102) t0__32a0 ! t0__t0_2a0 ! b_e_t0 ! t0__3t0 | ||
1856 | LSYM(x103) t0__5a0 ! t0__5t0 ! b_e_t02a0 ! t0__4t0_a0 | ||
1857 | LSYM(x104) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_8t0 | ||
1858 | LSYM(x105) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0 | ||
1859 | LSYM(x106) t0__3a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
1860 | LSYM(x107) t0__9a0 ! t0__t0_4a0 ! b_e_t02a0 ! t0__8t0_a0 | ||
1861 | LSYM(x108) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_4t0 | ||
1862 | LSYM(x109) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0 | ||
1863 | LSYM(x110) t0__9a0 ! t0__3t0 ! b_e_2t0 ! t0__2t0_a0 | ||
1864 | LSYM(x111) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__3t0 | ||
1865 | LSYM(x112) t0__3a0 ! t0__2t0_a0 ! b_e_t0 ! t0__16t0 | ||
1866 | LSYM(x113) t0__9a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__3t0 | ||
1867 | LSYM(x114) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__3t0 | ||
1868 | LSYM(x115) t0__9a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
1869 | LSYM(x116) t0__3a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__4t0_a0 | ||
1870 | LSYM(x117) t0__3a0 ! t0__4t0_a0 ! b_e_t0 ! t0__9t0 | ||
1871 | LSYM(x118) t0__3a0 ! t0__4t0_a0 ! b_e_t0a0 ! t0__9t0 | ||
1872 | LSYM(x119) t0__3a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__9t0 | ||
1873 | LSYM(x120) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_8t0 | ||
1874 | LSYM(x121) t0__5a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0 | ||
1875 | LSYM(x122) t0__5a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0 | ||
1876 | LSYM(x123) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0 | ||
1877 | LSYM(x124) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_4t0 | ||
1878 | LSYM(x125) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__5t0 | ||
1879 | LSYM(x126) t0__64a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0 | ||
1880 | LSYM(x127) t0__128a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
1881 | LSYM(x128) t0__128a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
1882 | LSYM(x129) t0__128a0 ! a1_ne_0_b_l0 ! t0__t0_a0 ! b_n_ret_t0 | ||
1883 | LSYM(x130) t0__64a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0 | ||
1884 | LSYM(x131) t0__8a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
1885 | LSYM(x132) t0__8a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
1886 | LSYM(x133) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
1887 | LSYM(x134) t0__8a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
1888 | LSYM(x135) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__3t0 | ||
1889 | LSYM(x136) t0__8a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
1890 | LSYM(x137) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
1891 | LSYM(x138) t0__8a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
1892 | LSYM(x139) t0__8a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__4t0_a0 | ||
1893 | LSYM(x140) t0__3a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__5t0 | ||
1894 | LSYM(x141) t0__8a0 ! t0__2t0_a0 ! b_e_4t0a0 ! t0__2t0_a0 | ||
1895 | LSYM(x142) t0__9a0 ! t0__8t0 ! b_e_2t0 ! t0__t0ma0 | ||
1896 | LSYM(x143) t0__16a0 ! t0__9t0 ! b_e_t0 ! t0__t0ma0 | ||
1897 | LSYM(x144) t0__9a0 ! t0__8t0 ! b_e_shift ! r__r_2t0 | ||
1898 | LSYM(x145) t0__9a0 ! t0__8t0 ! b_e_t0 ! t0__2t0_a0 | ||
1899 | LSYM(x146) t0__9a0 ! t0__8t0_a0 ! b_e_shift ! r__r_2t0 | ||
1900 | LSYM(x147) t0__9a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
1901 | LSYM(x148) t0__9a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
1902 | LSYM(x149) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
1903 | LSYM(x150) t0__9a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
1904 | LSYM(x151) t0__9a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__2t0_a0 | ||
1905 | LSYM(x152) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
1906 | LSYM(x153) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
1907 | LSYM(x154) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
1908 | LSYM(x155) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__5t0 | ||
1909 | LSYM(x156) t0__9a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__2t0_a0 | ||
1910 | LSYM(x157) t0__32a0 ! t0__t0ma0 ! b_e_t02a0 ! t0__5t0 | ||
1911 | LSYM(x158) t0__16a0 ! t0__5t0 ! b_e_2t0 ! t0__t0ma0 | ||
1912 | LSYM(x159) t0__32a0 ! t0__5t0 ! b_e_t0 ! t0__t0ma0 | ||
1913 | LSYM(x160) t0__5a0 ! t0__4t0 ! b_e_shift ! r__r_8t0 | ||
1914 | LSYM(x161) t0__8a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0 | ||
1915 | LSYM(x162) t0__9a0 ! t0__9t0 ! b_e_shift ! r__r_2t0 | ||
1916 | LSYM(x163) t0__9a0 ! t0__9t0 ! b_e_t0 ! t0__2t0_a0 | ||
1917 | LSYM(x164) t0__5a0 ! t0__8t0_a0 ! b_e_shift ! r__r_4t0 | ||
1918 | LSYM(x165) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0 | ||
1919 | LSYM(x166) t0__5a0 ! t0__8t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
1920 | LSYM(x167) t0__5a0 ! t0__8t0_a0 ! b_e_2t0a0 ! t0__2t0_a0 | ||
1921 | LSYM(x168) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_8t0 | ||
1922 | LSYM(x169) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
1923 | LSYM(x170) t0__32a0 ! t0__t0_2a0 ! b_e_t0 ! t0__5t0 | ||
1924 | LSYM(x171) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__9t0 | ||
1925 | LSYM(x172) t0__5a0 ! t0__4t0_a0 ! b_e_4t0 ! t0__2t0_a0 | ||
1926 | LSYM(x173) t0__9a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__9t0 | ||
1927 | LSYM(x174) t0__32a0 ! t0__t0_2a0 ! b_e_t04a0 ! t0__5t0 | ||
1928 | LSYM(x175) t0__8a0 ! t0__2t0_a0 ! b_e_5t0 ! t0__2t0_a0 | ||
1929 | LSYM(x176) t0__5a0 ! t0__4t0_a0 ! b_e_8t0 ! t0__t0_a0 | ||
1930 | LSYM(x177) t0__5a0 ! t0__4t0_a0 ! b_e_8t0a0 ! t0__t0_a0 | ||
1931 | LSYM(x178) t0__5a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__8t0_a0 | ||
1932 | LSYM(x179) t0__5a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__8t0_a0 | ||
1933 | LSYM(x180) t0__9a0 ! t0__5t0 ! b_e_shift ! r__r_4t0 | ||
1934 | LSYM(x181) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0 | ||
1935 | LSYM(x182) t0__9a0 ! t0__5t0 ! b_e_2t0 ! t0__2t0_a0 | ||
1936 | LSYM(x183) t0__9a0 ! t0__5t0 ! b_e_2t0a0 ! t0__2t0_a0 | ||
1937 | LSYM(x184) t0__5a0 ! t0__9t0 ! b_e_4t0 ! t0__t0_a0 | ||
1938 | LSYM(x185) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0 | ||
1939 | LSYM(x186) t0__32a0 ! t0__t0ma0 ! b_e_2t0 ! t0__3t0 | ||
1940 | LSYM(x187) t0__9a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__5t0 | ||
1941 | LSYM(x188) t0__9a0 ! t0__5t0 ! b_e_4t0 ! t0__t0_2a0 | ||
1942 | LSYM(x189) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__9t0 | ||
1943 | LSYM(x190) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__5t0 | ||
1944 | LSYM(x191) t0__64a0 ! t0__3t0 ! b_e_t0 ! t0__t0ma0 | ||
1945 | LSYM(x192) t0__8a0 ! t0__3t0 ! b_e_shift ! r__r_8t0 | ||
1946 | LSYM(x193) t0__8a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0 | ||
1947 | LSYM(x194) t0__8a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0 | ||
1948 | LSYM(x195) t0__8a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0 | ||
1949 | LSYM(x196) t0__8a0 ! t0__3t0 ! b_e_4t0 ! t0__2t0_a0 | ||
1950 | LSYM(x197) t0__8a0 ! t0__3t0 ! b_e_4t0a0 ! t0__2t0_a0 | ||
1951 | LSYM(x198) t0__64a0 ! t0__t0_2a0 ! b_e_t0 ! t0__3t0 | ||
1952 | LSYM(x199) t0__8a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
1953 | LSYM(x200) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_8t0 | ||
1954 | LSYM(x201) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__8t0_a0 | ||
1955 | LSYM(x202) t0__5a0 ! t0__5t0 ! b_e_2t0 ! t0__4t0_a0 | ||
1956 | LSYM(x203) t0__5a0 ! t0__5t0 ! b_e_2t0a0 ! t0__4t0_a0 | ||
1957 | LSYM(x204) t0__8a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__3t0 | ||
1958 | LSYM(x205) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__5t0 | ||
1959 | LSYM(x206) t0__64a0 ! t0__t0_4a0 ! b_e_t02a0 ! t0__3t0 | ||
1960 | LSYM(x207) t0__8a0 ! t0__2t0_a0 ! b_e_3t0 ! t0__4t0_a0 | ||
1961 | LSYM(x208) t0__5a0 ! t0__5t0 ! b_e_8t0 ! t0__t0_a0 | ||
1962 | LSYM(x209) t0__5a0 ! t0__5t0 ! b_e_8t0a0 ! t0__t0_a0 | ||
1963 | LSYM(x210) t0__5a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__5t0 | ||
1964 | LSYM(x211) t0__5a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__5t0 | ||
1965 | LSYM(x212) t0__3a0 ! t0__4t0_a0 ! b_e_4t0 ! t0__4t0_a0 | ||
1966 | LSYM(x213) t0__3a0 ! t0__4t0_a0 ! b_e_4t0a0 ! t0__4t0_a0 | ||
1967 | LSYM(x214) t0__9a0 ! t0__t0_4a0 ! b_e_2t04a0 ! t0__8t0_a0 | ||
1968 | LSYM(x215) t0__5a0 ! t0__4t0_a0 ! b_e_5t0 ! t0__2t0_a0 | ||
1969 | LSYM(x216) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_8t0 | ||
1970 | LSYM(x217) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0 | ||
1971 | LSYM(x218) t0__9a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0 | ||
1972 | LSYM(x219) t0__9a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0 | ||
1973 | LSYM(x220) t0__3a0 ! t0__9t0 ! b_e_4t0 ! t0__2t0_a0 | ||
1974 | LSYM(x221) t0__3a0 ! t0__9t0 ! b_e_4t0a0 ! t0__2t0_a0 | ||
1975 | LSYM(x222) t0__9a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__3t0 | ||
1976 | LSYM(x223) t0__9a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
1977 | LSYM(x224) t0__9a0 ! t0__3t0 ! b_e_8t0 ! t0__t0_a0 | ||
1978 | LSYM(x225) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__5t0 | ||
1979 | LSYM(x226) t0__3a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__32t0 | ||
1980 | LSYM(x227) t0__9a0 ! t0__5t0 ! b_e_t02a0 ! t0__5t0 | ||
1981 | LSYM(x228) t0__9a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__3t0 | ||
1982 | LSYM(x229) t0__9a0 ! t0__2t0_a0 ! b_e_4t0a0 ! t0__3t0 | ||
1983 | LSYM(x230) t0__9a0 ! t0__5t0 ! b_e_5t0 ! t0__t0_a0 | ||
1984 | LSYM(x231) t0__9a0 ! t0__2t0_a0 ! b_e_3t0 ! t0__4t0_a0 | ||
1985 | LSYM(x232) t0__3a0 ! t0__2t0_a0 ! b_e_8t0 ! t0__4t0_a0 | ||
1986 | LSYM(x233) t0__3a0 ! t0__2t0_a0 ! b_e_8t0a0 ! t0__4t0_a0 | ||
1987 | LSYM(x234) t0__3a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__9t0 | ||
1988 | LSYM(x235) t0__3a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__9t0 | ||
1989 | LSYM(x236) t0__9a0 ! t0__2t0_a0 ! b_e_4t08a0 ! t0__3t0 | ||
1990 | LSYM(x237) t0__16a0 ! t0__5t0 ! b_e_3t0 ! t0__t0ma0 | ||
1991 | LSYM(x238) t0__3a0 ! t0__4t0_a0 ! b_e_2t04a0 ! t0__9t0 | ||
1992 | LSYM(x239) t0__16a0 ! t0__5t0 ! b_e_t0ma0 ! t0__3t0 | ||
1993 | LSYM(x240) t0__9a0 ! t0__t0_a0 ! b_e_8t0 ! t0__3t0 | ||
1994 | LSYM(x241) t0__9a0 ! t0__t0_a0 ! b_e_8t0a0 ! t0__3t0 | ||
1995 | LSYM(x242) t0__5a0 ! t0__3t0 ! b_e_2t0 ! t0__8t0_a0 | ||
1996 | LSYM(x243) t0__9a0 ! t0__9t0 ! b_e_t0 ! t0__3t0 | ||
1997 | LSYM(x244) t0__5a0 ! t0__3t0 ! b_e_4t0 ! t0__4t0_a0 | ||
1998 | LSYM(x245) t0__8a0 ! t0__3t0 ! b_e_5t0 ! t0__2t0_a0 | ||
1999 | LSYM(x246) t0__5a0 ! t0__8t0_a0 ! b_e_2t0 ! t0__3t0 | ||
2000 | LSYM(x247) t0__5a0 ! t0__8t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
2001 | LSYM(x248) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_8t0 | ||
2002 | LSYM(x249) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__8t0_a0 | ||
2003 | LSYM(x250) t0__5a0 ! t0__5t0 ! b_e_2t0 ! t0__5t0 | ||
2004 | LSYM(x251) t0__5a0 ! t0__5t0 ! b_e_2t0a0 ! t0__5t0 | ||
2005 | LSYM(x252) t0__64a0 ! t0__t0ma0 ! b_e_shift ! r__r_4t0 | ||
2006 | LSYM(x253) t0__64a0 ! t0__t0ma0 ! b_e_t0 ! t0__4t0_a0 | ||
2007 | LSYM(x254) t0__128a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0 | ||
2008 | LSYM(x255) t0__256a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
2009 | /*1040 insts before this. */ | ||
2010 | LSYM(ret_t0) MILLIRET | ||
2011 | LSYM(e_t0) r__r_t0 | ||
2012 | LSYM(e_shift) a1_ne_0_b_l2 | ||
2013 | a0__256a0 /* a0 <<= 8 *********** */ | ||
2014 | MILLIRETN | ||
2015 | LSYM(e_t0ma0) a1_ne_0_b_l0 | ||
2016 | t0__t0ma0 | ||
2017 | MILLIRET | ||
2018 | r__r_t0 | ||
2019 | LSYM(e_t0a0) a1_ne_0_b_l0 | ||
2020 | t0__t0_a0 | ||
2021 | MILLIRET | ||
2022 | r__r_t0 | ||
2023 | LSYM(e_t02a0) a1_ne_0_b_l0 | ||
2024 | t0__t0_2a0 | ||
2025 | MILLIRET | ||
2026 | r__r_t0 | ||
2027 | LSYM(e_t04a0) a1_ne_0_b_l0 | ||
2028 | t0__t0_4a0 | ||
2029 | MILLIRET | ||
2030 | r__r_t0 | ||
2031 | LSYM(e_2t0) a1_ne_0_b_l1 | ||
2032 | r__r_2t0 | ||
2033 | MILLIRETN | ||
2034 | LSYM(e_2t0a0) a1_ne_0_b_l0 | ||
2035 | t0__2t0_a0 | ||
2036 | MILLIRET | ||
2037 | r__r_t0 | ||
2038 | LSYM(e2t04a0) t0__t0_2a0 | ||
2039 | a1_ne_0_b_l1 | ||
2040 | r__r_2t0 | ||
2041 | MILLIRETN | ||
2042 | LSYM(e_3t0) a1_ne_0_b_l0 | ||
2043 | t0__3t0 | ||
2044 | MILLIRET | ||
2045 | r__r_t0 | ||
2046 | LSYM(e_4t0) a1_ne_0_b_l1 | ||
2047 | r__r_4t0 | ||
2048 | MILLIRETN | ||
2049 | LSYM(e_4t0a0) a1_ne_0_b_l0 | ||
2050 | t0__4t0_a0 | ||
2051 | MILLIRET | ||
2052 | r__r_t0 | ||
2053 | LSYM(e4t08a0) t0__t0_2a0 | ||
2054 | a1_ne_0_b_l1 | ||
2055 | r__r_4t0 | ||
2056 | MILLIRETN | ||
2057 | LSYM(e_5t0) a1_ne_0_b_l0 | ||
2058 | t0__5t0 | ||
2059 | MILLIRET | ||
2060 | r__r_t0 | ||
2061 | LSYM(e_8t0) a1_ne_0_b_l1 | ||
2062 | r__r_8t0 | ||
2063 | MILLIRETN | ||
2064 | LSYM(e_8t0a0) a1_ne_0_b_l0 | ||
2065 | t0__8t0_a0 | ||
2066 | MILLIRET | ||
2067 | r__r_t0 | ||
2068 | |||
2069 | .procend | ||
2070 | .end | ||
2071 | #endif | ||
diff --git a/arch/parisc/lib/milli/milli.h b/arch/parisc/lib/milli/milli.h new file mode 100644 index 000000000000..19ac79f336de --- /dev/null +++ b/arch/parisc/lib/milli/milli.h | |||
@@ -0,0 +1,165 @@ | |||
1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
3 | and Alan Modra <alan@linuxcare.com.au>. | ||
4 | |||
5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
6 | |||
7 | This file is part of GCC and is released under the terms of | ||
8 | of the GNU General Public License as published by the Free Software | ||
9 | Foundation; either version 2, or (at your option) any later version. | ||
10 | See the file COPYING in the top-level GCC source directory for a copy | ||
11 | of the license. */ | ||
12 | |||
13 | #ifndef _PA_MILLI_H_ | ||
14 | #define _PA_MILLI_H_ | ||
15 | |||
16 | #define L_dyncall | ||
17 | #define L_divI | ||
18 | #define L_divU | ||
19 | #define L_remI | ||
20 | #define L_remU | ||
21 | #define L_div_const | ||
22 | #define L_mulI | ||
23 | |||
24 | #ifdef CONFIG_64BIT | ||
25 | .level 2.0w | ||
26 | #endif | ||
27 | |||
28 | /* Hardware General Registers. */ | ||
29 | r0: .reg %r0 | ||
30 | r1: .reg %r1 | ||
31 | r2: .reg %r2 | ||
32 | r3: .reg %r3 | ||
33 | r4: .reg %r4 | ||
34 | r5: .reg %r5 | ||
35 | r6: .reg %r6 | ||
36 | r7: .reg %r7 | ||
37 | r8: .reg %r8 | ||
38 | r9: .reg %r9 | ||
39 | r10: .reg %r10 | ||
40 | r11: .reg %r11 | ||
41 | r12: .reg %r12 | ||
42 | r13: .reg %r13 | ||
43 | r14: .reg %r14 | ||
44 | r15: .reg %r15 | ||
45 | r16: .reg %r16 | ||
46 | r17: .reg %r17 | ||
47 | r18: .reg %r18 | ||
48 | r19: .reg %r19 | ||
49 | r20: .reg %r20 | ||
50 | r21: .reg %r21 | ||
51 | r22: .reg %r22 | ||
52 | r23: .reg %r23 | ||
53 | r24: .reg %r24 | ||
54 | r25: .reg %r25 | ||
55 | r26: .reg %r26 | ||
56 | r27: .reg %r27 | ||
57 | r28: .reg %r28 | ||
58 | r29: .reg %r29 | ||
59 | r30: .reg %r30 | ||
60 | r31: .reg %r31 | ||
61 | |||
62 | /* Hardware Space Registers. */ | ||
63 | sr0: .reg %sr0 | ||
64 | sr1: .reg %sr1 | ||
65 | sr2: .reg %sr2 | ||
66 | sr3: .reg %sr3 | ||
67 | sr4: .reg %sr4 | ||
68 | sr5: .reg %sr5 | ||
69 | sr6: .reg %sr6 | ||
70 | sr7: .reg %sr7 | ||
71 | |||
72 | /* Hardware Floating Point Registers. */ | ||
73 | fr0: .reg %fr0 | ||
74 | fr1: .reg %fr1 | ||
75 | fr2: .reg %fr2 | ||
76 | fr3: .reg %fr3 | ||
77 | fr4: .reg %fr4 | ||
78 | fr5: .reg %fr5 | ||
79 | fr6: .reg %fr6 | ||
80 | fr7: .reg %fr7 | ||
81 | fr8: .reg %fr8 | ||
82 | fr9: .reg %fr9 | ||
83 | fr10: .reg %fr10 | ||
84 | fr11: .reg %fr11 | ||
85 | fr12: .reg %fr12 | ||
86 | fr13: .reg %fr13 | ||
87 | fr14: .reg %fr14 | ||
88 | fr15: .reg %fr15 | ||
89 | |||
90 | /* Hardware Control Registers. */ | ||
91 | cr11: .reg %cr11 | ||
92 | sar: .reg %cr11 /* Shift Amount Register */ | ||
93 | |||
94 | /* Software Architecture General Registers. */ | ||
95 | rp: .reg r2 /* return pointer */ | ||
96 | #ifdef CONFIG_64BIT | ||
97 | mrp: .reg r2 /* millicode return pointer */ | ||
98 | #else | ||
99 | mrp: .reg r31 /* millicode return pointer */ | ||
100 | #endif | ||
101 | ret0: .reg r28 /* return value */ | ||
102 | ret1: .reg r29 /* return value (high part of double) */ | ||
103 | sp: .reg r30 /* stack pointer */ | ||
104 | dp: .reg r27 /* data pointer */ | ||
105 | arg0: .reg r26 /* argument */ | ||
106 | arg1: .reg r25 /* argument or high part of double argument */ | ||
107 | arg2: .reg r24 /* argument */ | ||
108 | arg3: .reg r23 /* argument or high part of double argument */ | ||
109 | |||
110 | /* Software Architecture Space Registers. */ | ||
111 | /* sr0 ; return link from BLE */ | ||
112 | sret: .reg sr1 /* return value */ | ||
113 | sarg: .reg sr1 /* argument */ | ||
114 | /* sr4 ; PC SPACE tracker */ | ||
115 | /* sr5 ; process private data */ | ||
116 | |||
117 | /* Frame Offsets (millicode convention!) Used when calling other | ||
118 | millicode routines. Stack unwinding is dependent upon these | ||
119 | definitions. */ | ||
120 | r31_slot: .equ -20 /* "current RP" slot */ | ||
121 | sr0_slot: .equ -16 /* "static link" slot */ | ||
122 | #if defined(CONFIG_64BIT) | ||
123 | mrp_slot: .equ -16 /* "current RP" slot */ | ||
124 | psp_slot: .equ -8 /* "previous SP" slot */ | ||
125 | #else | ||
126 | mrp_slot: .equ -20 /* "current RP" slot (replacing "r31_slot") */ | ||
127 | #endif | ||
128 | |||
129 | |||
130 | #define DEFINE(name,value)name: .EQU value | ||
131 | #define RDEFINE(name,value)name: .REG value | ||
132 | #ifdef milliext | ||
133 | #define MILLI_BE(lbl) BE lbl(sr7,r0) | ||
134 | #define MILLI_BEN(lbl) BE,n lbl(sr7,r0) | ||
135 | #define MILLI_BLE(lbl) BLE lbl(sr7,r0) | ||
136 | #define MILLI_BLEN(lbl) BLE,n lbl(sr7,r0) | ||
137 | #define MILLIRETN BE,n 0(sr0,mrp) | ||
138 | #define MILLIRET BE 0(sr0,mrp) | ||
139 | #define MILLI_RETN BE,n 0(sr0,mrp) | ||
140 | #define MILLI_RET BE 0(sr0,mrp) | ||
141 | #else | ||
142 | #define MILLI_BE(lbl) B lbl | ||
143 | #define MILLI_BEN(lbl) B,n lbl | ||
144 | #define MILLI_BLE(lbl) BL lbl,mrp | ||
145 | #define MILLI_BLEN(lbl) BL,n lbl,mrp | ||
146 | #define MILLIRETN BV,n 0(mrp) | ||
147 | #define MILLIRET BV 0(mrp) | ||
148 | #define MILLI_RETN BV,n 0(mrp) | ||
149 | #define MILLI_RET BV 0(mrp) | ||
150 | #endif | ||
151 | |||
152 | #define CAT(a,b) a##b | ||
153 | |||
154 | #define SUBSPA_MILLI .section .text | ||
155 | #define SUBSPA_MILLI_DIV .section .text.div,"ax",@progbits! .align 16 | ||
156 | #define SUBSPA_MILLI_MUL .section .text.mul,"ax",@progbits! .align 16 | ||
157 | #define ATTR_MILLI | ||
158 | #define SUBSPA_DATA .section .data | ||
159 | #define ATTR_DATA | ||
160 | #define GLOBAL $global$ | ||
161 | #define GSYM(sym) !sym: | ||
162 | #define LSYM(sym) !CAT(.L,sym:) | ||
163 | #define LREF(sym) CAT(.L,sym) | ||
164 | |||
165 | #endif /*_PA_MILLI_H_*/ | ||
diff --git a/arch/parisc/lib/milli/mulI.S b/arch/parisc/lib/milli/mulI.S new file mode 100644 index 000000000000..4c7e0c36d15e --- /dev/null +++ b/arch/parisc/lib/milli/mulI.S | |||
@@ -0,0 +1,474 @@ | |||
1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
3 | and Alan Modra <alan@linuxcare.com.au>. | ||
4 | |||
5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
6 | |||
7 | This file is part of GCC and is released under the terms of | ||
8 | of the GNU General Public License as published by the Free Software | ||
9 | Foundation; either version 2, or (at your option) any later version. | ||
10 | See the file COPYING in the top-level GCC source directory for a copy | ||
11 | of the license. */ | ||
12 | |||
13 | #include "milli.h" | ||
14 | |||
15 | #ifdef L_mulI | ||
16 | /* VERSION "@(#)$$mulI $ Revision: 12.4 $ $ Date: 94/03/17 17:18:51 $" */ | ||
17 | /****************************************************************************** | ||
18 | This routine is used on PA2.0 processors when gcc -mno-fpregs is used | ||
19 | |||
20 | ROUTINE: $$mulI | ||
21 | |||
22 | |||
23 | DESCRIPTION: | ||
24 | |||
25 | $$mulI multiplies two single word integers, giving a single | ||
26 | word result. | ||
27 | |||
28 | |||
29 | INPUT REGISTERS: | ||
30 | |||
31 | arg0 = Operand 1 | ||
32 | arg1 = Operand 2 | ||
33 | r31 == return pc | ||
34 | sr0 == return space when called externally | ||
35 | |||
36 | |||
37 | OUTPUT REGISTERS: | ||
38 | |||
39 | arg0 = undefined | ||
40 | arg1 = undefined | ||
41 | ret1 = result | ||
42 | |||
43 | OTHER REGISTERS AFFECTED: | ||
44 | |||
45 | r1 = undefined | ||
46 | |||
47 | SIDE EFFECTS: | ||
48 | |||
49 | Causes a trap under the following conditions: NONE | ||
50 | Changes memory at the following places: NONE | ||
51 | |||
52 | PERMISSIBLE CONTEXT: | ||
53 | |||
54 | Unwindable | ||
55 | Does not create a stack frame | ||
56 | Is usable for internal or external microcode | ||
57 | |||
58 | DISCUSSION: | ||
59 | |||
60 | Calls other millicode routines via mrp: NONE | ||
61 | Calls other millicode routines: NONE | ||
62 | |||
63 | ***************************************************************************/ | ||
64 | |||
65 | |||
66 | #define a0 %arg0 | ||
67 | #define a1 %arg1 | ||
68 | #define t0 %r1 | ||
69 | #define r %ret1 | ||
70 | |||
71 | #define a0__128a0 zdep a0,24,25,a0 | ||
72 | #define a0__256a0 zdep a0,23,24,a0 | ||
73 | #define a1_ne_0_b_l0 comb,<> a1,0,LREF(l0) | ||
74 | #define a1_ne_0_b_l1 comb,<> a1,0,LREF(l1) | ||
75 | #define a1_ne_0_b_l2 comb,<> a1,0,LREF(l2) | ||
76 | #define b_n_ret_t0 b,n LREF(ret_t0) | ||
77 | #define b_e_shift b LREF(e_shift) | ||
78 | #define b_e_t0ma0 b LREF(e_t0ma0) | ||
79 | #define b_e_t0 b LREF(e_t0) | ||
80 | #define b_e_t0a0 b LREF(e_t0a0) | ||
81 | #define b_e_t02a0 b LREF(e_t02a0) | ||
82 | #define b_e_t04a0 b LREF(e_t04a0) | ||
83 | #define b_e_2t0 b LREF(e_2t0) | ||
84 | #define b_e_2t0a0 b LREF(e_2t0a0) | ||
85 | #define b_e_2t04a0 b LREF(e2t04a0) | ||
86 | #define b_e_3t0 b LREF(e_3t0) | ||
87 | #define b_e_4t0 b LREF(e_4t0) | ||
88 | #define b_e_4t0a0 b LREF(e_4t0a0) | ||
89 | #define b_e_4t08a0 b LREF(e4t08a0) | ||
90 | #define b_e_5t0 b LREF(e_5t0) | ||
91 | #define b_e_8t0 b LREF(e_8t0) | ||
92 | #define b_e_8t0a0 b LREF(e_8t0a0) | ||
93 | #define r__r_a0 add r,a0,r | ||
94 | #define r__r_2a0 sh1add a0,r,r | ||
95 | #define r__r_4a0 sh2add a0,r,r | ||
96 | #define r__r_8a0 sh3add a0,r,r | ||
97 | #define r__r_t0 add r,t0,r | ||
98 | #define r__r_2t0 sh1add t0,r,r | ||
99 | #define r__r_4t0 sh2add t0,r,r | ||
100 | #define r__r_8t0 sh3add t0,r,r | ||
101 | #define t0__3a0 sh1add a0,a0,t0 | ||
102 | #define t0__4a0 sh2add a0,0,t0 | ||
103 | #define t0__5a0 sh2add a0,a0,t0 | ||
104 | #define t0__8a0 sh3add a0,0,t0 | ||
105 | #define t0__9a0 sh3add a0,a0,t0 | ||
106 | #define t0__16a0 zdep a0,27,28,t0 | ||
107 | #define t0__32a0 zdep a0,26,27,t0 | ||
108 | #define t0__64a0 zdep a0,25,26,t0 | ||
109 | #define t0__128a0 zdep a0,24,25,t0 | ||
110 | #define t0__t0ma0 sub t0,a0,t0 | ||
111 | #define t0__t0_a0 add t0,a0,t0 | ||
112 | #define t0__t0_2a0 sh1add a0,t0,t0 | ||
113 | #define t0__t0_4a0 sh2add a0,t0,t0 | ||
114 | #define t0__t0_8a0 sh3add a0,t0,t0 | ||
115 | #define t0__2t0_a0 sh1add t0,a0,t0 | ||
116 | #define t0__3t0 sh1add t0,t0,t0 | ||
117 | #define t0__4t0 sh2add t0,0,t0 | ||
118 | #define t0__4t0_a0 sh2add t0,a0,t0 | ||
119 | #define t0__5t0 sh2add t0,t0,t0 | ||
120 | #define t0__8t0 sh3add t0,0,t0 | ||
121 | #define t0__8t0_a0 sh3add t0,a0,t0 | ||
122 | #define t0__9t0 sh3add t0,t0,t0 | ||
123 | #define t0__16t0 zdep t0,27,28,t0 | ||
124 | #define t0__32t0 zdep t0,26,27,t0 | ||
125 | #define t0__256a0 zdep a0,23,24,t0 | ||
126 | |||
127 | |||
128 | SUBSPA_MILLI | ||
129 | ATTR_MILLI | ||
130 | .align 16 | ||
131 | .proc | ||
132 | .callinfo millicode | ||
133 | .export $$mulI,millicode | ||
134 | GSYM($$mulI) | ||
135 | combt,<<= a1,a0,LREF(l4) /* swap args if unsigned a1>a0 */ | ||
136 | copy 0,r /* zero out the result */ | ||
137 | xor a0,a1,a0 /* swap a0 & a1 using the */ | ||
138 | xor a0,a1,a1 /* old xor trick */ | ||
139 | xor a0,a1,a0 | ||
140 | LSYM(l4) | ||
141 | combt,<= 0,a0,LREF(l3) /* if a0>=0 then proceed like unsigned */ | ||
142 | zdep a1,30,8,t0 /* t0 = (a1&0xff)<<1 ********* */ | ||
143 | sub,> 0,a1,t0 /* otherwise negate both and */ | ||
144 | combt,<=,n a0,t0,LREF(l2) /* swap back if |a0|<|a1| */ | ||
145 | sub 0,a0,a1 | ||
146 | movb,tr,n t0,a0,LREF(l2) /* 10th inst. */ | ||
147 | |||
148 | LSYM(l0) r__r_t0 /* add in this partial product */ | ||
149 | LSYM(l1) a0__256a0 /* a0 <<= 8 ****************** */ | ||
150 | LSYM(l2) zdep a1,30,8,t0 /* t0 = (a1&0xff)<<1 ********* */ | ||
151 | LSYM(l3) blr t0,0 /* case on these 8 bits ****** */ | ||
152 | extru a1,23,24,a1 /* a1 >>= 8 ****************** */ | ||
153 | |||
154 | /*16 insts before this. */ | ||
155 | /* a0 <<= 8 ************************** */ | ||
156 | LSYM(x0) a1_ne_0_b_l2 ! a0__256a0 ! MILLIRETN ! nop | ||
157 | LSYM(x1) a1_ne_0_b_l1 ! r__r_a0 ! MILLIRETN ! nop | ||
158 | LSYM(x2) a1_ne_0_b_l1 ! r__r_2a0 ! MILLIRETN ! nop | ||
159 | LSYM(x3) a1_ne_0_b_l0 ! t0__3a0 ! MILLIRET ! r__r_t0 | ||
160 | LSYM(x4) a1_ne_0_b_l1 ! r__r_4a0 ! MILLIRETN ! nop | ||
161 | LSYM(x5) a1_ne_0_b_l0 ! t0__5a0 ! MILLIRET ! r__r_t0 | ||
162 | LSYM(x6) t0__3a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN | ||
163 | LSYM(x7) t0__3a0 ! a1_ne_0_b_l0 ! r__r_4a0 ! b_n_ret_t0 | ||
164 | LSYM(x8) a1_ne_0_b_l1 ! r__r_8a0 ! MILLIRETN ! nop | ||
165 | LSYM(x9) a1_ne_0_b_l0 ! t0__9a0 ! MILLIRET ! r__r_t0 | ||
166 | LSYM(x10) t0__5a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN | ||
167 | LSYM(x11) t0__3a0 ! a1_ne_0_b_l0 ! r__r_8a0 ! b_n_ret_t0 | ||
168 | LSYM(x12) t0__3a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN | ||
169 | LSYM(x13) t0__5a0 ! a1_ne_0_b_l0 ! r__r_8a0 ! b_n_ret_t0 | ||
170 | LSYM(x14) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0 | ||
171 | LSYM(x15) t0__5a0 ! a1_ne_0_b_l0 ! t0__3t0 ! b_n_ret_t0 | ||
172 | LSYM(x16) t0__16a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
173 | LSYM(x17) t0__9a0 ! a1_ne_0_b_l0 ! t0__t0_8a0 ! b_n_ret_t0 | ||
174 | LSYM(x18) t0__9a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN | ||
175 | LSYM(x19) t0__9a0 ! a1_ne_0_b_l0 ! t0__2t0_a0 ! b_n_ret_t0 | ||
176 | LSYM(x20) t0__5a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN | ||
177 | LSYM(x21) t0__5a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0 | ||
178 | LSYM(x22) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0 | ||
179 | LSYM(x23) t0__5a0 ! t0__2t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
180 | LSYM(x24) t0__3a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN | ||
181 | LSYM(x25) t0__5a0 ! a1_ne_0_b_l0 ! t0__5t0 ! b_n_ret_t0 | ||
182 | LSYM(x26) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0 | ||
183 | LSYM(x27) t0__3a0 ! a1_ne_0_b_l0 ! t0__9t0 ! b_n_ret_t0 | ||
184 | LSYM(x28) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
185 | LSYM(x29) t0__3a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
186 | LSYM(x30) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_2t0 | ||
187 | LSYM(x31) t0__32a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
188 | LSYM(x32) t0__32a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
189 | LSYM(x33) t0__8a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0 | ||
190 | LSYM(x34) t0__16a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0 | ||
191 | LSYM(x35) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__t0_8a0 | ||
192 | LSYM(x36) t0__9a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN | ||
193 | LSYM(x37) t0__9a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0 | ||
194 | LSYM(x38) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0 | ||
195 | LSYM(x39) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
196 | LSYM(x40) t0__5a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN | ||
197 | LSYM(x41) t0__5a0 ! a1_ne_0_b_l0 ! t0__8t0_a0 ! b_n_ret_t0 | ||
198 | LSYM(x42) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0 | ||
199 | LSYM(x43) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
200 | LSYM(x44) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
201 | LSYM(x45) t0__9a0 ! a1_ne_0_b_l0 ! t0__5t0 ! b_n_ret_t0 | ||
202 | LSYM(x46) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_a0 | ||
203 | LSYM(x47) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_2a0 | ||
204 | LSYM(x48) t0__3a0 ! a1_ne_0_b_l0 ! t0__16t0 ! b_n_ret_t0 | ||
205 | LSYM(x49) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_4a0 | ||
206 | LSYM(x50) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_2t0 | ||
207 | LSYM(x51) t0__9a0 ! t0__t0_8a0 ! b_e_t0 ! t0__3t0 | ||
208 | LSYM(x52) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
209 | LSYM(x53) t0__3a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
210 | LSYM(x54) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_2t0 | ||
211 | LSYM(x55) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__2t0_a0 | ||
212 | LSYM(x56) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
213 | LSYM(x57) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__3t0 | ||
214 | LSYM(x58) t0__3a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
215 | LSYM(x59) t0__9a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__3t0 | ||
216 | LSYM(x60) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_4t0 | ||
217 | LSYM(x61) t0__5a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0 | ||
218 | LSYM(x62) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0 | ||
219 | LSYM(x63) t0__64a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
220 | LSYM(x64) t0__64a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
221 | LSYM(x65) t0__8a0 ! a1_ne_0_b_l0 ! t0__8t0_a0 ! b_n_ret_t0 | ||
222 | LSYM(x66) t0__32a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0 | ||
223 | LSYM(x67) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
224 | LSYM(x68) t0__8a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
225 | LSYM(x69) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
226 | LSYM(x70) t0__64a0 ! t0__t0_4a0 ! b_e_t0 ! t0__t0_2a0 | ||
227 | LSYM(x71) t0__9a0 ! t0__8t0 ! b_e_t0 ! t0__t0ma0 | ||
228 | LSYM(x72) t0__9a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN | ||
229 | LSYM(x73) t0__9a0 ! t0__8t0_a0 ! b_e_shift ! r__r_t0 | ||
230 | LSYM(x74) t0__9a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0 | ||
231 | LSYM(x75) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
232 | LSYM(x76) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0 | ||
233 | LSYM(x77) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
234 | LSYM(x78) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
235 | LSYM(x79) t0__16a0 ! t0__5t0 ! b_e_t0 ! t0__t0ma0 | ||
236 | LSYM(x80) t0__16a0 ! t0__5t0 ! b_e_shift ! r__r_t0 | ||
237 | LSYM(x81) t0__9a0 ! t0__9t0 ! b_e_shift ! r__r_t0 | ||
238 | LSYM(x82) t0__5a0 ! t0__8t0_a0 ! b_e_shift ! r__r_2t0 | ||
239 | LSYM(x83) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
240 | LSYM(x84) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
241 | LSYM(x85) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__5t0 | ||
242 | LSYM(x86) t0__5a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
243 | LSYM(x87) t0__9a0 ! t0__9t0 ! b_e_t02a0 ! t0__t0_4a0 | ||
244 | LSYM(x88) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
245 | LSYM(x89) t0__5a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
246 | LSYM(x90) t0__9a0 ! t0__5t0 ! b_e_shift ! r__r_2t0 | ||
247 | LSYM(x91) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__2t0_a0 | ||
248 | LSYM(x92) t0__5a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__2t0_a0 | ||
249 | LSYM(x93) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__3t0 | ||
250 | LSYM(x94) t0__9a0 ! t0__5t0 ! b_e_2t0 ! t0__t0_2a0 | ||
251 | LSYM(x95) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__5t0 | ||
252 | LSYM(x96) t0__8a0 ! t0__3t0 ! b_e_shift ! r__r_4t0 | ||
253 | LSYM(x97) t0__8a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0 | ||
254 | LSYM(x98) t0__32a0 ! t0__3t0 ! b_e_t0 ! t0__t0_2a0 | ||
255 | LSYM(x99) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__3t0 | ||
256 | LSYM(x100) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_4t0 | ||
257 | LSYM(x101) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0 | ||
258 | LSYM(x102) t0__32a0 ! t0__t0_2a0 ! b_e_t0 ! t0__3t0 | ||
259 | LSYM(x103) t0__5a0 ! t0__5t0 ! b_e_t02a0 ! t0__4t0_a0 | ||
260 | LSYM(x104) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_8t0 | ||
261 | LSYM(x105) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0 | ||
262 | LSYM(x106) t0__3a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
263 | LSYM(x107) t0__9a0 ! t0__t0_4a0 ! b_e_t02a0 ! t0__8t0_a0 | ||
264 | LSYM(x108) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_4t0 | ||
265 | LSYM(x109) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0 | ||
266 | LSYM(x110) t0__9a0 ! t0__3t0 ! b_e_2t0 ! t0__2t0_a0 | ||
267 | LSYM(x111) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__3t0 | ||
268 | LSYM(x112) t0__3a0 ! t0__2t0_a0 ! b_e_t0 ! t0__16t0 | ||
269 | LSYM(x113) t0__9a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__3t0 | ||
270 | LSYM(x114) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__3t0 | ||
271 | LSYM(x115) t0__9a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
272 | LSYM(x116) t0__3a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__4t0_a0 | ||
273 | LSYM(x117) t0__3a0 ! t0__4t0_a0 ! b_e_t0 ! t0__9t0 | ||
274 | LSYM(x118) t0__3a0 ! t0__4t0_a0 ! b_e_t0a0 ! t0__9t0 | ||
275 | LSYM(x119) t0__3a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__9t0 | ||
276 | LSYM(x120) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_8t0 | ||
277 | LSYM(x121) t0__5a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0 | ||
278 | LSYM(x122) t0__5a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0 | ||
279 | LSYM(x123) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0 | ||
280 | LSYM(x124) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_4t0 | ||
281 | LSYM(x125) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__5t0 | ||
282 | LSYM(x126) t0__64a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0 | ||
283 | LSYM(x127) t0__128a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
284 | LSYM(x128) t0__128a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN | ||
285 | LSYM(x129) t0__128a0 ! a1_ne_0_b_l0 ! t0__t0_a0 ! b_n_ret_t0 | ||
286 | LSYM(x130) t0__64a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0 | ||
287 | LSYM(x131) t0__8a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
288 | LSYM(x132) t0__8a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
289 | LSYM(x133) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
290 | LSYM(x134) t0__8a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
291 | LSYM(x135) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__3t0 | ||
292 | LSYM(x136) t0__8a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
293 | LSYM(x137) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
294 | LSYM(x138) t0__8a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
295 | LSYM(x139) t0__8a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__4t0_a0 | ||
296 | LSYM(x140) t0__3a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__5t0 | ||
297 | LSYM(x141) t0__8a0 ! t0__2t0_a0 ! b_e_4t0a0 ! t0__2t0_a0 | ||
298 | LSYM(x142) t0__9a0 ! t0__8t0 ! b_e_2t0 ! t0__t0ma0 | ||
299 | LSYM(x143) t0__16a0 ! t0__9t0 ! b_e_t0 ! t0__t0ma0 | ||
300 | LSYM(x144) t0__9a0 ! t0__8t0 ! b_e_shift ! r__r_2t0 | ||
301 | LSYM(x145) t0__9a0 ! t0__8t0 ! b_e_t0 ! t0__2t0_a0 | ||
302 | LSYM(x146) t0__9a0 ! t0__8t0_a0 ! b_e_shift ! r__r_2t0 | ||
303 | LSYM(x147) t0__9a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0 | ||
304 | LSYM(x148) t0__9a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0 | ||
305 | LSYM(x149) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0 | ||
306 | LSYM(x150) t0__9a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
307 | LSYM(x151) t0__9a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__2t0_a0 | ||
308 | LSYM(x152) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0 | ||
309 | LSYM(x153) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
310 | LSYM(x154) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0 | ||
311 | LSYM(x155) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__5t0 | ||
312 | LSYM(x156) t0__9a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__2t0_a0 | ||
313 | LSYM(x157) t0__32a0 ! t0__t0ma0 ! b_e_t02a0 ! t0__5t0 | ||
314 | LSYM(x158) t0__16a0 ! t0__5t0 ! b_e_2t0 ! t0__t0ma0 | ||
315 | LSYM(x159) t0__32a0 ! t0__5t0 ! b_e_t0 ! t0__t0ma0 | ||
316 | LSYM(x160) t0__5a0 ! t0__4t0 ! b_e_shift ! r__r_8t0 | ||
317 | LSYM(x161) t0__8a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0 | ||
318 | LSYM(x162) t0__9a0 ! t0__9t0 ! b_e_shift ! r__r_2t0 | ||
319 | LSYM(x163) t0__9a0 ! t0__9t0 ! b_e_t0 ! t0__2t0_a0 | ||
320 | LSYM(x164) t0__5a0 ! t0__8t0_a0 ! b_e_shift ! r__r_4t0 | ||
321 | LSYM(x165) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0 | ||
322 | LSYM(x166) t0__5a0 ! t0__8t0_a0 ! b_e_2t0 ! t0__2t0_a0 | ||
323 | LSYM(x167) t0__5a0 ! t0__8t0_a0 ! b_e_2t0a0 ! t0__2t0_a0 | ||
324 | LSYM(x168) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_8t0 | ||
325 | LSYM(x169) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__8t0_a0 | ||
326 | LSYM(x170) t0__32a0 ! t0__t0_2a0 ! b_e_t0 ! t0__5t0 | ||
327 | LSYM(x171) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__9t0 | ||
328 | LSYM(x172) t0__5a0 ! t0__4t0_a0 ! b_e_4t0 ! t0__2t0_a0 | ||
329 | LSYM(x173) t0__9a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__9t0 | ||
330 | LSYM(x174) t0__32a0 ! t0__t0_2a0 ! b_e_t04a0 ! t0__5t0 | ||
331 | LSYM(x175) t0__8a0 ! t0__2t0_a0 ! b_e_5t0 ! t0__2t0_a0 | ||
332 | LSYM(x176) t0__5a0 ! t0__4t0_a0 ! b_e_8t0 ! t0__t0_a0 | ||
333 | LSYM(x177) t0__5a0 ! t0__4t0_a0 ! b_e_8t0a0 ! t0__t0_a0 | ||
334 | LSYM(x178) t0__5a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__8t0_a0 | ||
335 | LSYM(x179) t0__5a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__8t0_a0 | ||
336 | LSYM(x180) t0__9a0 ! t0__5t0 ! b_e_shift ! r__r_4t0 | ||
337 | LSYM(x181) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0 | ||
338 | LSYM(x182) t0__9a0 ! t0__5t0 ! b_e_2t0 ! t0__2t0_a0 | ||
339 | LSYM(x183) t0__9a0 ! t0__5t0 ! b_e_2t0a0 ! t0__2t0_a0 | ||
340 | LSYM(x184) t0__5a0 ! t0__9t0 ! b_e_4t0 ! t0__t0_a0 | ||
341 | LSYM(x185) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0 | ||
342 | LSYM(x186) t0__32a0 ! t0__t0ma0 ! b_e_2t0 ! t0__3t0 | ||
343 | LSYM(x187) t0__9a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__5t0 | ||
344 | LSYM(x188) t0__9a0 ! t0__5t0 ! b_e_4t0 ! t0__t0_2a0 | ||
345 | LSYM(x189) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__9t0 | ||
346 | LSYM(x190) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__5t0 | ||
347 | LSYM(x191) t0__64a0 ! t0__3t0 ! b_e_t0 ! t0__t0ma0 | ||
348 | LSYM(x192) t0__8a0 ! t0__3t0 ! b_e_shift ! r__r_8t0 | ||
349 | LSYM(x193) t0__8a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0 | ||
350 | LSYM(x194) t0__8a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0 | ||
351 | LSYM(x195) t0__8a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0 | ||
352 | LSYM(x196) t0__8a0 ! t0__3t0 ! b_e_4t0 ! t0__2t0_a0 | ||
353 | LSYM(x197) t0__8a0 ! t0__3t0 ! b_e_4t0a0 ! t0__2t0_a0 | ||
354 | LSYM(x198) t0__64a0 ! t0__t0_2a0 ! b_e_t0 ! t0__3t0 | ||
355 | LSYM(x199) t0__8a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
356 | LSYM(x200) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_8t0 | ||
357 | LSYM(x201) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__8t0_a0 | ||
358 | LSYM(x202) t0__5a0 ! t0__5t0 ! b_e_2t0 ! t0__4t0_a0 | ||
359 | LSYM(x203) t0__5a0 ! t0__5t0 ! b_e_2t0a0 ! t0__4t0_a0 | ||
360 | LSYM(x204) t0__8a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__3t0 | ||
361 | LSYM(x205) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__5t0 | ||
362 | LSYM(x206) t0__64a0 ! t0__t0_4a0 ! b_e_t02a0 ! t0__3t0 | ||
363 | LSYM(x207) t0__8a0 ! t0__2t0_a0 ! b_e_3t0 ! t0__4t0_a0 | ||
364 | LSYM(x208) t0__5a0 ! t0__5t0 ! b_e_8t0 ! t0__t0_a0 | ||
365 | LSYM(x209) t0__5a0 ! t0__5t0 ! b_e_8t0a0 ! t0__t0_a0 | ||
366 | LSYM(x210) t0__5a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__5t0 | ||
367 | LSYM(x211) t0__5a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__5t0 | ||
368 | LSYM(x212) t0__3a0 ! t0__4t0_a0 ! b_e_4t0 ! t0__4t0_a0 | ||
369 | LSYM(x213) t0__3a0 ! t0__4t0_a0 ! b_e_4t0a0 ! t0__4t0_a0 | ||
370 | LSYM(x214) t0__9a0 ! t0__t0_4a0 ! b_e_2t04a0 ! t0__8t0_a0 | ||
371 | LSYM(x215) t0__5a0 ! t0__4t0_a0 ! b_e_5t0 ! t0__2t0_a0 | ||
372 | LSYM(x216) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_8t0 | ||
373 | LSYM(x217) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0 | ||
374 | LSYM(x218) t0__9a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0 | ||
375 | LSYM(x219) t0__9a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0 | ||
376 | LSYM(x220) t0__3a0 ! t0__9t0 ! b_e_4t0 ! t0__2t0_a0 | ||
377 | LSYM(x221) t0__3a0 ! t0__9t0 ! b_e_4t0a0 ! t0__2t0_a0 | ||
378 | LSYM(x222) t0__9a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__3t0 | ||
379 | LSYM(x223) t0__9a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
380 | LSYM(x224) t0__9a0 ! t0__3t0 ! b_e_8t0 ! t0__t0_a0 | ||
381 | LSYM(x225) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__5t0 | ||
382 | LSYM(x226) t0__3a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__32t0 | ||
383 | LSYM(x227) t0__9a0 ! t0__5t0 ! b_e_t02a0 ! t0__5t0 | ||
384 | LSYM(x228) t0__9a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__3t0 | ||
385 | LSYM(x229) t0__9a0 ! t0__2t0_a0 ! b_e_4t0a0 ! t0__3t0 | ||
386 | LSYM(x230) t0__9a0 ! t0__5t0 ! b_e_5t0 ! t0__t0_a0 | ||
387 | LSYM(x231) t0__9a0 ! t0__2t0_a0 ! b_e_3t0 ! t0__4t0_a0 | ||
388 | LSYM(x232) t0__3a0 ! t0__2t0_a0 ! b_e_8t0 ! t0__4t0_a0 | ||
389 | LSYM(x233) t0__3a0 ! t0__2t0_a0 ! b_e_8t0a0 ! t0__4t0_a0 | ||
390 | LSYM(x234) t0__3a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__9t0 | ||
391 | LSYM(x235) t0__3a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__9t0 | ||
392 | LSYM(x236) t0__9a0 ! t0__2t0_a0 ! b_e_4t08a0 ! t0__3t0 | ||
393 | LSYM(x237) t0__16a0 ! t0__5t0 ! b_e_3t0 ! t0__t0ma0 | ||
394 | LSYM(x238) t0__3a0 ! t0__4t0_a0 ! b_e_2t04a0 ! t0__9t0 | ||
395 | LSYM(x239) t0__16a0 ! t0__5t0 ! b_e_t0ma0 ! t0__3t0 | ||
396 | LSYM(x240) t0__9a0 ! t0__t0_a0 ! b_e_8t0 ! t0__3t0 | ||
397 | LSYM(x241) t0__9a0 ! t0__t0_a0 ! b_e_8t0a0 ! t0__3t0 | ||
398 | LSYM(x242) t0__5a0 ! t0__3t0 ! b_e_2t0 ! t0__8t0_a0 | ||
399 | LSYM(x243) t0__9a0 ! t0__9t0 ! b_e_t0 ! t0__3t0 | ||
400 | LSYM(x244) t0__5a0 ! t0__3t0 ! b_e_4t0 ! t0__4t0_a0 | ||
401 | LSYM(x245) t0__8a0 ! t0__3t0 ! b_e_5t0 ! t0__2t0_a0 | ||
402 | LSYM(x246) t0__5a0 ! t0__8t0_a0 ! b_e_2t0 ! t0__3t0 | ||
403 | LSYM(x247) t0__5a0 ! t0__8t0_a0 ! b_e_2t0a0 ! t0__3t0 | ||
404 | LSYM(x248) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_8t0 | ||
405 | LSYM(x249) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__8t0_a0 | ||
406 | LSYM(x250) t0__5a0 ! t0__5t0 ! b_e_2t0 ! t0__5t0 | ||
407 | LSYM(x251) t0__5a0 ! t0__5t0 ! b_e_2t0a0 ! t0__5t0 | ||
408 | LSYM(x252) t0__64a0 ! t0__t0ma0 ! b_e_shift ! r__r_4t0 | ||
409 | LSYM(x253) t0__64a0 ! t0__t0ma0 ! b_e_t0 ! t0__4t0_a0 | ||
410 | LSYM(x254) t0__128a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0 | ||
411 | LSYM(x255) t0__256a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0 | ||
412 | /*1040 insts before this. */ | ||
413 | LSYM(ret_t0) MILLIRET | ||
414 | LSYM(e_t0) r__r_t0 | ||
415 | LSYM(e_shift) a1_ne_0_b_l2 | ||
416 | a0__256a0 /* a0 <<= 8 *********** */ | ||
417 | MILLIRETN | ||
418 | LSYM(e_t0ma0) a1_ne_0_b_l0 | ||
419 | t0__t0ma0 | ||
420 | MILLIRET | ||
421 | r__r_t0 | ||
422 | LSYM(e_t0a0) a1_ne_0_b_l0 | ||
423 | t0__t0_a0 | ||
424 | MILLIRET | ||
425 | r__r_t0 | ||
426 | LSYM(e_t02a0) a1_ne_0_b_l0 | ||
427 | t0__t0_2a0 | ||
428 | MILLIRET | ||
429 | r__r_t0 | ||
430 | LSYM(e_t04a0) a1_ne_0_b_l0 | ||
431 | t0__t0_4a0 | ||
432 | MILLIRET | ||
433 | r__r_t0 | ||
434 | LSYM(e_2t0) a1_ne_0_b_l1 | ||
435 | r__r_2t0 | ||
436 | MILLIRETN | ||
437 | LSYM(e_2t0a0) a1_ne_0_b_l0 | ||
438 | t0__2t0_a0 | ||
439 | MILLIRET | ||
440 | r__r_t0 | ||
441 | LSYM(e2t04a0) t0__t0_2a0 | ||
442 | a1_ne_0_b_l1 | ||
443 | r__r_2t0 | ||
444 | MILLIRETN | ||
445 | LSYM(e_3t0) a1_ne_0_b_l0 | ||
446 | t0__3t0 | ||
447 | MILLIRET | ||
448 | r__r_t0 | ||
449 | LSYM(e_4t0) a1_ne_0_b_l1 | ||
450 | r__r_4t0 | ||
451 | MILLIRETN | ||
452 | LSYM(e_4t0a0) a1_ne_0_b_l0 | ||
453 | t0__4t0_a0 | ||
454 | MILLIRET | ||
455 | r__r_t0 | ||
456 | LSYM(e4t08a0) t0__t0_2a0 | ||
457 | a1_ne_0_b_l1 | ||
458 | r__r_4t0 | ||
459 | MILLIRETN | ||
460 | LSYM(e_5t0) a1_ne_0_b_l0 | ||
461 | t0__5t0 | ||
462 | MILLIRET | ||
463 | r__r_t0 | ||
464 | LSYM(e_8t0) a1_ne_0_b_l1 | ||
465 | r__r_8t0 | ||
466 | MILLIRETN | ||
467 | LSYM(e_8t0a0) a1_ne_0_b_l0 | ||
468 | t0__8t0_a0 | ||
469 | MILLIRET | ||
470 | r__r_t0 | ||
471 | |||
472 | .procend | ||
473 | .end | ||
474 | #endif | ||
diff --git a/arch/parisc/lib/milli/remI.S b/arch/parisc/lib/milli/remI.S new file mode 100644 index 000000000000..63bc094471e2 --- /dev/null +++ b/arch/parisc/lib/milli/remI.S | |||
@@ -0,0 +1,185 @@ | |||
1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
3 | and Alan Modra <alan@linuxcare.com.au>. | ||
4 | |||
5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
6 | |||
7 | This file is part of GCC and is released under the terms of | ||
8 | of the GNU General Public License as published by the Free Software | ||
9 | Foundation; either version 2, or (at your option) any later version. | ||
10 | See the file COPYING in the top-level GCC source directory for a copy | ||
11 | of the license. */ | ||
12 | |||
13 | #include "milli.h" | ||
14 | |||
15 | #ifdef L_remI | ||
16 | /* ROUTINE: $$remI | ||
17 | |||
18 | DESCRIPTION: | ||
19 | . $$remI returns the remainder of the division of two signed 32-bit | ||
20 | . integers. The sign of the remainder is the same as the sign of | ||
21 | . the dividend. | ||
22 | |||
23 | |||
24 | INPUT REGISTERS: | ||
25 | . arg0 == dividend | ||
26 | . arg1 == divisor | ||
27 | . mrp == return pc | ||
28 | . sr0 == return space when called externally | ||
29 | |||
30 | OUTPUT REGISTERS: | ||
31 | . arg0 = destroyed | ||
32 | . arg1 = destroyed | ||
33 | . ret1 = remainder | ||
34 | |||
35 | OTHER REGISTERS AFFECTED: | ||
36 | . r1 = undefined | ||
37 | |||
38 | SIDE EFFECTS: | ||
39 | . Causes a trap under the following conditions: DIVIDE BY ZERO | ||
40 | . Changes memory at the following places: NONE | ||
41 | |||
42 | PERMISSIBLE CONTEXT: | ||
43 | . Unwindable | ||
44 | . Does not create a stack frame | ||
45 | . Is usable for internal or external microcode | ||
46 | |||
47 | DISCUSSION: | ||
48 | . Calls other millicode routines via mrp: NONE | ||
49 | . Calls other millicode routines: NONE */ | ||
50 | |||
51 | RDEFINE(tmp,r1) | ||
52 | RDEFINE(retreg,ret1) | ||
53 | |||
54 | SUBSPA_MILLI | ||
55 | ATTR_MILLI | ||
56 | .proc | ||
57 | .callinfo millicode | ||
58 | .entry | ||
59 | GSYM($$remI) | ||
60 | GSYM($$remoI) | ||
61 | .export $$remI,MILLICODE | ||
62 | .export $$remoI,MILLICODE | ||
63 | ldo -1(arg1),tmp /* is there at most one bit set ? */ | ||
64 | and,<> arg1,tmp,r0 /* if not, don't use power of 2 */ | ||
65 | addi,> 0,arg1,r0 /* if denominator > 0, use power */ | ||
66 | /* of 2 */ | ||
67 | b,n LREF(neg_denom) | ||
68 | LSYM(pow2) | ||
69 | comb,>,n 0,arg0,LREF(neg_num) /* is numerator < 0 ? */ | ||
70 | and arg0,tmp,retreg /* get the result */ | ||
71 | MILLIRETN | ||
72 | LSYM(neg_num) | ||
73 | subi 0,arg0,arg0 /* negate numerator */ | ||
74 | and arg0,tmp,retreg /* get the result */ | ||
75 | subi 0,retreg,retreg /* negate result */ | ||
76 | MILLIRETN | ||
77 | LSYM(neg_denom) | ||
78 | addi,< 0,arg1,r0 /* if arg1 >= 0, it's not power */ | ||
79 | /* of 2 */ | ||
80 | b,n LREF(regular_seq) | ||
81 | sub r0,arg1,tmp /* make denominator positive */ | ||
82 | comb,=,n arg1,tmp,LREF(regular_seq) /* test against 0x80000000 and 0 */ | ||
83 | ldo -1(tmp),retreg /* is there at most one bit set ? */ | ||
84 | and,= tmp,retreg,r0 /* if not, go to regular_seq */ | ||
85 | b,n LREF(regular_seq) | ||
86 | comb,>,n 0,arg0,LREF(neg_num_2) /* if arg0 < 0, negate it */ | ||
87 | and arg0,retreg,retreg | ||
88 | MILLIRETN | ||
89 | LSYM(neg_num_2) | ||
90 | subi 0,arg0,tmp /* test against 0x80000000 */ | ||
91 | and tmp,retreg,retreg | ||
92 | subi 0,retreg,retreg | ||
93 | MILLIRETN | ||
94 | LSYM(regular_seq) | ||
95 | addit,= 0,arg1,0 /* trap if div by zero */ | ||
96 | add,>= 0,arg0,retreg /* move dividend, if retreg < 0, */ | ||
97 | sub 0,retreg,retreg /* make it positive */ | ||
98 | sub 0,arg1, tmp /* clear carry, */ | ||
99 | /* negate the divisor */ | ||
100 | ds 0, tmp,0 /* set V-bit to the comple- */ | ||
101 | /* ment of the divisor sign */ | ||
102 | or 0,0, tmp /* clear tmp */ | ||
103 | add retreg,retreg,retreg /* shift msb bit into carry */ | ||
104 | ds tmp,arg1, tmp /* 1st divide step, if no carry */ | ||
105 | /* out, msb of quotient = 0 */ | ||
106 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
107 | LSYM(t1) | ||
108 | ds tmp,arg1, tmp /* 2nd divide step */ | ||
109 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
110 | ds tmp,arg1, tmp /* 3rd divide step */ | ||
111 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
112 | ds tmp,arg1, tmp /* 4th divide step */ | ||
113 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
114 | ds tmp,arg1, tmp /* 5th divide step */ | ||
115 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
116 | ds tmp,arg1, tmp /* 6th divide step */ | ||
117 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
118 | ds tmp,arg1, tmp /* 7th divide step */ | ||
119 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
120 | ds tmp,arg1, tmp /* 8th divide step */ | ||
121 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
122 | ds tmp,arg1, tmp /* 9th divide step */ | ||
123 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
124 | ds tmp,arg1, tmp /* 10th divide step */ | ||
125 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
126 | ds tmp,arg1, tmp /* 11th divide step */ | ||
127 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
128 | ds tmp,arg1, tmp /* 12th divide step */ | ||
129 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
130 | ds tmp,arg1, tmp /* 13th divide step */ | ||
131 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
132 | ds tmp,arg1, tmp /* 14th divide step */ | ||
133 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
134 | ds tmp,arg1, tmp /* 15th divide step */ | ||
135 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
136 | ds tmp,arg1, tmp /* 16th divide step */ | ||
137 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
138 | ds tmp,arg1, tmp /* 17th divide step */ | ||
139 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
140 | ds tmp,arg1, tmp /* 18th divide step */ | ||
141 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
142 | ds tmp,arg1, tmp /* 19th divide step */ | ||
143 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
144 | ds tmp,arg1, tmp /* 20th divide step */ | ||
145 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
146 | ds tmp,arg1, tmp /* 21st divide step */ | ||
147 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
148 | ds tmp,arg1, tmp /* 22nd divide step */ | ||
149 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
150 | ds tmp,arg1, tmp /* 23rd divide step */ | ||
151 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
152 | ds tmp,arg1, tmp /* 24th divide step */ | ||
153 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
154 | ds tmp,arg1, tmp /* 25th divide step */ | ||
155 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
156 | ds tmp,arg1, tmp /* 26th divide step */ | ||
157 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
158 | ds tmp,arg1, tmp /* 27th divide step */ | ||
159 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
160 | ds tmp,arg1, tmp /* 28th divide step */ | ||
161 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
162 | ds tmp,arg1, tmp /* 29th divide step */ | ||
163 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
164 | ds tmp,arg1, tmp /* 30th divide step */ | ||
165 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
166 | ds tmp,arg1, tmp /* 31st divide step */ | ||
167 | addc retreg,retreg,retreg /* shift retreg with/into carry */ | ||
168 | ds tmp,arg1, tmp /* 32nd divide step, */ | ||
169 | addc retreg,retreg,retreg /* shift last bit into retreg */ | ||
170 | movb,>=,n tmp,retreg,LREF(finish) /* branch if pos. tmp */ | ||
171 | add,< arg1,0,0 /* if arg1 > 0, add arg1 */ | ||
172 | add,tr tmp,arg1,retreg /* for correcting remainder tmp */ | ||
173 | sub tmp,arg1,retreg /* else add absolute value arg1 */ | ||
174 | LSYM(finish) | ||
175 | add,>= arg0,0,0 /* set sign of remainder */ | ||
176 | sub 0,retreg,retreg /* to sign of dividend */ | ||
177 | MILLIRET | ||
178 | nop | ||
179 | .exit | ||
180 | .procend | ||
181 | #ifdef milliext | ||
182 | .origin 0x00000200 | ||
183 | #endif | ||
184 | .end | ||
185 | #endif | ||
diff --git a/arch/parisc/lib/milli/remU.S b/arch/parisc/lib/milli/remU.S new file mode 100644 index 000000000000..c0a2d6e247c3 --- /dev/null +++ b/arch/parisc/lib/milli/remU.S | |||
@@ -0,0 +1,148 @@ | |||
1 | /* 32 and 64-bit millicode, original author Hewlett-Packard | ||
2 | adapted for gcc by Paul Bame <bame@debian.org> | ||
3 | and Alan Modra <alan@linuxcare.com.au>. | ||
4 | |||
5 | Copyright 2001, 2002, 2003 Free Software Foundation, Inc. | ||
6 | |||
7 | This file is part of GCC and is released under the terms of | ||
8 | of the GNU General Public License as published by the Free Software | ||
9 | Foundation; either version 2, or (at your option) any later version. | ||
10 | See the file COPYING in the top-level GCC source directory for a copy | ||
11 | of the license. */ | ||
12 | |||
13 | #include "milli.h" | ||
14 | |||
15 | #ifdef L_remU | ||
16 | /* ROUTINE: $$remU | ||
17 | . Single precision divide for remainder with unsigned binary integers. | ||
18 | . | ||
19 | . The remainder must be dividend-(dividend/divisor)*divisor. | ||
20 | . Divide by zero is trapped. | ||
21 | |||
22 | INPUT REGISTERS: | ||
23 | . arg0 == dividend | ||
24 | . arg1 == divisor | ||
25 | . mrp == return pc | ||
26 | . sr0 == return space when called externally | ||
27 | |||
28 | OUTPUT REGISTERS: | ||
29 | . arg0 = undefined | ||
30 | . arg1 = undefined | ||
31 | . ret1 = remainder | ||
32 | |||
33 | OTHER REGISTERS AFFECTED: | ||
34 | . r1 = undefined | ||
35 | |||
36 | SIDE EFFECTS: | ||
37 | . Causes a trap under the following conditions: DIVIDE BY ZERO | ||
38 | . Changes memory at the following places: NONE | ||
39 | |||
40 | PERMISSIBLE CONTEXT: | ||
41 | . Unwindable. | ||
42 | . Does not create a stack frame. | ||
43 | . Suitable for internal or external millicode. | ||
44 | . Assumes the special millicode register conventions. | ||
45 | |||
46 | DISCUSSION: | ||
47 | . Calls other millicode routines using mrp: NONE | ||
48 | . Calls other millicode routines: NONE */ | ||
49 | |||
50 | |||
51 | RDEFINE(temp,r1) | ||
52 | RDEFINE(rmndr,ret1) /* r29 */ | ||
53 | SUBSPA_MILLI | ||
54 | ATTR_MILLI | ||
55 | .export $$remU,millicode | ||
56 | .proc | ||
57 | .callinfo millicode | ||
58 | .entry | ||
59 | GSYM($$remU) | ||
60 | ldo -1(arg1),temp /* is there at most one bit set ? */ | ||
61 | and,= arg1,temp,r0 /* if not, don't use power of 2 */ | ||
62 | b LREF(regular_seq) | ||
63 | addit,= 0,arg1,r0 /* trap on div by zero */ | ||
64 | and arg0,temp,rmndr /* get the result for power of 2 */ | ||
65 | MILLIRETN | ||
66 | LSYM(regular_seq) | ||
67 | comib,>=,n 0,arg1,LREF(special_case) | ||
68 | subi 0,arg1,rmndr /* clear carry, negate the divisor */ | ||
69 | ds r0,rmndr,r0 /* set V-bit to 1 */ | ||
70 | add arg0,arg0,temp /* shift msb bit into carry */ | ||
71 | ds r0,arg1,rmndr /* 1st divide step, if no carry */ | ||
72 | addc temp,temp,temp /* shift temp with/into carry */ | ||
73 | ds rmndr,arg1,rmndr /* 2nd divide step */ | ||
74 | addc temp,temp,temp /* shift temp with/into carry */ | ||
75 | ds rmndr,arg1,rmndr /* 3rd divide step */ | ||
76 | addc temp,temp,temp /* shift temp with/into carry */ | ||
77 | ds rmndr,arg1,rmndr /* 4th divide step */ | ||
78 | addc temp,temp,temp /* shift temp with/into carry */ | ||
79 | ds rmndr,arg1,rmndr /* 5th divide step */ | ||
80 | addc temp,temp,temp /* shift temp with/into carry */ | ||
81 | ds rmndr,arg1,rmndr /* 6th divide step */ | ||
82 | addc temp,temp,temp /* shift temp with/into carry */ | ||
83 | ds rmndr,arg1,rmndr /* 7th divide step */ | ||
84 | addc temp,temp,temp /* shift temp with/into carry */ | ||
85 | ds rmndr,arg1,rmndr /* 8th divide step */ | ||
86 | addc temp,temp,temp /* shift temp with/into carry */ | ||
87 | ds rmndr,arg1,rmndr /* 9th divide step */ | ||
88 | addc temp,temp,temp /* shift temp with/into carry */ | ||
89 | ds rmndr,arg1,rmndr /* 10th divide step */ | ||
90 | addc temp,temp,temp /* shift temp with/into carry */ | ||
91 | ds rmndr,arg1,rmndr /* 11th divide step */ | ||
92 | addc temp,temp,temp /* shift temp with/into carry */ | ||
93 | ds rmndr,arg1,rmndr /* 12th divide step */ | ||
94 | addc temp,temp,temp /* shift temp with/into carry */ | ||
95 | ds rmndr,arg1,rmndr /* 13th divide step */ | ||
96 | addc temp,temp,temp /* shift temp with/into carry */ | ||
97 | ds rmndr,arg1,rmndr /* 14th divide step */ | ||
98 | addc temp,temp,temp /* shift temp with/into carry */ | ||
99 | ds rmndr,arg1,rmndr /* 15th divide step */ | ||
100 | addc temp,temp,temp /* shift temp with/into carry */ | ||
101 | ds rmndr,arg1,rmndr /* 16th divide step */ | ||
102 | addc temp,temp,temp /* shift temp with/into carry */ | ||
103 | ds rmndr,arg1,rmndr /* 17th divide step */ | ||
104 | addc temp,temp,temp /* shift temp with/into carry */ | ||
105 | ds rmndr,arg1,rmndr /* 18th divide step */ | ||
106 | addc temp,temp,temp /* shift temp with/into carry */ | ||
107 | ds rmndr,arg1,rmndr /* 19th divide step */ | ||
108 | addc temp,temp,temp /* shift temp with/into carry */ | ||
109 | ds rmndr,arg1,rmndr /* 20th divide step */ | ||
110 | addc temp,temp,temp /* shift temp with/into carry */ | ||
111 | ds rmndr,arg1,rmndr /* 21st divide step */ | ||
112 | addc temp,temp,temp /* shift temp with/into carry */ | ||
113 | ds rmndr,arg1,rmndr /* 22nd divide step */ | ||
114 | addc temp,temp,temp /* shift temp with/into carry */ | ||
115 | ds rmndr,arg1,rmndr /* 23rd divide step */ | ||
116 | addc temp,temp,temp /* shift temp with/into carry */ | ||
117 | ds rmndr,arg1,rmndr /* 24th divide step */ | ||
118 | addc temp,temp,temp /* shift temp with/into carry */ | ||
119 | ds rmndr,arg1,rmndr /* 25th divide step */ | ||
120 | addc temp,temp,temp /* shift temp with/into carry */ | ||
121 | ds rmndr,arg1,rmndr /* 26th divide step */ | ||
122 | addc temp,temp,temp /* shift temp with/into carry */ | ||
123 | ds rmndr,arg1,rmndr /* 27th divide step */ | ||
124 | addc temp,temp,temp /* shift temp with/into carry */ | ||
125 | ds rmndr,arg1,rmndr /* 28th divide step */ | ||
126 | addc temp,temp,temp /* shift temp with/into carry */ | ||
127 | ds rmndr,arg1,rmndr /* 29th divide step */ | ||
128 | addc temp,temp,temp /* shift temp with/into carry */ | ||
129 | ds rmndr,arg1,rmndr /* 30th divide step */ | ||
130 | addc temp,temp,temp /* shift temp with/into carry */ | ||
131 | ds rmndr,arg1,rmndr /* 31st divide step */ | ||
132 | addc temp,temp,temp /* shift temp with/into carry */ | ||
133 | ds rmndr,arg1,rmndr /* 32nd divide step, */ | ||
134 | comiclr,<= 0,rmndr,r0 | ||
135 | add rmndr,arg1,rmndr /* correction */ | ||
136 | MILLIRETN | ||
137 | nop | ||
138 | |||
139 | /* Putting >= on the last DS and deleting COMICLR does not work! */ | ||
140 | LSYM(special_case) | ||
141 | sub,>>= arg0,arg1,rmndr | ||
142 | copy arg0,rmndr | ||
143 | MILLIRETN | ||
144 | nop | ||
145 | .exit | ||
146 | .procend | ||
147 | .end | ||
148 | #endif | ||
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c index e724b362c49a..aa875fa43488 100644 --- a/arch/parisc/mm/init.c +++ b/arch/parisc/mm/init.c | |||
@@ -607,7 +607,7 @@ void show_mem(void) | |||
607 | 607 | ||
608 | printk("Zone list for zone %d on node %d: ", j, i); | 608 | printk("Zone list for zone %d on node %d: ", j, i); |
609 | for (k = 0; zl->zones[k] != NULL; k++) | 609 | for (k = 0; zl->zones[k] != NULL; k++) |
610 | printk("[%ld/%s] ", zone_to_nid(zl->zones[k]), zl->zones[k]->name); | 610 | printk("[%d/%s] ", zone_to_nid(zl->zones[k]), zl->zones[k]->name); |
611 | printk("\n"); | 611 | printk("\n"); |
612 | } | 612 | } |
613 | } | 613 | } |
diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug index c939fe86a9e0..6a79fe43e229 100644 --- a/arch/powerpc/Kconfig.debug +++ b/arch/powerpc/Kconfig.debug | |||
@@ -216,7 +216,6 @@ config PPC_EARLY_DEBUG_BEAT | |||
216 | config PPC_EARLY_DEBUG_44x | 216 | config PPC_EARLY_DEBUG_44x |
217 | bool "Early serial debugging for IBM/AMCC 44x CPUs" | 217 | bool "Early serial debugging for IBM/AMCC 44x CPUs" |
218 | depends on 44x | 218 | depends on 44x |
219 | select PPC_UDBG_16550 | ||
220 | help | 219 | help |
221 | Select this to enable early debugging for IBM 44x chips via the | 220 | Select this to enable early debugging for IBM 44x chips via the |
222 | inbuilt serial port. | 221 | inbuilt serial port. |
diff --git a/arch/powerpc/boot/dts/bamboo.dts b/arch/powerpc/boot/dts/bamboo.dts index a88ae3d218a5..cb2fb50a281c 100644 --- a/arch/powerpc/boot/dts/bamboo.dts +++ b/arch/powerpc/boot/dts/bamboo.dts | |||
@@ -98,11 +98,13 @@ | |||
98 | interrupt-parent = <&MAL0>; | 98 | interrupt-parent = <&MAL0>; |
99 | interrupts = <0 1 2 3 4>; | 99 | interrupts = <0 1 2 3 4>; |
100 | #interrupt-cells = <1>; | 100 | #interrupt-cells = <1>; |
101 | #address-cells = <0>; | ||
102 | #size-cells = <0>; | ||
101 | interrupt-map = </*TXEOB*/ 0 &UIC0 a 4 | 103 | interrupt-map = </*TXEOB*/ 0 &UIC0 a 4 |
102 | /*RXEOB*/ 1 &UIC0 b 4 | 104 | /*RXEOB*/ 1 &UIC0 b 4 |
103 | /*SERR*/ 2 &UIC1 0 4 | 105 | /*SERR*/ 2 &UIC1 0 4 |
104 | /*TXDE*/ 3 &UIC1 1 4 | 106 | /*TXDE*/ 3 &UIC1 1 4 |
105 | /*RXDE*/ 4 &UIC1 3 4>; | 107 | /*RXDE*/ 4 &UIC1 2 4>; |
106 | }; | 108 | }; |
107 | 109 | ||
108 | POB0: opb { | 110 | POB0: opb { |
@@ -196,6 +198,7 @@ | |||
196 | }; | 198 | }; |
197 | 199 | ||
198 | EMAC0: ethernet@ef600e00 { | 200 | EMAC0: ethernet@ef600e00 { |
201 | linux,network-index = <0>; | ||
199 | device_type = "network"; | 202 | device_type = "network"; |
200 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | 203 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; |
201 | interrupt-parent = <&UIC1>; | 204 | interrupt-parent = <&UIC1>; |
@@ -210,12 +213,13 @@ | |||
210 | rx-fifo-size = <1000>; | 213 | rx-fifo-size = <1000>; |
211 | tx-fifo-size = <800>; | 214 | tx-fifo-size = <800>; |
212 | phy-mode = "rmii"; | 215 | phy-mode = "rmii"; |
213 | phy-map = <00000001>; | 216 | phy-map = <00000000>; |
214 | zmii-device = <&ZMII0>; | 217 | zmii-device = <&ZMII0>; |
215 | zmii-channel = <0>; | 218 | zmii-channel = <0>; |
216 | }; | 219 | }; |
217 | 220 | ||
218 | EMAC1: ethernet@ef600f00 { | 221 | EMAC1: ethernet@ef600f00 { |
222 | linux,network-index = <1>; | ||
219 | device_type = "network"; | 223 | device_type = "network"; |
220 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; | 224 | compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; |
221 | interrupt-parent = <&UIC1>; | 225 | interrupt-parent = <&UIC1>; |
@@ -230,7 +234,7 @@ | |||
230 | rx-fifo-size = <1000>; | 234 | rx-fifo-size = <1000>; |
231 | tx-fifo-size = <800>; | 235 | tx-fifo-size = <800>; |
232 | phy-mode = "rmii"; | 236 | phy-mode = "rmii"; |
233 | phy-map = <00000001>; | 237 | phy-map = <00000000>; |
234 | zmii-device = <&ZMII0>; | 238 | zmii-device = <&ZMII0>; |
235 | zmii-channel = <1>; | 239 | zmii-channel = <1>; |
236 | }; | 240 | }; |
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts index bc45f5fbb060..6731763f0282 100644 --- a/arch/powerpc/boot/dts/lite5200.dts +++ b/arch/powerpc/boot/dts/lite5200.dts | |||
@@ -70,18 +70,16 @@ | |||
70 | }; | 70 | }; |
71 | 71 | ||
72 | gpt@600 { // General Purpose Timer | 72 | gpt@600 { // General Purpose Timer |
73 | compatible = "mpc5200-gpt"; | 73 | compatible = "fsl,mpc5200-gpt"; |
74 | device_type = "gpt"; | ||
75 | cell-index = <0>; | 74 | cell-index = <0>; |
76 | reg = <600 10>; | 75 | reg = <600 10>; |
77 | interrupts = <1 9 0>; | 76 | interrupts = <1 9 0>; |
78 | interrupt-parent = <&mpc5200_pic>; | 77 | interrupt-parent = <&mpc5200_pic>; |
79 | has-wdt; | 78 | fsl,has-wdt; |
80 | }; | 79 | }; |
81 | 80 | ||
82 | gpt@610 { // General Purpose Timer | 81 | gpt@610 { // General Purpose Timer |
83 | compatible = "mpc5200-gpt"; | 82 | compatible = "fsl,mpc5200-gpt"; |
84 | device_type = "gpt"; | ||
85 | cell-index = <1>; | 83 | cell-index = <1>; |
86 | reg = <610 10>; | 84 | reg = <610 10>; |
87 | interrupts = <1 a 0>; | 85 | interrupts = <1 a 0>; |
@@ -89,8 +87,7 @@ | |||
89 | }; | 87 | }; |
90 | 88 | ||
91 | gpt@620 { // General Purpose Timer | 89 | gpt@620 { // General Purpose Timer |
92 | compatible = "mpc5200-gpt"; | 90 | compatible = "fsl,mpc5200-gpt"; |
93 | device_type = "gpt"; | ||
94 | cell-index = <2>; | 91 | cell-index = <2>; |
95 | reg = <620 10>; | 92 | reg = <620 10>; |
96 | interrupts = <1 b 0>; | 93 | interrupts = <1 b 0>; |
@@ -98,8 +95,7 @@ | |||
98 | }; | 95 | }; |
99 | 96 | ||
100 | gpt@630 { // General Purpose Timer | 97 | gpt@630 { // General Purpose Timer |
101 | compatible = "mpc5200-gpt"; | 98 | compatible = "fsl,mpc5200-gpt"; |
102 | device_type = "gpt"; | ||
103 | cell-index = <3>; | 99 | cell-index = <3>; |
104 | reg = <630 10>; | 100 | reg = <630 10>; |
105 | interrupts = <1 c 0>; | 101 | interrupts = <1 c 0>; |
@@ -107,8 +103,7 @@ | |||
107 | }; | 103 | }; |
108 | 104 | ||
109 | gpt@640 { // General Purpose Timer | 105 | gpt@640 { // General Purpose Timer |
110 | compatible = "mpc5200-gpt"; | 106 | compatible = "fsl,mpc5200-gpt"; |
111 | device_type = "gpt"; | ||
112 | cell-index = <4>; | 107 | cell-index = <4>; |
113 | reg = <640 10>; | 108 | reg = <640 10>; |
114 | interrupts = <1 d 0>; | 109 | interrupts = <1 d 0>; |
@@ -116,8 +111,7 @@ | |||
116 | }; | 111 | }; |
117 | 112 | ||
118 | gpt@650 { // General Purpose Timer | 113 | gpt@650 { // General Purpose Timer |
119 | compatible = "mpc5200-gpt"; | 114 | compatible = "fsl,mpc5200-gpt"; |
120 | device_type = "gpt"; | ||
121 | cell-index = <5>; | 115 | cell-index = <5>; |
122 | reg = <650 10>; | 116 | reg = <650 10>; |
123 | interrupts = <1 e 0>; | 117 | interrupts = <1 e 0>; |
@@ -125,8 +119,7 @@ | |||
125 | }; | 119 | }; |
126 | 120 | ||
127 | gpt@660 { // General Purpose Timer | 121 | gpt@660 { // General Purpose Timer |
128 | compatible = "mpc5200-gpt"; | 122 | compatible = "fsl,mpc5200-gpt"; |
129 | device_type = "gpt"; | ||
130 | cell-index = <6>; | 123 | cell-index = <6>; |
131 | reg = <660 10>; | 124 | reg = <660 10>; |
132 | interrupts = <1 f 0>; | 125 | interrupts = <1 f 0>; |
@@ -134,8 +127,7 @@ | |||
134 | }; | 127 | }; |
135 | 128 | ||
136 | gpt@670 { // General Purpose Timer | 129 | gpt@670 { // General Purpose Timer |
137 | compatible = "mpc5200-gpt"; | 130 | compatible = "fsl,mpc5200-gpt"; |
138 | device_type = "gpt"; | ||
139 | cell-index = <7>; | 131 | cell-index = <7>; |
140 | reg = <670 10>; | 132 | reg = <670 10>; |
141 | interrupts = <1 10 0>; | 133 | interrupts = <1 10 0>; |
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts index 6582c9a39b27..b540388c608c 100644 --- a/arch/powerpc/boot/dts/lite5200b.dts +++ b/arch/powerpc/boot/dts/lite5200b.dts | |||
@@ -70,18 +70,16 @@ | |||
70 | }; | 70 | }; |
71 | 71 | ||
72 | gpt@600 { // General Purpose Timer | 72 | gpt@600 { // General Purpose Timer |
73 | compatible = "mpc5200b-gpt","mpc5200-gpt"; | 73 | compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; |
74 | device_type = "gpt"; | ||
75 | cell-index = <0>; | 74 | cell-index = <0>; |
76 | reg = <600 10>; | 75 | reg = <600 10>; |
77 | interrupts = <1 9 0>; | 76 | interrupts = <1 9 0>; |
78 | interrupt-parent = <&mpc5200_pic>; | 77 | interrupt-parent = <&mpc5200_pic>; |
79 | has-wdt; | 78 | fsl,has-wdt; |
80 | }; | 79 | }; |
81 | 80 | ||
82 | gpt@610 { // General Purpose Timer | 81 | gpt@610 { // General Purpose Timer |
83 | compatible = "mpc5200b-gpt","mpc5200-gpt"; | 82 | compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; |
84 | device_type = "gpt"; | ||
85 | cell-index = <1>; | 83 | cell-index = <1>; |
86 | reg = <610 10>; | 84 | reg = <610 10>; |
87 | interrupts = <1 a 0>; | 85 | interrupts = <1 a 0>; |
@@ -89,8 +87,7 @@ | |||
89 | }; | 87 | }; |
90 | 88 | ||
91 | gpt@620 { // General Purpose Timer | 89 | gpt@620 { // General Purpose Timer |
92 | compatible = "mpc5200b-gpt","mpc5200-gpt"; | 90 | compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; |
93 | device_type = "gpt"; | ||
94 | cell-index = <2>; | 91 | cell-index = <2>; |
95 | reg = <620 10>; | 92 | reg = <620 10>; |
96 | interrupts = <1 b 0>; | 93 | interrupts = <1 b 0>; |
@@ -98,8 +95,7 @@ | |||
98 | }; | 95 | }; |
99 | 96 | ||
100 | gpt@630 { // General Purpose Timer | 97 | gpt@630 { // General Purpose Timer |
101 | compatible = "mpc5200b-gpt","mpc5200-gpt"; | 98 | compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; |
102 | device_type = "gpt"; | ||
103 | cell-index = <3>; | 99 | cell-index = <3>; |
104 | reg = <630 10>; | 100 | reg = <630 10>; |
105 | interrupts = <1 c 0>; | 101 | interrupts = <1 c 0>; |
@@ -107,8 +103,7 @@ | |||
107 | }; | 103 | }; |
108 | 104 | ||
109 | gpt@640 { // General Purpose Timer | 105 | gpt@640 { // General Purpose Timer |
110 | compatible = "mpc5200b-gpt","mpc5200-gpt"; | 106 | compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; |
111 | device_type = "gpt"; | ||
112 | cell-index = <4>; | 107 | cell-index = <4>; |
113 | reg = <640 10>; | 108 | reg = <640 10>; |
114 | interrupts = <1 d 0>; | 109 | interrupts = <1 d 0>; |
@@ -116,8 +111,7 @@ | |||
116 | }; | 111 | }; |
117 | 112 | ||
118 | gpt@650 { // General Purpose Timer | 113 | gpt@650 { // General Purpose Timer |
119 | compatible = "mpc5200b-gpt","mpc5200-gpt"; | 114 | compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; |
120 | device_type = "gpt"; | ||
121 | cell-index = <5>; | 115 | cell-index = <5>; |
122 | reg = <650 10>; | 116 | reg = <650 10>; |
123 | interrupts = <1 e 0>; | 117 | interrupts = <1 e 0>; |
@@ -125,8 +119,7 @@ | |||
125 | }; | 119 | }; |
126 | 120 | ||
127 | gpt@660 { // General Purpose Timer | 121 | gpt@660 { // General Purpose Timer |
128 | compatible = "mpc5200b-gpt","mpc5200-gpt"; | 122 | compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; |
129 | device_type = "gpt"; | ||
130 | cell-index = <6>; | 123 | cell-index = <6>; |
131 | reg = <660 10>; | 124 | reg = <660 10>; |
132 | interrupts = <1 f 0>; | 125 | interrupts = <1 f 0>; |
@@ -134,8 +127,7 @@ | |||
134 | }; | 127 | }; |
135 | 128 | ||
136 | gpt@670 { // General Purpose Timer | 129 | gpt@670 { // General Purpose Timer |
137 | compatible = "mpc5200b-gpt","mpc5200-gpt"; | 130 | compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; |
138 | device_type = "gpt"; | ||
139 | cell-index = <7>; | 131 | cell-index = <7>; |
140 | reg = <670 10>; | 132 | reg = <670 10>; |
141 | interrupts = <1 10 0>; | 133 | interrupts = <1 10 0>; |
diff --git a/arch/powerpc/boot/dts/sequoia.dts b/arch/powerpc/boot/dts/sequoia.dts index 36be75b04de1..8833dfe2e8b4 100644 --- a/arch/powerpc/boot/dts/sequoia.dts +++ b/arch/powerpc/boot/dts/sequoia.dts | |||
@@ -241,6 +241,12 @@ | |||
241 | reg = <ef600d00 c>; | 241 | reg = <ef600d00 c>; |
242 | }; | 242 | }; |
243 | 243 | ||
244 | RGMII0: emac-rgmii@ef601000 { | ||
245 | device_type = "rgmii-interface"; | ||
246 | compatible = "ibm,rgmii-440epx", "ibm,rgmii"; | ||
247 | reg = <ef601000 8>; | ||
248 | }; | ||
249 | |||
244 | EMAC0: ethernet@ef600e00 { | 250 | EMAC0: ethernet@ef600e00 { |
245 | linux,network-index = <0>; | 251 | linux,network-index = <0>; |
246 | device_type = "network"; | 252 | device_type = "network"; |
@@ -261,10 +267,12 @@ | |||
261 | max-frame-size = <5dc>; | 267 | max-frame-size = <5dc>; |
262 | rx-fifo-size = <1000>; | 268 | rx-fifo-size = <1000>; |
263 | tx-fifo-size = <800>; | 269 | tx-fifo-size = <800>; |
264 | phy-mode = "rmii"; | 270 | phy-mode = "rgmii"; |
265 | phy-map = <00000000>; | 271 | phy-map = <00000000>; |
266 | zmii-device = <&ZMII0>; | 272 | zmii-device = <&ZMII0>; |
267 | zmii-channel = <0>; | 273 | zmii-channel = <0>; |
274 | rgmii-device = <&RGMII0>; | ||
275 | rgmii-channel = <0>; | ||
268 | }; | 276 | }; |
269 | 277 | ||
270 | EMAC1: ethernet@ef600f00 { | 278 | EMAC1: ethernet@ef600f00 { |
@@ -287,10 +295,12 @@ | |||
287 | max-frame-size = <5dc>; | 295 | max-frame-size = <5dc>; |
288 | rx-fifo-size = <1000>; | 296 | rx-fifo-size = <1000>; |
289 | tx-fifo-size = <800>; | 297 | tx-fifo-size = <800>; |
290 | phy-mode = "rmii"; | 298 | phy-mode = "rgmii"; |
291 | phy-map = <00000000>; | 299 | phy-map = <00000000>; |
292 | zmii-device = <&ZMII0>; | 300 | zmii-device = <&ZMII0>; |
293 | zmii-channel = <1>; | 301 | zmii-channel = <1>; |
302 | rgmii-device = <&RGMII0>; | ||
303 | rgmii-channel = <1>; | ||
294 | }; | 304 | }; |
295 | }; | 305 | }; |
296 | }; | 306 | }; |
diff --git a/arch/powerpc/boot/dts/walnut.dts b/arch/powerpc/boot/dts/walnut.dts index ec54f4e04ad6..fa681f5343fe 100644 --- a/arch/powerpc/boot/dts/walnut.dts +++ b/arch/powerpc/boot/dts/walnut.dts | |||
@@ -64,10 +64,15 @@ | |||
64 | MAL: mcmal { | 64 | MAL: mcmal { |
65 | compatible = "ibm,mcmal-405gp", "ibm,mcmal"; | 65 | compatible = "ibm,mcmal-405gp", "ibm,mcmal"; |
66 | dcr-reg = <180 62>; | 66 | dcr-reg = <180 62>; |
67 | num-tx-chans = <2>; | 67 | num-tx-chans = <1>; |
68 | num-rx-chans = <1>; | 68 | num-rx-chans = <1>; |
69 | interrupt-parent = <&UIC0>; | 69 | interrupt-parent = <&UIC0>; |
70 | interrupts = <a 4 b 4 c 4 d 4 e 4>; | 70 | interrupts = < |
71 | b 4 /* TXEOB */ | ||
72 | c 4 /* RXEOB */ | ||
73 | a 4 /* SERR */ | ||
74 | d 4 /* TXDE */ | ||
75 | e 4 /* RXDE */>; | ||
71 | }; | 76 | }; |
72 | 77 | ||
73 | POB0: opb { | 78 | POB0: opb { |
@@ -118,9 +123,10 @@ | |||
118 | compatible = "ibm,emac-405gp", "ibm,emac"; | 123 | compatible = "ibm,emac-405gp", "ibm,emac"; |
119 | interrupt-parent = <&UIC0>; | 124 | interrupt-parent = <&UIC0>; |
120 | interrupts = <9 4 f 4>; | 125 | interrupts = <9 4 f 4>; |
126 | local-mac-address = [000000000000]; /* Filled in by zImage */ | ||
121 | reg = <ef600800 70>; | 127 | reg = <ef600800 70>; |
122 | mal-device = <&MAL>; | 128 | mal-device = <&MAL>; |
123 | mal-tx-channel = <0 1>; | 129 | mal-tx-channel = <0>; |
124 | mal-rx-channel = <0>; | 130 | mal-rx-channel = <0>; |
125 | cell-index = <0>; | 131 | cell-index = <0>; |
126 | max-frame-size = <5dc>; | 132 | max-frame-size = <5dc>; |
diff --git a/arch/powerpc/boot/treeboot-walnut.c b/arch/powerpc/boot/treeboot-walnut.c index 3adf2d08a230..bb2c309d70fc 100644 --- a/arch/powerpc/boot/treeboot-walnut.c +++ b/arch/powerpc/boot/treeboot-walnut.c | |||
@@ -57,8 +57,8 @@ void ibm405gp_fixup_clocks(unsigned int sysclk, unsigned int ser_clk) | |||
57 | } | 57 | } |
58 | 58 | ||
59 | /* setup the timebase clock to tick at the cpu frequency */ | 59 | /* setup the timebase clock to tick at the cpu frequency */ |
60 | cpc0_cr1 = cpc0_cr1 & ~ 0x00800000; | 60 | cpc0_cr1 = cpc0_cr1 & ~0x00800000; |
61 | mtdcr(DCRN_CPC0_CR1, cpc0_cr1); | 61 | mtdcr(DCRN_405_CPC0_CR1, cpc0_cr1); |
62 | tb = cpu; | 62 | tb = cpu; |
63 | 63 | ||
64 | dt_fixup_cpu_clocks(cpu, tb, 0); | 64 | dt_fixup_cpu_clocks(cpu, tb, 0); |
@@ -109,6 +109,7 @@ static void walnut_flashsel_fixup(void) | |||
109 | setprop(sram, "reg", reg_sram, sizeof(reg_sram)); | 109 | setprop(sram, "reg", reg_sram, sizeof(reg_sram)); |
110 | } | 110 | } |
111 | 111 | ||
112 | #define WALNUT_OPENBIOS_MAC_OFF 0xfffffe0b | ||
112 | static void walnut_fixups(void) | 113 | static void walnut_fixups(void) |
113 | { | 114 | { |
114 | ibm4xx_fixup_memsize(); | 115 | ibm4xx_fixup_memsize(); |
@@ -116,6 +117,7 @@ static void walnut_fixups(void) | |||
116 | ibm4xx_quiesce_eth((u32 *)0xef600800, NULL); | 117 | ibm4xx_quiesce_eth((u32 *)0xef600800, NULL); |
117 | ibm4xx_fixup_ebc_ranges("/plb/ebc"); | 118 | ibm4xx_fixup_ebc_ranges("/plb/ebc"); |
118 | walnut_flashsel_fixup(); | 119 | walnut_flashsel_fixup(); |
120 | dt_fixup_mac_addresses((u8 *) WALNUT_OPENBIOS_MAC_OFF); | ||
119 | } | 121 | } |
120 | 122 | ||
121 | void platform_init(void) | 123 | void platform_init(void) |
diff --git a/arch/powerpc/configs/bamboo_defconfig b/arch/powerpc/configs/bamboo_defconfig index d22fed6d2cd9..844808ebf245 100644 --- a/arch/powerpc/configs/bamboo_defconfig +++ b/arch/powerpc/configs/bamboo_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.23-rc1 | 3 | # Linux kernel version: 2.6.23 |
4 | # Fri Aug 3 10:46:53 2007 | 4 | # Fri Oct 19 09:01:11 2007 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -22,8 +22,13 @@ CONFIG_PHYS_64BIT=y | |||
22 | # CONFIG_PPC_MM_SLICES is not set | 22 | # CONFIG_PPC_MM_SLICES is not set |
23 | CONFIG_NOT_COHERENT_CACHE=y | 23 | CONFIG_NOT_COHERENT_CACHE=y |
24 | CONFIG_PPC32=y | 24 | CONFIG_PPC32=y |
25 | CONFIG_WORD_SIZE=32 | ||
25 | CONFIG_PPC_MERGE=y | 26 | CONFIG_PPC_MERGE=y |
26 | CONFIG_MMU=y | 27 | CONFIG_MMU=y |
28 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
29 | CONFIG_GENERIC_TIME=y | ||
30 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
31 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
27 | CONFIG_GENERIC_HARDIRQS=y | 32 | CONFIG_GENERIC_HARDIRQS=y |
28 | CONFIG_IRQ_PER_CPU=y | 33 | CONFIG_IRQ_PER_CPU=y |
29 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 34 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
@@ -67,6 +72,8 @@ CONFIG_POSIX_MQUEUE=y | |||
67 | # CONFIG_AUDIT is not set | 72 | # CONFIG_AUDIT is not set |
68 | # CONFIG_IKCONFIG is not set | 73 | # CONFIG_IKCONFIG is not set |
69 | CONFIG_LOG_BUF_SHIFT=14 | 74 | CONFIG_LOG_BUF_SHIFT=14 |
75 | CONFIG_FAIR_GROUP_SCHED=y | ||
76 | CONFIG_FAIR_USER_SCHED=y | ||
70 | CONFIG_SYSFS_DEPRECATED=y | 77 | CONFIG_SYSFS_DEPRECATED=y |
71 | # CONFIG_RELAY is not set | 78 | # CONFIG_RELAY is not set |
72 | CONFIG_BLK_DEV_INITRD=y | 79 | CONFIG_BLK_DEV_INITRD=y |
@@ -87,7 +94,6 @@ CONFIG_FUTEX=y | |||
87 | CONFIG_ANON_INODES=y | 94 | CONFIG_ANON_INODES=y |
88 | CONFIG_EPOLL=y | 95 | CONFIG_EPOLL=y |
89 | CONFIG_SIGNALFD=y | 96 | CONFIG_SIGNALFD=y |
90 | CONFIG_TIMERFD=y | ||
91 | CONFIG_EVENTFD=y | 97 | CONFIG_EVENTFD=y |
92 | CONFIG_SHMEM=y | 98 | CONFIG_SHMEM=y |
93 | CONFIG_VM_EVENT_COUNTERS=y | 99 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -133,6 +139,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
133 | # CONFIG_PQ2ADS is not set | 139 | # CONFIG_PQ2ADS is not set |
134 | CONFIG_BAMBOO=y | 140 | CONFIG_BAMBOO=y |
135 | # CONFIG_EBONY is not set | 141 | # CONFIG_EBONY is not set |
142 | # CONFIG_SEQUOIA is not set | ||
136 | CONFIG_440EP=y | 143 | CONFIG_440EP=y |
137 | CONFIG_IBM440EP_ERR42=y | 144 | CONFIG_IBM440EP_ERR42=y |
138 | # CONFIG_MPIC is not set | 145 | # CONFIG_MPIC is not set |
@@ -146,11 +153,16 @@ CONFIG_IBM440EP_ERR42=y | |||
146 | # CONFIG_GENERIC_IOMAP is not set | 153 | # CONFIG_GENERIC_IOMAP is not set |
147 | # CONFIG_CPU_FREQ is not set | 154 | # CONFIG_CPU_FREQ is not set |
148 | # CONFIG_CPM2 is not set | 155 | # CONFIG_CPM2 is not set |
156 | # CONFIG_FSL_ULI1575 is not set | ||
149 | 157 | ||
150 | # | 158 | # |
151 | # Kernel options | 159 | # Kernel options |
152 | # | 160 | # |
153 | # CONFIG_HIGHMEM is not set | 161 | # CONFIG_HIGHMEM is not set |
162 | # CONFIG_TICK_ONESHOT is not set | ||
163 | # CONFIG_NO_HZ is not set | ||
164 | # CONFIG_HIGH_RES_TIMERS is not set | ||
165 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
154 | # CONFIG_HZ_100 is not set | 166 | # CONFIG_HZ_100 is not set |
155 | CONFIG_HZ_250=y | 167 | CONFIG_HZ_250=y |
156 | # CONFIG_HZ_300 is not set | 168 | # CONFIG_HZ_300 is not set |
@@ -172,6 +184,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
172 | CONFIG_FLATMEM=y | 184 | CONFIG_FLATMEM=y |
173 | CONFIG_FLAT_NODE_MEM_MAP=y | 185 | CONFIG_FLAT_NODE_MEM_MAP=y |
174 | # CONFIG_SPARSEMEM_STATIC is not set | 186 | # CONFIG_SPARSEMEM_STATIC is not set |
187 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
175 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 188 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
176 | CONFIG_RESOURCES_64BIT=y | 189 | CONFIG_RESOURCES_64BIT=y |
177 | CONFIG_ZONE_DMA_FLAG=1 | 190 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -197,10 +210,6 @@ CONFIG_PCI_SYSCALL=y | |||
197 | CONFIG_ARCH_SUPPORTS_MSI=y | 210 | CONFIG_ARCH_SUPPORTS_MSI=y |
198 | # CONFIG_PCI_MSI is not set | 211 | # CONFIG_PCI_MSI is not set |
199 | # CONFIG_PCI_DEBUG is not set | 212 | # CONFIG_PCI_DEBUG is not set |
200 | |||
201 | # | ||
202 | # PCCARD (PCMCIA/CardBus) support | ||
203 | # | ||
204 | # CONFIG_PCCARD is not set | 213 | # CONFIG_PCCARD is not set |
205 | # CONFIG_HOTPLUG_PCI is not set | 214 | # CONFIG_HOTPLUG_PCI is not set |
206 | 215 | ||
@@ -215,7 +224,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y | |||
215 | CONFIG_HIGHMEM_START=0xfe000000 | 224 | CONFIG_HIGHMEM_START=0xfe000000 |
216 | CONFIG_LOWMEM_SIZE=0x30000000 | 225 | CONFIG_LOWMEM_SIZE=0x30000000 |
217 | CONFIG_KERNEL_START=0xc0000000 | 226 | CONFIG_KERNEL_START=0xc0000000 |
218 | CONFIG_TASK_SIZE=0x80000000 | 227 | CONFIG_TASK_SIZE=0xc0000000 |
219 | CONFIG_CONSISTENT_START=0xff100000 | 228 | CONFIG_CONSISTENT_START=0xff100000 |
220 | CONFIG_CONSISTENT_SIZE=0x00200000 | 229 | CONFIG_CONSISTENT_SIZE=0x00200000 |
221 | CONFIG_BOOT_LOAD=0x01000000 | 230 | CONFIG_BOOT_LOAD=0x01000000 |
@@ -252,6 +261,7 @@ CONFIG_IP_PNP_BOOTP=y | |||
252 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | 261 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set |
253 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | 262 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set |
254 | # CONFIG_INET_XFRM_MODE_BEET is not set | 263 | # CONFIG_INET_XFRM_MODE_BEET is not set |
264 | # CONFIG_INET_LRO is not set | ||
255 | CONFIG_INET_DIAG=y | 265 | CONFIG_INET_DIAG=y |
256 | CONFIG_INET_TCP_DIAG=y | 266 | CONFIG_INET_TCP_DIAG=y |
257 | # CONFIG_TCP_CONG_ADVANCED is not set | 267 | # CONFIG_TCP_CONG_ADVANCED is not set |
@@ -309,6 +319,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
309 | # | 319 | # |
310 | # Generic Driver Options | 320 | # Generic Driver Options |
311 | # | 321 | # |
322 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
312 | CONFIG_STANDALONE=y | 323 | CONFIG_STANDALONE=y |
313 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 324 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
314 | CONFIG_FW_LOADER=y | 325 | CONFIG_FW_LOADER=y |
@@ -353,10 +364,6 @@ CONFIG_MISC_DEVICES=y | |||
353 | # CONFIG_SCSI_NETLINK is not set | 364 | # CONFIG_SCSI_NETLINK is not set |
354 | # CONFIG_ATA is not set | 365 | # CONFIG_ATA is not set |
355 | # CONFIG_MD is not set | 366 | # CONFIG_MD is not set |
356 | |||
357 | # | ||
358 | # Fusion MPT device support | ||
359 | # | ||
360 | # CONFIG_FUSION is not set | 367 | # CONFIG_FUSION is not set |
361 | 368 | ||
362 | # | 369 | # |
@@ -375,12 +382,36 @@ CONFIG_NETDEVICES=y | |||
375 | # CONFIG_MACVLAN is not set | 382 | # CONFIG_MACVLAN is not set |
376 | # CONFIG_EQUALIZER is not set | 383 | # CONFIG_EQUALIZER is not set |
377 | # CONFIG_TUN is not set | 384 | # CONFIG_TUN is not set |
385 | # CONFIG_VETH is not set | ||
386 | # CONFIG_IP1000 is not set | ||
378 | # CONFIG_ARCNET is not set | 387 | # CONFIG_ARCNET is not set |
379 | # CONFIG_NET_ETHERNET is not set | 388 | # CONFIG_PHYLIB is not set |
389 | CONFIG_NET_ETHERNET=y | ||
390 | # CONFIG_MII is not set | ||
391 | # CONFIG_HAPPYMEAL is not set | ||
392 | # CONFIG_SUNGEM is not set | ||
393 | # CONFIG_CASSINI is not set | ||
394 | # CONFIG_NET_VENDOR_3COM is not set | ||
395 | # CONFIG_NET_TULIP is not set | ||
396 | # CONFIG_HP100 is not set | ||
397 | CONFIG_IBM_NEW_EMAC=y | ||
398 | CONFIG_IBM_NEW_EMAC_RXB=128 | ||
399 | CONFIG_IBM_NEW_EMAC_TXB=64 | ||
400 | CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32 | ||
401 | CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256 | ||
402 | CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0 | ||
403 | # CONFIG_IBM_NEW_EMAC_DEBUG is not set | ||
404 | CONFIG_IBM_NEW_EMAC_ZMII=y | ||
405 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
406 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
407 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
408 | # CONFIG_NET_PCI is not set | ||
409 | # CONFIG_B44 is not set | ||
380 | CONFIG_NETDEV_1000=y | 410 | CONFIG_NETDEV_1000=y |
381 | # CONFIG_ACENIC is not set | 411 | # CONFIG_ACENIC is not set |
382 | # CONFIG_DL2K is not set | 412 | # CONFIG_DL2K is not set |
383 | # CONFIG_E1000 is not set | 413 | # CONFIG_E1000 is not set |
414 | # CONFIG_E1000E is not set | ||
384 | # CONFIG_NS83820 is not set | 415 | # CONFIG_NS83820 is not set |
385 | # CONFIG_HAMACHI is not set | 416 | # CONFIG_HAMACHI is not set |
386 | # CONFIG_YELLOWFIN is not set | 417 | # CONFIG_YELLOWFIN is not set |
@@ -388,6 +419,7 @@ CONFIG_NETDEV_1000=y | |||
388 | # CONFIG_SIS190 is not set | 419 | # CONFIG_SIS190 is not set |
389 | # CONFIG_SKGE is not set | 420 | # CONFIG_SKGE is not set |
390 | # CONFIG_SKY2 is not set | 421 | # CONFIG_SKY2 is not set |
422 | # CONFIG_SK98LIN is not set | ||
391 | # CONFIG_VIA_VELOCITY is not set | 423 | # CONFIG_VIA_VELOCITY is not set |
392 | # CONFIG_TIGON3 is not set | 424 | # CONFIG_TIGON3 is not set |
393 | # CONFIG_BNX2 is not set | 425 | # CONFIG_BNX2 is not set |
@@ -396,11 +428,14 @@ CONFIG_NETDEV_1000=y | |||
396 | CONFIG_NETDEV_10000=y | 428 | CONFIG_NETDEV_10000=y |
397 | # CONFIG_CHELSIO_T1 is not set | 429 | # CONFIG_CHELSIO_T1 is not set |
398 | # CONFIG_CHELSIO_T3 is not set | 430 | # CONFIG_CHELSIO_T3 is not set |
431 | # CONFIG_IXGBE is not set | ||
399 | # CONFIG_IXGB is not set | 432 | # CONFIG_IXGB is not set |
400 | # CONFIG_S2IO is not set | 433 | # CONFIG_S2IO is not set |
401 | # CONFIG_MYRI10GE is not set | 434 | # CONFIG_MYRI10GE is not set |
402 | # CONFIG_NETXEN_NIC is not set | 435 | # CONFIG_NETXEN_NIC is not set |
436 | # CONFIG_NIU is not set | ||
403 | # CONFIG_MLX4_CORE is not set | 437 | # CONFIG_MLX4_CORE is not set |
438 | # CONFIG_TEHUTI is not set | ||
404 | # CONFIG_TR is not set | 439 | # CONFIG_TR is not set |
405 | 440 | ||
406 | # | 441 | # |
@@ -463,14 +498,11 @@ CONFIG_UNIX98_PTYS=y | |||
463 | CONFIG_LEGACY_PTYS=y | 498 | CONFIG_LEGACY_PTYS=y |
464 | CONFIG_LEGACY_PTY_COUNT=256 | 499 | CONFIG_LEGACY_PTY_COUNT=256 |
465 | # CONFIG_IPMI_HANDLER is not set | 500 | # CONFIG_IPMI_HANDLER is not set |
466 | # CONFIG_WATCHDOG is not set | ||
467 | # CONFIG_HW_RANDOM is not set | 501 | # CONFIG_HW_RANDOM is not set |
468 | # CONFIG_NVRAM is not set | 502 | # CONFIG_NVRAM is not set |
469 | # CONFIG_GEN_RTC is not set | 503 | # CONFIG_GEN_RTC is not set |
470 | # CONFIG_R3964 is not set | 504 | # CONFIG_R3964 is not set |
471 | # CONFIG_APPLICOM is not set | 505 | # CONFIG_APPLICOM is not set |
472 | # CONFIG_AGP is not set | ||
473 | # CONFIG_DRM is not set | ||
474 | # CONFIG_RAW_DRIVER is not set | 506 | # CONFIG_RAW_DRIVER is not set |
475 | # CONFIG_TCG_TPM is not set | 507 | # CONFIG_TCG_TPM is not set |
476 | CONFIG_DEVPORT=y | 508 | CONFIG_DEVPORT=y |
@@ -484,6 +516,13 @@ CONFIG_DEVPORT=y | |||
484 | # CONFIG_W1 is not set | 516 | # CONFIG_W1 is not set |
485 | # CONFIG_POWER_SUPPLY is not set | 517 | # CONFIG_POWER_SUPPLY is not set |
486 | # CONFIG_HWMON is not set | 518 | # CONFIG_HWMON is not set |
519 | # CONFIG_WATCHDOG is not set | ||
520 | |||
521 | # | ||
522 | # Sonics Silicon Backplane | ||
523 | # | ||
524 | CONFIG_SSB_POSSIBLE=y | ||
525 | # CONFIG_SSB is not set | ||
487 | 526 | ||
488 | # | 527 | # |
489 | # Multifunction device drivers | 528 | # Multifunction device drivers |
@@ -500,16 +539,17 @@ CONFIG_DAB=y | |||
500 | # | 539 | # |
501 | # Graphics support | 540 | # Graphics support |
502 | # | 541 | # |
542 | # CONFIG_AGP is not set | ||
543 | # CONFIG_DRM is not set | ||
544 | # CONFIG_VGASTATE is not set | ||
545 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
546 | # CONFIG_FB is not set | ||
503 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 547 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
504 | 548 | ||
505 | # | 549 | # |
506 | # Display device support | 550 | # Display device support |
507 | # | 551 | # |
508 | # CONFIG_DISPLAY_SUPPORT is not set | 552 | # CONFIG_DISPLAY_SUPPORT is not set |
509 | # CONFIG_VGASTATE is not set | ||
510 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
511 | # CONFIG_FB is not set | ||
512 | # CONFIG_FB_IBM_GXT4500 is not set | ||
513 | 553 | ||
514 | # | 554 | # |
515 | # Sound | 555 | # Sound |
@@ -536,19 +576,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
536 | # CONFIG_RTC_CLASS is not set | 576 | # CONFIG_RTC_CLASS is not set |
537 | 577 | ||
538 | # | 578 | # |
539 | # DMA Engine support | ||
540 | # | ||
541 | # CONFIG_DMA_ENGINE is not set | ||
542 | |||
543 | # | ||
544 | # DMA Clients | ||
545 | # | ||
546 | |||
547 | # | ||
548 | # DMA Devices | ||
549 | # | ||
550 | |||
551 | # | ||
552 | # Userspace I/O | 579 | # Userspace I/O |
553 | # | 580 | # |
554 | # CONFIG_UIO is not set | 581 | # CONFIG_UIO is not set |
@@ -600,7 +627,6 @@ CONFIG_SYSFS=y | |||
600 | CONFIG_TMPFS=y | 627 | CONFIG_TMPFS=y |
601 | # CONFIG_TMPFS_POSIX_ACL is not set | 628 | # CONFIG_TMPFS_POSIX_ACL is not set |
602 | # CONFIG_HUGETLB_PAGE is not set | 629 | # CONFIG_HUGETLB_PAGE is not set |
603 | CONFIG_RAMFS=y | ||
604 | # CONFIG_CONFIGFS_FS is not set | 630 | # CONFIG_CONFIGFS_FS is not set |
605 | 631 | ||
606 | # | 632 | # |
@@ -619,10 +645,7 @@ CONFIG_CRAMFS=y | |||
619 | # CONFIG_QNX4FS_FS is not set | 645 | # CONFIG_QNX4FS_FS is not set |
620 | # CONFIG_SYSV_FS is not set | 646 | # CONFIG_SYSV_FS is not set |
621 | # CONFIG_UFS_FS is not set | 647 | # CONFIG_UFS_FS is not set |
622 | 648 | CONFIG_NETWORK_FILESYSTEMS=y | |
623 | # | ||
624 | # Network File Systems | ||
625 | # | ||
626 | CONFIG_NFS_FS=y | 649 | CONFIG_NFS_FS=y |
627 | CONFIG_NFS_V3=y | 650 | CONFIG_NFS_V3=y |
628 | # CONFIG_NFS_V3_ACL is not set | 651 | # CONFIG_NFS_V3_ACL is not set |
@@ -648,15 +671,7 @@ CONFIG_SUNRPC=y | |||
648 | # | 671 | # |
649 | # CONFIG_PARTITION_ADVANCED is not set | 672 | # CONFIG_PARTITION_ADVANCED is not set |
650 | CONFIG_MSDOS_PARTITION=y | 673 | CONFIG_MSDOS_PARTITION=y |
651 | |||
652 | # | ||
653 | # Native Language Support | ||
654 | # | ||
655 | # CONFIG_NLS is not set | 674 | # CONFIG_NLS is not set |
656 | |||
657 | # | ||
658 | # Distributed Lock Manager | ||
659 | # | ||
660 | # CONFIG_DLM is not set | 675 | # CONFIG_DLM is not set |
661 | # CONFIG_UCC_SLOW is not set | 676 | # CONFIG_UCC_SLOW is not set |
662 | 677 | ||
@@ -709,6 +724,7 @@ CONFIG_SCHED_DEBUG=y | |||
709 | # CONFIG_DEBUG_VM is not set | 724 | # CONFIG_DEBUG_VM is not set |
710 | # CONFIG_DEBUG_LIST is not set | 725 | # CONFIG_DEBUG_LIST is not set |
711 | CONFIG_FORCED_INLINING=y | 726 | CONFIG_FORCED_INLINING=y |
727 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
712 | # CONFIG_RCU_TORTURE_TEST is not set | 728 | # CONFIG_RCU_TORTURE_TEST is not set |
713 | # CONFIG_FAULT_INJECTION is not set | 729 | # CONFIG_FAULT_INJECTION is not set |
714 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 730 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
@@ -728,6 +744,7 @@ CONFIG_PPC_EARLY_DEBUG=y | |||
728 | # CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set | 744 | # CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set |
729 | # CONFIG_PPC_EARLY_DEBUG_BEAT is not set | 745 | # CONFIG_PPC_EARLY_DEBUG_BEAT is not set |
730 | CONFIG_PPC_EARLY_DEBUG_44x=y | 746 | CONFIG_PPC_EARLY_DEBUG_44x=y |
747 | # CONFIG_PPC_EARLY_DEBUG_CPM is not set | ||
731 | CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW=0xef600300 | 748 | CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW=0xef600300 |
732 | CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x0 | 749 | CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x0 |
733 | 750 | ||
@@ -736,6 +753,7 @@ CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x0 | |||
736 | # | 753 | # |
737 | # CONFIG_KEYS is not set | 754 | # CONFIG_KEYS is not set |
738 | # CONFIG_SECURITY is not set | 755 | # CONFIG_SECURITY is not set |
756 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
739 | CONFIG_CRYPTO=y | 757 | CONFIG_CRYPTO=y |
740 | CONFIG_CRYPTO_ALGAPI=y | 758 | CONFIG_CRYPTO_ALGAPI=y |
741 | CONFIG_CRYPTO_BLKCIPHER=y | 759 | CONFIG_CRYPTO_BLKCIPHER=y |
@@ -755,6 +773,7 @@ CONFIG_CRYPTO_ECB=y | |||
755 | CONFIG_CRYPTO_CBC=y | 773 | CONFIG_CRYPTO_CBC=y |
756 | CONFIG_CRYPTO_PCBC=y | 774 | CONFIG_CRYPTO_PCBC=y |
757 | # CONFIG_CRYPTO_LRW is not set | 775 | # CONFIG_CRYPTO_LRW is not set |
776 | # CONFIG_CRYPTO_XTS is not set | ||
758 | # CONFIG_CRYPTO_CRYPTD is not set | 777 | # CONFIG_CRYPTO_CRYPTD is not set |
759 | CONFIG_CRYPTO_DES=y | 778 | CONFIG_CRYPTO_DES=y |
760 | # CONFIG_CRYPTO_FCRYPT is not set | 779 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -768,9 +787,12 @@ CONFIG_CRYPTO_DES=y | |||
768 | # CONFIG_CRYPTO_ARC4 is not set | 787 | # CONFIG_CRYPTO_ARC4 is not set |
769 | # CONFIG_CRYPTO_KHAZAD is not set | 788 | # CONFIG_CRYPTO_KHAZAD is not set |
770 | # CONFIG_CRYPTO_ANUBIS is not set | 789 | # CONFIG_CRYPTO_ANUBIS is not set |
790 | # CONFIG_CRYPTO_SEED is not set | ||
771 | # CONFIG_CRYPTO_DEFLATE is not set | 791 | # CONFIG_CRYPTO_DEFLATE is not set |
772 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 792 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
773 | # CONFIG_CRYPTO_CRC32C is not set | 793 | # CONFIG_CRYPTO_CRC32C is not set |
774 | # CONFIG_CRYPTO_CAMELLIA is not set | 794 | # CONFIG_CRYPTO_CAMELLIA is not set |
775 | # CONFIG_CRYPTO_TEST is not set | 795 | # CONFIG_CRYPTO_TEST is not set |
796 | # CONFIG_CRYPTO_AUTHENC is not set | ||
776 | CONFIG_CRYPTO_HW=y | 797 | CONFIG_CRYPTO_HW=y |
798 | # CONFIG_PPC_CLOCK is not set | ||
diff --git a/arch/powerpc/configs/ebony_defconfig b/arch/powerpc/configs/ebony_defconfig index 35a95dda681e..d3ef642811ef 100644 --- a/arch/powerpc/configs/ebony_defconfig +++ b/arch/powerpc/configs/ebony_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.23-rc4 | 3 | # Linux kernel version: 2.6.23 |
4 | # Thu Aug 30 16:34:11 2007 | 4 | # Thu Oct 18 08:01:57 2007 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -21,8 +21,13 @@ CONFIG_PHYS_64BIT=y | |||
21 | # CONFIG_PPC_MM_SLICES is not set | 21 | # CONFIG_PPC_MM_SLICES is not set |
22 | CONFIG_NOT_COHERENT_CACHE=y | 22 | CONFIG_NOT_COHERENT_CACHE=y |
23 | CONFIG_PPC32=y | 23 | CONFIG_PPC32=y |
24 | CONFIG_WORD_SIZE=32 | ||
24 | CONFIG_PPC_MERGE=y | 25 | CONFIG_PPC_MERGE=y |
25 | CONFIG_MMU=y | 26 | CONFIG_MMU=y |
27 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
28 | CONFIG_GENERIC_TIME=y | ||
29 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
30 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
26 | CONFIG_GENERIC_HARDIRQS=y | 31 | CONFIG_GENERIC_HARDIRQS=y |
27 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
28 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
@@ -66,6 +71,8 @@ CONFIG_POSIX_MQUEUE=y | |||
66 | # CONFIG_AUDIT is not set | 71 | # CONFIG_AUDIT is not set |
67 | # CONFIG_IKCONFIG is not set | 72 | # CONFIG_IKCONFIG is not set |
68 | CONFIG_LOG_BUF_SHIFT=14 | 73 | CONFIG_LOG_BUF_SHIFT=14 |
74 | CONFIG_FAIR_GROUP_SCHED=y | ||
75 | CONFIG_FAIR_USER_SCHED=y | ||
69 | CONFIG_SYSFS_DEPRECATED=y | 76 | CONFIG_SYSFS_DEPRECATED=y |
70 | # CONFIG_RELAY is not set | 77 | # CONFIG_RELAY is not set |
71 | CONFIG_BLK_DEV_INITRD=y | 78 | CONFIG_BLK_DEV_INITRD=y |
@@ -86,7 +93,6 @@ CONFIG_FUTEX=y | |||
86 | CONFIG_ANON_INODES=y | 93 | CONFIG_ANON_INODES=y |
87 | CONFIG_EPOLL=y | 94 | CONFIG_EPOLL=y |
88 | CONFIG_SIGNALFD=y | 95 | CONFIG_SIGNALFD=y |
89 | CONFIG_TIMERFD=y | ||
90 | CONFIG_EVENTFD=y | 96 | CONFIG_EVENTFD=y |
91 | CONFIG_SHMEM=y | 97 | CONFIG_SHMEM=y |
92 | CONFIG_VM_EVENT_COUNTERS=y | 98 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -130,7 +136,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
130 | # CONFIG_PPC_CELL is not set | 136 | # CONFIG_PPC_CELL is not set |
131 | # CONFIG_PPC_CELL_NATIVE is not set | 137 | # CONFIG_PPC_CELL_NATIVE is not set |
132 | # CONFIG_PQ2ADS is not set | 138 | # CONFIG_PQ2ADS is not set |
139 | # CONFIG_BAMBOO is not set | ||
133 | CONFIG_EBONY=y | 140 | CONFIG_EBONY=y |
141 | # CONFIG_SEQUOIA is not set | ||
134 | CONFIG_440GP=y | 142 | CONFIG_440GP=y |
135 | # CONFIG_MPIC is not set | 143 | # CONFIG_MPIC is not set |
136 | # CONFIG_MPIC_WEIRD is not set | 144 | # CONFIG_MPIC_WEIRD is not set |
@@ -149,6 +157,10 @@ CONFIG_440GP=y | |||
149 | # Kernel options | 157 | # Kernel options |
150 | # | 158 | # |
151 | # CONFIG_HIGHMEM is not set | 159 | # CONFIG_HIGHMEM is not set |
160 | # CONFIG_TICK_ONESHOT is not set | ||
161 | # CONFIG_NO_HZ is not set | ||
162 | # CONFIG_HIGH_RES_TIMERS is not set | ||
163 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
152 | # CONFIG_HZ_100 is not set | 164 | # CONFIG_HZ_100 is not set |
153 | CONFIG_HZ_250=y | 165 | CONFIG_HZ_250=y |
154 | # CONFIG_HZ_300 is not set | 166 | # CONFIG_HZ_300 is not set |
@@ -170,6 +182,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
170 | CONFIG_FLATMEM=y | 182 | CONFIG_FLATMEM=y |
171 | CONFIG_FLAT_NODE_MEM_MAP=y | 183 | CONFIG_FLAT_NODE_MEM_MAP=y |
172 | # CONFIG_SPARSEMEM_STATIC is not set | 184 | # CONFIG_SPARSEMEM_STATIC is not set |
185 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
173 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 186 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
174 | CONFIG_RESOURCES_64BIT=y | 187 | CONFIG_RESOURCES_64BIT=y |
175 | CONFIG_ZONE_DMA_FLAG=1 | 188 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -194,10 +207,6 @@ CONFIG_PCI_SYSCALL=y | |||
194 | CONFIG_ARCH_SUPPORTS_MSI=y | 207 | CONFIG_ARCH_SUPPORTS_MSI=y |
195 | # CONFIG_PCI_MSI is not set | 208 | # CONFIG_PCI_MSI is not set |
196 | # CONFIG_PCI_DEBUG is not set | 209 | # CONFIG_PCI_DEBUG is not set |
197 | |||
198 | # | ||
199 | # PCCARD (PCMCIA/CardBus) support | ||
200 | # | ||
201 | # CONFIG_PCCARD is not set | 210 | # CONFIG_PCCARD is not set |
202 | # CONFIG_HOTPLUG_PCI is not set | 211 | # CONFIG_HOTPLUG_PCI is not set |
203 | 212 | ||
@@ -212,7 +221,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y | |||
212 | CONFIG_HIGHMEM_START=0xfe000000 | 221 | CONFIG_HIGHMEM_START=0xfe000000 |
213 | CONFIG_LOWMEM_SIZE=0x30000000 | 222 | CONFIG_LOWMEM_SIZE=0x30000000 |
214 | CONFIG_KERNEL_START=0xc0000000 | 223 | CONFIG_KERNEL_START=0xc0000000 |
215 | CONFIG_TASK_SIZE=0x80000000 | 224 | CONFIG_TASK_SIZE=0xc0000000 |
216 | CONFIG_CONSISTENT_START=0xff100000 | 225 | CONFIG_CONSISTENT_START=0xff100000 |
217 | CONFIG_CONSISTENT_SIZE=0x00200000 | 226 | CONFIG_CONSISTENT_SIZE=0x00200000 |
218 | CONFIG_BOOT_LOAD=0x01000000 | 227 | CONFIG_BOOT_LOAD=0x01000000 |
@@ -249,6 +258,7 @@ CONFIG_IP_PNP_BOOTP=y | |||
249 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | 258 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set |
250 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | 259 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set |
251 | # CONFIG_INET_XFRM_MODE_BEET is not set | 260 | # CONFIG_INET_XFRM_MODE_BEET is not set |
261 | # CONFIG_INET_LRO is not set | ||
252 | CONFIG_INET_DIAG=y | 262 | CONFIG_INET_DIAG=y |
253 | CONFIG_INET_TCP_DIAG=y | 263 | CONFIG_INET_TCP_DIAG=y |
254 | # CONFIG_TCP_CONG_ADVANCED is not set | 264 | # CONFIG_TCP_CONG_ADVANCED is not set |
@@ -306,6 +316,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
306 | # | 316 | # |
307 | # Generic Driver Options | 317 | # Generic Driver Options |
308 | # | 318 | # |
319 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
309 | CONFIG_STANDALONE=y | 320 | CONFIG_STANDALONE=y |
310 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 321 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
311 | CONFIG_FW_LOADER=y | 322 | CONFIG_FW_LOADER=y |
@@ -332,6 +343,7 @@ CONFIG_MTD_BLOCK=y | |||
332 | # CONFIG_INFTL is not set | 343 | # CONFIG_INFTL is not set |
333 | # CONFIG_RFD_FTL is not set | 344 | # CONFIG_RFD_FTL is not set |
334 | # CONFIG_SSFDC is not set | 345 | # CONFIG_SSFDC is not set |
346 | # CONFIG_MTD_OOPS is not set | ||
335 | 347 | ||
336 | # | 348 | # |
337 | # RAM/ROM/Flash chip drivers | 349 | # RAM/ROM/Flash chip drivers |
@@ -364,6 +376,7 @@ CONFIG_MTD_CFI_UTIL=y | |||
364 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | 376 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set |
365 | # CONFIG_MTD_PHYSMAP is not set | 377 | # CONFIG_MTD_PHYSMAP is not set |
366 | CONFIG_MTD_PHYSMAP_OF=y | 378 | CONFIG_MTD_PHYSMAP_OF=y |
379 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
367 | # CONFIG_MTD_PLATRAM is not set | 380 | # CONFIG_MTD_PLATRAM is not set |
368 | 381 | ||
369 | # | 382 | # |
@@ -423,10 +436,6 @@ CONFIG_MISC_DEVICES=y | |||
423 | # CONFIG_SCSI_NETLINK is not set | 436 | # CONFIG_SCSI_NETLINK is not set |
424 | # CONFIG_ATA is not set | 437 | # CONFIG_ATA is not set |
425 | # CONFIG_MD is not set | 438 | # CONFIG_MD is not set |
426 | |||
427 | # | ||
428 | # Fusion MPT device support | ||
429 | # | ||
430 | # CONFIG_FUSION is not set | 439 | # CONFIG_FUSION is not set |
431 | 440 | ||
432 | # | 441 | # |
@@ -443,12 +452,36 @@ CONFIG_NETDEVICES=y | |||
443 | # CONFIG_MACVLAN is not set | 452 | # CONFIG_MACVLAN is not set |
444 | # CONFIG_EQUALIZER is not set | 453 | # CONFIG_EQUALIZER is not set |
445 | # CONFIG_TUN is not set | 454 | # CONFIG_TUN is not set |
455 | # CONFIG_VETH is not set | ||
456 | # CONFIG_IP1000 is not set | ||
446 | # CONFIG_ARCNET is not set | 457 | # CONFIG_ARCNET is not set |
447 | # CONFIG_NET_ETHERNET is not set | 458 | # CONFIG_PHYLIB is not set |
459 | CONFIG_NET_ETHERNET=y | ||
460 | # CONFIG_MII is not set | ||
461 | # CONFIG_HAPPYMEAL is not set | ||
462 | # CONFIG_SUNGEM is not set | ||
463 | # CONFIG_CASSINI is not set | ||
464 | # CONFIG_NET_VENDOR_3COM is not set | ||
465 | # CONFIG_NET_TULIP is not set | ||
466 | # CONFIG_HP100 is not set | ||
467 | CONFIG_IBM_NEW_EMAC=y | ||
468 | CONFIG_IBM_NEW_EMAC_RXB=128 | ||
469 | CONFIG_IBM_NEW_EMAC_TXB=64 | ||
470 | CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32 | ||
471 | CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256 | ||
472 | CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0 | ||
473 | # CONFIG_IBM_NEW_EMAC_DEBUG is not set | ||
474 | CONFIG_IBM_NEW_EMAC_ZMII=y | ||
475 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
476 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
477 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
478 | # CONFIG_NET_PCI is not set | ||
479 | # CONFIG_B44 is not set | ||
448 | CONFIG_NETDEV_1000=y | 480 | CONFIG_NETDEV_1000=y |
449 | # CONFIG_ACENIC is not set | 481 | # CONFIG_ACENIC is not set |
450 | # CONFIG_DL2K is not set | 482 | # CONFIG_DL2K is not set |
451 | # CONFIG_E1000 is not set | 483 | # CONFIG_E1000 is not set |
484 | # CONFIG_E1000E is not set | ||
452 | # CONFIG_NS83820 is not set | 485 | # CONFIG_NS83820 is not set |
453 | # CONFIG_HAMACHI is not set | 486 | # CONFIG_HAMACHI is not set |
454 | # CONFIG_YELLOWFIN is not set | 487 | # CONFIG_YELLOWFIN is not set |
@@ -456,6 +489,7 @@ CONFIG_NETDEV_1000=y | |||
456 | # CONFIG_SIS190 is not set | 489 | # CONFIG_SIS190 is not set |
457 | # CONFIG_SKGE is not set | 490 | # CONFIG_SKGE is not set |
458 | # CONFIG_SKY2 is not set | 491 | # CONFIG_SKY2 is not set |
492 | # CONFIG_SK98LIN is not set | ||
459 | # CONFIG_VIA_VELOCITY is not set | 493 | # CONFIG_VIA_VELOCITY is not set |
460 | # CONFIG_TIGON3 is not set | 494 | # CONFIG_TIGON3 is not set |
461 | # CONFIG_BNX2 is not set | 495 | # CONFIG_BNX2 is not set |
@@ -464,11 +498,14 @@ CONFIG_NETDEV_1000=y | |||
464 | CONFIG_NETDEV_10000=y | 498 | CONFIG_NETDEV_10000=y |
465 | # CONFIG_CHELSIO_T1 is not set | 499 | # CONFIG_CHELSIO_T1 is not set |
466 | # CONFIG_CHELSIO_T3 is not set | 500 | # CONFIG_CHELSIO_T3 is not set |
501 | # CONFIG_IXGBE is not set | ||
467 | # CONFIG_IXGB is not set | 502 | # CONFIG_IXGB is not set |
468 | # CONFIG_S2IO is not set | 503 | # CONFIG_S2IO is not set |
469 | # CONFIG_MYRI10GE is not set | 504 | # CONFIG_MYRI10GE is not set |
470 | # CONFIG_NETXEN_NIC is not set | 505 | # CONFIG_NETXEN_NIC is not set |
506 | # CONFIG_NIU is not set | ||
471 | # CONFIG_MLX4_CORE is not set | 507 | # CONFIG_MLX4_CORE is not set |
508 | # CONFIG_TEHUTI is not set | ||
472 | # CONFIG_TR is not set | 509 | # CONFIG_TR is not set |
473 | 510 | ||
474 | # | 511 | # |
@@ -537,8 +574,6 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
537 | # CONFIG_GEN_RTC is not set | 574 | # CONFIG_GEN_RTC is not set |
538 | # CONFIG_R3964 is not set | 575 | # CONFIG_R3964 is not set |
539 | # CONFIG_APPLICOM is not set | 576 | # CONFIG_APPLICOM is not set |
540 | # CONFIG_AGP is not set | ||
541 | # CONFIG_DRM is not set | ||
542 | # CONFIG_RAW_DRIVER is not set | 577 | # CONFIG_RAW_DRIVER is not set |
543 | # CONFIG_TCG_TPM is not set | 578 | # CONFIG_TCG_TPM is not set |
544 | CONFIG_DEVPORT=y | 579 | CONFIG_DEVPORT=y |
@@ -554,6 +589,12 @@ CONFIG_DEVPORT=y | |||
554 | # CONFIG_HWMON is not set | 589 | # CONFIG_HWMON is not set |
555 | 590 | ||
556 | # | 591 | # |
592 | # Sonics Silicon Backplane | ||
593 | # | ||
594 | CONFIG_SSB_POSSIBLE=y | ||
595 | # CONFIG_SSB is not set | ||
596 | |||
597 | # | ||
557 | # Multifunction device drivers | 598 | # Multifunction device drivers |
558 | # | 599 | # |
559 | # CONFIG_MFD_SM501 is not set | 600 | # CONFIG_MFD_SM501 is not set |
@@ -568,16 +609,17 @@ CONFIG_DEVPORT=y | |||
568 | # | 609 | # |
569 | # Graphics support | 610 | # Graphics support |
570 | # | 611 | # |
612 | # CONFIG_AGP is not set | ||
613 | # CONFIG_DRM is not set | ||
614 | # CONFIG_VGASTATE is not set | ||
615 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
616 | # CONFIG_FB is not set | ||
571 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 617 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
572 | 618 | ||
573 | # | 619 | # |
574 | # Display device support | 620 | # Display device support |
575 | # | 621 | # |
576 | # CONFIG_DISPLAY_SUPPORT is not set | 622 | # CONFIG_DISPLAY_SUPPORT is not set |
577 | # CONFIG_VGASTATE is not set | ||
578 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
579 | # CONFIG_FB is not set | ||
580 | # CONFIG_FB_IBM_GXT4500 is not set | ||
581 | 623 | ||
582 | # | 624 | # |
583 | # Sound | 625 | # Sound |
@@ -604,19 +646,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
604 | # CONFIG_RTC_CLASS is not set | 646 | # CONFIG_RTC_CLASS is not set |
605 | 647 | ||
606 | # | 648 | # |
607 | # DMA Engine support | ||
608 | # | ||
609 | # CONFIG_DMA_ENGINE is not set | ||
610 | |||
611 | # | ||
612 | # DMA Clients | ||
613 | # | ||
614 | |||
615 | # | ||
616 | # DMA Devices | ||
617 | # | ||
618 | |||
619 | # | ||
620 | # Userspace I/O | 649 | # Userspace I/O |
621 | # | 650 | # |
622 | # CONFIG_UIO is not set | 651 | # CONFIG_UIO is not set |
@@ -668,7 +697,6 @@ CONFIG_SYSFS=y | |||
668 | CONFIG_TMPFS=y | 697 | CONFIG_TMPFS=y |
669 | # CONFIG_TMPFS_POSIX_ACL is not set | 698 | # CONFIG_TMPFS_POSIX_ACL is not set |
670 | # CONFIG_HUGETLB_PAGE is not set | 699 | # CONFIG_HUGETLB_PAGE is not set |
671 | CONFIG_RAMFS=y | ||
672 | # CONFIG_CONFIGFS_FS is not set | 700 | # CONFIG_CONFIGFS_FS is not set |
673 | 701 | ||
674 | # | 702 | # |
@@ -684,10 +712,12 @@ CONFIG_RAMFS=y | |||
684 | CONFIG_JFFS2_FS=y | 712 | CONFIG_JFFS2_FS=y |
685 | CONFIG_JFFS2_FS_DEBUG=0 | 713 | CONFIG_JFFS2_FS_DEBUG=0 |
686 | CONFIG_JFFS2_FS_WRITEBUFFER=y | 714 | CONFIG_JFFS2_FS_WRITEBUFFER=y |
715 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
687 | # CONFIG_JFFS2_SUMMARY is not set | 716 | # CONFIG_JFFS2_SUMMARY is not set |
688 | # CONFIG_JFFS2_FS_XATTR is not set | 717 | # CONFIG_JFFS2_FS_XATTR is not set |
689 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | 718 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set |
690 | CONFIG_JFFS2_ZLIB=y | 719 | CONFIG_JFFS2_ZLIB=y |
720 | # CONFIG_JFFS2_LZO is not set | ||
691 | CONFIG_JFFS2_RTIME=y | 721 | CONFIG_JFFS2_RTIME=y |
692 | # CONFIG_JFFS2_RUBIN is not set | 722 | # CONFIG_JFFS2_RUBIN is not set |
693 | CONFIG_CRAMFS=y | 723 | CONFIG_CRAMFS=y |
@@ -696,10 +726,7 @@ CONFIG_CRAMFS=y | |||
696 | # CONFIG_QNX4FS_FS is not set | 726 | # CONFIG_QNX4FS_FS is not set |
697 | # CONFIG_SYSV_FS is not set | 727 | # CONFIG_SYSV_FS is not set |
698 | # CONFIG_UFS_FS is not set | 728 | # CONFIG_UFS_FS is not set |
699 | 729 | CONFIG_NETWORK_FILESYSTEMS=y | |
700 | # | ||
701 | # Network File Systems | ||
702 | # | ||
703 | CONFIG_NFS_FS=y | 730 | CONFIG_NFS_FS=y |
704 | CONFIG_NFS_V3=y | 731 | CONFIG_NFS_V3=y |
705 | # CONFIG_NFS_V3_ACL is not set | 732 | # CONFIG_NFS_V3_ACL is not set |
@@ -725,15 +752,7 @@ CONFIG_SUNRPC=y | |||
725 | # | 752 | # |
726 | # CONFIG_PARTITION_ADVANCED is not set | 753 | # CONFIG_PARTITION_ADVANCED is not set |
727 | CONFIG_MSDOS_PARTITION=y | 754 | CONFIG_MSDOS_PARTITION=y |
728 | |||
729 | # | ||
730 | # Native Language Support | ||
731 | # | ||
732 | # CONFIG_NLS is not set | 755 | # CONFIG_NLS is not set |
733 | |||
734 | # | ||
735 | # Distributed Lock Manager | ||
736 | # | ||
737 | # CONFIG_DLM is not set | 756 | # CONFIG_DLM is not set |
738 | # CONFIG_UCC_SLOW is not set | 757 | # CONFIG_UCC_SLOW is not set |
739 | 758 | ||
@@ -787,6 +806,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
787 | # CONFIG_DEBUG_VM is not set | 806 | # CONFIG_DEBUG_VM is not set |
788 | # CONFIG_DEBUG_LIST is not set | 807 | # CONFIG_DEBUG_LIST is not set |
789 | CONFIG_FORCED_INLINING=y | 808 | CONFIG_FORCED_INLINING=y |
809 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
790 | # CONFIG_RCU_TORTURE_TEST is not set | 810 | # CONFIG_RCU_TORTURE_TEST is not set |
791 | # CONFIG_FAULT_INJECTION is not set | 811 | # CONFIG_FAULT_INJECTION is not set |
792 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 812 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
@@ -801,6 +821,7 @@ CONFIG_FORCED_INLINING=y | |||
801 | # | 821 | # |
802 | # CONFIG_KEYS is not set | 822 | # CONFIG_KEYS is not set |
803 | # CONFIG_SECURITY is not set | 823 | # CONFIG_SECURITY is not set |
824 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
804 | CONFIG_CRYPTO=y | 825 | CONFIG_CRYPTO=y |
805 | CONFIG_CRYPTO_ALGAPI=y | 826 | CONFIG_CRYPTO_ALGAPI=y |
806 | CONFIG_CRYPTO_BLKCIPHER=y | 827 | CONFIG_CRYPTO_BLKCIPHER=y |
@@ -820,6 +841,7 @@ CONFIG_CRYPTO_ECB=y | |||
820 | CONFIG_CRYPTO_CBC=y | 841 | CONFIG_CRYPTO_CBC=y |
821 | CONFIG_CRYPTO_PCBC=y | 842 | CONFIG_CRYPTO_PCBC=y |
822 | # CONFIG_CRYPTO_LRW is not set | 843 | # CONFIG_CRYPTO_LRW is not set |
844 | # CONFIG_CRYPTO_XTS is not set | ||
823 | # CONFIG_CRYPTO_CRYPTD is not set | 845 | # CONFIG_CRYPTO_CRYPTD is not set |
824 | CONFIG_CRYPTO_DES=y | 846 | CONFIG_CRYPTO_DES=y |
825 | # CONFIG_CRYPTO_FCRYPT is not set | 847 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -833,9 +855,12 @@ CONFIG_CRYPTO_DES=y | |||
833 | # CONFIG_CRYPTO_ARC4 is not set | 855 | # CONFIG_CRYPTO_ARC4 is not set |
834 | # CONFIG_CRYPTO_KHAZAD is not set | 856 | # CONFIG_CRYPTO_KHAZAD is not set |
835 | # CONFIG_CRYPTO_ANUBIS is not set | 857 | # CONFIG_CRYPTO_ANUBIS is not set |
858 | # CONFIG_CRYPTO_SEED is not set | ||
836 | # CONFIG_CRYPTO_DEFLATE is not set | 859 | # CONFIG_CRYPTO_DEFLATE is not set |
837 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 860 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
838 | # CONFIG_CRYPTO_CRC32C is not set | 861 | # CONFIG_CRYPTO_CRC32C is not set |
839 | # CONFIG_CRYPTO_CAMELLIA is not set | 862 | # CONFIG_CRYPTO_CAMELLIA is not set |
840 | # CONFIG_CRYPTO_TEST is not set | 863 | # CONFIG_CRYPTO_TEST is not set |
864 | # CONFIG_CRYPTO_AUTHENC is not set | ||
841 | # CONFIG_CRYPTO_HW is not set | 865 | # CONFIG_CRYPTO_HW is not set |
866 | # CONFIG_PPC_CLOCK is not set | ||
diff --git a/arch/powerpc/configs/walnut_defconfig b/arch/powerpc/configs/walnut_defconfig index 7724292cc06d..02896ecba490 100644 --- a/arch/powerpc/configs/walnut_defconfig +++ b/arch/powerpc/configs/walnut_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.23-rc4 | 3 | # Linux kernel version: 2.6.23 |
4 | # Wed Sep 5 12:06:37 2007 | 4 | # Thu Oct 18 12:54:18 2007 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -18,8 +18,13 @@ CONFIG_4xx=y | |||
18 | # CONFIG_PPC_MM_SLICES is not set | 18 | # CONFIG_PPC_MM_SLICES is not set |
19 | CONFIG_NOT_COHERENT_CACHE=y | 19 | CONFIG_NOT_COHERENT_CACHE=y |
20 | CONFIG_PPC32=y | 20 | CONFIG_PPC32=y |
21 | CONFIG_WORD_SIZE=32 | ||
21 | CONFIG_PPC_MERGE=y | 22 | CONFIG_PPC_MERGE=y |
22 | CONFIG_MMU=y | 23 | CONFIG_MMU=y |
24 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
25 | CONFIG_GENERIC_TIME=y | ||
26 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
27 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
23 | CONFIG_GENERIC_HARDIRQS=y | 28 | CONFIG_GENERIC_HARDIRQS=y |
24 | CONFIG_IRQ_PER_CPU=y | 29 | CONFIG_IRQ_PER_CPU=y |
25 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 30 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
@@ -63,6 +68,8 @@ CONFIG_POSIX_MQUEUE=y | |||
63 | # CONFIG_AUDIT is not set | 68 | # CONFIG_AUDIT is not set |
64 | # CONFIG_IKCONFIG is not set | 69 | # CONFIG_IKCONFIG is not set |
65 | CONFIG_LOG_BUF_SHIFT=14 | 70 | CONFIG_LOG_BUF_SHIFT=14 |
71 | CONFIG_FAIR_GROUP_SCHED=y | ||
72 | CONFIG_FAIR_USER_SCHED=y | ||
66 | CONFIG_SYSFS_DEPRECATED=y | 73 | CONFIG_SYSFS_DEPRECATED=y |
67 | # CONFIG_RELAY is not set | 74 | # CONFIG_RELAY is not set |
68 | CONFIG_BLK_DEV_INITRD=y | 75 | CONFIG_BLK_DEV_INITRD=y |
@@ -83,7 +90,6 @@ CONFIG_FUTEX=y | |||
83 | CONFIG_ANON_INODES=y | 90 | CONFIG_ANON_INODES=y |
84 | CONFIG_EPOLL=y | 91 | CONFIG_EPOLL=y |
85 | CONFIG_SIGNALFD=y | 92 | CONFIG_SIGNALFD=y |
86 | CONFIG_TIMERFD=y | ||
87 | CONFIG_EVENTFD=y | 93 | CONFIG_EVENTFD=y |
88 | CONFIG_SHMEM=y | 94 | CONFIG_SHMEM=y |
89 | CONFIG_VM_EVENT_COUNTERS=y | 95 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -127,7 +133,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
127 | # CONFIG_PPC_CELL is not set | 133 | # CONFIG_PPC_CELL is not set |
128 | # CONFIG_PPC_CELL_NATIVE is not set | 134 | # CONFIG_PPC_CELL_NATIVE is not set |
129 | # CONFIG_PQ2ADS is not set | 135 | # CONFIG_PQ2ADS is not set |
136 | # CONFIG_KILAUEA is not set | ||
130 | CONFIG_WALNUT=y | 137 | CONFIG_WALNUT=y |
138 | # CONFIG_XILINX_VIRTEX_GENERIC_BOARD is not set | ||
131 | CONFIG_405GP=y | 139 | CONFIG_405GP=y |
132 | CONFIG_IBM405_ERR77=y | 140 | CONFIG_IBM405_ERR77=y |
133 | CONFIG_IBM405_ERR51=y | 141 | CONFIG_IBM405_ERR51=y |
@@ -148,6 +156,10 @@ CONFIG_IBM405_ERR51=y | |||
148 | # Kernel options | 156 | # Kernel options |
149 | # | 157 | # |
150 | # CONFIG_HIGHMEM is not set | 158 | # CONFIG_HIGHMEM is not set |
159 | # CONFIG_TICK_ONESHOT is not set | ||
160 | # CONFIG_NO_HZ is not set | ||
161 | # CONFIG_HIGH_RES_TIMERS is not set | ||
162 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
151 | # CONFIG_HZ_100 is not set | 163 | # CONFIG_HZ_100 is not set |
152 | CONFIG_HZ_250=y | 164 | CONFIG_HZ_250=y |
153 | # CONFIG_HZ_300 is not set | 165 | # CONFIG_HZ_300 is not set |
@@ -169,6 +181,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
169 | CONFIG_FLATMEM=y | 181 | CONFIG_FLATMEM=y |
170 | CONFIG_FLAT_NODE_MEM_MAP=y | 182 | CONFIG_FLAT_NODE_MEM_MAP=y |
171 | # CONFIG_SPARSEMEM_STATIC is not set | 183 | # CONFIG_SPARSEMEM_STATIC is not set |
184 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
172 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 185 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
173 | CONFIG_RESOURCES_64BIT=y | 186 | CONFIG_RESOURCES_64BIT=y |
174 | CONFIG_ZONE_DMA_FLAG=1 | 187 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -177,6 +190,8 @@ CONFIG_VIRT_TO_BUS=y | |||
177 | CONFIG_PROC_DEVICETREE=y | 190 | CONFIG_PROC_DEVICETREE=y |
178 | # CONFIG_CMDLINE_BOOL is not set | 191 | # CONFIG_CMDLINE_BOOL is not set |
179 | # CONFIG_PM is not set | 192 | # CONFIG_PM is not set |
193 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
194 | CONFIG_HIBERNATION_UP_POSSIBLE=y | ||
180 | CONFIG_SECCOMP=y | 195 | CONFIG_SECCOMP=y |
181 | CONFIG_WANT_DEVICE_TREE=y | 196 | CONFIG_WANT_DEVICE_TREE=y |
182 | CONFIG_DEVICE_TREE="walnut.dts" | 197 | CONFIG_DEVICE_TREE="walnut.dts" |
@@ -190,10 +205,6 @@ CONFIG_ZONE_DMA=y | |||
190 | # CONFIG_PCI_DOMAINS is not set | 205 | # CONFIG_PCI_DOMAINS is not set |
191 | # CONFIG_PCI_SYSCALL is not set | 206 | # CONFIG_PCI_SYSCALL is not set |
192 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 207 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
193 | |||
194 | # | ||
195 | # PCCARD (PCMCIA/CardBus) support | ||
196 | # | ||
197 | # CONFIG_PCCARD is not set | 208 | # CONFIG_PCCARD is not set |
198 | 209 | ||
199 | # | 210 | # |
@@ -207,7 +218,7 @@ CONFIG_ZONE_DMA=y | |||
207 | CONFIG_HIGHMEM_START=0xfe000000 | 218 | CONFIG_HIGHMEM_START=0xfe000000 |
208 | CONFIG_LOWMEM_SIZE=0x30000000 | 219 | CONFIG_LOWMEM_SIZE=0x30000000 |
209 | CONFIG_KERNEL_START=0xc0000000 | 220 | CONFIG_KERNEL_START=0xc0000000 |
210 | CONFIG_TASK_SIZE=0x80000000 | 221 | CONFIG_TASK_SIZE=0xc0000000 |
211 | CONFIG_CONSISTENT_START=0xff100000 | 222 | CONFIG_CONSISTENT_START=0xff100000 |
212 | CONFIG_CONSISTENT_SIZE=0x00200000 | 223 | CONFIG_CONSISTENT_SIZE=0x00200000 |
213 | CONFIG_BOOT_LOAD=0x00400000 | 224 | CONFIG_BOOT_LOAD=0x00400000 |
@@ -244,6 +255,7 @@ CONFIG_IP_PNP_BOOTP=y | |||
244 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | 255 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set |
245 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | 256 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set |
246 | # CONFIG_INET_XFRM_MODE_BEET is not set | 257 | # CONFIG_INET_XFRM_MODE_BEET is not set |
258 | # CONFIG_INET_LRO is not set | ||
247 | CONFIG_INET_DIAG=y | 259 | CONFIG_INET_DIAG=y |
248 | CONFIG_INET_TCP_DIAG=y | 260 | CONFIG_INET_TCP_DIAG=y |
249 | # CONFIG_TCP_CONG_ADVANCED is not set | 261 | # CONFIG_TCP_CONG_ADVANCED is not set |
@@ -301,6 +313,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
301 | # | 313 | # |
302 | # Generic Driver Options | 314 | # Generic Driver Options |
303 | # | 315 | # |
316 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
304 | CONFIG_STANDALONE=y | 317 | CONFIG_STANDALONE=y |
305 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 318 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
306 | CONFIG_FW_LOADER=y | 319 | CONFIG_FW_LOADER=y |
@@ -328,6 +341,7 @@ CONFIG_MTD_BLOCK=m | |||
328 | # CONFIG_INFTL is not set | 341 | # CONFIG_INFTL is not set |
329 | # CONFIG_RFD_FTL is not set | 342 | # CONFIG_RFD_FTL is not set |
330 | # CONFIG_SSFDC is not set | 343 | # CONFIG_SSFDC is not set |
344 | # CONFIG_MTD_OOPS is not set | ||
331 | 345 | ||
332 | # | 346 | # |
333 | # RAM/ROM/Flash chip drivers | 347 | # RAM/ROM/Flash chip drivers |
@@ -360,7 +374,6 @@ CONFIG_MTD_CFI_UTIL=y | |||
360 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | 374 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set |
361 | # CONFIG_MTD_PHYSMAP is not set | 375 | # CONFIG_MTD_PHYSMAP is not set |
362 | CONFIG_MTD_PHYSMAP_OF=y | 376 | CONFIG_MTD_PHYSMAP_OF=y |
363 | # CONFIG_MTD_WALNUT is not set | ||
364 | # CONFIG_MTD_PLATRAM is not set | 377 | # CONFIG_MTD_PLATRAM is not set |
365 | 378 | ||
366 | # | 379 | # |
@@ -419,7 +432,22 @@ CONFIG_NETDEVICES=y | |||
419 | # CONFIG_MACVLAN is not set | 432 | # CONFIG_MACVLAN is not set |
420 | # CONFIG_EQUALIZER is not set | 433 | # CONFIG_EQUALIZER is not set |
421 | # CONFIG_TUN is not set | 434 | # CONFIG_TUN is not set |
422 | # CONFIG_NET_ETHERNET is not set | 435 | # CONFIG_VETH is not set |
436 | # CONFIG_PHYLIB is not set | ||
437 | CONFIG_NET_ETHERNET=y | ||
438 | # CONFIG_MII is not set | ||
439 | CONFIG_IBM_NEW_EMAC=y | ||
440 | CONFIG_IBM_NEW_EMAC_RXB=128 | ||
441 | CONFIG_IBM_NEW_EMAC_TXB=64 | ||
442 | CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32 | ||
443 | CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256 | ||
444 | CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0 | ||
445 | # CONFIG_IBM_NEW_EMAC_DEBUG is not set | ||
446 | CONFIG_IBM_NEW_EMAC_ZMII=y | ||
447 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
448 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
449 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
450 | # CONFIG_B44 is not set | ||
423 | CONFIG_NETDEV_1000=y | 451 | CONFIG_NETDEV_1000=y |
424 | CONFIG_NETDEV_10000=y | 452 | CONFIG_NETDEV_10000=y |
425 | 453 | ||
@@ -498,6 +526,12 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
498 | # CONFIG_HWMON is not set | 526 | # CONFIG_HWMON is not set |
499 | 527 | ||
500 | # | 528 | # |
529 | # Sonics Silicon Backplane | ||
530 | # | ||
531 | CONFIG_SSB_POSSIBLE=y | ||
532 | # CONFIG_SSB is not set | ||
533 | |||
534 | # | ||
501 | # Multifunction device drivers | 535 | # Multifunction device drivers |
502 | # | 536 | # |
503 | # CONFIG_MFD_SM501 is not set | 537 | # CONFIG_MFD_SM501 is not set |
@@ -512,16 +546,15 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
512 | # | 546 | # |
513 | # Graphics support | 547 | # Graphics support |
514 | # | 548 | # |
549 | # CONFIG_VGASTATE is not set | ||
550 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
551 | # CONFIG_FB is not set | ||
515 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 552 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
516 | 553 | ||
517 | # | 554 | # |
518 | # Display device support | 555 | # Display device support |
519 | # | 556 | # |
520 | # CONFIG_DISPLAY_SUPPORT is not set | 557 | # CONFIG_DISPLAY_SUPPORT is not set |
521 | # CONFIG_VGASTATE is not set | ||
522 | CONFIG_VIDEO_OUTPUT_CONTROL=m | ||
523 | # CONFIG_FB is not set | ||
524 | # CONFIG_FB_IBM_GXT4500 is not set | ||
525 | 558 | ||
526 | # | 559 | # |
527 | # Sound | 560 | # Sound |
@@ -546,19 +579,6 @@ CONFIG_USB_SUPPORT=y | |||
546 | # CONFIG_RTC_CLASS is not set | 579 | # CONFIG_RTC_CLASS is not set |
547 | 580 | ||
548 | # | 581 | # |
549 | # DMA Engine support | ||
550 | # | ||
551 | # CONFIG_DMA_ENGINE is not set | ||
552 | |||
553 | # | ||
554 | # DMA Clients | ||
555 | # | ||
556 | |||
557 | # | ||
558 | # DMA Devices | ||
559 | # | ||
560 | |||
561 | # | ||
562 | # Userspace I/O | 582 | # Userspace I/O |
563 | # | 583 | # |
564 | # CONFIG_UIO is not set | 584 | # CONFIG_UIO is not set |
@@ -610,7 +630,6 @@ CONFIG_SYSFS=y | |||
610 | CONFIG_TMPFS=y | 630 | CONFIG_TMPFS=y |
611 | # CONFIG_TMPFS_POSIX_ACL is not set | 631 | # CONFIG_TMPFS_POSIX_ACL is not set |
612 | # CONFIG_HUGETLB_PAGE is not set | 632 | # CONFIG_HUGETLB_PAGE is not set |
613 | CONFIG_RAMFS=y | ||
614 | # CONFIG_CONFIGFS_FS is not set | 633 | # CONFIG_CONFIGFS_FS is not set |
615 | 634 | ||
616 | # | 635 | # |
@@ -630,10 +649,7 @@ CONFIG_CRAMFS=y | |||
630 | # CONFIG_QNX4FS_FS is not set | 649 | # CONFIG_QNX4FS_FS is not set |
631 | # CONFIG_SYSV_FS is not set | 650 | # CONFIG_SYSV_FS is not set |
632 | # CONFIG_UFS_FS is not set | 651 | # CONFIG_UFS_FS is not set |
633 | 652 | CONFIG_NETWORK_FILESYSTEMS=y | |
634 | # | ||
635 | # Network File Systems | ||
636 | # | ||
637 | CONFIG_NFS_FS=y | 653 | CONFIG_NFS_FS=y |
638 | CONFIG_NFS_V3=y | 654 | CONFIG_NFS_V3=y |
639 | # CONFIG_NFS_V3_ACL is not set | 655 | # CONFIG_NFS_V3_ACL is not set |
@@ -659,15 +675,7 @@ CONFIG_SUNRPC=y | |||
659 | # | 675 | # |
660 | # CONFIG_PARTITION_ADVANCED is not set | 676 | # CONFIG_PARTITION_ADVANCED is not set |
661 | CONFIG_MSDOS_PARTITION=y | 677 | CONFIG_MSDOS_PARTITION=y |
662 | |||
663 | # | ||
664 | # Native Language Support | ||
665 | # | ||
666 | # CONFIG_NLS is not set | 678 | # CONFIG_NLS is not set |
667 | |||
668 | # | ||
669 | # Distributed Lock Manager | ||
670 | # | ||
671 | # CONFIG_DLM is not set | 679 | # CONFIG_DLM is not set |
672 | # CONFIG_UCC_SLOW is not set | 680 | # CONFIG_UCC_SLOW is not set |
673 | 681 | ||
@@ -720,6 +728,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
720 | # CONFIG_DEBUG_VM is not set | 728 | # CONFIG_DEBUG_VM is not set |
721 | # CONFIG_DEBUG_LIST is not set | 729 | # CONFIG_DEBUG_LIST is not set |
722 | CONFIG_FORCED_INLINING=y | 730 | CONFIG_FORCED_INLINING=y |
731 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
723 | # CONFIG_RCU_TORTURE_TEST is not set | 732 | # CONFIG_RCU_TORTURE_TEST is not set |
724 | # CONFIG_FAULT_INJECTION is not set | 733 | # CONFIG_FAULT_INJECTION is not set |
725 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 734 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
@@ -734,6 +743,7 @@ CONFIG_FORCED_INLINING=y | |||
734 | # | 743 | # |
735 | # CONFIG_KEYS is not set | 744 | # CONFIG_KEYS is not set |
736 | # CONFIG_SECURITY is not set | 745 | # CONFIG_SECURITY is not set |
746 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
737 | CONFIG_CRYPTO=y | 747 | CONFIG_CRYPTO=y |
738 | CONFIG_CRYPTO_ALGAPI=y | 748 | CONFIG_CRYPTO_ALGAPI=y |
739 | CONFIG_CRYPTO_BLKCIPHER=y | 749 | CONFIG_CRYPTO_BLKCIPHER=y |
@@ -753,6 +763,7 @@ CONFIG_CRYPTO_ECB=y | |||
753 | CONFIG_CRYPTO_CBC=y | 763 | CONFIG_CRYPTO_CBC=y |
754 | CONFIG_CRYPTO_PCBC=y | 764 | CONFIG_CRYPTO_PCBC=y |
755 | # CONFIG_CRYPTO_LRW is not set | 765 | # CONFIG_CRYPTO_LRW is not set |
766 | # CONFIG_CRYPTO_XTS is not set | ||
756 | # CONFIG_CRYPTO_CRYPTD is not set | 767 | # CONFIG_CRYPTO_CRYPTD is not set |
757 | CONFIG_CRYPTO_DES=y | 768 | CONFIG_CRYPTO_DES=y |
758 | # CONFIG_CRYPTO_FCRYPT is not set | 769 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -766,9 +777,12 @@ CONFIG_CRYPTO_DES=y | |||
766 | # CONFIG_CRYPTO_ARC4 is not set | 777 | # CONFIG_CRYPTO_ARC4 is not set |
767 | # CONFIG_CRYPTO_KHAZAD is not set | 778 | # CONFIG_CRYPTO_KHAZAD is not set |
768 | # CONFIG_CRYPTO_ANUBIS is not set | 779 | # CONFIG_CRYPTO_ANUBIS is not set |
780 | # CONFIG_CRYPTO_SEED is not set | ||
769 | # CONFIG_CRYPTO_DEFLATE is not set | 781 | # CONFIG_CRYPTO_DEFLATE is not set |
770 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 782 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
771 | # CONFIG_CRYPTO_CRC32C is not set | 783 | # CONFIG_CRYPTO_CRC32C is not set |
772 | # CONFIG_CRYPTO_CAMELLIA is not set | 784 | # CONFIG_CRYPTO_CAMELLIA is not set |
773 | # CONFIG_CRYPTO_TEST is not set | 785 | # CONFIG_CRYPTO_TEST is not set |
786 | # CONFIG_CRYPTO_AUTHENC is not set | ||
774 | CONFIG_CRYPTO_HW=y | 787 | CONFIG_CRYPTO_HW=y |
788 | # CONFIG_PPC_CLOCK is not set | ||
diff --git a/arch/powerpc/kernel/dma_64.c b/arch/powerpc/kernel/dma_64.c index 9001104b56b0..14206e3f0819 100644 --- a/arch/powerpc/kernel/dma_64.c +++ b/arch/powerpc/kernel/dma_64.c | |||
@@ -161,8 +161,7 @@ static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, | |||
161 | int i; | 161 | int i; |
162 | 162 | ||
163 | for_each_sg(sgl, sg, nents, i) { | 163 | for_each_sg(sgl, sg, nents, i) { |
164 | sg->dma_address = (page_to_phys(sg->page) + sg->offset) | | 164 | sg->dma_address = sg_phys(sg) | dma_direct_offset; |
165 | dma_direct_offset; | ||
166 | sg->dma_length = sg->length; | 165 | sg->dma_length = sg->length; |
167 | } | 166 | } |
168 | 167 | ||
diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c index 289d7e935918..72fd87156b24 100644 --- a/arch/powerpc/kernel/ibmebus.c +++ b/arch/powerpc/kernel/ibmebus.c | |||
@@ -102,8 +102,7 @@ static int ibmebus_map_sg(struct device *dev, | |||
102 | int i; | 102 | int i; |
103 | 103 | ||
104 | for_each_sg(sgl, sg, nents, i) { | 104 | for_each_sg(sgl, sg, nents, i) { |
105 | sg->dma_address = (dma_addr_t)page_address(sg->page) | 105 | sg->dma_address = (dma_addr_t) sg_virt(sg); |
106 | + sg->offset; | ||
107 | sg->dma_length = sg->length; | 106 | sg->dma_length = sg->length; |
108 | } | 107 | } |
109 | 108 | ||
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c index 306a6f75b6c5..2d0c9ef555e9 100644 --- a/arch/powerpc/kernel/iommu.c +++ b/arch/powerpc/kernel/iommu.c | |||
@@ -307,7 +307,7 @@ int iommu_map_sg(struct iommu_table *tbl, struct scatterlist *sglist, | |||
307 | continue; | 307 | continue; |
308 | } | 308 | } |
309 | /* Allocate iommu entries for that segment */ | 309 | /* Allocate iommu entries for that segment */ |
310 | vaddr = (unsigned long)page_address(s->page) + s->offset; | 310 | vaddr = (unsigned long) sg_virt(s); |
311 | npages = iommu_num_pages(vaddr, slen); | 311 | npages = iommu_num_pages(vaddr, slen); |
312 | entry = iommu_range_alloc(tbl, npages, &handle, mask >> IOMMU_PAGE_SHIFT, 0); | 312 | entry = iommu_range_alloc(tbl, npages, &handle, mask >> IOMMU_PAGE_SHIFT, 0); |
313 | 313 | ||
diff --git a/arch/powerpc/platforms/40x/Kconfig b/arch/powerpc/platforms/40x/Kconfig index 47b3b0a3864a..8f6699fcc145 100644 --- a/arch/powerpc/platforms/40x/Kconfig +++ b/arch/powerpc/platforms/40x/Kconfig | |||
@@ -100,6 +100,7 @@ config 405GP | |||
100 | bool | 100 | bool |
101 | select IBM405_ERR77 | 101 | select IBM405_ERR77 |
102 | select IBM405_ERR51 | 102 | select IBM405_ERR51 |
103 | select IBM_NEW_EMAC_ZMII | ||
103 | 104 | ||
104 | config 405EP | 105 | config 405EP |
105 | bool | 106 | bool |
diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig index 51f3ea40a285..8390cc164135 100644 --- a/arch/powerpc/platforms/44x/Kconfig +++ b/arch/powerpc/platforms/44x/Kconfig | |||
@@ -43,14 +43,14 @@ config 440EP | |||
43 | bool | 43 | bool |
44 | select PPC_FPU | 44 | select PPC_FPU |
45 | select IBM440EP_ERR42 | 45 | select IBM440EP_ERR42 |
46 | # select IBM_NEW_EMAC_ZMII | 46 | select IBM_NEW_EMAC_ZMII |
47 | 47 | ||
48 | config 440EPX | 48 | config 440EPX |
49 | bool | 49 | bool |
50 | select PPC_FPU | 50 | select PPC_FPU |
51 | # Disabled until the new EMAC Driver is merged. | 51 | select IBM_NEW_EMAC_EMAC4 |
52 | # select IBM_NEW_EMAC_EMAC4 | 52 | select IBM_NEW_EMAC_RGMII |
53 | # select IBM_NEW_EMAC_ZMII | 53 | select IBM_NEW_EMAC_ZMII |
54 | 54 | ||
55 | config 440GP | 55 | config 440GP |
56 | bool | 56 | bool |
diff --git a/arch/powerpc/platforms/52xx/lite5200.c b/arch/powerpc/platforms/52xx/lite5200.c index 65b7ae426238..25d2bfa3d9dc 100644 --- a/arch/powerpc/platforms/52xx/lite5200.c +++ b/arch/powerpc/platforms/52xx/lite5200.c | |||
@@ -145,6 +145,9 @@ static void __init lite5200_setup_arch(void) | |||
145 | /* Some mpc5200 & mpc5200b related configuration */ | 145 | /* Some mpc5200 & mpc5200b related configuration */ |
146 | mpc5200_setup_xlb_arbiter(); | 146 | mpc5200_setup_xlb_arbiter(); |
147 | 147 | ||
148 | /* Map wdt for mpc52xx_restart() */ | ||
149 | mpc52xx_map_wdt(); | ||
150 | |||
148 | #ifdef CONFIG_PM | 151 | #ifdef CONFIG_PM |
149 | mpc52xx_suspend.board_suspend_prepare = lite5200_suspend_prepare; | 152 | mpc52xx_suspend.board_suspend_prepare = lite5200_suspend_prepare; |
150 | mpc52xx_suspend.board_resume_finish = lite5200_resume_finish; | 153 | mpc52xx_suspend.board_resume_finish = lite5200_resume_finish; |
@@ -183,5 +186,6 @@ define_machine(lite5200) { | |||
183 | .init = mpc52xx_declare_of_platform_devices, | 186 | .init = mpc52xx_declare_of_platform_devices, |
184 | .init_IRQ = mpc52xx_init_irq, | 187 | .init_IRQ = mpc52xx_init_irq, |
185 | .get_irq = mpc52xx_get_irq, | 188 | .get_irq = mpc52xx_get_irq, |
189 | .restart = mpc52xx_restart, | ||
186 | .calibrate_decr = generic_calibrate_decr, | 190 | .calibrate_decr = generic_calibrate_decr, |
187 | }; | 191 | }; |
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c index 3bc201e07e6b..9850685c5429 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_common.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c | |||
@@ -18,15 +18,20 @@ | |||
18 | #include <asm/prom.h> | 18 | #include <asm/prom.h> |
19 | #include <asm/mpc52xx.h> | 19 | #include <asm/mpc52xx.h> |
20 | 20 | ||
21 | /* | ||
22 | * This variable is mapped in mpc52xx_map_wdt() and used in mpc52xx_restart(). | ||
23 | * Permanent mapping is required because mpc52xx_restart() can be called | ||
24 | * from interrupt context while node mapping (which calls ioremap()) | ||
25 | * cannot be used at such point. | ||
26 | */ | ||
27 | static volatile struct mpc52xx_gpt *mpc52xx_wdt = NULL; | ||
21 | 28 | ||
22 | void __iomem * | 29 | static void __iomem * |
23 | mpc52xx_find_and_map(const char *compatible) | 30 | mpc52xx_map_node(struct device_node *ofn) |
24 | { | 31 | { |
25 | struct device_node *ofn; | ||
26 | const u32 *regaddr_p; | 32 | const u32 *regaddr_p; |
27 | u64 regaddr64, size64; | 33 | u64 regaddr64, size64; |
28 | 34 | ||
29 | ofn = of_find_compatible_node(NULL, NULL, compatible); | ||
30 | if (!ofn) | 35 | if (!ofn) |
31 | return NULL; | 36 | return NULL; |
32 | 37 | ||
@@ -42,8 +47,23 @@ mpc52xx_find_and_map(const char *compatible) | |||
42 | 47 | ||
43 | return ioremap((u32)regaddr64, (u32)size64); | 48 | return ioremap((u32)regaddr64, (u32)size64); |
44 | } | 49 | } |
50 | |||
51 | void __iomem * | ||
52 | mpc52xx_find_and_map(const char *compatible) | ||
53 | { | ||
54 | return mpc52xx_map_node( | ||
55 | of_find_compatible_node(NULL, NULL, compatible)); | ||
56 | } | ||
57 | |||
45 | EXPORT_SYMBOL(mpc52xx_find_and_map); | 58 | EXPORT_SYMBOL(mpc52xx_find_and_map); |
46 | 59 | ||
60 | void __iomem * | ||
61 | mpc52xx_find_and_map_path(const char *path) | ||
62 | { | ||
63 | return mpc52xx_map_node(of_find_node_by_path(path)); | ||
64 | } | ||
65 | |||
66 | EXPORT_SYMBOL(mpc52xx_find_and_map_path); | ||
47 | 67 | ||
48 | /** | 68 | /** |
49 | * mpc52xx_find_ipb_freq - Find the IPB bus frequency for a device | 69 | * mpc52xx_find_ipb_freq - Find the IPB bus frequency for a device |
@@ -113,3 +133,46 @@ mpc52xx_declare_of_platform_devices(void) | |||
113 | "Error while probing of_platform bus\n"); | 133 | "Error while probing of_platform bus\n"); |
114 | } | 134 | } |
115 | 135 | ||
136 | void __init | ||
137 | mpc52xx_map_wdt(void) | ||
138 | { | ||
139 | const void *has_wdt; | ||
140 | struct device_node *np; | ||
141 | |||
142 | /* mpc52xx_wdt is mapped here and used in mpc52xx_restart, | ||
143 | * possibly from a interrupt context. wdt is only implement | ||
144 | * on a gpt0, so check has-wdt property before mapping. | ||
145 | */ | ||
146 | for_each_compatible_node(np, NULL, "fsl,mpc5200-gpt") { | ||
147 | has_wdt = of_get_property(np, "fsl,has-wdt", NULL); | ||
148 | if (has_wdt) { | ||
149 | mpc52xx_wdt = mpc52xx_map_node(np); | ||
150 | return; | ||
151 | } | ||
152 | } | ||
153 | for_each_compatible_node(np, NULL, "mpc5200-gpt") { | ||
154 | has_wdt = of_get_property(np, "has-wdt", NULL); | ||
155 | if (has_wdt) { | ||
156 | mpc52xx_wdt = mpc52xx_map_node(np); | ||
157 | return; | ||
158 | } | ||
159 | } | ||
160 | } | ||
161 | |||
162 | void | ||
163 | mpc52xx_restart(char *cmd) | ||
164 | { | ||
165 | local_irq_disable(); | ||
166 | |||
167 | /* Turn on the watchdog and wait for it to expire. | ||
168 | * It effectively does a reset. */ | ||
169 | if (mpc52xx_wdt) { | ||
170 | out_be32(&mpc52xx_wdt->mode, 0x00000000); | ||
171 | out_be32(&mpc52xx_wdt->count, 0x000000ff); | ||
172 | out_be32(&mpc52xx_wdt->mode, 0x00009004); | ||
173 | } else | ||
174 | printk("mpc52xx_restart: Can't access wdt. " | ||
175 | "Restart impossible, system halted.\n"); | ||
176 | |||
177 | while (1); | ||
178 | } | ||
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype index 3c7325ec36ec..99684ea606af 100644 --- a/arch/powerpc/platforms/Kconfig.cputype +++ b/arch/powerpc/platforms/Kconfig.cputype | |||
@@ -48,6 +48,7 @@ config 44x | |||
48 | bool "AMCC 44x" | 48 | bool "AMCC 44x" |
49 | select PPC_DCR_NATIVE | 49 | select PPC_DCR_NATIVE |
50 | select WANT_DEVICE_TREE | 50 | select WANT_DEVICE_TREE |
51 | select PPC_UDBG_16550 | ||
51 | 52 | ||
52 | config E200 | 53 | config E200 |
53 | bool "Freescale e200" | 54 | bool "Freescale e200" |
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c index 07e64b48e7fc..6405f4a36763 100644 --- a/arch/powerpc/platforms/ps3/system-bus.c +++ b/arch/powerpc/platforms/ps3/system-bus.c | |||
@@ -628,9 +628,8 @@ static int ps3_sb_map_sg(struct device *_dev, struct scatterlist *sgl, | |||
628 | int i; | 628 | int i; |
629 | 629 | ||
630 | for_each_sg(sgl, sg, nents, i) { | 630 | for_each_sg(sgl, sg, nents, i) { |
631 | int result = ps3_dma_map(dev->d_region, | 631 | int result = ps3_dma_map(dev->d_region, sg_phys(sg), |
632 | page_to_phys(sg->page) + sg->offset, sg->length, | 632 | sg->length, &sg->dma_address, 0); |
633 | &sg->dma_address, 0); | ||
634 | 633 | ||
635 | if (result) { | 634 | if (result) { |
636 | pr_debug("%s:%d: ps3_dma_map failed (%d)\n", | 635 | pr_debug("%s:%d: ps3_dma_map failed (%d)\n", |
diff --git a/arch/powerpc/sysdev/bestcomm/bestcomm.c b/arch/powerpc/sysdev/bestcomm/bestcomm.c index 48492a83e5a7..740ad73ce5cc 100644 --- a/arch/powerpc/sysdev/bestcomm/bestcomm.c +++ b/arch/powerpc/sysdev/bestcomm/bestcomm.c | |||
@@ -269,6 +269,7 @@ bcom_engine_init(void) | |||
269 | int task; | 269 | int task; |
270 | phys_addr_t tdt_pa, ctx_pa, var_pa, fdt_pa; | 270 | phys_addr_t tdt_pa, ctx_pa, var_pa, fdt_pa; |
271 | unsigned int tdt_size, ctx_size, var_size, fdt_size; | 271 | unsigned int tdt_size, ctx_size, var_size, fdt_size; |
272 | u16 regval; | ||
272 | 273 | ||
273 | /* Allocate & clear SRAM zones for FDT, TDTs, contexts and vars/incs */ | 274 | /* Allocate & clear SRAM zones for FDT, TDTs, contexts and vars/incs */ |
274 | tdt_size = BCOM_MAX_TASKS * sizeof(struct bcom_tdt); | 275 | tdt_size = BCOM_MAX_TASKS * sizeof(struct bcom_tdt); |
@@ -319,9 +320,11 @@ bcom_engine_init(void) | |||
319 | /* Init 'always' initiator */ | 320 | /* Init 'always' initiator */ |
320 | out_8(&bcom_eng->regs->ipr[BCOM_INITIATOR_ALWAYS], BCOM_IPR_ALWAYS); | 321 | out_8(&bcom_eng->regs->ipr[BCOM_INITIATOR_ALWAYS], BCOM_IPR_ALWAYS); |
321 | 322 | ||
322 | /* Disable COMM Bus Prefetch, apparently it's not reliable yet */ | 323 | /* Disable COMM Bus Prefetch on the original 5200; it's broken */ |
323 | /* FIXME: This should be done on 5200 and not 5200B ... */ | 324 | if ((mfspr(SPRN_SVR) & MPC5200_SVR_MASK) == MPC5200_SVR) { |
324 | out_be16(&bcom_eng->regs->PtdCntrl, in_be16(&bcom_eng->regs->PtdCntrl) | 1); | 325 | regval = in_be16(&bcom_eng->regs->PtdCntrl); |
326 | out_be16(&bcom_eng->regs->PtdCntrl, regval | 1); | ||
327 | } | ||
325 | 328 | ||
326 | /* Init lock */ | 329 | /* Init lock */ |
327 | spin_lock_init(&bcom_eng->lock); | 330 | spin_lock_init(&bcom_eng->lock); |
diff --git a/arch/ppc/boot/Makefile b/arch/ppc/boot/Makefile index 487dc66dcc74..500497e3c72d 100644 --- a/arch/ppc/boot/Makefile +++ b/arch/ppc/boot/Makefile | |||
@@ -13,6 +13,8 @@ | |||
13 | # modified by Cort (cort@cs.nmt.edu) | 13 | # modified by Cort (cort@cs.nmt.edu) |
14 | # | 14 | # |
15 | 15 | ||
16 | # KBUILD_CFLAGS used when building rest of boot (takes effect recursively) | ||
17 | KBUILD_CFLAGS += -fno-builtin -D__BOOTER__ -Iarch/$(ARCH)/boot/include | ||
16 | HOSTCFLAGS += -Iarch/$(ARCH)/boot/include | 18 | HOSTCFLAGS += -Iarch/$(ARCH)/boot/include |
17 | 19 | ||
18 | BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd | 20 | BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd |
diff --git a/arch/s390/defconfig b/arch/s390/defconfig index 2aae23dba4bb..ece7b99da895 100644 --- a/arch/s390/defconfig +++ b/arch/s390/defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22 | 3 | # Linux kernel version: 2.6.23 |
4 | # Tue Jul 17 12:50:23 2007 | 4 | # Mon Oct 22 12:10:44 2007 |
5 | # | 5 | # |
6 | CONFIG_MMU=y | 6 | CONFIG_MMU=y |
7 | CONFIG_ZONE_DMA=y | 7 | CONFIG_ZONE_DMA=y |
@@ -19,15 +19,11 @@ CONFIG_S390=y | |||
19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
20 | 20 | ||
21 | # | 21 | # |
22 | # Code maturity level options | 22 | # General setup |
23 | # | 23 | # |
24 | CONFIG_EXPERIMENTAL=y | 24 | CONFIG_EXPERIMENTAL=y |
25 | CONFIG_LOCK_KERNEL=y | 25 | CONFIG_LOCK_KERNEL=y |
26 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
27 | |||
28 | # | ||
29 | # General setup | ||
30 | # | ||
31 | CONFIG_LOCALVERSION="" | 27 | CONFIG_LOCALVERSION="" |
32 | CONFIG_LOCALVERSION_AUTO=y | 28 | CONFIG_LOCALVERSION_AUTO=y |
33 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
@@ -42,7 +38,14 @@ CONFIG_AUDIT=y | |||
42 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
43 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
44 | CONFIG_LOG_BUF_SHIFT=17 | 40 | CONFIG_LOG_BUF_SHIFT=17 |
41 | CONFIG_CGROUPS=y | ||
42 | # CONFIG_CGROUP_DEBUG is not set | ||
43 | CONFIG_CGROUP_NS=y | ||
44 | CONFIG_CGROUP_CPUACCT=y | ||
45 | # CONFIG_CPUSETS is not set | 45 | # CONFIG_CPUSETS is not set |
46 | CONFIG_FAIR_GROUP_SCHED=y | ||
47 | CONFIG_FAIR_USER_SCHED=y | ||
48 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
46 | CONFIG_SYSFS_DEPRECATED=y | 49 | CONFIG_SYSFS_DEPRECATED=y |
47 | # CONFIG_RELAY is not set | 50 | # CONFIG_RELAY is not set |
48 | CONFIG_BLK_DEV_INITRD=y | 51 | CONFIG_BLK_DEV_INITRD=y |
@@ -63,7 +66,6 @@ CONFIG_FUTEX=y | |||
63 | CONFIG_ANON_INODES=y | 66 | CONFIG_ANON_INODES=y |
64 | CONFIG_EPOLL=y | 67 | CONFIG_EPOLL=y |
65 | CONFIG_SIGNALFD=y | 68 | CONFIG_SIGNALFD=y |
66 | CONFIG_TIMERFD=y | ||
67 | CONFIG_EVENTFD=y | 69 | CONFIG_EVENTFD=y |
68 | CONFIG_SHMEM=y | 70 | CONFIG_SHMEM=y |
69 | CONFIG_VM_EVENT_COUNTERS=y | 71 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -83,6 +85,7 @@ CONFIG_STOP_MACHINE=y | |||
83 | CONFIG_BLOCK=y | 85 | CONFIG_BLOCK=y |
84 | # CONFIG_BLK_DEV_IO_TRACE is not set | 86 | # CONFIG_BLK_DEV_IO_TRACE is not set |
85 | CONFIG_BLK_DEV_BSG=y | 87 | CONFIG_BLK_DEV_BSG=y |
88 | CONFIG_BLOCK_COMPAT=y | ||
86 | 89 | ||
87 | # | 90 | # |
88 | # IO Schedulers | 91 | # IO Schedulers |
@@ -108,7 +111,6 @@ CONFIG_64BIT=y | |||
108 | CONFIG_SMP=y | 111 | CONFIG_SMP=y |
109 | CONFIG_NR_CPUS=32 | 112 | CONFIG_NR_CPUS=32 |
110 | CONFIG_HOTPLUG_CPU=y | 113 | CONFIG_HOTPLUG_CPU=y |
111 | CONFIG_DEFAULT_MIGRATION_COST=1000000 | ||
112 | CONFIG_COMPAT=y | 114 | CONFIG_COMPAT=y |
113 | CONFIG_SYSVIPC_COMPAT=y | 115 | CONFIG_SYSVIPC_COMPAT=y |
114 | CONFIG_AUDIT_ARCH=y | 116 | CONFIG_AUDIT_ARCH=y |
@@ -143,9 +145,11 @@ CONFIG_FLATMEM_MANUAL=y | |||
143 | CONFIG_FLATMEM=y | 145 | CONFIG_FLATMEM=y |
144 | CONFIG_FLAT_NODE_MEM_MAP=y | 146 | CONFIG_FLAT_NODE_MEM_MAP=y |
145 | # CONFIG_SPARSEMEM_STATIC is not set | 147 | # CONFIG_SPARSEMEM_STATIC is not set |
148 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
146 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 149 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
147 | CONFIG_RESOURCES_64BIT=y | 150 | CONFIG_RESOURCES_64BIT=y |
148 | CONFIG_ZONE_DMA_FLAG=1 | 151 | CONFIG_ZONE_DMA_FLAG=1 |
152 | CONFIG_BOUNCE=y | ||
149 | CONFIG_VIRT_TO_BUS=y | 153 | CONFIG_VIRT_TO_BUS=y |
150 | CONFIG_HOLES_IN_ZONE=y | 154 | CONFIG_HOLES_IN_ZONE=y |
151 | 155 | ||
@@ -219,12 +223,14 @@ CONFIG_INET_TUNNEL=y | |||
219 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 223 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
220 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 224 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
221 | CONFIG_INET_XFRM_MODE_BEET=y | 225 | CONFIG_INET_XFRM_MODE_BEET=y |
226 | CONFIG_INET_LRO=y | ||
222 | CONFIG_INET_DIAG=y | 227 | CONFIG_INET_DIAG=y |
223 | CONFIG_INET_TCP_DIAG=y | 228 | CONFIG_INET_TCP_DIAG=y |
224 | # CONFIG_TCP_CONG_ADVANCED is not set | 229 | # CONFIG_TCP_CONG_ADVANCED is not set |
225 | CONFIG_TCP_CONG_CUBIC=y | 230 | CONFIG_TCP_CONG_CUBIC=y |
226 | CONFIG_DEFAULT_TCP_CONG="cubic" | 231 | CONFIG_DEFAULT_TCP_CONG="cubic" |
227 | # CONFIG_TCP_MD5SIG is not set | 232 | # CONFIG_TCP_MD5SIG is not set |
233 | # CONFIG_IP_VS is not set | ||
228 | CONFIG_IPV6=y | 234 | CONFIG_IPV6=y |
229 | # CONFIG_IPV6_PRIVACY is not set | 235 | # CONFIG_IPV6_PRIVACY is not set |
230 | # CONFIG_IPV6_ROUTER_PREF is not set | 236 | # CONFIG_IPV6_ROUTER_PREF is not set |
@@ -243,7 +249,48 @@ CONFIG_IPV6_SIT=y | |||
243 | # CONFIG_IPV6_TUNNEL is not set | 249 | # CONFIG_IPV6_TUNNEL is not set |
244 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 250 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
245 | # CONFIG_NETWORK_SECMARK is not set | 251 | # CONFIG_NETWORK_SECMARK is not set |
246 | # CONFIG_NETFILTER is not set | 252 | CONFIG_NETFILTER=y |
253 | # CONFIG_NETFILTER_DEBUG is not set | ||
254 | |||
255 | # | ||
256 | # Core Netfilter Configuration | ||
257 | # | ||
258 | CONFIG_NETFILTER_NETLINK=m | ||
259 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
260 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
261 | CONFIG_NF_CONNTRACK_ENABLED=m | ||
262 | CONFIG_NF_CONNTRACK=m | ||
263 | # CONFIG_NF_CT_ACCT is not set | ||
264 | # CONFIG_NF_CONNTRACK_MARK is not set | ||
265 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
266 | # CONFIG_NF_CT_PROTO_SCTP is not set | ||
267 | # CONFIG_NF_CT_PROTO_UDPLITE is not set | ||
268 | # CONFIG_NF_CONNTRACK_AMANDA is not set | ||
269 | # CONFIG_NF_CONNTRACK_FTP is not set | ||
270 | # CONFIG_NF_CONNTRACK_H323 is not set | ||
271 | # CONFIG_NF_CONNTRACK_IRC is not set | ||
272 | # CONFIG_NF_CONNTRACK_NETBIOS_NS is not set | ||
273 | # CONFIG_NF_CONNTRACK_PPTP is not set | ||
274 | # CONFIG_NF_CONNTRACK_SANE is not set | ||
275 | # CONFIG_NF_CONNTRACK_SIP is not set | ||
276 | # CONFIG_NF_CONNTRACK_TFTP is not set | ||
277 | # CONFIG_NF_CT_NETLINK is not set | ||
278 | # CONFIG_NETFILTER_XTABLES is not set | ||
279 | |||
280 | # | ||
281 | # IP: Netfilter Configuration | ||
282 | # | ||
283 | # CONFIG_NF_CONNTRACK_IPV4 is not set | ||
284 | # CONFIG_IP_NF_QUEUE is not set | ||
285 | # CONFIG_IP_NF_IPTABLES is not set | ||
286 | # CONFIG_IP_NF_ARPTABLES is not set | ||
287 | |||
288 | # | ||
289 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | ||
290 | # | ||
291 | # CONFIG_NF_CONNTRACK_IPV6 is not set | ||
292 | # CONFIG_IP6_NF_QUEUE is not set | ||
293 | # CONFIG_IP6_NF_IPTABLES is not set | ||
247 | # CONFIG_IP_DCCP is not set | 294 | # CONFIG_IP_DCCP is not set |
248 | CONFIG_IP_SCTP=m | 295 | CONFIG_IP_SCTP=m |
249 | # CONFIG_SCTP_DBG_MSG is not set | 296 | # CONFIG_SCTP_DBG_MSG is not set |
@@ -263,12 +310,7 @@ CONFIG_SCTP_HMAC_MD5=y | |||
263 | # CONFIG_LAPB is not set | 310 | # CONFIG_LAPB is not set |
264 | # CONFIG_ECONET is not set | 311 | # CONFIG_ECONET is not set |
265 | # CONFIG_WAN_ROUTER is not set | 312 | # CONFIG_WAN_ROUTER is not set |
266 | |||
267 | # | ||
268 | # QoS and/or fair queueing | ||
269 | # | ||
270 | CONFIG_NET_SCHED=y | 313 | CONFIG_NET_SCHED=y |
271 | CONFIG_NET_SCH_FIFO=y | ||
272 | 314 | ||
273 | # | 315 | # |
274 | # Queueing/Scheduling | 316 | # Queueing/Scheduling |
@@ -306,10 +348,12 @@ CONFIG_NET_CLS_ACT=y | |||
306 | CONFIG_NET_ACT_POLICE=y | 348 | CONFIG_NET_ACT_POLICE=y |
307 | # CONFIG_NET_ACT_GACT is not set | 349 | # CONFIG_NET_ACT_GACT is not set |
308 | # CONFIG_NET_ACT_MIRRED is not set | 350 | # CONFIG_NET_ACT_MIRRED is not set |
351 | CONFIG_NET_ACT_NAT=m | ||
309 | # CONFIG_NET_ACT_PEDIT is not set | 352 | # CONFIG_NET_ACT_PEDIT is not set |
310 | # CONFIG_NET_ACT_SIMP is not set | 353 | # CONFIG_NET_ACT_SIMP is not set |
311 | CONFIG_NET_CLS_POLICE=y | 354 | CONFIG_NET_CLS_POLICE=y |
312 | # CONFIG_NET_CLS_IND is not set | 355 | # CONFIG_NET_CLS_IND is not set |
356 | CONFIG_NET_SCH_FIFO=y | ||
313 | 357 | ||
314 | # | 358 | # |
315 | # Network testing | 359 | # Network testing |
@@ -329,6 +373,7 @@ CONFIG_CCW=y | |||
329 | # | 373 | # |
330 | # Generic Driver Options | 374 | # Generic Driver Options |
331 | # | 375 | # |
376 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
332 | CONFIG_STANDALONE=y | 377 | CONFIG_STANDALONE=y |
333 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 378 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
334 | # CONFIG_FW_LOADER is not set | 379 | # CONFIG_FW_LOADER is not set |
@@ -400,17 +445,11 @@ CONFIG_SCSI_FC_ATTRS=y | |||
400 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 445 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
401 | # CONFIG_SCSI_SAS_ATTRS is not set | 446 | # CONFIG_SCSI_SAS_ATTRS is not set |
402 | # CONFIG_SCSI_SAS_LIBSAS is not set | 447 | # CONFIG_SCSI_SAS_LIBSAS is not set |
403 | 448 | # CONFIG_SCSI_SRP_ATTRS is not set | |
404 | # | 449 | CONFIG_SCSI_LOWLEVEL=y |
405 | # SCSI low-level drivers | ||
406 | # | ||
407 | # CONFIG_ISCSI_TCP is not set | 450 | # CONFIG_ISCSI_TCP is not set |
408 | # CONFIG_SCSI_DEBUG is not set | 451 | # CONFIG_SCSI_DEBUG is not set |
409 | CONFIG_ZFCP=y | 452 | CONFIG_ZFCP=y |
410 | |||
411 | # | ||
412 | # Multi-device support (RAID and LVM) | ||
413 | # | ||
414 | CONFIG_MD=y | 453 | CONFIG_MD=y |
415 | CONFIG_BLK_DEV_MD=y | 454 | CONFIG_BLK_DEV_MD=y |
416 | CONFIG_MD_LINEAR=m | 455 | CONFIG_MD_LINEAR=m |
@@ -429,7 +468,9 @@ CONFIG_DM_ZERO=y | |||
429 | CONFIG_DM_MULTIPATH=y | 468 | CONFIG_DM_MULTIPATH=y |
430 | # CONFIG_DM_MULTIPATH_EMC is not set | 469 | # CONFIG_DM_MULTIPATH_EMC is not set |
431 | # CONFIG_DM_MULTIPATH_RDAC is not set | 470 | # CONFIG_DM_MULTIPATH_RDAC is not set |
471 | # CONFIG_DM_MULTIPATH_HP is not set | ||
432 | # CONFIG_DM_DELAY is not set | 472 | # CONFIG_DM_DELAY is not set |
473 | # CONFIG_DM_UEVENT is not set | ||
433 | CONFIG_NETDEVICES=y | 474 | CONFIG_NETDEVICES=y |
434 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | 475 | # CONFIG_NETDEVICES_MULTIQUEUE is not set |
435 | # CONFIG_IFB is not set | 476 | # CONFIG_IFB is not set |
@@ -438,8 +479,13 @@ CONFIG_BONDING=m | |||
438 | # CONFIG_MACVLAN is not set | 479 | # CONFIG_MACVLAN is not set |
439 | CONFIG_EQUALIZER=m | 480 | CONFIG_EQUALIZER=m |
440 | CONFIG_TUN=m | 481 | CONFIG_TUN=m |
482 | CONFIG_VETH=m | ||
441 | CONFIG_NET_ETHERNET=y | 483 | CONFIG_NET_ETHERNET=y |
442 | # CONFIG_MII is not set | 484 | # CONFIG_MII is not set |
485 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
486 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
487 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
488 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
443 | CONFIG_NETDEV_1000=y | 489 | CONFIG_NETDEV_1000=y |
444 | CONFIG_NETDEV_10000=y | 490 | CONFIG_NETDEV_10000=y |
445 | # CONFIG_TR is not set | 491 | # CONFIG_TR is not set |
@@ -473,7 +519,6 @@ CONFIG_CCWGROUP=y | |||
473 | CONFIG_UNIX98_PTYS=y | 519 | CONFIG_UNIX98_PTYS=y |
474 | CONFIG_LEGACY_PTYS=y | 520 | CONFIG_LEGACY_PTYS=y |
475 | CONFIG_LEGACY_PTY_COUNT=256 | 521 | CONFIG_LEGACY_PTY_COUNT=256 |
476 | # CONFIG_WATCHDOG is not set | ||
477 | CONFIG_HW_RANDOM=m | 522 | CONFIG_HW_RANDOM=m |
478 | # CONFIG_R3964 is not set | 523 | # CONFIG_R3964 is not set |
479 | CONFIG_RAW_DRIVER=m | 524 | CONFIG_RAW_DRIVER=m |
@@ -490,7 +535,6 @@ CONFIG_TN3270_CONSOLE=y | |||
490 | CONFIG_TN3215=y | 535 | CONFIG_TN3215=y |
491 | CONFIG_TN3215_CONSOLE=y | 536 | CONFIG_TN3215_CONSOLE=y |
492 | CONFIG_CCW_CONSOLE=y | 537 | CONFIG_CCW_CONSOLE=y |
493 | CONFIG_SCLP=y | ||
494 | CONFIG_SCLP_TTY=y | 538 | CONFIG_SCLP_TTY=y |
495 | CONFIG_SCLP_CONSOLE=y | 539 | CONFIG_SCLP_CONSOLE=y |
496 | CONFIG_SCLP_VT220_TTY=y | 540 | CONFIG_SCLP_VT220_TTY=y |
@@ -514,6 +558,11 @@ CONFIG_S390_TAPE_34XX=m | |||
514 | CONFIG_MONWRITER=m | 558 | CONFIG_MONWRITER=m |
515 | CONFIG_S390_VMUR=m | 559 | CONFIG_S390_VMUR=m |
516 | # CONFIG_POWER_SUPPLY is not set | 560 | # CONFIG_POWER_SUPPLY is not set |
561 | # CONFIG_WATCHDOG is not set | ||
562 | |||
563 | # | ||
564 | # Sonics Silicon Backplane | ||
565 | # | ||
517 | 566 | ||
518 | # | 567 | # |
519 | # File systems | 568 | # File systems |
@@ -569,7 +618,6 @@ CONFIG_SYSFS=y | |||
569 | CONFIG_TMPFS=y | 618 | CONFIG_TMPFS=y |
570 | CONFIG_TMPFS_POSIX_ACL=y | 619 | CONFIG_TMPFS_POSIX_ACL=y |
571 | # CONFIG_HUGETLB_PAGE is not set | 620 | # CONFIG_HUGETLB_PAGE is not set |
572 | CONFIG_RAMFS=y | ||
573 | CONFIG_CONFIGFS_FS=m | 621 | CONFIG_CONFIGFS_FS=m |
574 | 622 | ||
575 | # | 623 | # |
@@ -588,10 +636,7 @@ CONFIG_CONFIGFS_FS=m | |||
588 | # CONFIG_QNX4FS_FS is not set | 636 | # CONFIG_QNX4FS_FS is not set |
589 | # CONFIG_SYSV_FS is not set | 637 | # CONFIG_SYSV_FS is not set |
590 | # CONFIG_UFS_FS is not set | 638 | # CONFIG_UFS_FS is not set |
591 | 639 | CONFIG_NETWORK_FILESYSTEMS=y | |
592 | # | ||
593 | # Network File Systems | ||
594 | # | ||
595 | CONFIG_NFS_FS=y | 640 | CONFIG_NFS_FS=y |
596 | CONFIG_NFS_V3=y | 641 | CONFIG_NFS_V3=y |
597 | # CONFIG_NFS_V3_ACL is not set | 642 | # CONFIG_NFS_V3_ACL is not set |
@@ -638,27 +683,13 @@ CONFIG_MSDOS_PARTITION=y | |||
638 | # CONFIG_KARMA_PARTITION is not set | 683 | # CONFIG_KARMA_PARTITION is not set |
639 | # CONFIG_EFI_PARTITION is not set | 684 | # CONFIG_EFI_PARTITION is not set |
640 | # CONFIG_SYSV68_PARTITION is not set | 685 | # CONFIG_SYSV68_PARTITION is not set |
641 | |||
642 | # | ||
643 | # Native Language Support | ||
644 | # | ||
645 | # CONFIG_NLS is not set | 686 | # CONFIG_NLS is not set |
646 | |||
647 | # | ||
648 | # Distributed Lock Manager | ||
649 | # | ||
650 | CONFIG_DLM=m | 687 | CONFIG_DLM=m |
651 | # CONFIG_DLM_DEBUG is not set | 688 | # CONFIG_DLM_DEBUG is not set |
652 | 689 | CONFIG_INSTRUMENTATION=y | |
653 | # | ||
654 | # Instrumentation Support | ||
655 | # | ||
656 | |||
657 | # | ||
658 | # Profiling support | ||
659 | # | ||
660 | # CONFIG_PROFILING is not set | 690 | # CONFIG_PROFILING is not set |
661 | CONFIG_KPROBES=y | 691 | CONFIG_KPROBES=y |
692 | # CONFIG_MARKERS is not set | ||
662 | 693 | ||
663 | # | 694 | # |
664 | # Kernel hacking | 695 | # Kernel hacking |
@@ -682,6 +713,7 @@ CONFIG_DEBUG_SPINLOCK=y | |||
682 | CONFIG_DEBUG_MUTEXES=y | 713 | CONFIG_DEBUG_MUTEXES=y |
683 | # CONFIG_DEBUG_LOCK_ALLOC is not set | 714 | # CONFIG_DEBUG_LOCK_ALLOC is not set |
684 | # CONFIG_PROVE_LOCKING is not set | 715 | # CONFIG_PROVE_LOCKING is not set |
716 | # CONFIG_LOCK_STAT is not set | ||
685 | CONFIG_DEBUG_SPINLOCK_SLEEP=y | 717 | CONFIG_DEBUG_SPINLOCK_SLEEP=y |
686 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 718 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
687 | # CONFIG_DEBUG_KOBJECT is not set | 719 | # CONFIG_DEBUG_KOBJECT is not set |
@@ -694,14 +726,17 @@ CONFIG_FORCED_INLINING=y | |||
694 | # CONFIG_RCU_TORTURE_TEST is not set | 726 | # CONFIG_RCU_TORTURE_TEST is not set |
695 | # CONFIG_LKDTM is not set | 727 | # CONFIG_LKDTM is not set |
696 | # CONFIG_FAULT_INJECTION is not set | 728 | # CONFIG_FAULT_INJECTION is not set |
729 | CONFIG_SAMPLES=y | ||
697 | 730 | ||
698 | # | 731 | # |
699 | # Security options | 732 | # Security options |
700 | # | 733 | # |
701 | # CONFIG_KEYS is not set | 734 | # CONFIG_KEYS is not set |
702 | # CONFIG_SECURITY is not set | 735 | # CONFIG_SECURITY is not set |
736 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
703 | CONFIG_CRYPTO=y | 737 | CONFIG_CRYPTO=y |
704 | CONFIG_CRYPTO_ALGAPI=y | 738 | CONFIG_CRYPTO_ALGAPI=y |
739 | CONFIG_CRYPTO_AEAD=m | ||
705 | CONFIG_CRYPTO_BLKCIPHER=y | 740 | CONFIG_CRYPTO_BLKCIPHER=y |
706 | CONFIG_CRYPTO_HASH=m | 741 | CONFIG_CRYPTO_HASH=m |
707 | CONFIG_CRYPTO_MANAGER=y | 742 | CONFIG_CRYPTO_MANAGER=y |
@@ -720,6 +755,7 @@ CONFIG_CRYPTO_ECB=m | |||
720 | CONFIG_CRYPTO_CBC=y | 755 | CONFIG_CRYPTO_CBC=y |
721 | CONFIG_CRYPTO_PCBC=m | 756 | CONFIG_CRYPTO_PCBC=m |
722 | # CONFIG_CRYPTO_LRW is not set | 757 | # CONFIG_CRYPTO_LRW is not set |
758 | # CONFIG_CRYPTO_XTS is not set | ||
723 | # CONFIG_CRYPTO_CRYPTD is not set | 759 | # CONFIG_CRYPTO_CRYPTD is not set |
724 | # CONFIG_CRYPTO_DES is not set | 760 | # CONFIG_CRYPTO_DES is not set |
725 | CONFIG_CRYPTO_FCRYPT=m | 761 | CONFIG_CRYPTO_FCRYPT=m |
@@ -733,11 +769,13 @@ CONFIG_CRYPTO_FCRYPT=m | |||
733 | # CONFIG_CRYPTO_ARC4 is not set | 769 | # CONFIG_CRYPTO_ARC4 is not set |
734 | # CONFIG_CRYPTO_KHAZAD is not set | 770 | # CONFIG_CRYPTO_KHAZAD is not set |
735 | # CONFIG_CRYPTO_ANUBIS is not set | 771 | # CONFIG_CRYPTO_ANUBIS is not set |
772 | CONFIG_CRYPTO_SEED=m | ||
736 | # CONFIG_CRYPTO_DEFLATE is not set | 773 | # CONFIG_CRYPTO_DEFLATE is not set |
737 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 774 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
738 | # CONFIG_CRYPTO_CRC32C is not set | 775 | # CONFIG_CRYPTO_CRC32C is not set |
739 | CONFIG_CRYPTO_CAMELLIA=m | 776 | CONFIG_CRYPTO_CAMELLIA=m |
740 | # CONFIG_CRYPTO_TEST is not set | 777 | # CONFIG_CRYPTO_TEST is not set |
778 | CONFIG_CRYPTO_AUTHENC=m | ||
741 | CONFIG_CRYPTO_HW=y | 779 | CONFIG_CRYPTO_HW=y |
742 | # CONFIG_CRYPTO_SHA1_S390 is not set | 780 | # CONFIG_CRYPTO_SHA1_S390 is not set |
743 | # CONFIG_CRYPTO_SHA256_S390 is not set | 781 | # CONFIG_CRYPTO_SHA256_S390 is not set |
@@ -755,5 +793,6 @@ CONFIG_BITREVERSE=m | |||
755 | # CONFIG_CRC16 is not set | 793 | # CONFIG_CRC16 is not set |
756 | # CONFIG_CRC_ITU_T is not set | 794 | # CONFIG_CRC_ITU_T is not set |
757 | CONFIG_CRC32=m | 795 | CONFIG_CRC32=m |
796 | CONFIG_CRC7=m | ||
758 | # CONFIG_LIBCRC32C is not set | 797 | # CONFIG_LIBCRC32C is not set |
759 | CONFIG_PLIST=y | 798 | CONFIG_PLIST=y |
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c index 66b51901c87d..ce0856d32500 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c | |||
@@ -648,6 +648,8 @@ static int dump_set_type(enum dump_type type) | |||
648 | case DUMP_TYPE_CCW: | 648 | case DUMP_TYPE_CCW: |
649 | if (MACHINE_IS_VM) | 649 | if (MACHINE_IS_VM) |
650 | dump_method = DUMP_METHOD_CCW_VM; | 650 | dump_method = DUMP_METHOD_CCW_VM; |
651 | else if (diag308_set_works) | ||
652 | dump_method = DUMP_METHOD_CCW_DIAG; | ||
651 | else | 653 | else |
652 | dump_method = DUMP_METHOD_CCW_CIO; | 654 | dump_method = DUMP_METHOD_CCW_CIO; |
653 | break; | 655 | break; |
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 70c57378f426..96492cf2d491 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c | |||
@@ -44,6 +44,7 @@ | |||
44 | #include <asm/processor.h> | 44 | #include <asm/processor.h> |
45 | #include <asm/irq.h> | 45 | #include <asm/irq.h> |
46 | #include <asm/timer.h> | 46 | #include <asm/timer.h> |
47 | #include <asm/cpu.h> | ||
47 | 48 | ||
48 | asmlinkage void ret_from_fork(void) asm ("ret_from_fork"); | 49 | asmlinkage void ret_from_fork(void) asm ("ret_from_fork"); |
49 | 50 | ||
@@ -91,6 +92,14 @@ EXPORT_SYMBOL(unregister_idle_notifier); | |||
91 | 92 | ||
92 | void do_monitor_call(struct pt_regs *regs, long interruption_code) | 93 | void do_monitor_call(struct pt_regs *regs, long interruption_code) |
93 | { | 94 | { |
95 | struct s390_idle_data *idle; | ||
96 | |||
97 | idle = &__get_cpu_var(s390_idle); | ||
98 | spin_lock(&idle->lock); | ||
99 | idle->idle_time += get_clock() - idle->idle_enter; | ||
100 | idle->in_idle = 0; | ||
101 | spin_unlock(&idle->lock); | ||
102 | |||
94 | /* disable monitor call class 0 */ | 103 | /* disable monitor call class 0 */ |
95 | __ctl_clear_bit(8, 15); | 104 | __ctl_clear_bit(8, 15); |
96 | 105 | ||
@@ -105,6 +114,7 @@ extern void s390_handle_mcck(void); | |||
105 | static void default_idle(void) | 114 | static void default_idle(void) |
106 | { | 115 | { |
107 | int cpu, rc; | 116 | int cpu, rc; |
117 | struct s390_idle_data *idle; | ||
108 | 118 | ||
109 | /* CPU is going idle. */ | 119 | /* CPU is going idle. */ |
110 | cpu = smp_processor_id(); | 120 | cpu = smp_processor_id(); |
@@ -142,6 +152,12 @@ static void default_idle(void) | |||
142 | return; | 152 | return; |
143 | } | 153 | } |
144 | 154 | ||
155 | idle = &__get_cpu_var(s390_idle); | ||
156 | spin_lock(&idle->lock); | ||
157 | idle->idle_count++; | ||
158 | idle->in_idle = 1; | ||
159 | idle->idle_enter = get_clock(); | ||
160 | spin_unlock(&idle->lock); | ||
145 | trace_hardirqs_on(); | 161 | trace_hardirqs_on(); |
146 | /* Wait for external, I/O or machine check interrupt. */ | 162 | /* Wait for external, I/O or machine check interrupt. */ |
147 | __load_psw_mask(psw_kernel_bits | PSW_MASK_WAIT | | 163 | __load_psw_mask(psw_kernel_bits | PSW_MASK_WAIT | |
@@ -254,14 +270,12 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp, | |||
254 | save_fp_regs(¤t->thread.fp_regs); | 270 | save_fp_regs(¤t->thread.fp_regs); |
255 | memcpy(&p->thread.fp_regs, ¤t->thread.fp_regs, | 271 | memcpy(&p->thread.fp_regs, ¤t->thread.fp_regs, |
256 | sizeof(s390_fp_regs)); | 272 | sizeof(s390_fp_regs)); |
257 | p->thread.user_seg = __pa((unsigned long) p->mm->pgd) | _SEGMENT_TABLE; | ||
258 | /* Set a new TLS ? */ | 273 | /* Set a new TLS ? */ |
259 | if (clone_flags & CLONE_SETTLS) | 274 | if (clone_flags & CLONE_SETTLS) |
260 | p->thread.acrs[0] = regs->gprs[6]; | 275 | p->thread.acrs[0] = regs->gprs[6]; |
261 | #else /* CONFIG_64BIT */ | 276 | #else /* CONFIG_64BIT */ |
262 | /* Save the fpu registers to new thread structure. */ | 277 | /* Save the fpu registers to new thread structure. */ |
263 | save_fp_regs(&p->thread.fp_regs); | 278 | save_fp_regs(&p->thread.fp_regs); |
264 | p->thread.user_seg = __pa((unsigned long) p->mm->pgd) | _REGION_TABLE; | ||
265 | /* Set a new TLS ? */ | 279 | /* Set a new TLS ? */ |
266 | if (clone_flags & CLONE_SETTLS) { | 280 | if (clone_flags & CLONE_SETTLS) { |
267 | if (test_thread_flag(TIF_31BIT)) { | 281 | if (test_thread_flag(TIF_31BIT)) { |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 35edbef1d222..1d97fe1c0e53 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #include <asm/tlbflush.h> | 42 | #include <asm/tlbflush.h> |
43 | #include <asm/timer.h> | 43 | #include <asm/timer.h> |
44 | #include <asm/lowcore.h> | 44 | #include <asm/lowcore.h> |
45 | #include <asm/cpu.h> | ||
45 | 46 | ||
46 | /* | 47 | /* |
47 | * An array with a pointer the lowcore of every CPU. | 48 | * An array with a pointer the lowcore of every CPU. |
@@ -325,7 +326,7 @@ static void smp_ext_bitcall(int cpu, ec_bit_sig sig) | |||
325 | */ | 326 | */ |
326 | void smp_ptlb_callback(void *info) | 327 | void smp_ptlb_callback(void *info) |
327 | { | 328 | { |
328 | local_flush_tlb(); | 329 | __tlb_flush_local(); |
329 | } | 330 | } |
330 | 331 | ||
331 | void smp_ptlb_all(void) | 332 | void smp_ptlb_all(void) |
@@ -494,6 +495,8 @@ int __cpuinit start_secondary(void *cpuvoid) | |||
494 | return 0; | 495 | return 0; |
495 | } | 496 | } |
496 | 497 | ||
498 | DEFINE_PER_CPU(struct s390_idle_data, s390_idle); | ||
499 | |||
497 | static void __init smp_create_idle(unsigned int cpu) | 500 | static void __init smp_create_idle(unsigned int cpu) |
498 | { | 501 | { |
499 | struct task_struct *p; | 502 | struct task_struct *p; |
@@ -506,6 +509,7 @@ static void __init smp_create_idle(unsigned int cpu) | |||
506 | if (IS_ERR(p)) | 509 | if (IS_ERR(p)) |
507 | panic("failed fork for CPU %u: %li", cpu, PTR_ERR(p)); | 510 | panic("failed fork for CPU %u: %li", cpu, PTR_ERR(p)); |
508 | current_set[cpu] = p; | 511 | current_set[cpu] = p; |
512 | spin_lock_init(&(&per_cpu(s390_idle, cpu))->lock); | ||
509 | } | 513 | } |
510 | 514 | ||
511 | static int cpu_stopped(int cpu) | 515 | static int cpu_stopped(int cpu) |
@@ -724,6 +728,7 @@ void __init smp_prepare_boot_cpu(void) | |||
724 | cpu_set(0, cpu_online_map); | 728 | cpu_set(0, cpu_online_map); |
725 | S390_lowcore.percpu_offset = __per_cpu_offset[0]; | 729 | S390_lowcore.percpu_offset = __per_cpu_offset[0]; |
726 | current_set[0] = current; | 730 | current_set[0] = current; |
731 | spin_lock_init(&(&__get_cpu_var(s390_idle))->lock); | ||
727 | } | 732 | } |
728 | 733 | ||
729 | void __init smp_cpus_done(unsigned int max_cpus) | 734 | void __init smp_cpus_done(unsigned int max_cpus) |
@@ -756,22 +761,71 @@ static ssize_t show_capability(struct sys_device *dev, char *buf) | |||
756 | } | 761 | } |
757 | static SYSDEV_ATTR(capability, 0444, show_capability, NULL); | 762 | static SYSDEV_ATTR(capability, 0444, show_capability, NULL); |
758 | 763 | ||
764 | static ssize_t show_idle_count(struct sys_device *dev, char *buf) | ||
765 | { | ||
766 | struct s390_idle_data *idle; | ||
767 | unsigned long long idle_count; | ||
768 | |||
769 | idle = &per_cpu(s390_idle, dev->id); | ||
770 | spin_lock_irq(&idle->lock); | ||
771 | idle_count = idle->idle_count; | ||
772 | spin_unlock_irq(&idle->lock); | ||
773 | return sprintf(buf, "%llu\n", idle_count); | ||
774 | } | ||
775 | static SYSDEV_ATTR(idle_count, 0444, show_idle_count, NULL); | ||
776 | |||
777 | static ssize_t show_idle_time(struct sys_device *dev, char *buf) | ||
778 | { | ||
779 | struct s390_idle_data *idle; | ||
780 | unsigned long long new_time; | ||
781 | |||
782 | idle = &per_cpu(s390_idle, dev->id); | ||
783 | spin_lock_irq(&idle->lock); | ||
784 | if (idle->in_idle) { | ||
785 | new_time = get_clock(); | ||
786 | idle->idle_time += new_time - idle->idle_enter; | ||
787 | idle->idle_enter = new_time; | ||
788 | } | ||
789 | new_time = idle->idle_time; | ||
790 | spin_unlock_irq(&idle->lock); | ||
791 | return sprintf(buf, "%llu us\n", new_time >> 12); | ||
792 | } | ||
793 | static SYSDEV_ATTR(idle_time, 0444, show_idle_time, NULL); | ||
794 | |||
795 | static struct attribute *cpu_attrs[] = { | ||
796 | &attr_capability.attr, | ||
797 | &attr_idle_count.attr, | ||
798 | &attr_idle_time.attr, | ||
799 | NULL, | ||
800 | }; | ||
801 | |||
802 | static struct attribute_group cpu_attr_group = { | ||
803 | .attrs = cpu_attrs, | ||
804 | }; | ||
805 | |||
759 | static int __cpuinit smp_cpu_notify(struct notifier_block *self, | 806 | static int __cpuinit smp_cpu_notify(struct notifier_block *self, |
760 | unsigned long action, void *hcpu) | 807 | unsigned long action, void *hcpu) |
761 | { | 808 | { |
762 | unsigned int cpu = (unsigned int)(long)hcpu; | 809 | unsigned int cpu = (unsigned int)(long)hcpu; |
763 | struct cpu *c = &per_cpu(cpu_devices, cpu); | 810 | struct cpu *c = &per_cpu(cpu_devices, cpu); |
764 | struct sys_device *s = &c->sysdev; | 811 | struct sys_device *s = &c->sysdev; |
812 | struct s390_idle_data *idle; | ||
765 | 813 | ||
766 | switch (action) { | 814 | switch (action) { |
767 | case CPU_ONLINE: | 815 | case CPU_ONLINE: |
768 | case CPU_ONLINE_FROZEN: | 816 | case CPU_ONLINE_FROZEN: |
769 | if (sysdev_create_file(s, &attr_capability)) | 817 | idle = &per_cpu(s390_idle, cpu); |
818 | spin_lock_irq(&idle->lock); | ||
819 | idle->idle_enter = 0; | ||
820 | idle->idle_time = 0; | ||
821 | idle->idle_count = 0; | ||
822 | spin_unlock_irq(&idle->lock); | ||
823 | if (sysfs_create_group(&s->kobj, &cpu_attr_group)) | ||
770 | return NOTIFY_BAD; | 824 | return NOTIFY_BAD; |
771 | break; | 825 | break; |
772 | case CPU_DEAD: | 826 | case CPU_DEAD: |
773 | case CPU_DEAD_FROZEN: | 827 | case CPU_DEAD_FROZEN: |
774 | sysdev_remove_file(s, &attr_capability); | 828 | sysfs_remove_group(&s->kobj, &cpu_attr_group); |
775 | break; | 829 | break; |
776 | } | 830 | } |
777 | return NOTIFY_OK; | 831 | return NOTIFY_OK; |
@@ -784,6 +838,7 @@ static struct notifier_block __cpuinitdata smp_cpu_nb = { | |||
784 | static int __init topology_init(void) | 838 | static int __init topology_init(void) |
785 | { | 839 | { |
786 | int cpu; | 840 | int cpu; |
841 | int rc; | ||
787 | 842 | ||
788 | register_cpu_notifier(&smp_cpu_nb); | 843 | register_cpu_notifier(&smp_cpu_nb); |
789 | 844 | ||
@@ -796,7 +851,9 @@ static int __init topology_init(void) | |||
796 | if (!cpu_online(cpu)) | 851 | if (!cpu_online(cpu)) |
797 | continue; | 852 | continue; |
798 | s = &c->sysdev; | 853 | s = &c->sysdev; |
799 | sysdev_create_file(s, &attr_capability); | 854 | rc = sysfs_create_group(&s->kobj, &cpu_attr_group); |
855 | if (rc) | ||
856 | return rc; | ||
800 | } | 857 | } |
801 | return 0; | 858 | return 0; |
802 | } | 859 | } |
diff --git a/arch/s390/lib/uaccess_pt.c b/arch/s390/lib/uaccess_pt.c index b159a9d65680..7e8efaade2ea 100644 --- a/arch/s390/lib/uaccess_pt.c +++ b/arch/s390/lib/uaccess_pt.c | |||
@@ -15,6 +15,27 @@ | |||
15 | #include <asm/futex.h> | 15 | #include <asm/futex.h> |
16 | #include "uaccess.h" | 16 | #include "uaccess.h" |
17 | 17 | ||
18 | static inline pte_t *follow_table(struct mm_struct *mm, unsigned long addr) | ||
19 | { | ||
20 | pgd_t *pgd; | ||
21 | pud_t *pud; | ||
22 | pmd_t *pmd; | ||
23 | |||
24 | pgd = pgd_offset(mm, addr); | ||
25 | if (pgd_none(*pgd) || unlikely(pgd_bad(*pgd))) | ||
26 | return NULL; | ||
27 | |||
28 | pud = pud_offset(pgd, addr); | ||
29 | if (pud_none(*pud) || unlikely(pud_bad(*pud))) | ||
30 | return NULL; | ||
31 | |||
32 | pmd = pmd_offset(pud, addr); | ||
33 | if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd))) | ||
34 | return NULL; | ||
35 | |||
36 | return pte_offset_map(pmd, addr); | ||
37 | } | ||
38 | |||
18 | static int __handle_fault(struct mm_struct *mm, unsigned long address, | 39 | static int __handle_fault(struct mm_struct *mm, unsigned long address, |
19 | int write_access) | 40 | int write_access) |
20 | { | 41 | { |
@@ -85,8 +106,6 @@ static size_t __user_copy_pt(unsigned long uaddr, void *kptr, | |||
85 | { | 106 | { |
86 | struct mm_struct *mm = current->mm; | 107 | struct mm_struct *mm = current->mm; |
87 | unsigned long offset, pfn, done, size; | 108 | unsigned long offset, pfn, done, size; |
88 | pgd_t *pgd; | ||
89 | pmd_t *pmd; | ||
90 | pte_t *pte; | 109 | pte_t *pte; |
91 | void *from, *to; | 110 | void *from, *to; |
92 | 111 | ||
@@ -94,15 +113,7 @@ static size_t __user_copy_pt(unsigned long uaddr, void *kptr, | |||
94 | retry: | 113 | retry: |
95 | spin_lock(&mm->page_table_lock); | 114 | spin_lock(&mm->page_table_lock); |
96 | do { | 115 | do { |
97 | pgd = pgd_offset(mm, uaddr); | 116 | pte = follow_table(mm, uaddr); |
98 | if (pgd_none(*pgd) || unlikely(pgd_bad(*pgd))) | ||
99 | goto fault; | ||
100 | |||
101 | pmd = pmd_offset(pgd, uaddr); | ||
102 | if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd))) | ||
103 | goto fault; | ||
104 | |||
105 | pte = pte_offset_map(pmd, uaddr); | ||
106 | if (!pte || !pte_present(*pte) || | 117 | if (!pte || !pte_present(*pte) || |
107 | (write_user && !pte_write(*pte))) | 118 | (write_user && !pte_write(*pte))) |
108 | goto fault; | 119 | goto fault; |
@@ -142,22 +153,12 @@ static unsigned long __dat_user_addr(unsigned long uaddr) | |||
142 | { | 153 | { |
143 | struct mm_struct *mm = current->mm; | 154 | struct mm_struct *mm = current->mm; |
144 | unsigned long pfn, ret; | 155 | unsigned long pfn, ret; |
145 | pgd_t *pgd; | ||
146 | pmd_t *pmd; | ||
147 | pte_t *pte; | 156 | pte_t *pte; |
148 | int rc; | 157 | int rc; |
149 | 158 | ||
150 | ret = 0; | 159 | ret = 0; |
151 | retry: | 160 | retry: |
152 | pgd = pgd_offset(mm, uaddr); | 161 | pte = follow_table(mm, uaddr); |
153 | if (pgd_none(*pgd) || unlikely(pgd_bad(*pgd))) | ||
154 | goto fault; | ||
155 | |||
156 | pmd = pmd_offset(pgd, uaddr); | ||
157 | if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd))) | ||
158 | goto fault; | ||
159 | |||
160 | pte = pte_offset_map(pmd, uaddr); | ||
161 | if (!pte || !pte_present(*pte)) | 162 | if (!pte || !pte_present(*pte)) |
162 | goto fault; | 163 | goto fault; |
163 | 164 | ||
@@ -229,8 +230,6 @@ static size_t strnlen_user_pt(size_t count, const char __user *src) | |||
229 | unsigned long uaddr = (unsigned long) src; | 230 | unsigned long uaddr = (unsigned long) src; |
230 | struct mm_struct *mm = current->mm; | 231 | struct mm_struct *mm = current->mm; |
231 | unsigned long offset, pfn, done, len; | 232 | unsigned long offset, pfn, done, len; |
232 | pgd_t *pgd; | ||
233 | pmd_t *pmd; | ||
234 | pte_t *pte; | 233 | pte_t *pte; |
235 | size_t len_str; | 234 | size_t len_str; |
236 | 235 | ||
@@ -240,15 +239,7 @@ static size_t strnlen_user_pt(size_t count, const char __user *src) | |||
240 | retry: | 239 | retry: |
241 | spin_lock(&mm->page_table_lock); | 240 | spin_lock(&mm->page_table_lock); |
242 | do { | 241 | do { |
243 | pgd = pgd_offset(mm, uaddr); | 242 | pte = follow_table(mm, uaddr); |
244 | if (pgd_none(*pgd) || unlikely(pgd_bad(*pgd))) | ||
245 | goto fault; | ||
246 | |||
247 | pmd = pmd_offset(pgd, uaddr); | ||
248 | if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd))) | ||
249 | goto fault; | ||
250 | |||
251 | pte = pte_offset_map(pmd, uaddr); | ||
252 | if (!pte || !pte_present(*pte)) | 243 | if (!pte || !pte_present(*pte)) |
253 | goto fault; | 244 | goto fault; |
254 | 245 | ||
@@ -308,8 +299,6 @@ static size_t copy_in_user_pt(size_t n, void __user *to, | |||
308 | uaddr, done, size; | 299 | uaddr, done, size; |
309 | unsigned long uaddr_from = (unsigned long) from; | 300 | unsigned long uaddr_from = (unsigned long) from; |
310 | unsigned long uaddr_to = (unsigned long) to; | 301 | unsigned long uaddr_to = (unsigned long) to; |
311 | pgd_t *pgd_from, *pgd_to; | ||
312 | pmd_t *pmd_from, *pmd_to; | ||
313 | pte_t *pte_from, *pte_to; | 302 | pte_t *pte_from, *pte_to; |
314 | int write_user; | 303 | int write_user; |
315 | 304 | ||
@@ -317,39 +306,14 @@ static size_t copy_in_user_pt(size_t n, void __user *to, | |||
317 | retry: | 306 | retry: |
318 | spin_lock(&mm->page_table_lock); | 307 | spin_lock(&mm->page_table_lock); |
319 | do { | 308 | do { |
320 | pgd_from = pgd_offset(mm, uaddr_from); | 309 | pte_from = follow_table(mm, uaddr_from); |
321 | if (pgd_none(*pgd_from) || unlikely(pgd_bad(*pgd_from))) { | ||
322 | uaddr = uaddr_from; | ||
323 | write_user = 0; | ||
324 | goto fault; | ||
325 | } | ||
326 | pgd_to = pgd_offset(mm, uaddr_to); | ||
327 | if (pgd_none(*pgd_to) || unlikely(pgd_bad(*pgd_to))) { | ||
328 | uaddr = uaddr_to; | ||
329 | write_user = 1; | ||
330 | goto fault; | ||
331 | } | ||
332 | |||
333 | pmd_from = pmd_offset(pgd_from, uaddr_from); | ||
334 | if (pmd_none(*pmd_from) || unlikely(pmd_bad(*pmd_from))) { | ||
335 | uaddr = uaddr_from; | ||
336 | write_user = 0; | ||
337 | goto fault; | ||
338 | } | ||
339 | pmd_to = pmd_offset(pgd_to, uaddr_to); | ||
340 | if (pmd_none(*pmd_to) || unlikely(pmd_bad(*pmd_to))) { | ||
341 | uaddr = uaddr_to; | ||
342 | write_user = 1; | ||
343 | goto fault; | ||
344 | } | ||
345 | |||
346 | pte_from = pte_offset_map(pmd_from, uaddr_from); | ||
347 | if (!pte_from || !pte_present(*pte_from)) { | 310 | if (!pte_from || !pte_present(*pte_from)) { |
348 | uaddr = uaddr_from; | 311 | uaddr = uaddr_from; |
349 | write_user = 0; | 312 | write_user = 0; |
350 | goto fault; | 313 | goto fault; |
351 | } | 314 | } |
352 | pte_to = pte_offset_map(pmd_to, uaddr_to); | 315 | |
316 | pte_to = follow_table(mm, uaddr_to); | ||
353 | if (!pte_to || !pte_present(*pte_to) || !pte_write(*pte_to)) { | 317 | if (!pte_to || !pte_present(*pte_to) || !pte_write(*pte_to)) { |
354 | uaddr = uaddr_to; | 318 | uaddr = uaddr_to; |
355 | write_user = 1; | 319 | write_user = 1; |
diff --git a/arch/s390/mm/Makefile b/arch/s390/mm/Makefile index f95449b29fa5..66401930f83e 100644 --- a/arch/s390/mm/Makefile +++ b/arch/s390/mm/Makefile | |||
@@ -2,6 +2,6 @@ | |||
2 | # Makefile for the linux s390-specific parts of the memory manager. | 2 | # Makefile for the linux s390-specific parts of the memory manager. |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := init.o fault.o extmem.o mmap.o vmem.o | 5 | obj-y := init.o fault.o extmem.o mmap.o vmem.o pgtable.o |
6 | obj-$(CONFIG_CMM) += cmm.o | 6 | obj-$(CONFIG_CMM) += cmm.o |
7 | 7 | ||
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c index 3a25bbf2eb0a..b234bb4a6da7 100644 --- a/arch/s390/mm/init.c +++ b/arch/s390/mm/init.c | |||
@@ -81,6 +81,7 @@ void show_mem(void) | |||
81 | static void __init setup_ro_region(void) | 81 | static void __init setup_ro_region(void) |
82 | { | 82 | { |
83 | pgd_t *pgd; | 83 | pgd_t *pgd; |
84 | pud_t *pud; | ||
84 | pmd_t *pmd; | 85 | pmd_t *pmd; |
85 | pte_t *pte; | 86 | pte_t *pte; |
86 | pte_t new_pte; | 87 | pte_t new_pte; |
@@ -91,7 +92,8 @@ static void __init setup_ro_region(void) | |||
91 | 92 | ||
92 | for (; address < end; address += PAGE_SIZE) { | 93 | for (; address < end; address += PAGE_SIZE) { |
93 | pgd = pgd_offset_k(address); | 94 | pgd = pgd_offset_k(address); |
94 | pmd = pmd_offset(pgd, address); | 95 | pud = pud_offset(pgd, address); |
96 | pmd = pmd_offset(pud, address); | ||
95 | pte = pte_offset_kernel(pmd, address); | 97 | pte = pte_offset_kernel(pmd, address); |
96 | new_pte = mk_pte_phys(address, __pgprot(_PAGE_RO)); | 98 | new_pte = mk_pte_phys(address, __pgprot(_PAGE_RO)); |
97 | *pte = new_pte; | 99 | *pte = new_pte; |
@@ -103,32 +105,28 @@ static void __init setup_ro_region(void) | |||
103 | */ | 105 | */ |
104 | void __init paging_init(void) | 106 | void __init paging_init(void) |
105 | { | 107 | { |
106 | pgd_t *pg_dir; | ||
107 | int i; | ||
108 | unsigned long pgdir_k; | ||
109 | static const int ssm_mask = 0x04000000L; | 108 | static const int ssm_mask = 0x04000000L; |
110 | unsigned long max_zone_pfns[MAX_NR_ZONES]; | 109 | unsigned long max_zone_pfns[MAX_NR_ZONES]; |
110 | unsigned long pgd_type; | ||
111 | 111 | ||
112 | pg_dir = swapper_pg_dir; | 112 | init_mm.pgd = swapper_pg_dir; |
113 | 113 | S390_lowcore.kernel_asce = __pa(init_mm.pgd) & PAGE_MASK; | |
114 | #ifdef CONFIG_64BIT | 114 | #ifdef CONFIG_64BIT |
115 | pgdir_k = (__pa(swapper_pg_dir) & PAGE_MASK) | _KERN_REGION_TABLE; | 115 | S390_lowcore.kernel_asce |= _ASCE_TYPE_REGION3 | _ASCE_TABLE_LENGTH; |
116 | for (i = 0; i < PTRS_PER_PGD; i++) | 116 | pgd_type = _REGION3_ENTRY_EMPTY; |
117 | pgd_clear_kernel(pg_dir + i); | ||
118 | #else | 117 | #else |
119 | pgdir_k = (__pa(swapper_pg_dir) & PAGE_MASK) | _KERNSEG_TABLE; | 118 | S390_lowcore.kernel_asce |= _ASCE_TABLE_LENGTH; |
120 | for (i = 0; i < PTRS_PER_PGD; i++) | 119 | pgd_type = _SEGMENT_ENTRY_EMPTY; |
121 | pmd_clear_kernel((pmd_t *)(pg_dir + i)); | ||
122 | #endif | 120 | #endif |
121 | clear_table((unsigned long *) init_mm.pgd, pgd_type, | ||
122 | sizeof(unsigned long)*2048); | ||
123 | vmem_map_init(); | 123 | vmem_map_init(); |
124 | setup_ro_region(); | 124 | setup_ro_region(); |
125 | 125 | ||
126 | S390_lowcore.kernel_asce = pgdir_k; | ||
127 | |||
128 | /* enable virtual mapping in kernel mode */ | 126 | /* enable virtual mapping in kernel mode */ |
129 | __ctl_load(pgdir_k, 1, 1); | 127 | __ctl_load(S390_lowcore.kernel_asce, 1, 1); |
130 | __ctl_load(pgdir_k, 7, 7); | 128 | __ctl_load(S390_lowcore.kernel_asce, 7, 7); |
131 | __ctl_load(pgdir_k, 13, 13); | 129 | __ctl_load(S390_lowcore.kernel_asce, 13, 13); |
132 | __raw_local_irq_ssm(ssm_mask); | 130 | __raw_local_irq_ssm(ssm_mask); |
133 | 131 | ||
134 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); | 132 | memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); |
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c new file mode 100644 index 000000000000..e60e0ae13402 --- /dev/null +++ b/arch/s390/mm/pgtable.c | |||
@@ -0,0 +1,94 @@ | |||
1 | /* | ||
2 | * arch/s390/mm/pgtable.c | ||
3 | * | ||
4 | * Copyright IBM Corp. 2007 | ||
5 | * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> | ||
6 | */ | ||
7 | |||
8 | #include <linux/sched.h> | ||
9 | #include <linux/kernel.h> | ||
10 | #include <linux/errno.h> | ||
11 | #include <linux/mm.h> | ||
12 | #include <linux/swap.h> | ||
13 | #include <linux/smp.h> | ||
14 | #include <linux/highmem.h> | ||
15 | #include <linux/slab.h> | ||
16 | #include <linux/pagemap.h> | ||
17 | #include <linux/spinlock.h> | ||
18 | #include <linux/module.h> | ||
19 | #include <linux/quicklist.h> | ||
20 | |||
21 | #include <asm/system.h> | ||
22 | #include <asm/pgtable.h> | ||
23 | #include <asm/pgalloc.h> | ||
24 | #include <asm/tlb.h> | ||
25 | #include <asm/tlbflush.h> | ||
26 | |||
27 | #ifndef CONFIG_64BIT | ||
28 | #define ALLOC_ORDER 1 | ||
29 | #else | ||
30 | #define ALLOC_ORDER 2 | ||
31 | #endif | ||
32 | |||
33 | unsigned long *crst_table_alloc(struct mm_struct *mm, int noexec) | ||
34 | { | ||
35 | struct page *page = alloc_pages(GFP_KERNEL, ALLOC_ORDER); | ||
36 | |||
37 | if (!page) | ||
38 | return NULL; | ||
39 | page->index = 0; | ||
40 | if (noexec) { | ||
41 | struct page *shadow = alloc_pages(GFP_KERNEL, ALLOC_ORDER); | ||
42 | if (!shadow) { | ||
43 | __free_pages(page, ALLOC_ORDER); | ||
44 | return NULL; | ||
45 | } | ||
46 | page->index = page_to_phys(shadow); | ||
47 | } | ||
48 | return (unsigned long *) page_to_phys(page); | ||
49 | } | ||
50 | |||
51 | void crst_table_free(unsigned long *table) | ||
52 | { | ||
53 | unsigned long *shadow = get_shadow_table(table); | ||
54 | |||
55 | if (shadow) | ||
56 | free_pages((unsigned long) shadow, ALLOC_ORDER); | ||
57 | free_pages((unsigned long) table, ALLOC_ORDER); | ||
58 | } | ||
59 | |||
60 | /* | ||
61 | * page table entry allocation/free routines. | ||
62 | */ | ||
63 | unsigned long *page_table_alloc(int noexec) | ||
64 | { | ||
65 | struct page *page = alloc_page(GFP_KERNEL); | ||
66 | unsigned long *table; | ||
67 | |||
68 | if (!page) | ||
69 | return NULL; | ||
70 | page->index = 0; | ||
71 | if (noexec) { | ||
72 | struct page *shadow = alloc_page(GFP_KERNEL); | ||
73 | if (!shadow) { | ||
74 | __free_page(page); | ||
75 | return NULL; | ||
76 | } | ||
77 | table = (unsigned long *) page_to_phys(shadow); | ||
78 | clear_table(table, _PAGE_TYPE_EMPTY, PAGE_SIZE); | ||
79 | page->index = (addr_t) table; | ||
80 | } | ||
81 | table = (unsigned long *) page_to_phys(page); | ||
82 | clear_table(table, _PAGE_TYPE_EMPTY, PAGE_SIZE); | ||
83 | return table; | ||
84 | } | ||
85 | |||
86 | void page_table_free(unsigned long *table) | ||
87 | { | ||
88 | unsigned long *shadow = get_shadow_pte(table); | ||
89 | |||
90 | if (shadow) | ||
91 | free_page((unsigned long) shadow); | ||
92 | free_page((unsigned long) table); | ||
93 | |||
94 | } | ||
diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c index fd594d5fe142..fb9c5a85aa56 100644 --- a/arch/s390/mm/vmem.c +++ b/arch/s390/mm/vmem.c | |||
@@ -73,31 +73,28 @@ static void __init_refok *vmem_alloc_pages(unsigned int order) | |||
73 | return alloc_bootmem_pages((1 << order) * PAGE_SIZE); | 73 | return alloc_bootmem_pages((1 << order) * PAGE_SIZE); |
74 | } | 74 | } |
75 | 75 | ||
76 | #define vmem_pud_alloc() ({ BUG(); ((pud_t *) NULL); }) | ||
77 | |||
76 | static inline pmd_t *vmem_pmd_alloc(void) | 78 | static inline pmd_t *vmem_pmd_alloc(void) |
77 | { | 79 | { |
78 | pmd_t *pmd; | 80 | pmd_t *pmd = NULL; |
79 | int i; | ||
80 | 81 | ||
81 | pmd = vmem_alloc_pages(PMD_ALLOC_ORDER); | 82 | #ifdef CONFIG_64BIT |
83 | pmd = vmem_alloc_pages(2); | ||
82 | if (!pmd) | 84 | if (!pmd) |
83 | return NULL; | 85 | return NULL; |
84 | for (i = 0; i < PTRS_PER_PMD; i++) | 86 | clear_table((unsigned long *) pmd, _SEGMENT_ENTRY_EMPTY, PAGE_SIZE*4); |
85 | pmd_clear_kernel(pmd + i); | 87 | #endif |
86 | return pmd; | 88 | return pmd; |
87 | } | 89 | } |
88 | 90 | ||
89 | static inline pte_t *vmem_pte_alloc(void) | 91 | static inline pte_t *vmem_pte_alloc(void) |
90 | { | 92 | { |
91 | pte_t *pte; | 93 | pte_t *pte = vmem_alloc_pages(0); |
92 | pte_t empty_pte; | ||
93 | int i; | ||
94 | 94 | ||
95 | pte = vmem_alloc_pages(PTE_ALLOC_ORDER); | ||
96 | if (!pte) | 95 | if (!pte) |
97 | return NULL; | 96 | return NULL; |
98 | pte_val(empty_pte) = _PAGE_TYPE_EMPTY; | 97 | clear_table((unsigned long *) pte, _PAGE_TYPE_EMPTY, PAGE_SIZE); |
99 | for (i = 0; i < PTRS_PER_PTE; i++) | ||
100 | pte[i] = empty_pte; | ||
101 | return pte; | 98 | return pte; |
102 | } | 99 | } |
103 | 100 | ||
@@ -108,6 +105,7 @@ static int vmem_add_range(unsigned long start, unsigned long size) | |||
108 | { | 105 | { |
109 | unsigned long address; | 106 | unsigned long address; |
110 | pgd_t *pg_dir; | 107 | pgd_t *pg_dir; |
108 | pud_t *pu_dir; | ||
111 | pmd_t *pm_dir; | 109 | pmd_t *pm_dir; |
112 | pte_t *pt_dir; | 110 | pte_t *pt_dir; |
113 | pte_t pte; | 111 | pte_t pte; |
@@ -116,13 +114,21 @@ static int vmem_add_range(unsigned long start, unsigned long size) | |||
116 | for (address = start; address < start + size; address += PAGE_SIZE) { | 114 | for (address = start; address < start + size; address += PAGE_SIZE) { |
117 | pg_dir = pgd_offset_k(address); | 115 | pg_dir = pgd_offset_k(address); |
118 | if (pgd_none(*pg_dir)) { | 116 | if (pgd_none(*pg_dir)) { |
117 | pu_dir = vmem_pud_alloc(); | ||
118 | if (!pu_dir) | ||
119 | goto out; | ||
120 | pgd_populate_kernel(&init_mm, pg_dir, pu_dir); | ||
121 | } | ||
122 | |||
123 | pu_dir = pud_offset(pg_dir, address); | ||
124 | if (pud_none(*pu_dir)) { | ||
119 | pm_dir = vmem_pmd_alloc(); | 125 | pm_dir = vmem_pmd_alloc(); |
120 | if (!pm_dir) | 126 | if (!pm_dir) |
121 | goto out; | 127 | goto out; |
122 | pgd_populate_kernel(&init_mm, pg_dir, pm_dir); | 128 | pud_populate_kernel(&init_mm, pu_dir, pm_dir); |
123 | } | 129 | } |
124 | 130 | ||
125 | pm_dir = pmd_offset(pg_dir, address); | 131 | pm_dir = pmd_offset(pu_dir, address); |
126 | if (pmd_none(*pm_dir)) { | 132 | if (pmd_none(*pm_dir)) { |
127 | pt_dir = vmem_pte_alloc(); | 133 | pt_dir = vmem_pte_alloc(); |
128 | if (!pt_dir) | 134 | if (!pt_dir) |
@@ -148,6 +154,7 @@ static void vmem_remove_range(unsigned long start, unsigned long size) | |||
148 | { | 154 | { |
149 | unsigned long address; | 155 | unsigned long address; |
150 | pgd_t *pg_dir; | 156 | pgd_t *pg_dir; |
157 | pud_t *pu_dir; | ||
151 | pmd_t *pm_dir; | 158 | pmd_t *pm_dir; |
152 | pte_t *pt_dir; | 159 | pte_t *pt_dir; |
153 | pte_t pte; | 160 | pte_t pte; |
@@ -155,9 +162,10 @@ static void vmem_remove_range(unsigned long start, unsigned long size) | |||
155 | pte_val(pte) = _PAGE_TYPE_EMPTY; | 162 | pte_val(pte) = _PAGE_TYPE_EMPTY; |
156 | for (address = start; address < start + size; address += PAGE_SIZE) { | 163 | for (address = start; address < start + size; address += PAGE_SIZE) { |
157 | pg_dir = pgd_offset_k(address); | 164 | pg_dir = pgd_offset_k(address); |
158 | if (pgd_none(*pg_dir)) | 165 | pu_dir = pud_offset(pg_dir, address); |
166 | if (pud_none(*pu_dir)) | ||
159 | continue; | 167 | continue; |
160 | pm_dir = pmd_offset(pg_dir, address); | 168 | pm_dir = pmd_offset(pu_dir, address); |
161 | if (pmd_none(*pm_dir)) | 169 | if (pmd_none(*pm_dir)) |
162 | continue; | 170 | continue; |
163 | pt_dir = pte_offset_kernel(pm_dir, address); | 171 | pt_dir = pte_offset_kernel(pm_dir, address); |
@@ -174,6 +182,7 @@ static int vmem_add_mem_map(unsigned long start, unsigned long size) | |||
174 | unsigned long address, start_addr, end_addr; | 182 | unsigned long address, start_addr, end_addr; |
175 | struct page *map_start, *map_end; | 183 | struct page *map_start, *map_end; |
176 | pgd_t *pg_dir; | 184 | pgd_t *pg_dir; |
185 | pud_t *pu_dir; | ||
177 | pmd_t *pm_dir; | 186 | pmd_t *pm_dir; |
178 | pte_t *pt_dir; | 187 | pte_t *pt_dir; |
179 | pte_t pte; | 188 | pte_t pte; |
@@ -188,13 +197,21 @@ static int vmem_add_mem_map(unsigned long start, unsigned long size) | |||
188 | for (address = start_addr; address < end_addr; address += PAGE_SIZE) { | 197 | for (address = start_addr; address < end_addr; address += PAGE_SIZE) { |
189 | pg_dir = pgd_offset_k(address); | 198 | pg_dir = pgd_offset_k(address); |
190 | if (pgd_none(*pg_dir)) { | 199 | if (pgd_none(*pg_dir)) { |
200 | pu_dir = vmem_pud_alloc(); | ||
201 | if (!pu_dir) | ||
202 | goto out; | ||
203 | pgd_populate_kernel(&init_mm, pg_dir, pu_dir); | ||
204 | } | ||
205 | |||
206 | pu_dir = pud_offset(pg_dir, address); | ||
207 | if (pud_none(*pu_dir)) { | ||
191 | pm_dir = vmem_pmd_alloc(); | 208 | pm_dir = vmem_pmd_alloc(); |
192 | if (!pm_dir) | 209 | if (!pm_dir) |
193 | goto out; | 210 | goto out; |
194 | pgd_populate_kernel(&init_mm, pg_dir, pm_dir); | 211 | pud_populate_kernel(&init_mm, pu_dir, pm_dir); |
195 | } | 212 | } |
196 | 213 | ||
197 | pm_dir = pmd_offset(pg_dir, address); | 214 | pm_dir = pmd_offset(pu_dir, address); |
198 | if (pmd_none(*pm_dir)) { | 215 | if (pmd_none(*pm_dir)) { |
199 | pt_dir = vmem_pte_alloc(); | 216 | pt_dir = vmem_pte_alloc(); |
200 | if (!pt_dir) | 217 | if (!pt_dir) |
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c index 9c3ed88853f3..97aa50d1e4ae 100644 --- a/arch/sparc/kernel/ioport.c +++ b/arch/sparc/kernel/ioport.c | |||
@@ -727,9 +727,8 @@ int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sgl, int nents, | |||
727 | BUG_ON(direction == PCI_DMA_NONE); | 727 | BUG_ON(direction == PCI_DMA_NONE); |
728 | /* IIep is write-through, not flushing. */ | 728 | /* IIep is write-through, not flushing. */ |
729 | for_each_sg(sgl, sg, nents, n) { | 729 | for_each_sg(sgl, sg, nents, n) { |
730 | BUG_ON(page_address(sg->page) == NULL); | 730 | BUG_ON(page_address(sg_page(sg)) == NULL); |
731 | sg->dvma_address = | 731 | sg->dvma_address = virt_to_phys(sg_virt(sg)); |
732 | virt_to_phys(page_address(sg->page)) + sg->offset; | ||
733 | sg->dvma_length = sg->length; | 732 | sg->dvma_length = sg->length; |
734 | } | 733 | } |
735 | return nents; | 734 | return nents; |
@@ -748,9 +747,9 @@ void pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sgl, int nents, | |||
748 | BUG_ON(direction == PCI_DMA_NONE); | 747 | BUG_ON(direction == PCI_DMA_NONE); |
749 | if (direction != PCI_DMA_TODEVICE) { | 748 | if (direction != PCI_DMA_TODEVICE) { |
750 | for_each_sg(sgl, sg, nents, n) { | 749 | for_each_sg(sgl, sg, nents, n) { |
751 | BUG_ON(page_address(sg->page) == NULL); | 750 | BUG_ON(page_address(sg_page(sg)) == NULL); |
752 | mmu_inval_dma_area( | 751 | mmu_inval_dma_area( |
753 | (unsigned long) page_address(sg->page), | 752 | (unsigned long) page_address(sg_page(sg)), |
754 | (sg->length + PAGE_SIZE-1) & PAGE_MASK); | 753 | (sg->length + PAGE_SIZE-1) & PAGE_MASK); |
755 | } | 754 | } |
756 | } | 755 | } |
@@ -798,9 +797,9 @@ void pci_dma_sync_sg_for_cpu(struct pci_dev *hwdev, struct scatterlist *sgl, int | |||
798 | BUG_ON(direction == PCI_DMA_NONE); | 797 | BUG_ON(direction == PCI_DMA_NONE); |
799 | if (direction != PCI_DMA_TODEVICE) { | 798 | if (direction != PCI_DMA_TODEVICE) { |
800 | for_each_sg(sgl, sg, nents, n) { | 799 | for_each_sg(sgl, sg, nents, n) { |
801 | BUG_ON(page_address(sg->page) == NULL); | 800 | BUG_ON(page_address(sg_page(sg)) == NULL); |
802 | mmu_inval_dma_area( | 801 | mmu_inval_dma_area( |
803 | (unsigned long) page_address(sg->page), | 802 | (unsigned long) page_address(sg_page(sg)), |
804 | (sg->length + PAGE_SIZE-1) & PAGE_MASK); | 803 | (sg->length + PAGE_SIZE-1) & PAGE_MASK); |
805 | } | 804 | } |
806 | } | 805 | } |
@@ -814,9 +813,9 @@ void pci_dma_sync_sg_for_device(struct pci_dev *hwdev, struct scatterlist *sgl, | |||
814 | BUG_ON(direction == PCI_DMA_NONE); | 813 | BUG_ON(direction == PCI_DMA_NONE); |
815 | if (direction != PCI_DMA_TODEVICE) { | 814 | if (direction != PCI_DMA_TODEVICE) { |
816 | for_each_sg(sgl, sg, nents, n) { | 815 | for_each_sg(sgl, sg, nents, n) { |
817 | BUG_ON(page_address(sg->page) == NULL); | 816 | BUG_ON(page_address(sg_page(sg)) == NULL); |
818 | mmu_inval_dma_area( | 817 | mmu_inval_dma_area( |
819 | (unsigned long) page_address(sg->page), | 818 | (unsigned long) page_address(sg_page(sg)), |
820 | (sg->length + PAGE_SIZE-1) & PAGE_MASK); | 819 | (sg->length + PAGE_SIZE-1) & PAGE_MASK); |
821 | } | 820 | } |
822 | } | 821 | } |
diff --git a/arch/sparc/mm/io-unit.c b/arch/sparc/mm/io-unit.c index 375b4db63704..1666087c5b80 100644 --- a/arch/sparc/mm/io-unit.c +++ b/arch/sparc/mm/io-unit.c | |||
@@ -144,7 +144,7 @@ static void iounit_get_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_bus | |||
144 | spin_lock_irqsave(&iounit->lock, flags); | 144 | spin_lock_irqsave(&iounit->lock, flags); |
145 | while (sz != 0) { | 145 | while (sz != 0) { |
146 | --sz; | 146 | --sz; |
147 | sg->dvma_address = iounit_get_area(iounit, (unsigned long)page_address(sg->page) + sg->offset, sg->length); | 147 | sg->dvma_address = iounit_get_area(iounit, sg_virt(sg), sg->length); |
148 | sg->dvma_length = sg->length; | 148 | sg->dvma_length = sg->length; |
149 | sg = sg_next(sg); | 149 | sg = sg_next(sg); |
150 | } | 150 | } |
diff --git a/arch/sparc/mm/iommu.c b/arch/sparc/mm/iommu.c index 283656d9f6ea..4b934270f05e 100644 --- a/arch/sparc/mm/iommu.c +++ b/arch/sparc/mm/iommu.c | |||
@@ -238,7 +238,7 @@ static void iommu_get_scsi_sgl_noflush(struct scatterlist *sg, int sz, struct sb | |||
238 | while (sz != 0) { | 238 | while (sz != 0) { |
239 | --sz; | 239 | --sz; |
240 | n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT; | 240 | n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT; |
241 | sg->dvma_address = iommu_get_one(sg->page, n, sbus) + sg->offset; | 241 | sg->dvma_address = iommu_get_one(sg_page(sg), n, sbus) + sg->offset; |
242 | sg->dvma_length = (__u32) sg->length; | 242 | sg->dvma_length = (__u32) sg->length; |
243 | sg = sg_next(sg); | 243 | sg = sg_next(sg); |
244 | } | 244 | } |
@@ -252,7 +252,7 @@ static void iommu_get_scsi_sgl_gflush(struct scatterlist *sg, int sz, struct sbu | |||
252 | while (sz != 0) { | 252 | while (sz != 0) { |
253 | --sz; | 253 | --sz; |
254 | n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT; | 254 | n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT; |
255 | sg->dvma_address = iommu_get_one(sg->page, n, sbus) + sg->offset; | 255 | sg->dvma_address = iommu_get_one(sg_page(sg), n, sbus) + sg->offset; |
256 | sg->dvma_length = (__u32) sg->length; | 256 | sg->dvma_length = (__u32) sg->length; |
257 | sg = sg_next(sg); | 257 | sg = sg_next(sg); |
258 | } | 258 | } |
@@ -273,7 +273,7 @@ static void iommu_get_scsi_sgl_pflush(struct scatterlist *sg, int sz, struct sbu | |||
273 | * XXX Is this a good assumption? | 273 | * XXX Is this a good assumption? |
274 | * XXX What if someone else unmaps it here and races us? | 274 | * XXX What if someone else unmaps it here and races us? |
275 | */ | 275 | */ |
276 | if ((page = (unsigned long) page_address(sg->page)) != 0) { | 276 | if ((page = (unsigned long) page_address(sg_page(sg))) != 0) { |
277 | for (i = 0; i < n; i++) { | 277 | for (i = 0; i < n; i++) { |
278 | if (page != oldpage) { /* Already flushed? */ | 278 | if (page != oldpage) { /* Already flushed? */ |
279 | flush_page_for_dma(page); | 279 | flush_page_for_dma(page); |
@@ -283,7 +283,7 @@ static void iommu_get_scsi_sgl_pflush(struct scatterlist *sg, int sz, struct sbu | |||
283 | } | 283 | } |
284 | } | 284 | } |
285 | 285 | ||
286 | sg->dvma_address = iommu_get_one(sg->page, n, sbus) + sg->offset; | 286 | sg->dvma_address = iommu_get_one(sg_page(sg), n, sbus) + sg->offset; |
287 | sg->dvma_length = (__u32) sg->length; | 287 | sg->dvma_length = (__u32) sg->length; |
288 | sg = sg_next(sg); | 288 | sg = sg_next(sg); |
289 | } | 289 | } |
diff --git a/arch/sparc/mm/sun4c.c b/arch/sparc/mm/sun4c.c index ee6708fc4492..a2cc141291c7 100644 --- a/arch/sparc/mm/sun4c.c +++ b/arch/sparc/mm/sun4c.c | |||
@@ -1228,7 +1228,7 @@ static void sun4c_get_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_bus * | |||
1228 | { | 1228 | { |
1229 | while (sz != 0) { | 1229 | while (sz != 0) { |
1230 | --sz; | 1230 | --sz; |
1231 | sg->dvma_address = (__u32)sun4c_lockarea(page_address(sg->page) + sg->offset, sg->length); | 1231 | sg->dvma_address = (__u32)sun4c_lockarea(sg_virt(sg), sg->length); |
1232 | sg->dvma_length = sg->length; | 1232 | sg->dvma_length = sg->length; |
1233 | sg = sg_next(sg); | 1233 | sg = sg_next(sg); |
1234 | } | 1234 | } |
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index c7a74e376985..03c4e5c1b94a 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig | |||
@@ -72,6 +72,10 @@ config ARCH_NO_VIRT_TO_BUS | |||
72 | config OF | 72 | config OF |
73 | def_bool y | 73 | def_bool y |
74 | 74 | ||
75 | config GENERIC_HARDIRQS_NO__DO_IRQ | ||
76 | bool | ||
77 | def_bool y | ||
78 | |||
75 | choice | 79 | choice |
76 | prompt "Kernel page size" | 80 | prompt "Kernel page size" |
77 | default SPARC64_PAGE_SIZE_8KB | 81 | default SPARC64_PAGE_SIZE_8KB |
diff --git a/arch/sparc64/Makefile b/arch/sparc64/Makefile index 6c92a42efe76..01159cb5f16d 100644 --- a/arch/sparc64/Makefile +++ b/arch/sparc64/Makefile | |||
@@ -18,8 +18,6 @@ NEW_GCC := $(call cc-option-yn, -m64 -mcmodel=medlow) | |||
18 | NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi) | 18 | NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi) |
19 | UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; ) | 19 | UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; ) |
20 | 20 | ||
21 | export NEW_GCC | ||
22 | |||
23 | ifneq ($(NEW_GAS),y) | 21 | ifneq ($(NEW_GAS),y) |
24 | AS = sparc64-linux-as | 22 | AS = sparc64-linux-as |
25 | LD = sparc64-linux-ld | 23 | LD = sparc64-linux-ld |
@@ -58,8 +56,6 @@ core-y += arch/sparc64/kernel/ arch/sparc64/mm/ | |||
58 | core-$(CONFIG_SOLARIS_EMUL) += arch/sparc64/solaris/ | 56 | core-$(CONFIG_SOLARIS_EMUL) += arch/sparc64/solaris/ |
59 | core-y += arch/sparc64/math-emu/ | 57 | core-y += arch/sparc64/math-emu/ |
60 | libs-y += arch/sparc64/prom/ arch/sparc64/lib/ | 58 | libs-y += arch/sparc64/prom/ arch/sparc64/lib/ |
61 | |||
62 | # FIXME: is drivers- right? | ||
63 | drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/ | 59 | drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/ |
64 | 60 | ||
65 | boot := arch/sparc64/boot | 61 | boot := arch/sparc64/boot |
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig index 1aa2c4048e4b..e023d4b2fef4 100644 --- a/arch/sparc64/defconfig +++ b/arch/sparc64/defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.23 | 3 | # Linux kernel version: 2.6.23 |
4 | # Sat Oct 13 21:53:54 2007 | 4 | # Sun Oct 21 19:57:44 2007 |
5 | # | 5 | # |
6 | CONFIG_SPARC=y | 6 | CONFIG_SPARC=y |
7 | CONFIG_SPARC64=y | 7 | CONFIG_SPARC64=y |
@@ -49,6 +49,10 @@ CONFIG_POSIX_MQUEUE=y | |||
49 | # CONFIG_AUDIT is not set | 49 | # CONFIG_AUDIT is not set |
50 | # CONFIG_IKCONFIG is not set | 50 | # CONFIG_IKCONFIG is not set |
51 | CONFIG_LOG_BUF_SHIFT=18 | 51 | CONFIG_LOG_BUF_SHIFT=18 |
52 | # CONFIG_CGROUPS is not set | ||
53 | CONFIG_FAIR_GROUP_SCHED=y | ||
54 | CONFIG_FAIR_USER_SCHED=y | ||
55 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
52 | CONFIG_SYSFS_DEPRECATED=y | 56 | CONFIG_SYSFS_DEPRECATED=y |
53 | CONFIG_RELAY=y | 57 | CONFIG_RELAY=y |
54 | # CONFIG_BLK_DEV_INITRD is not set | 58 | # CONFIG_BLK_DEV_INITRD is not set |
@@ -145,7 +149,10 @@ CONFIG_SELECT_MEMORY_MODEL=y | |||
145 | CONFIG_SPARSEMEM_MANUAL=y | 149 | CONFIG_SPARSEMEM_MANUAL=y |
146 | CONFIG_SPARSEMEM=y | 150 | CONFIG_SPARSEMEM=y |
147 | CONFIG_HAVE_MEMORY_PRESENT=y | 151 | CONFIG_HAVE_MEMORY_PRESENT=y |
148 | CONFIG_SPARSEMEM_STATIC=y | 152 | # CONFIG_SPARSEMEM_STATIC is not set |
153 | CONFIG_SPARSEMEM_EXTREME=y | ||
154 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | ||
155 | CONFIG_SPARSEMEM_VMEMMAP=y | ||
149 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 156 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
150 | CONFIG_RESOURCES_64BIT=y | 157 | CONFIG_RESOURCES_64BIT=y |
151 | CONFIG_ZONE_DMA_FLAG=0 | 158 | CONFIG_ZONE_DMA_FLAG=0 |
@@ -275,10 +282,6 @@ CONFIG_VLAN_8021Q=m | |||
275 | # CONFIG_LAPB is not set | 282 | # CONFIG_LAPB is not set |
276 | # CONFIG_ECONET is not set | 283 | # CONFIG_ECONET is not set |
277 | # CONFIG_WAN_ROUTER is not set | 284 | # CONFIG_WAN_ROUTER is not set |
278 | |||
279 | # | ||
280 | # QoS and/or fair queueing | ||
281 | # | ||
282 | # CONFIG_NET_SCHED is not set | 285 | # CONFIG_NET_SCHED is not set |
283 | 286 | ||
284 | # | 287 | # |
@@ -372,8 +375,6 @@ CONFIG_IDEPCI_PCIBUS_ORDER=y | |||
372 | # CONFIG_BLK_DEV_GENERIC is not set | 375 | # CONFIG_BLK_DEV_GENERIC is not set |
373 | # CONFIG_BLK_DEV_OPTI621 is not set | 376 | # CONFIG_BLK_DEV_OPTI621 is not set |
374 | CONFIG_BLK_DEV_IDEDMA_PCI=y | 377 | CONFIG_BLK_DEV_IDEDMA_PCI=y |
375 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | ||
376 | CONFIG_IDEDMA_ONLYDISK=y | ||
377 | # CONFIG_BLK_DEV_AEC62XX is not set | 378 | # CONFIG_BLK_DEV_AEC62XX is not set |
378 | CONFIG_BLK_DEV_ALI15X3=y | 379 | CONFIG_BLK_DEV_ALI15X3=y |
379 | # CONFIG_WDC_ALI15X3 is not set | 380 | # CONFIG_WDC_ALI15X3 is not set |
@@ -401,6 +402,7 @@ CONFIG_BLK_DEV_ALI15X3=y | |||
401 | # CONFIG_BLK_DEV_TC86C001 is not set | 402 | # CONFIG_BLK_DEV_TC86C001 is not set |
402 | # CONFIG_IDE_ARM is not set | 403 | # CONFIG_IDE_ARM is not set |
403 | CONFIG_BLK_DEV_IDEDMA=y | 404 | CONFIG_BLK_DEV_IDEDMA=y |
405 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | ||
404 | # CONFIG_BLK_DEV_HD is not set | 406 | # CONFIG_BLK_DEV_HD is not set |
405 | 407 | ||
406 | # | 408 | # |
@@ -441,6 +443,7 @@ CONFIG_SCSI_FC_ATTRS=y | |||
441 | CONFIG_SCSI_ISCSI_ATTRS=m | 443 | CONFIG_SCSI_ISCSI_ATTRS=m |
442 | # CONFIG_SCSI_SAS_ATTRS is not set | 444 | # CONFIG_SCSI_SAS_ATTRS is not set |
443 | # CONFIG_SCSI_SAS_LIBSAS is not set | 445 | # CONFIG_SCSI_SAS_LIBSAS is not set |
446 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
444 | CONFIG_SCSI_LOWLEVEL=y | 447 | CONFIG_SCSI_LOWLEVEL=y |
445 | CONFIG_ISCSI_TCP=m | 448 | CONFIG_ISCSI_TCP=m |
446 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 449 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
@@ -492,14 +495,8 @@ CONFIG_DM_MIRROR=m | |||
492 | CONFIG_DM_ZERO=m | 495 | CONFIG_DM_ZERO=m |
493 | # CONFIG_DM_MULTIPATH is not set | 496 | # CONFIG_DM_MULTIPATH is not set |
494 | # CONFIG_DM_DELAY is not set | 497 | # CONFIG_DM_DELAY is not set |
495 | 498 | # CONFIG_DM_UEVENT is not set | |
496 | # | ||
497 | # Fusion MPT device support | ||
498 | # | ||
499 | # CONFIG_FUSION is not set | 499 | # CONFIG_FUSION is not set |
500 | # CONFIG_FUSION_SPI is not set | ||
501 | # CONFIG_FUSION_FC is not set | ||
502 | # CONFIG_FUSION_SAS is not set | ||
503 | 500 | ||
504 | # | 501 | # |
505 | # IEEE 1394 (FireWire) support | 502 | # IEEE 1394 (FireWire) support |
@@ -638,7 +635,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
638 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 635 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
639 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 636 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
640 | # CONFIG_INPUT_JOYDEV is not set | 637 | # CONFIG_INPUT_JOYDEV is not set |
641 | # CONFIG_INPUT_TSDEV is not set | ||
642 | CONFIG_INPUT_EVDEV=y | 638 | CONFIG_INPUT_EVDEV=y |
643 | # CONFIG_INPUT_EVBUG is not set | 639 | # CONFIG_INPUT_EVBUG is not set |
644 | 640 | ||
@@ -714,11 +710,9 @@ CONFIG_SERIAL_CORE_CONSOLE=y | |||
714 | CONFIG_UNIX98_PTYS=y | 710 | CONFIG_UNIX98_PTYS=y |
715 | # CONFIG_LEGACY_PTYS is not set | 711 | # CONFIG_LEGACY_PTYS is not set |
716 | # CONFIG_IPMI_HANDLER is not set | 712 | # CONFIG_IPMI_HANDLER is not set |
717 | # CONFIG_WATCHDOG is not set | ||
718 | # CONFIG_HW_RANDOM is not set | 713 | # CONFIG_HW_RANDOM is not set |
719 | # CONFIG_R3964 is not set | 714 | # CONFIG_R3964 is not set |
720 | # CONFIG_APPLICOM is not set | 715 | # CONFIG_APPLICOM is not set |
721 | # CONFIG_DRM is not set | ||
722 | # CONFIG_RAW_DRIVER is not set | 716 | # CONFIG_RAW_DRIVER is not set |
723 | # CONFIG_TCG_TPM is not set | 717 | # CONFIG_TCG_TPM is not set |
724 | CONFIG_DEVPORT=y | 718 | CONFIG_DEVPORT=y |
@@ -786,8 +780,6 @@ CONFIG_I2C_ALGOBIT=y | |||
786 | # CONFIG_POWER_SUPPLY is not set | 780 | # CONFIG_POWER_SUPPLY is not set |
787 | CONFIG_HWMON=y | 781 | CONFIG_HWMON=y |
788 | # CONFIG_HWMON_VID is not set | 782 | # CONFIG_HWMON_VID is not set |
789 | # CONFIG_SENSORS_ABITUGURU is not set | ||
790 | # CONFIG_SENSORS_ABITUGURU3 is not set | ||
791 | # CONFIG_SENSORS_AD7418 is not set | 783 | # CONFIG_SENSORS_AD7418 is not set |
792 | # CONFIG_SENSORS_ADM1021 is not set | 784 | # CONFIG_SENSORS_ADM1021 is not set |
793 | # CONFIG_SENSORS_ADM1025 is not set | 785 | # CONFIG_SENSORS_ADM1025 is not set |
@@ -795,12 +787,12 @@ CONFIG_HWMON=y | |||
795 | # CONFIG_SENSORS_ADM1029 is not set | 787 | # CONFIG_SENSORS_ADM1029 is not set |
796 | # CONFIG_SENSORS_ADM1031 is not set | 788 | # CONFIG_SENSORS_ADM1031 is not set |
797 | # CONFIG_SENSORS_ADM9240 is not set | 789 | # CONFIG_SENSORS_ADM9240 is not set |
798 | # CONFIG_SENSORS_ASB100 is not set | 790 | # CONFIG_SENSORS_ADT7470 is not set |
799 | # CONFIG_SENSORS_ATXP1 is not set | 791 | # CONFIG_SENSORS_ATXP1 is not set |
800 | # CONFIG_SENSORS_DS1621 is not set | 792 | # CONFIG_SENSORS_DS1621 is not set |
801 | # CONFIG_SENSORS_F71805F is not set | 793 | # CONFIG_SENSORS_F71805F is not set |
802 | # CONFIG_SENSORS_FSCHER is not set | 794 | # CONFIG_SENSORS_F71882FG is not set |
803 | # CONFIG_SENSORS_FSCPOS is not set | 795 | # CONFIG_SENSORS_F75375S is not set |
804 | # CONFIG_SENSORS_GL518SM is not set | 796 | # CONFIG_SENSORS_GL518SM is not set |
805 | # CONFIG_SENSORS_GL520SM is not set | 797 | # CONFIG_SENSORS_GL520SM is not set |
806 | # CONFIG_SENSORS_IT87 is not set | 798 | # CONFIG_SENSORS_IT87 is not set |
@@ -836,6 +828,7 @@ CONFIG_HWMON=y | |||
836 | # CONFIG_SENSORS_W83627HF is not set | 828 | # CONFIG_SENSORS_W83627HF is not set |
837 | # CONFIG_SENSORS_W83627EHF is not set | 829 | # CONFIG_SENSORS_W83627EHF is not set |
838 | # CONFIG_HWMON_DEBUG_CHIP is not set | 830 | # CONFIG_HWMON_DEBUG_CHIP is not set |
831 | # CONFIG_WATCHDOG is not set | ||
839 | 832 | ||
840 | # | 833 | # |
841 | # Sonics Silicon Backplane | 834 | # Sonics Silicon Backplane |
@@ -858,12 +851,7 @@ CONFIG_SSB_POSSIBLE=y | |||
858 | # | 851 | # |
859 | # Graphics support | 852 | # Graphics support |
860 | # | 853 | # |
861 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 854 | # CONFIG_DRM is not set |
862 | |||
863 | # | ||
864 | # Display device support | ||
865 | # | ||
866 | # CONFIG_DISPLAY_SUPPORT is not set | ||
867 | # CONFIG_VGASTATE is not set | 855 | # CONFIG_VGASTATE is not set |
868 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | 856 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set |
869 | CONFIG_FB=y | 857 | CONFIG_FB=y |
@@ -872,6 +860,7 @@ CONFIG_FB_DDC=y | |||
872 | CONFIG_FB_CFB_FILLRECT=y | 860 | CONFIG_FB_CFB_FILLRECT=y |
873 | CONFIG_FB_CFB_COPYAREA=y | 861 | CONFIG_FB_CFB_COPYAREA=y |
874 | CONFIG_FB_CFB_IMAGEBLIT=y | 862 | CONFIG_FB_CFB_IMAGEBLIT=y |
863 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | ||
875 | # CONFIG_FB_SYS_FILLRECT is not set | 864 | # CONFIG_FB_SYS_FILLRECT is not set |
876 | # CONFIG_FB_SYS_COPYAREA is not set | 865 | # CONFIG_FB_SYS_COPYAREA is not set |
877 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 866 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
@@ -890,6 +879,7 @@ CONFIG_FB_TILEBLITTING=y | |||
890 | # CONFIG_FB_PM2 is not set | 879 | # CONFIG_FB_PM2 is not set |
891 | # CONFIG_FB_ASILIANT is not set | 880 | # CONFIG_FB_ASILIANT is not set |
892 | # CONFIG_FB_IMSTT is not set | 881 | # CONFIG_FB_IMSTT is not set |
882 | # CONFIG_FB_UVESA is not set | ||
893 | # CONFIG_FB_SBUS is not set | 883 | # CONFIG_FB_SBUS is not set |
894 | # CONFIG_FB_XVR500 is not set | 884 | # CONFIG_FB_XVR500 is not set |
895 | # CONFIG_FB_XVR2500 is not set | 885 | # CONFIG_FB_XVR2500 is not set |
@@ -915,6 +905,12 @@ CONFIG_FB_RADEON_I2C=y | |||
915 | # CONFIG_FB_ARK is not set | 905 | # CONFIG_FB_ARK is not set |
916 | # CONFIG_FB_PM3 is not set | 906 | # CONFIG_FB_PM3 is not set |
917 | # CONFIG_FB_VIRTUAL is not set | 907 | # CONFIG_FB_VIRTUAL is not set |
908 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
909 | |||
910 | # | ||
911 | # Display device support | ||
912 | # | ||
913 | # CONFIG_DISPLAY_SUPPORT is not set | ||
918 | 914 | ||
919 | # | 915 | # |
920 | # Console display driver support | 916 | # Console display driver support |
@@ -1066,6 +1062,7 @@ CONFIG_AC97_BUS=m | |||
1066 | CONFIG_HID_SUPPORT=y | 1062 | CONFIG_HID_SUPPORT=y |
1067 | CONFIG_HID=y | 1063 | CONFIG_HID=y |
1068 | # CONFIG_HID_DEBUG is not set | 1064 | # CONFIG_HID_DEBUG is not set |
1065 | # CONFIG_HIDRAW is not set | ||
1069 | 1066 | ||
1070 | # | 1067 | # |
1071 | # USB Input Devices | 1068 | # USB Input Devices |
@@ -1187,19 +1184,6 @@ CONFIG_USB_STORAGE=m | |||
1187 | # CONFIG_RTC_CLASS is not set | 1184 | # CONFIG_RTC_CLASS is not set |
1188 | 1185 | ||
1189 | # | 1186 | # |
1190 | # DMA Engine support | ||
1191 | # | ||
1192 | # CONFIG_DMA_ENGINE is not set | ||
1193 | |||
1194 | # | ||
1195 | # DMA Clients | ||
1196 | # | ||
1197 | |||
1198 | # | ||
1199 | # DMA Devices | ||
1200 | # | ||
1201 | |||
1202 | # | ||
1203 | # Userspace I/O | 1187 | # Userspace I/O |
1204 | # | 1188 | # |
1205 | # CONFIG_UIO is not set | 1189 | # CONFIG_UIO is not set |
@@ -1275,7 +1259,6 @@ CONFIG_TMPFS=y | |||
1275 | # CONFIG_TMPFS_POSIX_ACL is not set | 1259 | # CONFIG_TMPFS_POSIX_ACL is not set |
1276 | CONFIG_HUGETLBFS=y | 1260 | CONFIG_HUGETLBFS=y |
1277 | CONFIG_HUGETLB_PAGE=y | 1261 | CONFIG_HUGETLB_PAGE=y |
1278 | CONFIG_RAMFS=y | ||
1279 | # CONFIG_CONFIGFS_FS is not set | 1262 | # CONFIG_CONFIGFS_FS is not set |
1280 | 1263 | ||
1281 | # | 1264 | # |
@@ -1295,10 +1278,7 @@ CONFIG_RAMFS=y | |||
1295 | # CONFIG_QNX4FS_FS is not set | 1278 | # CONFIG_QNX4FS_FS is not set |
1296 | # CONFIG_SYSV_FS is not set | 1279 | # CONFIG_SYSV_FS is not set |
1297 | # CONFIG_UFS_FS is not set | 1280 | # CONFIG_UFS_FS is not set |
1298 | 1281 | CONFIG_NETWORK_FILESYSTEMS=y | |
1299 | # | ||
1300 | # Network File Systems | ||
1301 | # | ||
1302 | # CONFIG_NFS_FS is not set | 1282 | # CONFIG_NFS_FS is not set |
1303 | # CONFIG_NFSD is not set | 1283 | # CONFIG_NFSD is not set |
1304 | # CONFIG_SMB_FS is not set | 1284 | # CONFIG_SMB_FS is not set |
@@ -1313,10 +1293,6 @@ CONFIG_RAMFS=y | |||
1313 | # CONFIG_PARTITION_ADVANCED is not set | 1293 | # CONFIG_PARTITION_ADVANCED is not set |
1314 | CONFIG_MSDOS_PARTITION=y | 1294 | CONFIG_MSDOS_PARTITION=y |
1315 | CONFIG_SUN_PARTITION=y | 1295 | CONFIG_SUN_PARTITION=y |
1316 | |||
1317 | # | ||
1318 | # Native Language Support | ||
1319 | # | ||
1320 | CONFIG_NLS=m | 1296 | CONFIG_NLS=m |
1321 | CONFIG_NLS_DEFAULT="iso8859-1" | 1297 | CONFIG_NLS_DEFAULT="iso8859-1" |
1322 | # CONFIG_NLS_CODEPAGE_437 is not set | 1298 | # CONFIG_NLS_CODEPAGE_437 is not set |
@@ -1357,18 +1333,12 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
1357 | # CONFIG_NLS_KOI8_R is not set | 1333 | # CONFIG_NLS_KOI8_R is not set |
1358 | # CONFIG_NLS_KOI8_U is not set | 1334 | # CONFIG_NLS_KOI8_U is not set |
1359 | # CONFIG_NLS_UTF8 is not set | 1335 | # CONFIG_NLS_UTF8 is not set |
1360 | |||
1361 | # | ||
1362 | # Distributed Lock Manager | ||
1363 | # | ||
1364 | # CONFIG_DLM is not set | 1336 | # CONFIG_DLM is not set |
1365 | 1337 | CONFIG_INSTRUMENTATION=y | |
1366 | # | ||
1367 | # Instrumentation Support | ||
1368 | # | ||
1369 | CONFIG_PROFILING=y | 1338 | CONFIG_PROFILING=y |
1370 | CONFIG_OPROFILE=m | 1339 | CONFIG_OPROFILE=m |
1371 | CONFIG_KPROBES=y | 1340 | CONFIG_KPROBES=y |
1341 | # CONFIG_MARKERS is not set | ||
1372 | 1342 | ||
1373 | # | 1343 | # |
1374 | # Kernel hacking | 1344 | # Kernel hacking |
@@ -1402,9 +1372,11 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1402 | # CONFIG_DEBUG_VM is not set | 1372 | # CONFIG_DEBUG_VM is not set |
1403 | # CONFIG_DEBUG_LIST is not set | 1373 | # CONFIG_DEBUG_LIST is not set |
1404 | CONFIG_FORCED_INLINING=y | 1374 | CONFIG_FORCED_INLINING=y |
1375 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
1405 | # CONFIG_RCU_TORTURE_TEST is not set | 1376 | # CONFIG_RCU_TORTURE_TEST is not set |
1406 | # CONFIG_LKDTM is not set | 1377 | # CONFIG_LKDTM is not set |
1407 | # CONFIG_FAULT_INJECTION is not set | 1378 | # CONFIG_FAULT_INJECTION is not set |
1379 | # CONFIG_SAMPLES is not set | ||
1408 | # CONFIG_DEBUG_STACK_USAGE is not set | 1380 | # CONFIG_DEBUG_STACK_USAGE is not set |
1409 | # CONFIG_DEBUG_DCFLUSH is not set | 1381 | # CONFIG_DEBUG_DCFLUSH is not set |
1410 | # CONFIG_STACK_DEBUG is not set | 1382 | # CONFIG_STACK_DEBUG is not set |
@@ -1417,6 +1389,7 @@ CONFIG_FORCED_INLINING=y | |||
1417 | CONFIG_KEYS=y | 1389 | CONFIG_KEYS=y |
1418 | # CONFIG_KEYS_DEBUG_PROC_KEYS is not set | 1390 | # CONFIG_KEYS_DEBUG_PROC_KEYS is not set |
1419 | # CONFIG_SECURITY is not set | 1391 | # CONFIG_SECURITY is not set |
1392 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
1420 | CONFIG_XOR_BLOCKS=m | 1393 | CONFIG_XOR_BLOCKS=m |
1421 | CONFIG_ASYNC_CORE=m | 1394 | CONFIG_ASYNC_CORE=m |
1422 | CONFIG_ASYNC_MEMCPY=m | 1395 | CONFIG_ASYNC_MEMCPY=m |
diff --git a/arch/sparc64/kernel/Makefile b/arch/sparc64/kernel/Makefile index 112c46e66578..ef50d217432f 100644 --- a/arch/sparc64/kernel/Makefile +++ b/arch/sparc64/kernel/Makefile | |||
@@ -39,12 +39,3 @@ else | |||
39 | obj-y += sys_sunos32.o sunos_ioctl32.o | 39 | obj-y += sys_sunos32.o sunos_ioctl32.o |
40 | endif | 40 | endif |
41 | endif | 41 | endif |
42 | |||
43 | ifneq ($(NEW_GCC),y) | ||
44 | CMODEL_CFLAG := -mmedlow | ||
45 | else | ||
46 | CMODEL_CFLAG := -m64 -mcmodel=medlow | ||
47 | endif | ||
48 | |||
49 | head.o: head.S ttable.S itlb_miss.S dtlb_miss.S ktlb.S tsb.S \ | ||
50 | etrap.S rtrap.S winfixup.S entry.S | ||
diff --git a/arch/sparc64/kernel/iommu.c b/arch/sparc64/kernel/iommu.c index 29af777d7ac9..070a4846c0cb 100644 --- a/arch/sparc64/kernel/iommu.c +++ b/arch/sparc64/kernel/iommu.c | |||
@@ -472,8 +472,7 @@ static void dma_4u_unmap_single(struct device *dev, dma_addr_t bus_addr, | |||
472 | spin_unlock_irqrestore(&iommu->lock, flags); | 472 | spin_unlock_irqrestore(&iommu->lock, flags); |
473 | } | 473 | } |
474 | 474 | ||
475 | #define SG_ENT_PHYS_ADDRESS(SG) \ | 475 | #define SG_ENT_PHYS_ADDRESS(SG) (__pa(sg_virt((SG)))) |
476 | (__pa(page_address((SG)->page)) + (SG)->offset) | ||
477 | 476 | ||
478 | static void fill_sg(iopte_t *iopte, struct scatterlist *sg, | 477 | static void fill_sg(iopte_t *iopte, struct scatterlist *sg, |
479 | int nused, int nelems, | 478 | int nused, int nelems, |
@@ -565,9 +564,7 @@ static int dma_4u_map_sg(struct device *dev, struct scatterlist *sglist, | |||
565 | /* Fast path single entry scatterlists. */ | 564 | /* Fast path single entry scatterlists. */ |
566 | if (nelems == 1) { | 565 | if (nelems == 1) { |
567 | sglist->dma_address = | 566 | sglist->dma_address = |
568 | dma_4u_map_single(dev, | 567 | dma_4u_map_single(dev, sg_virt(sglist), |
569 | (page_address(sglist->page) + | ||
570 | sglist->offset), | ||
571 | sglist->length, direction); | 568 | sglist->length, direction); |
572 | if (unlikely(sglist->dma_address == DMA_ERROR_CODE)) | 569 | if (unlikely(sglist->dma_address == DMA_ERROR_CODE)) |
573 | return 0; | 570 | return 0; |
diff --git a/arch/sparc64/kernel/iommu_common.c b/arch/sparc64/kernel/iommu_common.c index d7ca900ec51d..b70324e0d83d 100644 --- a/arch/sparc64/kernel/iommu_common.c +++ b/arch/sparc64/kernel/iommu_common.c | |||
@@ -73,7 +73,7 @@ static int verify_one_map(struct scatterlist *dma_sg, struct scatterlist **__sg, | |||
73 | 73 | ||
74 | daddr = dma_sg->dma_address; | 74 | daddr = dma_sg->dma_address; |
75 | sglen = sg->length; | 75 | sglen = sg->length; |
76 | sgaddr = (unsigned long) (page_address(sg->page) + sg->offset); | 76 | sgaddr = (unsigned long) sg_virt(sg); |
77 | while (dlen > 0) { | 77 | while (dlen > 0) { |
78 | unsigned long paddr; | 78 | unsigned long paddr; |
79 | 79 | ||
@@ -123,7 +123,7 @@ static int verify_one_map(struct scatterlist *dma_sg, struct scatterlist **__sg, | |||
123 | sg = sg_next(sg); | 123 | sg = sg_next(sg); |
124 | if (--nents <= 0) | 124 | if (--nents <= 0) |
125 | break; | 125 | break; |
126 | sgaddr = (unsigned long) (page_address(sg->page) + sg->offset); | 126 | sgaddr = (unsigned long) sg_virt(sg); |
127 | sglen = sg->length; | 127 | sglen = sg->length; |
128 | } | 128 | } |
129 | if (dlen < 0) { | 129 | if (dlen < 0) { |
@@ -191,7 +191,7 @@ void verify_sglist(struct scatterlist *sglist, int nents, iopte_t *iopte, int np | |||
191 | printk("sg(%d): page_addr(%p) off(%x) length(%x) " | 191 | printk("sg(%d): page_addr(%p) off(%x) length(%x) " |
192 | "dma_address[%016x] dma_length[%016x]\n", | 192 | "dma_address[%016x] dma_length[%016x]\n", |
193 | i, | 193 | i, |
194 | page_address(sg->page), sg->offset, | 194 | page_address(sg_page(sg)), sg->offset, |
195 | sg->length, | 195 | sg->length, |
196 | sg->dma_address, sg->dma_length); | 196 | sg->dma_address, sg->dma_length); |
197 | } | 197 | } |
@@ -207,15 +207,14 @@ unsigned long prepare_sg(struct scatterlist *sg, int nents) | |||
207 | unsigned long prev; | 207 | unsigned long prev; |
208 | u32 dent_addr, dent_len; | 208 | u32 dent_addr, dent_len; |
209 | 209 | ||
210 | prev = (unsigned long) (page_address(sg->page) + sg->offset); | 210 | prev = (unsigned long) sg_virt(sg); |
211 | prev += (unsigned long) (dent_len = sg->length); | 211 | prev += (unsigned long) (dent_len = sg->length); |
212 | dent_addr = (u32) ((unsigned long)(page_address(sg->page) + sg->offset) | 212 | dent_addr = (u32) ((unsigned long)(sg_virt(sg)) & (IO_PAGE_SIZE - 1UL)); |
213 | & (IO_PAGE_SIZE - 1UL)); | ||
214 | while (--nents) { | 213 | while (--nents) { |
215 | unsigned long addr; | 214 | unsigned long addr; |
216 | 215 | ||
217 | sg = sg_next(sg); | 216 | sg = sg_next(sg); |
218 | addr = (unsigned long) (page_address(sg->page) + sg->offset); | 217 | addr = (unsigned long) sg_virt(sg); |
219 | if (! VCONTIG(prev, addr)) { | 218 | if (! VCONTIG(prev, addr)) { |
220 | dma_sg->dma_address = dent_addr; | 219 | dma_sg->dma_address = dent_addr; |
221 | dma_sg->dma_length = dent_len; | 220 | dma_sg->dma_length = dent_len; |
@@ -234,6 +233,11 @@ unsigned long prepare_sg(struct scatterlist *sg, int nents) | |||
234 | dma_sg->dma_address = dent_addr; | 233 | dma_sg->dma_address = dent_addr; |
235 | dma_sg->dma_length = dent_len; | 234 | dma_sg->dma_length = dent_len; |
236 | 235 | ||
236 | if (dma_sg != sg) { | ||
237 | dma_sg = next_sg(dma_sg); | ||
238 | dma_sg->dma_length = 0; | ||
239 | } | ||
240 | |||
237 | return ((unsigned long) dent_addr + | 241 | return ((unsigned long) dent_addr + |
238 | (unsigned long) dent_len + | 242 | (unsigned long) dent_len + |
239 | (IO_PAGE_SIZE - 1UL)) >> IO_PAGE_SHIFT; | 243 | (IO_PAGE_SIZE - 1UL)) >> IO_PAGE_SHIFT; |
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index 2c3bea228159..30431bd24e1e 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -257,8 +257,8 @@ struct irq_handler_data { | |||
257 | unsigned long imap; | 257 | unsigned long imap; |
258 | 258 | ||
259 | void (*pre_handler)(unsigned int, void *, void *); | 259 | void (*pre_handler)(unsigned int, void *, void *); |
260 | void *pre_handler_arg1; | 260 | void *arg1; |
261 | void *pre_handler_arg2; | 261 | void *arg2; |
262 | }; | 262 | }; |
263 | 263 | ||
264 | #ifdef CONFIG_SMP | 264 | #ifdef CONFIG_SMP |
@@ -346,7 +346,7 @@ static void sun4u_irq_disable(unsigned int virt_irq) | |||
346 | } | 346 | } |
347 | } | 347 | } |
348 | 348 | ||
349 | static void sun4u_irq_end(unsigned int virt_irq) | 349 | static void sun4u_irq_eoi(unsigned int virt_irq) |
350 | { | 350 | { |
351 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); | 351 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); |
352 | struct irq_desc *desc = irq_desc + virt_irq; | 352 | struct irq_desc *desc = irq_desc + virt_irq; |
@@ -401,7 +401,7 @@ static void sun4v_irq_disable(unsigned int virt_irq) | |||
401 | "err(%d)\n", ino, err); | 401 | "err(%d)\n", ino, err); |
402 | } | 402 | } |
403 | 403 | ||
404 | static void sun4v_irq_end(unsigned int virt_irq) | 404 | static void sun4v_irq_eoi(unsigned int virt_irq) |
405 | { | 405 | { |
406 | unsigned int ino = virt_irq_table[virt_irq].dev_ino; | 406 | unsigned int ino = virt_irq_table[virt_irq].dev_ino; |
407 | struct irq_desc *desc = irq_desc + virt_irq; | 407 | struct irq_desc *desc = irq_desc + virt_irq; |
@@ -478,7 +478,7 @@ static void sun4v_virq_disable(unsigned int virt_irq) | |||
478 | dev_handle, dev_ino, err); | 478 | dev_handle, dev_ino, err); |
479 | } | 479 | } |
480 | 480 | ||
481 | static void sun4v_virq_end(unsigned int virt_irq) | 481 | static void sun4v_virq_eoi(unsigned int virt_irq) |
482 | { | 482 | { |
483 | struct irq_desc *desc = irq_desc + virt_irq; | 483 | struct irq_desc *desc = irq_desc + virt_irq; |
484 | unsigned long dev_handle, dev_ino; | 484 | unsigned long dev_handle, dev_ino; |
@@ -498,33 +498,11 @@ static void sun4v_virq_end(unsigned int virt_irq) | |||
498 | dev_handle, dev_ino, err); | 498 | dev_handle, dev_ino, err); |
499 | } | 499 | } |
500 | 500 | ||
501 | static void run_pre_handler(unsigned int virt_irq) | ||
502 | { | ||
503 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); | ||
504 | unsigned int ino; | ||
505 | |||
506 | ino = virt_irq_table[virt_irq].dev_ino; | ||
507 | if (likely(data->pre_handler)) { | ||
508 | data->pre_handler(ino, | ||
509 | data->pre_handler_arg1, | ||
510 | data->pre_handler_arg2); | ||
511 | } | ||
512 | } | ||
513 | |||
514 | static struct irq_chip sun4u_irq = { | 501 | static struct irq_chip sun4u_irq = { |
515 | .typename = "sun4u", | 502 | .typename = "sun4u", |
516 | .enable = sun4u_irq_enable, | 503 | .enable = sun4u_irq_enable, |
517 | .disable = sun4u_irq_disable, | 504 | .disable = sun4u_irq_disable, |
518 | .end = sun4u_irq_end, | 505 | .eoi = sun4u_irq_eoi, |
519 | .set_affinity = sun4u_set_affinity, | ||
520 | }; | ||
521 | |||
522 | static struct irq_chip sun4u_irq_ack = { | ||
523 | .typename = "sun4u+ack", | ||
524 | .enable = sun4u_irq_enable, | ||
525 | .disable = sun4u_irq_disable, | ||
526 | .ack = run_pre_handler, | ||
527 | .end = sun4u_irq_end, | ||
528 | .set_affinity = sun4u_set_affinity, | 506 | .set_affinity = sun4u_set_affinity, |
529 | }; | 507 | }; |
530 | 508 | ||
@@ -532,7 +510,7 @@ static struct irq_chip sun4v_irq = { | |||
532 | .typename = "sun4v", | 510 | .typename = "sun4v", |
533 | .enable = sun4v_irq_enable, | 511 | .enable = sun4v_irq_enable, |
534 | .disable = sun4v_irq_disable, | 512 | .disable = sun4v_irq_disable, |
535 | .end = sun4v_irq_end, | 513 | .eoi = sun4v_irq_eoi, |
536 | .set_affinity = sun4v_set_affinity, | 514 | .set_affinity = sun4v_set_affinity, |
537 | }; | 515 | }; |
538 | 516 | ||
@@ -540,31 +518,33 @@ static struct irq_chip sun4v_virq = { | |||
540 | .typename = "vsun4v", | 518 | .typename = "vsun4v", |
541 | .enable = sun4v_virq_enable, | 519 | .enable = sun4v_virq_enable, |
542 | .disable = sun4v_virq_disable, | 520 | .disable = sun4v_virq_disable, |
543 | .end = sun4v_virq_end, | 521 | .eoi = sun4v_virq_eoi, |
544 | .set_affinity = sun4v_virt_set_affinity, | 522 | .set_affinity = sun4v_virt_set_affinity, |
545 | }; | 523 | }; |
546 | 524 | ||
525 | static void fastcall pre_flow_handler(unsigned int virt_irq, | ||
526 | struct irq_desc *desc) | ||
527 | { | ||
528 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); | ||
529 | unsigned int ino = virt_irq_table[virt_irq].dev_ino; | ||
530 | |||
531 | data->pre_handler(ino, data->arg1, data->arg2); | ||
532 | |||
533 | handle_fasteoi_irq(virt_irq, desc); | ||
534 | } | ||
535 | |||
547 | void irq_install_pre_handler(int virt_irq, | 536 | void irq_install_pre_handler(int virt_irq, |
548 | void (*func)(unsigned int, void *, void *), | 537 | void (*func)(unsigned int, void *, void *), |
549 | void *arg1, void *arg2) | 538 | void *arg1, void *arg2) |
550 | { | 539 | { |
551 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); | 540 | struct irq_handler_data *data = get_irq_chip_data(virt_irq); |
552 | struct irq_chip *chip = get_irq_chip(virt_irq); | 541 | struct irq_desc *desc = irq_desc + virt_irq; |
553 | |||
554 | if (WARN_ON(chip == &sun4v_irq || chip == &sun4v_virq)) { | ||
555 | printk(KERN_ERR "IRQ: Trying to install pre-handler on " | ||
556 | "sun4v irq %u\n", virt_irq); | ||
557 | return; | ||
558 | } | ||
559 | 542 | ||
560 | data->pre_handler = func; | 543 | data->pre_handler = func; |
561 | data->pre_handler_arg1 = arg1; | 544 | data->arg1 = arg1; |
562 | data->pre_handler_arg2 = arg2; | 545 | data->arg2 = arg2; |
563 | |||
564 | if (chip == &sun4u_irq_ack) | ||
565 | return; | ||
566 | 546 | ||
567 | set_irq_chip(virt_irq, &sun4u_irq_ack); | 547 | desc->handle_irq = pre_flow_handler; |
568 | } | 548 | } |
569 | 549 | ||
570 | unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap) | 550 | unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap) |
@@ -582,7 +562,10 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap) | |||
582 | if (!virt_irq) { | 562 | if (!virt_irq) { |
583 | virt_irq = virt_irq_alloc(0, ino); | 563 | virt_irq = virt_irq_alloc(0, ino); |
584 | bucket_set_virt_irq(__pa(bucket), virt_irq); | 564 | bucket_set_virt_irq(__pa(bucket), virt_irq); |
585 | set_irq_chip(virt_irq, &sun4u_irq); | 565 | set_irq_chip_and_handler_name(virt_irq, |
566 | &sun4u_irq, | ||
567 | handle_fasteoi_irq, | ||
568 | "IVEC"); | ||
586 | } | 569 | } |
587 | 570 | ||
588 | data = get_irq_chip_data(virt_irq); | 571 | data = get_irq_chip_data(virt_irq); |
@@ -617,7 +600,9 @@ static unsigned int sun4v_build_common(unsigned long sysino, | |||
617 | if (!virt_irq) { | 600 | if (!virt_irq) { |
618 | virt_irq = virt_irq_alloc(0, sysino); | 601 | virt_irq = virt_irq_alloc(0, sysino); |
619 | bucket_set_virt_irq(__pa(bucket), virt_irq); | 602 | bucket_set_virt_irq(__pa(bucket), virt_irq); |
620 | set_irq_chip(virt_irq, chip); | 603 | set_irq_chip_and_handler_name(virt_irq, chip, |
604 | handle_fasteoi_irq, | ||
605 | "IVEC"); | ||
621 | } | 606 | } |
622 | 607 | ||
623 | data = get_irq_chip_data(virt_irq); | 608 | data = get_irq_chip_data(virt_irq); |
@@ -665,7 +650,10 @@ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino) | |||
665 | 650 | ||
666 | virt_irq = virt_irq_alloc(devhandle, devino); | 651 | virt_irq = virt_irq_alloc(devhandle, devino); |
667 | bucket_set_virt_irq(__pa(bucket), virt_irq); | 652 | bucket_set_virt_irq(__pa(bucket), virt_irq); |
668 | set_irq_chip(virt_irq, &sun4v_virq); | 653 | |
654 | set_irq_chip_and_handler_name(virt_irq, &sun4v_virq, | ||
655 | handle_fasteoi_irq, | ||
656 | "IVEC"); | ||
669 | 657 | ||
670 | data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); | 658 | data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); |
671 | if (unlikely(!data)) | 659 | if (unlikely(!data)) |
@@ -724,6 +712,7 @@ void handler_irq(int irq, struct pt_regs *regs) | |||
724 | : "memory"); | 712 | : "memory"); |
725 | 713 | ||
726 | while (bucket_pa) { | 714 | while (bucket_pa) { |
715 | struct irq_desc *desc; | ||
727 | unsigned long next_pa; | 716 | unsigned long next_pa; |
728 | unsigned int virt_irq; | 717 | unsigned int virt_irq; |
729 | 718 | ||
@@ -731,7 +720,9 @@ void handler_irq(int irq, struct pt_regs *regs) | |||
731 | virt_irq = bucket_get_virt_irq(bucket_pa); | 720 | virt_irq = bucket_get_virt_irq(bucket_pa); |
732 | bucket_clear_chain_pa(bucket_pa); | 721 | bucket_clear_chain_pa(bucket_pa); |
733 | 722 | ||
734 | __do_IRQ(virt_irq); | 723 | desc = irq_desc + virt_irq; |
724 | |||
725 | desc->handle_irq(virt_irq, desc); | ||
735 | 726 | ||
736 | bucket_pa = next_pa; | 727 | bucket_pa = next_pa; |
737 | } | 728 | } |
diff --git a/arch/sparc64/kernel/ldc.c b/arch/sparc64/kernel/ldc.c index 85a2be0b0962..c8313cb60f0a 100644 --- a/arch/sparc64/kernel/ldc.c +++ b/arch/sparc64/kernel/ldc.c | |||
@@ -2057,7 +2057,7 @@ static void fill_cookies(struct cookie_state *sp, unsigned long pa, | |||
2057 | 2057 | ||
2058 | static int sg_count_one(struct scatterlist *sg) | 2058 | static int sg_count_one(struct scatterlist *sg) |
2059 | { | 2059 | { |
2060 | unsigned long base = page_to_pfn(sg->page) << PAGE_SHIFT; | 2060 | unsigned long base = page_to_pfn(sg_page(sg)) << PAGE_SHIFT; |
2061 | long len = sg->length; | 2061 | long len = sg->length; |
2062 | 2062 | ||
2063 | if ((sg->offset | len) & (8UL - 1)) | 2063 | if ((sg->offset | len) & (8UL - 1)) |
diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c index 9b808640a193..63b3ebc0c3c2 100644 --- a/arch/sparc64/kernel/pci.c +++ b/arch/sparc64/kernel/pci.c | |||
@@ -207,8 +207,7 @@ static struct { | |||
207 | { "SUNW,sun4v-pci", sun4v_pci_init }, | 207 | { "SUNW,sun4v-pci", sun4v_pci_init }, |
208 | { "pciex108e,80f0", fire_pci_init }, | 208 | { "pciex108e,80f0", fire_pci_init }, |
209 | }; | 209 | }; |
210 | #define PCI_NUM_CONTROLLER_TYPES (sizeof(pci_controller_table) / \ | 210 | #define PCI_NUM_CONTROLLER_TYPES ARRAY_SIZE(pci_controller_table) |
211 | sizeof(pci_controller_table[0])) | ||
212 | 211 | ||
213 | static int __init pci_controller_init(const char *model_name, int namelen, struct device_node *dp) | 212 | static int __init pci_controller_init(const char *model_name, int namelen, struct device_node *dp) |
214 | { | 213 | { |
diff --git a/arch/sparc64/kernel/pci_msi.c b/arch/sparc64/kernel/pci_msi.c index 31a165fd3e48..d6d64b44af63 100644 --- a/arch/sparc64/kernel/pci_msi.c +++ b/arch/sparc64/kernel/pci_msi.c | |||
@@ -28,8 +28,15 @@ static irqreturn_t sparc64_msiq_interrupt(int irq, void *cookie) | |||
28 | unsigned long msi; | 28 | unsigned long msi; |
29 | 29 | ||
30 | err = ops->dequeue_msi(pbm, msiqid, &head, &msi); | 30 | err = ops->dequeue_msi(pbm, msiqid, &head, &msi); |
31 | if (likely(err > 0)) | 31 | if (likely(err > 0)) { |
32 | __do_IRQ(pbm->msi_irq_table[msi - pbm->msi_first]); | 32 | struct irq_desc *desc; |
33 | unsigned int virt_irq; | ||
34 | |||
35 | virt_irq = pbm->msi_irq_table[msi - pbm->msi_first]; | ||
36 | desc = irq_desc + virt_irq; | ||
37 | |||
38 | desc->handle_irq(virt_irq, desc); | ||
39 | } | ||
33 | 40 | ||
34 | if (unlikely(err < 0)) | 41 | if (unlikely(err < 0)) |
35 | goto err_dequeue; | 42 | goto err_dequeue; |
@@ -128,7 +135,8 @@ int sparc64_setup_msi_irq(unsigned int *virt_irq_p, | |||
128 | if (!*virt_irq_p) | 135 | if (!*virt_irq_p) |
129 | goto out_err; | 136 | goto out_err; |
130 | 137 | ||
131 | set_irq_chip(*virt_irq_p, &msi_irq); | 138 | set_irq_chip_and_handler_name(*virt_irq_p, &msi_irq, |
139 | handle_simple_irq, "MSI"); | ||
132 | 140 | ||
133 | err = alloc_msi(pbm); | 141 | err = alloc_msi(pbm); |
134 | if (unlikely(err < 0)) | 142 | if (unlikely(err < 0)) |
diff --git a/arch/sparc64/kernel/pci_sun4v.c b/arch/sparc64/kernel/pci_sun4v.c index fe46ace3e59f..8c4875bdb4a8 100644 --- a/arch/sparc64/kernel/pci_sun4v.c +++ b/arch/sparc64/kernel/pci_sun4v.c | |||
@@ -365,8 +365,7 @@ static void dma_4v_unmap_single(struct device *dev, dma_addr_t bus_addr, | |||
365 | spin_unlock_irqrestore(&iommu->lock, flags); | 365 | spin_unlock_irqrestore(&iommu->lock, flags); |
366 | } | 366 | } |
367 | 367 | ||
368 | #define SG_ENT_PHYS_ADDRESS(SG) \ | 368 | #define SG_ENT_PHYS_ADDRESS(SG) (__pa(sg_virt((SG)))) |
369 | (__pa(page_address((SG)->page)) + (SG)->offset) | ||
370 | 369 | ||
371 | static long fill_sg(long entry, struct device *dev, | 370 | static long fill_sg(long entry, struct device *dev, |
372 | struct scatterlist *sg, | 371 | struct scatterlist *sg, |
@@ -477,9 +476,7 @@ static int dma_4v_map_sg(struct device *dev, struct scatterlist *sglist, | |||
477 | /* Fast path single entry scatterlists. */ | 476 | /* Fast path single entry scatterlists. */ |
478 | if (nelems == 1) { | 477 | if (nelems == 1) { |
479 | sglist->dma_address = | 478 | sglist->dma_address = |
480 | dma_4v_map_single(dev, | 479 | dma_4v_map_single(dev, sg_virt(sglist), |
481 | (page_address(sglist->page) + | ||
482 | sglist->offset), | ||
483 | sglist->length, direction); | 480 | sglist->length, direction); |
484 | if (unlikely(sglist->dma_address == DMA_ERROR_CODE)) | 481 | if (unlikely(sglist->dma_address == DMA_ERROR_CODE)) |
485 | return 0; | 482 | return 0; |
diff --git a/arch/sparc64/math-emu/Makefile b/arch/sparc64/math-emu/Makefile index a0b06fd29467..cc5cb9baf6aa 100644 --- a/arch/sparc64/math-emu/Makefile +++ b/arch/sparc64/math-emu/Makefile | |||
@@ -4,4 +4,4 @@ | |||
4 | 4 | ||
5 | obj-y := math.o | 5 | obj-y := math.o |
6 | 6 | ||
7 | EXTRA_CFLAGS = -I. -Iinclude/math-emu -w | 7 | EXTRA_CFLAGS = -Iinclude/math-emu -w |
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index 25b248a02507..3a8cd3dfb51c 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c | |||
@@ -1115,7 +1115,7 @@ static void do_ubd_request(struct request_queue *q) | |||
1115 | } | 1115 | } |
1116 | prepare_request(req, io_req, | 1116 | prepare_request(req, io_req, |
1117 | (unsigned long long) req->sector << 9, | 1117 | (unsigned long long) req->sector << 9, |
1118 | sg->offset, sg->length, sg->page); | 1118 | sg->offset, sg->length, sg_page(sg)); |
1119 | 1119 | ||
1120 | last_sectors = sg->length >> 9; | 1120 | last_sectors = sg->length >> 9; |
1121 | n = os_write_file(thread_fd, &io_req, | 1121 | n = os_write_file(thread_fd, &io_req, |
diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S index f35ea2237522..a0ae2e7f6cec 100644 --- a/arch/x86/boot/compressed/head_32.S +++ b/arch/x86/boot/compressed/head_32.S | |||
@@ -27,13 +27,22 @@ | |||
27 | #include <asm/segment.h> | 27 | #include <asm/segment.h> |
28 | #include <asm/page.h> | 28 | #include <asm/page.h> |
29 | #include <asm/boot.h> | 29 | #include <asm/boot.h> |
30 | #include <asm/asm-offsets.h> | ||
30 | 31 | ||
31 | .section ".text.head","ax",@progbits | 32 | .section ".text.head","ax",@progbits |
32 | .globl startup_32 | 33 | .globl startup_32 |
33 | 34 | ||
34 | startup_32: | 35 | startup_32: |
35 | cld | 36 | /* check to see if KEEP_SEGMENTS flag is meaningful */ |
36 | cli | 37 | cmpw $0x207, BP_version(%esi) |
38 | jb 1f | ||
39 | |||
40 | /* test KEEP_SEGMENTS flag to see if the bootloader is asking | ||
41 | * us to not reload segments */ | ||
42 | testb $(1<<6), BP_loadflags(%esi) | ||
43 | jnz 2f | ||
44 | |||
45 | 1: cli | ||
37 | movl $(__BOOT_DS),%eax | 46 | movl $(__BOOT_DS),%eax |
38 | movl %eax,%ds | 47 | movl %eax,%ds |
39 | movl %eax,%es | 48 | movl %eax,%es |
@@ -41,6 +50,8 @@ startup_32: | |||
41 | movl %eax,%gs | 50 | movl %eax,%gs |
42 | movl %eax,%ss | 51 | movl %eax,%ss |
43 | 52 | ||
53 | 2: cld | ||
54 | |||
44 | /* Calculate the delta between where we were compiled to run | 55 | /* Calculate the delta between where we were compiled to run |
45 | * at and where we were actually loaded at. This can only be done | 56 | * at and where we were actually loaded at. This can only be done |
46 | * with a short local call on x86. Nothing else will tell us what | 57 | * with a short local call on x86. Nothing else will tell us what |
diff --git a/arch/x86/boot/compressed/misc_32.c b/arch/x86/boot/compressed/misc_32.c index 1dc1e19c0a9f..b74d60d1b2fa 100644 --- a/arch/x86/boot/compressed/misc_32.c +++ b/arch/x86/boot/compressed/misc_32.c | |||
@@ -247,6 +247,9 @@ static void putstr(const char *s) | |||
247 | int x,y,pos; | 247 | int x,y,pos; |
248 | char c; | 248 | char c; |
249 | 249 | ||
250 | if (RM_SCREEN_INFO.orig_video_mode == 0 && lines == 0 && cols == 0) | ||
251 | return; | ||
252 | |||
250 | x = RM_SCREEN_INFO.orig_x; | 253 | x = RM_SCREEN_INFO.orig_x; |
251 | y = RM_SCREEN_INFO.orig_y; | 254 | y = RM_SCREEN_INFO.orig_y; |
252 | 255 | ||
diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S index f3140e596d40..8353c81c41c0 100644 --- a/arch/x86/boot/header.S +++ b/arch/x86/boot/header.S | |||
@@ -119,7 +119,7 @@ _start: | |||
119 | # Part 2 of the header, from the old setup.S | 119 | # Part 2 of the header, from the old setup.S |
120 | 120 | ||
121 | .ascii "HdrS" # header signature | 121 | .ascii "HdrS" # header signature |
122 | .word 0x0206 # header version number (>= 0x0105) | 122 | .word 0x0207 # header version number (>= 0x0105) |
123 | # or else old loadlin-1.5 will fail) | 123 | # or else old loadlin-1.5 will fail) |
124 | .globl realmode_swtch | 124 | .globl realmode_swtch |
125 | realmode_swtch: .word 0, 0 # default_switch, SETUPSEG | 125 | realmode_swtch: .word 0, 0 # default_switch, SETUPSEG |
@@ -214,6 +214,11 @@ cmdline_size: .long COMMAND_LINE_SIZE-1 #length of the command line, | |||
214 | #added with boot protocol | 214 | #added with boot protocol |
215 | #version 2.06 | 215 | #version 2.06 |
216 | 216 | ||
217 | hardware_subarch: .long 0 # subarchitecture, added with 2.07 | ||
218 | # default to 0 for normal x86 PC | ||
219 | |||
220 | hardware_subarch_data: .quad 0 | ||
221 | |||
217 | # End of setup header ##################################################### | 222 | # End of setup header ##################################################### |
218 | 223 | ||
219 | .section ".inittext", "ax" | 224 | .section ".inittext", "ax" |
diff --git a/arch/x86/kernel/asm-offsets_32.c b/arch/x86/kernel/asm-offsets_32.c index f1b7cdda82b3..0e45981b2dd7 100644 --- a/arch/x86/kernel/asm-offsets_32.c +++ b/arch/x86/kernel/asm-offsets_32.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <asm/fixmap.h> | 15 | #include <asm/fixmap.h> |
16 | #include <asm/processor.h> | 16 | #include <asm/processor.h> |
17 | #include <asm/thread_info.h> | 17 | #include <asm/thread_info.h> |
18 | #include <asm/bootparam.h> | ||
18 | #include <asm/elf.h> | 19 | #include <asm/elf.h> |
19 | 20 | ||
20 | #include <xen/interface/xen.h> | 21 | #include <xen/interface/xen.h> |
@@ -135,6 +136,7 @@ void foo(void) | |||
135 | #ifdef CONFIG_LGUEST_GUEST | 136 | #ifdef CONFIG_LGUEST_GUEST |
136 | BLANK(); | 137 | BLANK(); |
137 | OFFSET(LGUEST_DATA_irq_enabled, lguest_data, irq_enabled); | 138 | OFFSET(LGUEST_DATA_irq_enabled, lguest_data, irq_enabled); |
139 | OFFSET(LGUEST_DATA_pgdir, lguest_data, pgdir); | ||
138 | OFFSET(LGUEST_PAGES_host_gdt_desc, lguest_pages, state.host_gdt_desc); | 140 | OFFSET(LGUEST_PAGES_host_gdt_desc, lguest_pages, state.host_gdt_desc); |
139 | OFFSET(LGUEST_PAGES_host_idt_desc, lguest_pages, state.host_idt_desc); | 141 | OFFSET(LGUEST_PAGES_host_idt_desc, lguest_pages, state.host_idt_desc); |
140 | OFFSET(LGUEST_PAGES_host_cr3, lguest_pages, state.host_cr3); | 142 | OFFSET(LGUEST_PAGES_host_cr3, lguest_pages, state.host_cr3); |
@@ -146,4 +148,10 @@ void foo(void) | |||
146 | OFFSET(LGUEST_PAGES_regs_errcode, lguest_pages, regs.errcode); | 148 | OFFSET(LGUEST_PAGES_regs_errcode, lguest_pages, regs.errcode); |
147 | OFFSET(LGUEST_PAGES_regs, lguest_pages, regs); | 149 | OFFSET(LGUEST_PAGES_regs, lguest_pages, regs); |
148 | #endif | 150 | #endif |
151 | |||
152 | BLANK(); | ||
153 | OFFSET(BP_scratch, boot_params, scratch); | ||
154 | OFFSET(BP_loadflags, boot_params, hdr.loadflags); | ||
155 | OFFSET(BP_hardware_subarch, boot_params, hdr.hardware_subarch); | ||
156 | OFFSET(BP_version, boot_params, hdr.version); | ||
149 | } | 157 | } |
diff --git a/arch/x86/kernel/e820_32.c b/arch/x86/kernel/e820_32.c index 58fd54eb5577..18f500d185a2 100644 --- a/arch/x86/kernel/e820_32.c +++ b/arch/x86/kernel/e820_32.c | |||
@@ -51,6 +51,13 @@ struct resource code_resource = { | |||
51 | .flags = IORESOURCE_BUSY | IORESOURCE_MEM | 51 | .flags = IORESOURCE_BUSY | IORESOURCE_MEM |
52 | }; | 52 | }; |
53 | 53 | ||
54 | struct resource bss_resource = { | ||
55 | .name = "Kernel bss", | ||
56 | .start = 0, | ||
57 | .end = 0, | ||
58 | .flags = IORESOURCE_BUSY | IORESOURCE_MEM | ||
59 | }; | ||
60 | |||
54 | static struct resource system_rom_resource = { | 61 | static struct resource system_rom_resource = { |
55 | .name = "System ROM", | 62 | .name = "System ROM", |
56 | .start = 0xf0000, | 63 | .start = 0xf0000, |
@@ -254,7 +261,9 @@ static void __init probe_roms(void) | |||
254 | * and also for regions reported as reserved by the e820. | 261 | * and also for regions reported as reserved by the e820. |
255 | */ | 262 | */ |
256 | static void __init | 263 | static void __init |
257 | legacy_init_iomem_resources(struct resource *code_resource, struct resource *data_resource) | 264 | legacy_init_iomem_resources(struct resource *code_resource, |
265 | struct resource *data_resource, | ||
266 | struct resource *bss_resource) | ||
258 | { | 267 | { |
259 | int i; | 268 | int i; |
260 | 269 | ||
@@ -287,6 +296,7 @@ legacy_init_iomem_resources(struct resource *code_resource, struct resource *dat | |||
287 | */ | 296 | */ |
288 | request_resource(res, code_resource); | 297 | request_resource(res, code_resource); |
289 | request_resource(res, data_resource); | 298 | request_resource(res, data_resource); |
299 | request_resource(res, bss_resource); | ||
290 | #ifdef CONFIG_KEXEC | 300 | #ifdef CONFIG_KEXEC |
291 | if (crashk_res.start != crashk_res.end) | 301 | if (crashk_res.start != crashk_res.end) |
292 | request_resource(res, &crashk_res); | 302 | request_resource(res, &crashk_res); |
@@ -307,9 +317,11 @@ static int __init request_standard_resources(void) | |||
307 | 317 | ||
308 | printk("Setting up standard PCI resources\n"); | 318 | printk("Setting up standard PCI resources\n"); |
309 | if (efi_enabled) | 319 | if (efi_enabled) |
310 | efi_initialize_iomem_resources(&code_resource, &data_resource); | 320 | efi_initialize_iomem_resources(&code_resource, |
321 | &data_resource, &bss_resource); | ||
311 | else | 322 | else |
312 | legacy_init_iomem_resources(&code_resource, &data_resource); | 323 | legacy_init_iomem_resources(&code_resource, |
324 | &data_resource, &bss_resource); | ||
313 | 325 | ||
314 | /* EFI systems may still have VGA */ | 326 | /* EFI systems may still have VGA */ |
315 | request_resource(&iomem_resource, &video_ram_resource); | 327 | request_resource(&iomem_resource, &video_ram_resource); |
diff --git a/arch/x86/kernel/e820_64.c b/arch/x86/kernel/e820_64.c index 57616865d8a0..04698e0b056c 100644 --- a/arch/x86/kernel/e820_64.c +++ b/arch/x86/kernel/e820_64.c | |||
@@ -47,7 +47,7 @@ unsigned long end_pfn_map; | |||
47 | */ | 47 | */ |
48 | static unsigned long __initdata end_user_pfn = MAXMEM>>PAGE_SHIFT; | 48 | static unsigned long __initdata end_user_pfn = MAXMEM>>PAGE_SHIFT; |
49 | 49 | ||
50 | extern struct resource code_resource, data_resource; | 50 | extern struct resource code_resource, data_resource, bss_resource; |
51 | 51 | ||
52 | /* Check for some hardcoded bad areas that early boot is not allowed to touch */ | 52 | /* Check for some hardcoded bad areas that early boot is not allowed to touch */ |
53 | static inline int bad_addr(unsigned long *addrp, unsigned long size) | 53 | static inline int bad_addr(unsigned long *addrp, unsigned long size) |
@@ -225,6 +225,7 @@ void __init e820_reserve_resources(void) | |||
225 | */ | 225 | */ |
226 | request_resource(res, &code_resource); | 226 | request_resource(res, &code_resource); |
227 | request_resource(res, &data_resource); | 227 | request_resource(res, &data_resource); |
228 | request_resource(res, &bss_resource); | ||
228 | #ifdef CONFIG_KEXEC | 229 | #ifdef CONFIG_KEXEC |
229 | if (crashk_res.start != crashk_res.end) | 230 | if (crashk_res.start != crashk_res.end) |
230 | request_resource(res, &crashk_res); | 231 | request_resource(res, &crashk_res); |
@@ -729,3 +730,22 @@ __init void e820_setup_gap(void) | |||
729 | printk(KERN_INFO "Allocating PCI resources starting at %lx (gap: %lx:%lx)\n", | 730 | printk(KERN_INFO "Allocating PCI resources starting at %lx (gap: %lx:%lx)\n", |
730 | pci_mem_start, gapstart, gapsize); | 731 | pci_mem_start, gapstart, gapsize); |
731 | } | 732 | } |
733 | |||
734 | int __init arch_get_ram_range(int slot, u64 *addr, u64 *size) | ||
735 | { | ||
736 | int i; | ||
737 | |||
738 | if (slot < 0 || slot >= e820.nr_map) | ||
739 | return -1; | ||
740 | for (i = slot; i < e820.nr_map; i++) { | ||
741 | if (e820.map[i].type != E820_RAM) | ||
742 | continue; | ||
743 | break; | ||
744 | } | ||
745 | if (i == e820.nr_map || e820.map[i].addr > (max_pfn << PAGE_SHIFT)) | ||
746 | return -1; | ||
747 | *addr = e820.map[i].addr; | ||
748 | *size = min_t(u64, e820.map[i].size + e820.map[i].addr, | ||
749 | max_pfn << PAGE_SHIFT) - *addr; | ||
750 | return i + 1; | ||
751 | } | ||
diff --git a/arch/x86/kernel/efi_32.c b/arch/x86/kernel/efi_32.c index b42558c48e9d..e2be78f49399 100644 --- a/arch/x86/kernel/efi_32.c +++ b/arch/x86/kernel/efi_32.c | |||
@@ -603,7 +603,8 @@ void __init efi_enter_virtual_mode(void) | |||
603 | 603 | ||
604 | void __init | 604 | void __init |
605 | efi_initialize_iomem_resources(struct resource *code_resource, | 605 | efi_initialize_iomem_resources(struct resource *code_resource, |
606 | struct resource *data_resource) | 606 | struct resource *data_resource, |
607 | struct resource *bss_resource) | ||
607 | { | 608 | { |
608 | struct resource *res; | 609 | struct resource *res; |
609 | efi_memory_desc_t *md; | 610 | efi_memory_desc_t *md; |
@@ -675,6 +676,7 @@ efi_initialize_iomem_resources(struct resource *code_resource, | |||
675 | if (md->type == EFI_CONVENTIONAL_MEMORY) { | 676 | if (md->type == EFI_CONVENTIONAL_MEMORY) { |
676 | request_resource(res, code_resource); | 677 | request_resource(res, code_resource); |
677 | request_resource(res, data_resource); | 678 | request_resource(res, data_resource); |
679 | request_resource(res, bss_resource); | ||
678 | #ifdef CONFIG_KEXEC | 680 | #ifdef CONFIG_KEXEC |
679 | request_resource(res, &crashk_res); | 681 | request_resource(res, &crashk_res); |
680 | #endif | 682 | #endif |
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S index 39677965e161..00b1c2c56454 100644 --- a/arch/x86/kernel/head_32.S +++ b/arch/x86/kernel/head_32.S | |||
@@ -79,22 +79,30 @@ INIT_MAP_BEYOND_END = BOOTBITMAP_SIZE + (PAGE_TABLE_SIZE + ALLOCATOR_SLOP)*PAGE_ | |||
79 | */ | 79 | */ |
80 | .section .text.head,"ax",@progbits | 80 | .section .text.head,"ax",@progbits |
81 | ENTRY(startup_32) | 81 | ENTRY(startup_32) |
82 | /* check to see if KEEP_SEGMENTS flag is meaningful */ | ||
83 | cmpw $0x207, BP_version(%esi) | ||
84 | jb 1f | ||
85 | |||
86 | /* test KEEP_SEGMENTS flag to see if the bootloader is asking | ||
87 | us to not reload segments */ | ||
88 | testb $(1<<6), BP_loadflags(%esi) | ||
89 | jnz 2f | ||
82 | 90 | ||
83 | /* | 91 | /* |
84 | * Set segments to known values. | 92 | * Set segments to known values. |
85 | */ | 93 | */ |
86 | cld | 94 | 1: lgdt boot_gdt_descr - __PAGE_OFFSET |
87 | lgdt boot_gdt_descr - __PAGE_OFFSET | ||
88 | movl $(__BOOT_DS),%eax | 95 | movl $(__BOOT_DS),%eax |
89 | movl %eax,%ds | 96 | movl %eax,%ds |
90 | movl %eax,%es | 97 | movl %eax,%es |
91 | movl %eax,%fs | 98 | movl %eax,%fs |
92 | movl %eax,%gs | 99 | movl %eax,%gs |
100 | 2: | ||
93 | 101 | ||
94 | /* | 102 | /* |
95 | * Clear BSS first so that there are no surprises... | 103 | * Clear BSS first so that there are no surprises... |
96 | * No need to cld as DF is already clear from cld above... | ||
97 | */ | 104 | */ |
105 | cld | ||
98 | xorl %eax,%eax | 106 | xorl %eax,%eax |
99 | movl $__bss_start - __PAGE_OFFSET,%edi | 107 | movl $__bss_start - __PAGE_OFFSET,%edi |
100 | movl $__bss_stop - __PAGE_OFFSET,%ecx | 108 | movl $__bss_stop - __PAGE_OFFSET,%ecx |
@@ -128,6 +136,35 @@ ENTRY(startup_32) | |||
128 | movsl | 136 | movsl |
129 | 1: | 137 | 1: |
130 | 138 | ||
139 | #ifdef CONFIG_PARAVIRT | ||
140 | cmpw $0x207, (boot_params + BP_version - __PAGE_OFFSET) | ||
141 | jb default_entry | ||
142 | |||
143 | /* Paravirt-compatible boot parameters. Look to see what architecture | ||
144 | we're booting under. */ | ||
145 | movl (boot_params + BP_hardware_subarch - __PAGE_OFFSET), %eax | ||
146 | cmpl $num_subarch_entries, %eax | ||
147 | jae bad_subarch | ||
148 | |||
149 | movl subarch_entries - __PAGE_OFFSET(,%eax,4), %eax | ||
150 | subl $__PAGE_OFFSET, %eax | ||
151 | jmp *%eax | ||
152 | |||
153 | bad_subarch: | ||
154 | WEAK(lguest_entry) | ||
155 | WEAK(xen_entry) | ||
156 | /* Unknown implementation; there's really | ||
157 | nothing we can do at this point. */ | ||
158 | ud2a | ||
159 | .data | ||
160 | subarch_entries: | ||
161 | .long default_entry /* normal x86/PC */ | ||
162 | .long lguest_entry /* lguest hypervisor */ | ||
163 | .long xen_entry /* Xen hypervisor */ | ||
164 | num_subarch_entries = (. - subarch_entries) / 4 | ||
165 | .previous | ||
166 | #endif /* CONFIG_PARAVIRT */ | ||
167 | |||
131 | /* | 168 | /* |
132 | * Initialize page tables. This creates a PDE and a set of page | 169 | * Initialize page tables. This creates a PDE and a set of page |
133 | * tables, which are located immediately beyond _end. The variable | 170 | * tables, which are located immediately beyond _end. The variable |
@@ -140,6 +177,7 @@ ENTRY(startup_32) | |||
140 | */ | 177 | */ |
141 | page_pde_offset = (__PAGE_OFFSET >> 20); | 178 | page_pde_offset = (__PAGE_OFFSET >> 20); |
142 | 179 | ||
180 | default_entry: | ||
143 | movl $(pg0 - __PAGE_OFFSET), %edi | 181 | movl $(pg0 - __PAGE_OFFSET), %edi |
144 | movl $(swapper_pg_dir - __PAGE_OFFSET), %edx | 182 | movl $(swapper_pg_dir - __PAGE_OFFSET), %edx |
145 | movl $0x007, %eax /* 0x007 = PRESENT+RW+USER */ | 183 | movl $0x007, %eax /* 0x007 = PRESENT+RW+USER */ |
diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c index b3c2d268d708..953328b55a30 100644 --- a/arch/x86/kernel/io_apic_64.c +++ b/arch/x86/kernel/io_apic_64.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/sysdev.h> | 31 | #include <linux/sysdev.h> |
32 | #include <linux/msi.h> | 32 | #include <linux/msi.h> |
33 | #include <linux/htirq.h> | 33 | #include <linux/htirq.h> |
34 | #include <linux/dmar.h> | ||
34 | #ifdef CONFIG_ACPI | 35 | #ifdef CONFIG_ACPI |
35 | #include <acpi/acpi_bus.h> | 36 | #include <acpi/acpi_bus.h> |
36 | #endif | 37 | #endif |
@@ -2031,8 +2032,64 @@ void arch_teardown_msi_irq(unsigned int irq) | |||
2031 | destroy_irq(irq); | 2032 | destroy_irq(irq); |
2032 | } | 2033 | } |
2033 | 2034 | ||
2034 | #endif /* CONFIG_PCI_MSI */ | 2035 | #ifdef CONFIG_DMAR |
2036 | #ifdef CONFIG_SMP | ||
2037 | static void dmar_msi_set_affinity(unsigned int irq, cpumask_t mask) | ||
2038 | { | ||
2039 | struct irq_cfg *cfg = irq_cfg + irq; | ||
2040 | struct msi_msg msg; | ||
2041 | unsigned int dest; | ||
2042 | cpumask_t tmp; | ||
2043 | |||
2044 | cpus_and(tmp, mask, cpu_online_map); | ||
2045 | if (cpus_empty(tmp)) | ||
2046 | return; | ||
2047 | |||
2048 | if (assign_irq_vector(irq, mask)) | ||
2049 | return; | ||
2050 | |||
2051 | cpus_and(tmp, cfg->domain, mask); | ||
2052 | dest = cpu_mask_to_apicid(tmp); | ||
2053 | |||
2054 | dmar_msi_read(irq, &msg); | ||
2055 | |||
2056 | msg.data &= ~MSI_DATA_VECTOR_MASK; | ||
2057 | msg.data |= MSI_DATA_VECTOR(cfg->vector); | ||
2058 | msg.address_lo &= ~MSI_ADDR_DEST_ID_MASK; | ||
2059 | msg.address_lo |= MSI_ADDR_DEST_ID(dest); | ||
2060 | |||
2061 | dmar_msi_write(irq, &msg); | ||
2062 | irq_desc[irq].affinity = mask; | ||
2063 | } | ||
2064 | #endif /* CONFIG_SMP */ | ||
2065 | |||
2066 | struct irq_chip dmar_msi_type = { | ||
2067 | .name = "DMAR_MSI", | ||
2068 | .unmask = dmar_msi_unmask, | ||
2069 | .mask = dmar_msi_mask, | ||
2070 | .ack = ack_apic_edge, | ||
2071 | #ifdef CONFIG_SMP | ||
2072 | .set_affinity = dmar_msi_set_affinity, | ||
2073 | #endif | ||
2074 | .retrigger = ioapic_retrigger_irq, | ||
2075 | }; | ||
2076 | |||
2077 | int arch_setup_dmar_msi(unsigned int irq) | ||
2078 | { | ||
2079 | int ret; | ||
2080 | struct msi_msg msg; | ||
2081 | |||
2082 | ret = msi_compose_msg(NULL, irq, &msg); | ||
2083 | if (ret < 0) | ||
2084 | return ret; | ||
2085 | dmar_msi_write(irq, &msg); | ||
2086 | set_irq_chip_and_handler_name(irq, &dmar_msi_type, handle_edge_irq, | ||
2087 | "edge"); | ||
2088 | return 0; | ||
2089 | } | ||
2090 | #endif | ||
2035 | 2091 | ||
2092 | #endif /* CONFIG_PCI_MSI */ | ||
2036 | /* | 2093 | /* |
2037 | * Hypertransport interrupt support | 2094 | * Hypertransport interrupt support |
2038 | */ | 2095 | */ |
diff --git a/arch/x86/kernel/pci-calgary_64.c b/arch/x86/kernel/pci-calgary_64.c index 5098f58063a5..1a20fe31338b 100644 --- a/arch/x86/kernel/pci-calgary_64.c +++ b/arch/x86/kernel/pci-calgary_64.c | |||
@@ -411,8 +411,10 @@ static int calgary_nontranslate_map_sg(struct device* dev, | |||
411 | int i; | 411 | int i; |
412 | 412 | ||
413 | for_each_sg(sg, s, nelems, i) { | 413 | for_each_sg(sg, s, nelems, i) { |
414 | BUG_ON(!s->page); | 414 | struct page *p = sg_page(s); |
415 | s->dma_address = virt_to_bus(page_address(s->page) +s->offset); | 415 | |
416 | BUG_ON(!p); | ||
417 | s->dma_address = virt_to_bus(sg_virt(s)); | ||
416 | s->dma_length = s->length; | 418 | s->dma_length = s->length; |
417 | } | 419 | } |
418 | return nelems; | 420 | return nelems; |
@@ -432,9 +434,9 @@ static int calgary_map_sg(struct device *dev, struct scatterlist *sg, | |||
432 | return calgary_nontranslate_map_sg(dev, sg, nelems, direction); | 434 | return calgary_nontranslate_map_sg(dev, sg, nelems, direction); |
433 | 435 | ||
434 | for_each_sg(sg, s, nelems, i) { | 436 | for_each_sg(sg, s, nelems, i) { |
435 | BUG_ON(!s->page); | 437 | BUG_ON(!sg_page(s)); |
436 | 438 | ||
437 | vaddr = (unsigned long)page_address(s->page) + s->offset; | 439 | vaddr = (unsigned long) sg_virt(s); |
438 | npages = num_dma_pages(vaddr, s->length); | 440 | npages = num_dma_pages(vaddr, s->length); |
439 | 441 | ||
440 | entry = iommu_range_alloc(tbl, npages); | 442 | entry = iommu_range_alloc(tbl, npages); |
diff --git a/arch/x86/kernel/pci-dma_64.c b/arch/x86/kernel/pci-dma_64.c index afaf9f12c032..393e2725a6e3 100644 --- a/arch/x86/kernel/pci-dma_64.c +++ b/arch/x86/kernel/pci-dma_64.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <linux/string.h> | 7 | #include <linux/string.h> |
8 | #include <linux/pci.h> | 8 | #include <linux/pci.h> |
9 | #include <linux/module.h> | 9 | #include <linux/module.h> |
10 | #include <linux/dmar.h> | ||
10 | #include <asm/io.h> | 11 | #include <asm/io.h> |
11 | #include <asm/iommu.h> | 12 | #include <asm/iommu.h> |
12 | #include <asm/calgary.h> | 13 | #include <asm/calgary.h> |
@@ -305,6 +306,8 @@ void __init pci_iommu_alloc(void) | |||
305 | detect_calgary(); | 306 | detect_calgary(); |
306 | #endif | 307 | #endif |
307 | 308 | ||
309 | detect_intel_iommu(); | ||
310 | |||
308 | #ifdef CONFIG_SWIOTLB | 311 | #ifdef CONFIG_SWIOTLB |
309 | pci_swiotlb_init(); | 312 | pci_swiotlb_init(); |
310 | #endif | 313 | #endif |
@@ -316,6 +319,8 @@ static int __init pci_iommu_init(void) | |||
316 | calgary_iommu_init(); | 319 | calgary_iommu_init(); |
317 | #endif | 320 | #endif |
318 | 321 | ||
322 | intel_iommu_init(); | ||
323 | |||
319 | #ifdef CONFIG_IOMMU | 324 | #ifdef CONFIG_IOMMU |
320 | gart_iommu_init(); | 325 | gart_iommu_init(); |
321 | #endif | 326 | #endif |
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c index 5cdfab65e93f..c56e9ee64964 100644 --- a/arch/x86/kernel/pci-gart_64.c +++ b/arch/x86/kernel/pci-gart_64.c | |||
@@ -302,7 +302,7 @@ static int dma_map_sg_nonforce(struct device *dev, struct scatterlist *sg, | |||
302 | #endif | 302 | #endif |
303 | 303 | ||
304 | for_each_sg(sg, s, nents, i) { | 304 | for_each_sg(sg, s, nents, i) { |
305 | unsigned long addr = page_to_phys(s->page) + s->offset; | 305 | unsigned long addr = sg_phys(s); |
306 | if (nonforced_iommu(dev, addr, s->length)) { | 306 | if (nonforced_iommu(dev, addr, s->length)) { |
307 | addr = dma_map_area(dev, addr, s->length, dir); | 307 | addr = dma_map_area(dev, addr, s->length, dir); |
308 | if (addr == bad_dma_address) { | 308 | if (addr == bad_dma_address) { |
@@ -397,7 +397,7 @@ static int gart_map_sg(struct device *dev, struct scatterlist *sg, int nents, | |||
397 | start_sg = sgmap = sg; | 397 | start_sg = sgmap = sg; |
398 | ps = NULL; /* shut up gcc */ | 398 | ps = NULL; /* shut up gcc */ |
399 | for_each_sg(sg, s, nents, i) { | 399 | for_each_sg(sg, s, nents, i) { |
400 | dma_addr_t addr = page_to_phys(s->page) + s->offset; | 400 | dma_addr_t addr = sg_phys(s); |
401 | s->dma_address = addr; | 401 | s->dma_address = addr; |
402 | BUG_ON(s->length == 0); | 402 | BUG_ON(s->length == 0); |
403 | 403 | ||
diff --git a/arch/x86/kernel/pci-nommu_64.c b/arch/x86/kernel/pci-nommu_64.c index e85d4360360c..faf70bdca335 100644 --- a/arch/x86/kernel/pci-nommu_64.c +++ b/arch/x86/kernel/pci-nommu_64.c | |||
@@ -62,8 +62,8 @@ static int nommu_map_sg(struct device *hwdev, struct scatterlist *sg, | |||
62 | int i; | 62 | int i; |
63 | 63 | ||
64 | for_each_sg(sg, s, nents, i) { | 64 | for_each_sg(sg, s, nents, i) { |
65 | BUG_ON(!s->page); | 65 | BUG_ON(!sg_page(s)); |
66 | s->dma_address = virt_to_bus(page_address(s->page) +s->offset); | 66 | s->dma_address = virt_to_bus(sg_virt(s)); |
67 | if (!check_addr("map_sg", hwdev, s->dma_address, s->length)) | 67 | if (!check_addr("map_sg", hwdev, s->dma_address, s->length)) |
68 | return 0; | 68 | return 0; |
69 | s->dma_length = s->length; | 69 | s->dma_length = s->length; |
diff --git a/arch/x86/kernel/setup_32.c b/arch/x86/kernel/setup_32.c index ba2e165a8a0f..cc0e91447b76 100644 --- a/arch/x86/kernel/setup_32.c +++ b/arch/x86/kernel/setup_32.c | |||
@@ -60,6 +60,7 @@ | |||
60 | #include <asm/vmi.h> | 60 | #include <asm/vmi.h> |
61 | #include <setup_arch.h> | 61 | #include <setup_arch.h> |
62 | #include <bios_ebda.h> | 62 | #include <bios_ebda.h> |
63 | #include <asm/cacheflush.h> | ||
63 | 64 | ||
64 | /* This value is set up by the early boot code to point to the value | 65 | /* This value is set up by the early boot code to point to the value |
65 | immediately after the boot time page tables. It contains a *physical* | 66 | immediately after the boot time page tables. It contains a *physical* |
@@ -73,6 +74,7 @@ int disable_pse __devinitdata = 0; | |||
73 | */ | 74 | */ |
74 | extern struct resource code_resource; | 75 | extern struct resource code_resource; |
75 | extern struct resource data_resource; | 76 | extern struct resource data_resource; |
77 | extern struct resource bss_resource; | ||
76 | 78 | ||
77 | /* cpu data as detected by the assembly code in head.S */ | 79 | /* cpu data as detected by the assembly code in head.S */ |
78 | struct cpuinfo_x86 new_cpu_data __cpuinitdata = { 0, 0, 0, 0, -1, 1, 0, 0, -1 }; | 80 | struct cpuinfo_x86 new_cpu_data __cpuinitdata = { 0, 0, 0, 0, -1, 1, 0, 0, -1 }; |
@@ -600,6 +602,8 @@ void __init setup_arch(char **cmdline_p) | |||
600 | code_resource.end = virt_to_phys(_etext)-1; | 602 | code_resource.end = virt_to_phys(_etext)-1; |
601 | data_resource.start = virt_to_phys(_etext); | 603 | data_resource.start = virt_to_phys(_etext); |
602 | data_resource.end = virt_to_phys(_edata)-1; | 604 | data_resource.end = virt_to_phys(_edata)-1; |
605 | bss_resource.start = virt_to_phys(&__bss_start); | ||
606 | bss_resource.end = virt_to_phys(&__bss_stop)-1; | ||
603 | 607 | ||
604 | parse_early_param(); | 608 | parse_early_param(); |
605 | 609 | ||
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c index 31322d42eaae..e7a9e36bd52d 100644 --- a/arch/x86/kernel/setup_64.c +++ b/arch/x86/kernel/setup_64.c | |||
@@ -58,6 +58,7 @@ | |||
58 | #include <asm/numa.h> | 58 | #include <asm/numa.h> |
59 | #include <asm/sections.h> | 59 | #include <asm/sections.h> |
60 | #include <asm/dmi.h> | 60 | #include <asm/dmi.h> |
61 | #include <asm/cacheflush.h> | ||
61 | 62 | ||
62 | /* | 63 | /* |
63 | * Machine setup.. | 64 | * Machine setup.. |
@@ -133,6 +134,12 @@ struct resource code_resource = { | |||
133 | .end = 0, | 134 | .end = 0, |
134 | .flags = IORESOURCE_RAM, | 135 | .flags = IORESOURCE_RAM, |
135 | }; | 136 | }; |
137 | struct resource bss_resource = { | ||
138 | .name = "Kernel bss", | ||
139 | .start = 0, | ||
140 | .end = 0, | ||
141 | .flags = IORESOURCE_RAM, | ||
142 | }; | ||
136 | 143 | ||
137 | #ifdef CONFIG_PROC_VMCORE | 144 | #ifdef CONFIG_PROC_VMCORE |
138 | /* elfcorehdr= specifies the location of elf core header | 145 | /* elfcorehdr= specifies the location of elf core header |
@@ -276,6 +283,8 @@ void __init setup_arch(char **cmdline_p) | |||
276 | code_resource.end = virt_to_phys(&_etext)-1; | 283 | code_resource.end = virt_to_phys(&_etext)-1; |
277 | data_resource.start = virt_to_phys(&_etext); | 284 | data_resource.start = virt_to_phys(&_etext); |
278 | data_resource.end = virt_to_phys(&_edata)-1; | 285 | data_resource.end = virt_to_phys(&_edata)-1; |
286 | bss_resource.start = virt_to_phys(&__bss_start); | ||
287 | bss_resource.end = virt_to_phys(&__bss_stop)-1; | ||
279 | 288 | ||
280 | early_identify_cpu(&boot_cpu_data); | 289 | early_identify_cpu(&boot_cpu_data); |
281 | 290 | ||
diff --git a/arch/x86/lguest/Kconfig b/arch/x86/lguest/Kconfig new file mode 100644 index 000000000000..c4dffbeea5e1 --- /dev/null +++ b/arch/x86/lguest/Kconfig | |||
@@ -0,0 +1,14 @@ | |||
1 | config LGUEST_GUEST | ||
2 | bool "Lguest guest support" | ||
3 | select PARAVIRT | ||
4 | depends on !X86_PAE | ||
5 | select VIRTIO | ||
6 | select VIRTIO_RING | ||
7 | select VIRTIO_CONSOLE | ||
8 | help | ||
9 | Lguest is a tiny in-kernel hypervisor. Selecting this will | ||
10 | allow your kernel to boot under lguest. This option will increase | ||
11 | your kernel size by about 6k. If in doubt, say N. | ||
12 | |||
13 | If you say Y here, make sure you say Y (or M) to the virtio block | ||
14 | and net drivers which lguest needs. | ||
diff --git a/arch/x86/lguest/Makefile b/arch/x86/lguest/Makefile new file mode 100644 index 000000000000..27f0c9ed7f60 --- /dev/null +++ b/arch/x86/lguest/Makefile | |||
@@ -0,0 +1 @@ | |||
obj-y := i386_head.o boot.o | |||
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c new file mode 100644 index 000000000000..d2235db4085f --- /dev/null +++ b/arch/x86/lguest/boot.c | |||
@@ -0,0 +1,1070 @@ | |||
1 | /*P:010 | ||
2 | * A hypervisor allows multiple Operating Systems to run on a single machine. | ||
3 | * To quote David Wheeler: "Any problem in computer science can be solved with | ||
4 | * another layer of indirection." | ||
5 | * | ||
6 | * We keep things simple in two ways. First, we start with a normal Linux | ||
7 | * kernel and insert a module (lg.ko) which allows us to run other Linux | ||
8 | * kernels the same way we'd run processes. We call the first kernel the Host, | ||
9 | * and the others the Guests. The program which sets up and configures Guests | ||
10 | * (such as the example in Documentation/lguest/lguest.c) is called the | ||
11 | * Launcher. | ||
12 | * | ||
13 | * Secondly, we only run specially modified Guests, not normal kernels. When | ||
14 | * you set CONFIG_LGUEST to 'y' or 'm', this automatically sets | ||
15 | * CONFIG_LGUEST_GUEST=y, which compiles this file into the kernel so it knows | ||
16 | * how to be a Guest. This means that you can use the same kernel you boot | ||
17 | * normally (ie. as a Host) as a Guest. | ||
18 | * | ||
19 | * These Guests know that they cannot do privileged operations, such as disable | ||
20 | * interrupts, and that they have to ask the Host to do such things explicitly. | ||
21 | * This file consists of all the replacements for such low-level native | ||
22 | * hardware operations: these special Guest versions call the Host. | ||
23 | * | ||
24 | * So how does the kernel know it's a Guest? The Guest starts at a special | ||
25 | * entry point marked with a magic string, which sets up a few things then | ||
26 | * calls here. We replace the native functions various "paravirt" structures | ||
27 | * with our Guest versions, then boot like normal. :*/ | ||
28 | |||
29 | /* | ||
30 | * Copyright (C) 2006, Rusty Russell <rusty@rustcorp.com.au> IBM Corporation. | ||
31 | * | ||
32 | * This program is free software; you can redistribute it and/or modify | ||
33 | * it under the terms of the GNU General Public License as published by | ||
34 | * the Free Software Foundation; either version 2 of the License, or | ||
35 | * (at your option) any later version. | ||
36 | * | ||
37 | * This program is distributed in the hope that it will be useful, but | ||
38 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
39 | * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or | ||
40 | * NON INFRINGEMENT. See the GNU General Public License for more | ||
41 | * details. | ||
42 | * | ||
43 | * You should have received a copy of the GNU General Public License | ||
44 | * along with this program; if not, write to the Free Software | ||
45 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
46 | */ | ||
47 | #include <linux/kernel.h> | ||
48 | #include <linux/start_kernel.h> | ||
49 | #include <linux/string.h> | ||
50 | #include <linux/console.h> | ||
51 | #include <linux/screen_info.h> | ||
52 | #include <linux/irq.h> | ||
53 | #include <linux/interrupt.h> | ||
54 | #include <linux/clocksource.h> | ||
55 | #include <linux/clockchips.h> | ||
56 | #include <linux/lguest.h> | ||
57 | #include <linux/lguest_launcher.h> | ||
58 | #include <linux/virtio_console.h> | ||
59 | #include <asm/paravirt.h> | ||
60 | #include <asm/param.h> | ||
61 | #include <asm/page.h> | ||
62 | #include <asm/pgtable.h> | ||
63 | #include <asm/desc.h> | ||
64 | #include <asm/setup.h> | ||
65 | #include <asm/e820.h> | ||
66 | #include <asm/mce.h> | ||
67 | #include <asm/io.h> | ||
68 | #include <asm/i387.h> | ||
69 | |||
70 | /*G:010 Welcome to the Guest! | ||
71 | * | ||
72 | * The Guest in our tale is a simple creature: identical to the Host but | ||
73 | * behaving in simplified but equivalent ways. In particular, the Guest is the | ||
74 | * same kernel as the Host (or at least, built from the same source code). :*/ | ||
75 | |||
76 | /* Declarations for definitions in lguest_guest.S */ | ||
77 | extern char lguest_noirq_start[], lguest_noirq_end[]; | ||
78 | extern const char lgstart_cli[], lgend_cli[]; | ||
79 | extern const char lgstart_sti[], lgend_sti[]; | ||
80 | extern const char lgstart_popf[], lgend_popf[]; | ||
81 | extern const char lgstart_pushf[], lgend_pushf[]; | ||
82 | extern const char lgstart_iret[], lgend_iret[]; | ||
83 | extern void lguest_iret(void); | ||
84 | |||
85 | struct lguest_data lguest_data = { | ||
86 | .hcall_status = { [0 ... LHCALL_RING_SIZE-1] = 0xFF }, | ||
87 | .noirq_start = (u32)lguest_noirq_start, | ||
88 | .noirq_end = (u32)lguest_noirq_end, | ||
89 | .kernel_address = PAGE_OFFSET, | ||
90 | .blocked_interrupts = { 1 }, /* Block timer interrupts */ | ||
91 | .syscall_vec = SYSCALL_VECTOR, | ||
92 | }; | ||
93 | static cycle_t clock_base; | ||
94 | |||
95 | /*G:035 Notice the lazy_hcall() above, rather than hcall(). This is our first | ||
96 | * real optimization trick! | ||
97 | * | ||
98 | * When lazy_mode is set, it means we're allowed to defer all hypercalls and do | ||
99 | * them as a batch when lazy_mode is eventually turned off. Because hypercalls | ||
100 | * are reasonably expensive, batching them up makes sense. For example, a | ||
101 | * large mmap might update dozens of page table entries: that code calls | ||
102 | * paravirt_enter_lazy_mmu(), does the dozen updates, then calls | ||
103 | * lguest_leave_lazy_mode(). | ||
104 | * | ||
105 | * So, when we're in lazy mode, we call async_hypercall() to store the call for | ||
106 | * future processing. When lazy mode is turned off we issue a hypercall to | ||
107 | * flush the stored calls. | ||
108 | */ | ||
109 | static void lguest_leave_lazy_mode(void) | ||
110 | { | ||
111 | paravirt_leave_lazy(paravirt_get_lazy_mode()); | ||
112 | hcall(LHCALL_FLUSH_ASYNC, 0, 0, 0); | ||
113 | } | ||
114 | |||
115 | static void lazy_hcall(unsigned long call, | ||
116 | unsigned long arg1, | ||
117 | unsigned long arg2, | ||
118 | unsigned long arg3) | ||
119 | { | ||
120 | if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE) | ||
121 | hcall(call, arg1, arg2, arg3); | ||
122 | else | ||
123 | async_hcall(call, arg1, arg2, arg3); | ||
124 | } | ||
125 | |||
126 | /* async_hcall() is pretty simple: I'm quite proud of it really. We have a | ||
127 | * ring buffer of stored hypercalls which the Host will run though next time we | ||
128 | * do a normal hypercall. Each entry in the ring has 4 slots for the hypercall | ||
129 | * arguments, and a "hcall_status" word which is 0 if the call is ready to go, | ||
130 | * and 255 once the Host has finished with it. | ||
131 | * | ||
132 | * If we come around to a slot which hasn't been finished, then the table is | ||
133 | * full and we just make the hypercall directly. This has the nice side | ||
134 | * effect of causing the Host to run all the stored calls in the ring buffer | ||
135 | * which empties it for next time! */ | ||
136 | void async_hcall(unsigned long call, | ||
137 | unsigned long arg1, unsigned long arg2, unsigned long arg3) | ||
138 | { | ||
139 | /* Note: This code assumes we're uniprocessor. */ | ||
140 | static unsigned int next_call; | ||
141 | unsigned long flags; | ||
142 | |||
143 | /* Disable interrupts if not already disabled: we don't want an | ||
144 | * interrupt handler making a hypercall while we're already doing | ||
145 | * one! */ | ||
146 | local_irq_save(flags); | ||
147 | if (lguest_data.hcall_status[next_call] != 0xFF) { | ||
148 | /* Table full, so do normal hcall which will flush table. */ | ||
149 | hcall(call, arg1, arg2, arg3); | ||
150 | } else { | ||
151 | lguest_data.hcalls[next_call].arg0 = call; | ||
152 | lguest_data.hcalls[next_call].arg1 = arg1; | ||
153 | lguest_data.hcalls[next_call].arg2 = arg2; | ||
154 | lguest_data.hcalls[next_call].arg3 = arg3; | ||
155 | /* Arguments must all be written before we mark it to go */ | ||
156 | wmb(); | ||
157 | lguest_data.hcall_status[next_call] = 0; | ||
158 | if (++next_call == LHCALL_RING_SIZE) | ||
159 | next_call = 0; | ||
160 | } | ||
161 | local_irq_restore(flags); | ||
162 | } | ||
163 | /*:*/ | ||
164 | |||
165 | /*G:033 | ||
166 | * Here are our first native-instruction replacements: four functions for | ||
167 | * interrupt control. | ||
168 | * | ||
169 | * The simplest way of implementing these would be to have "turn interrupts | ||
170 | * off" and "turn interrupts on" hypercalls. Unfortunately, this is too slow: | ||
171 | * these are by far the most commonly called functions of those we override. | ||
172 | * | ||
173 | * So instead we keep an "irq_enabled" field inside our "struct lguest_data", | ||
174 | * which the Guest can update with a single instruction. The Host knows to | ||
175 | * check there when it wants to deliver an interrupt. | ||
176 | */ | ||
177 | |||
178 | /* save_flags() is expected to return the processor state (ie. "eflags"). The | ||
179 | * eflags word contains all kind of stuff, but in practice Linux only cares | ||
180 | * about the interrupt flag. Our "save_flags()" just returns that. */ | ||
181 | static unsigned long save_fl(void) | ||
182 | { | ||
183 | return lguest_data.irq_enabled; | ||
184 | } | ||
185 | |||
186 | /* "restore_flags" just sets the flags back to the value given. */ | ||
187 | static void restore_fl(unsigned long flags) | ||
188 | { | ||
189 | lguest_data.irq_enabled = flags; | ||
190 | } | ||
191 | |||
192 | /* Interrupts go off... */ | ||
193 | static void irq_disable(void) | ||
194 | { | ||
195 | lguest_data.irq_enabled = 0; | ||
196 | } | ||
197 | |||
198 | /* Interrupts go on... */ | ||
199 | static void irq_enable(void) | ||
200 | { | ||
201 | lguest_data.irq_enabled = X86_EFLAGS_IF; | ||
202 | } | ||
203 | /*:*/ | ||
204 | /*M:003 Note that we don't check for outstanding interrupts when we re-enable | ||
205 | * them (or when we unmask an interrupt). This seems to work for the moment, | ||
206 | * since interrupts are rare and we'll just get the interrupt on the next timer | ||
207 | * tick, but when we turn on CONFIG_NO_HZ, we should revisit this. One way | ||
208 | * would be to put the "irq_enabled" field in a page by itself, and have the | ||
209 | * Host write-protect it when an interrupt comes in when irqs are disabled. | ||
210 | * There will then be a page fault as soon as interrupts are re-enabled. :*/ | ||
211 | |||
212 | /*G:034 | ||
213 | * The Interrupt Descriptor Table (IDT). | ||
214 | * | ||
215 | * The IDT tells the processor what to do when an interrupt comes in. Each | ||
216 | * entry in the table is a 64-bit descriptor: this holds the privilege level, | ||
217 | * address of the handler, and... well, who cares? The Guest just asks the | ||
218 | * Host to make the change anyway, because the Host controls the real IDT. | ||
219 | */ | ||
220 | static void lguest_write_idt_entry(struct desc_struct *dt, | ||
221 | int entrynum, u32 low, u32 high) | ||
222 | { | ||
223 | /* Keep the local copy up to date. */ | ||
224 | write_dt_entry(dt, entrynum, low, high); | ||
225 | /* Tell Host about this new entry. */ | ||
226 | hcall(LHCALL_LOAD_IDT_ENTRY, entrynum, low, high); | ||
227 | } | ||
228 | |||
229 | /* Changing to a different IDT is very rare: we keep the IDT up-to-date every | ||
230 | * time it is written, so we can simply loop through all entries and tell the | ||
231 | * Host about them. */ | ||
232 | static void lguest_load_idt(const struct Xgt_desc_struct *desc) | ||
233 | { | ||
234 | unsigned int i; | ||
235 | struct desc_struct *idt = (void *)desc->address; | ||
236 | |||
237 | for (i = 0; i < (desc->size+1)/8; i++) | ||
238 | hcall(LHCALL_LOAD_IDT_ENTRY, i, idt[i].a, idt[i].b); | ||
239 | } | ||
240 | |||
241 | /* | ||
242 | * The Global Descriptor Table. | ||
243 | * | ||
244 | * The Intel architecture defines another table, called the Global Descriptor | ||
245 | * Table (GDT). You tell the CPU where it is (and its size) using the "lgdt" | ||
246 | * instruction, and then several other instructions refer to entries in the | ||
247 | * table. There are three entries which the Switcher needs, so the Host simply | ||
248 | * controls the entire thing and the Guest asks it to make changes using the | ||
249 | * LOAD_GDT hypercall. | ||
250 | * | ||
251 | * This is the opposite of the IDT code where we have a LOAD_IDT_ENTRY | ||
252 | * hypercall and use that repeatedly to load a new IDT. I don't think it | ||
253 | * really matters, but wouldn't it be nice if they were the same? | ||
254 | */ | ||
255 | static void lguest_load_gdt(const struct Xgt_desc_struct *desc) | ||
256 | { | ||
257 | BUG_ON((desc->size+1)/8 != GDT_ENTRIES); | ||
258 | hcall(LHCALL_LOAD_GDT, __pa(desc->address), GDT_ENTRIES, 0); | ||
259 | } | ||
260 | |||
261 | /* For a single GDT entry which changes, we do the lazy thing: alter our GDT, | ||
262 | * then tell the Host to reload the entire thing. This operation is so rare | ||
263 | * that this naive implementation is reasonable. */ | ||
264 | static void lguest_write_gdt_entry(struct desc_struct *dt, | ||
265 | int entrynum, u32 low, u32 high) | ||
266 | { | ||
267 | write_dt_entry(dt, entrynum, low, high); | ||
268 | hcall(LHCALL_LOAD_GDT, __pa(dt), GDT_ENTRIES, 0); | ||
269 | } | ||
270 | |||
271 | /* OK, I lied. There are three "thread local storage" GDT entries which change | ||
272 | * on every context switch (these three entries are how glibc implements | ||
273 | * __thread variables). So we have a hypercall specifically for this case. */ | ||
274 | static void lguest_load_tls(struct thread_struct *t, unsigned int cpu) | ||
275 | { | ||
276 | /* There's one problem which normal hardware doesn't have: the Host | ||
277 | * can't handle us removing entries we're currently using. So we clear | ||
278 | * the GS register here: if it's needed it'll be reloaded anyway. */ | ||
279 | loadsegment(gs, 0); | ||
280 | lazy_hcall(LHCALL_LOAD_TLS, __pa(&t->tls_array), cpu, 0); | ||
281 | } | ||
282 | |||
283 | /*G:038 That's enough excitement for now, back to ploughing through each of | ||
284 | * the different pv_ops structures (we're about 1/3 of the way through). | ||
285 | * | ||
286 | * This is the Local Descriptor Table, another weird Intel thingy. Linux only | ||
287 | * uses this for some strange applications like Wine. We don't do anything | ||
288 | * here, so they'll get an informative and friendly Segmentation Fault. */ | ||
289 | static void lguest_set_ldt(const void *addr, unsigned entries) | ||
290 | { | ||
291 | } | ||
292 | |||
293 | /* This loads a GDT entry into the "Task Register": that entry points to a | ||
294 | * structure called the Task State Segment. Some comments scattered though the | ||
295 | * kernel code indicate that this used for task switching in ages past, along | ||
296 | * with blood sacrifice and astrology. | ||
297 | * | ||
298 | * Now there's nothing interesting in here that we don't get told elsewhere. | ||
299 | * But the native version uses the "ltr" instruction, which makes the Host | ||
300 | * complain to the Guest about a Segmentation Fault and it'll oops. So we | ||
301 | * override the native version with a do-nothing version. */ | ||
302 | static void lguest_load_tr_desc(void) | ||
303 | { | ||
304 | } | ||
305 | |||
306 | /* The "cpuid" instruction is a way of querying both the CPU identity | ||
307 | * (manufacturer, model, etc) and its features. It was introduced before the | ||
308 | * Pentium in 1993 and keeps getting extended by both Intel and AMD. As you | ||
309 | * might imagine, after a decade and a half this treatment, it is now a giant | ||
310 | * ball of hair. Its entry in the current Intel manual runs to 28 pages. | ||
311 | * | ||
312 | * This instruction even it has its own Wikipedia entry. The Wikipedia entry | ||
313 | * has been translated into 4 languages. I am not making this up! | ||
314 | * | ||
315 | * We could get funky here and identify ourselves as "GenuineLguest", but | ||
316 | * instead we just use the real "cpuid" instruction. Then I pretty much turned | ||
317 | * off feature bits until the Guest booted. (Don't say that: you'll damage | ||
318 | * lguest sales!) Shut up, inner voice! (Hey, just pointing out that this is | ||
319 | * hardly future proof.) Noone's listening! They don't like you anyway, | ||
320 | * parenthetic weirdo! | ||
321 | * | ||
322 | * Replacing the cpuid so we can turn features off is great for the kernel, but | ||
323 | * anyone (including userspace) can just use the raw "cpuid" instruction and | ||
324 | * the Host won't even notice since it isn't privileged. So we try not to get | ||
325 | * too worked up about it. */ | ||
326 | static void lguest_cpuid(unsigned int *eax, unsigned int *ebx, | ||
327 | unsigned int *ecx, unsigned int *edx) | ||
328 | { | ||
329 | int function = *eax; | ||
330 | |||
331 | native_cpuid(eax, ebx, ecx, edx); | ||
332 | switch (function) { | ||
333 | case 1: /* Basic feature request. */ | ||
334 | /* We only allow kernel to see SSE3, CMPXCHG16B and SSSE3 */ | ||
335 | *ecx &= 0x00002201; | ||
336 | /* SSE, SSE2, FXSR, MMX, CMOV, CMPXCHG8B, FPU. */ | ||
337 | *edx &= 0x07808101; | ||
338 | /* The Host can do a nice optimization if it knows that the | ||
339 | * kernel mappings (addresses above 0xC0000000 or whatever | ||
340 | * PAGE_OFFSET is set to) haven't changed. But Linux calls | ||
341 | * flush_tlb_user() for both user and kernel mappings unless | ||
342 | * the Page Global Enable (PGE) feature bit is set. */ | ||
343 | *edx |= 0x00002000; | ||
344 | break; | ||
345 | case 0x80000000: | ||
346 | /* Futureproof this a little: if they ask how much extended | ||
347 | * processor information there is, limit it to known fields. */ | ||
348 | if (*eax > 0x80000008) | ||
349 | *eax = 0x80000008; | ||
350 | break; | ||
351 | } | ||
352 | } | ||
353 | |||
354 | /* Intel has four control registers, imaginatively named cr0, cr2, cr3 and cr4. | ||
355 | * I assume there's a cr1, but it hasn't bothered us yet, so we'll not bother | ||
356 | * it. The Host needs to know when the Guest wants to change them, so we have | ||
357 | * a whole series of functions like read_cr0() and write_cr0(). | ||
358 | * | ||
359 | * We start with CR0. CR0 allows you to turn on and off all kinds of basic | ||
360 | * features, but Linux only really cares about one: the horrifically-named Task | ||
361 | * Switched (TS) bit at bit 3 (ie. 8) | ||
362 | * | ||
363 | * What does the TS bit do? Well, it causes the CPU to trap (interrupt 7) if | ||
364 | * the floating point unit is used. Which allows us to restore FPU state | ||
365 | * lazily after a task switch, and Linux uses that gratefully, but wouldn't a | ||
366 | * name like "FPUTRAP bit" be a little less cryptic? | ||
367 | * | ||
368 | * We store cr0 (and cr3) locally, because the Host never changes it. The | ||
369 | * Guest sometimes wants to read it and we'd prefer not to bother the Host | ||
370 | * unnecessarily. */ | ||
371 | static unsigned long current_cr0, current_cr3; | ||
372 | static void lguest_write_cr0(unsigned long val) | ||
373 | { | ||
374 | /* 8 == TS bit. */ | ||
375 | lazy_hcall(LHCALL_TS, val & 8, 0, 0); | ||
376 | current_cr0 = val; | ||
377 | } | ||
378 | |||
379 | static unsigned long lguest_read_cr0(void) | ||
380 | { | ||
381 | return current_cr0; | ||
382 | } | ||
383 | |||
384 | /* Intel provided a special instruction to clear the TS bit for people too cool | ||
385 | * to use write_cr0() to do it. This "clts" instruction is faster, because all | ||
386 | * the vowels have been optimized out. */ | ||
387 | static void lguest_clts(void) | ||
388 | { | ||
389 | lazy_hcall(LHCALL_TS, 0, 0, 0); | ||
390 | current_cr0 &= ~8U; | ||
391 | } | ||
392 | |||
393 | /* CR2 is the virtual address of the last page fault, which the Guest only ever | ||
394 | * reads. The Host kindly writes this into our "struct lguest_data", so we | ||
395 | * just read it out of there. */ | ||
396 | static unsigned long lguest_read_cr2(void) | ||
397 | { | ||
398 | return lguest_data.cr2; | ||
399 | } | ||
400 | |||
401 | /* CR3 is the current toplevel pagetable page: the principle is the same as | ||
402 | * cr0. Keep a local copy, and tell the Host when it changes. */ | ||
403 | static void lguest_write_cr3(unsigned long cr3) | ||
404 | { | ||
405 | lazy_hcall(LHCALL_NEW_PGTABLE, cr3, 0, 0); | ||
406 | current_cr3 = cr3; | ||
407 | } | ||
408 | |||
409 | static unsigned long lguest_read_cr3(void) | ||
410 | { | ||
411 | return current_cr3; | ||
412 | } | ||
413 | |||
414 | /* CR4 is used to enable and disable PGE, but we don't care. */ | ||
415 | static unsigned long lguest_read_cr4(void) | ||
416 | { | ||
417 | return 0; | ||
418 | } | ||
419 | |||
420 | static void lguest_write_cr4(unsigned long val) | ||
421 | { | ||
422 | } | ||
423 | |||
424 | /* | ||
425 | * Page Table Handling. | ||
426 | * | ||
427 | * Now would be a good time to take a rest and grab a coffee or similarly | ||
428 | * relaxing stimulant. The easy parts are behind us, and the trek gradually | ||
429 | * winds uphill from here. | ||
430 | * | ||
431 | * Quick refresher: memory is divided into "pages" of 4096 bytes each. The CPU | ||
432 | * maps virtual addresses to physical addresses using "page tables". We could | ||
433 | * use one huge index of 1 million entries: each address is 4 bytes, so that's | ||
434 | * 1024 pages just to hold the page tables. But since most virtual addresses | ||
435 | * are unused, we use a two level index which saves space. The CR3 register | ||
436 | * contains the physical address of the top level "page directory" page, which | ||
437 | * contains physical addresses of up to 1024 second-level pages. Each of these | ||
438 | * second level pages contains up to 1024 physical addresses of actual pages, | ||
439 | * or Page Table Entries (PTEs). | ||
440 | * | ||
441 | * Here's a diagram, where arrows indicate physical addresses: | ||
442 | * | ||
443 | * CR3 ---> +---------+ | ||
444 | * | --------->+---------+ | ||
445 | * | | | PADDR1 | | ||
446 | * Top-level | | PADDR2 | | ||
447 | * (PMD) page | | | | ||
448 | * | | Lower-level | | ||
449 | * | | (PTE) page | | ||
450 | * | | | | | ||
451 | * .... .... | ||
452 | * | ||
453 | * So to convert a virtual address to a physical address, we look up the top | ||
454 | * level, which points us to the second level, which gives us the physical | ||
455 | * address of that page. If the top level entry was not present, or the second | ||
456 | * level entry was not present, then the virtual address is invalid (we | ||
457 | * say "the page was not mapped"). | ||
458 | * | ||
459 | * Put another way, a 32-bit virtual address is divided up like so: | ||
460 | * | ||
461 | * 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | ||
462 | * |<---- 10 bits ---->|<---- 10 bits ---->|<------ 12 bits ------>| | ||
463 | * Index into top Index into second Offset within page | ||
464 | * page directory page pagetable page | ||
465 | * | ||
466 | * The kernel spends a lot of time changing both the top-level page directory | ||
467 | * and lower-level pagetable pages. The Guest doesn't know physical addresses, | ||
468 | * so while it maintains these page tables exactly like normal, it also needs | ||
469 | * to keep the Host informed whenever it makes a change: the Host will create | ||
470 | * the real page tables based on the Guests'. | ||
471 | */ | ||
472 | |||
473 | /* The Guest calls this to set a second-level entry (pte), ie. to map a page | ||
474 | * into a process' address space. We set the entry then tell the Host the | ||
475 | * toplevel and address this corresponds to. The Guest uses one pagetable per | ||
476 | * process, so we need to tell the Host which one we're changing (mm->pgd). */ | ||
477 | static void lguest_set_pte_at(struct mm_struct *mm, unsigned long addr, | ||
478 | pte_t *ptep, pte_t pteval) | ||
479 | { | ||
480 | *ptep = pteval; | ||
481 | lazy_hcall(LHCALL_SET_PTE, __pa(mm->pgd), addr, pteval.pte_low); | ||
482 | } | ||
483 | |||
484 | /* The Guest calls this to set a top-level entry. Again, we set the entry then | ||
485 | * tell the Host which top-level page we changed, and the index of the entry we | ||
486 | * changed. */ | ||
487 | static void lguest_set_pmd(pmd_t *pmdp, pmd_t pmdval) | ||
488 | { | ||
489 | *pmdp = pmdval; | ||
490 | lazy_hcall(LHCALL_SET_PMD, __pa(pmdp)&PAGE_MASK, | ||
491 | (__pa(pmdp)&(PAGE_SIZE-1))/4, 0); | ||
492 | } | ||
493 | |||
494 | /* There are a couple of legacy places where the kernel sets a PTE, but we | ||
495 | * don't know the top level any more. This is useless for us, since we don't | ||
496 | * know which pagetable is changing or what address, so we just tell the Host | ||
497 | * to forget all of them. Fortunately, this is very rare. | ||
498 | * | ||
499 | * ... except in early boot when the kernel sets up the initial pagetables, | ||
500 | * which makes booting astonishingly slow. So we don't even tell the Host | ||
501 | * anything changed until we've done the first page table switch. | ||
502 | */ | ||
503 | static void lguest_set_pte(pte_t *ptep, pte_t pteval) | ||
504 | { | ||
505 | *ptep = pteval; | ||
506 | /* Don't bother with hypercall before initial setup. */ | ||
507 | if (current_cr3) | ||
508 | lazy_hcall(LHCALL_FLUSH_TLB, 1, 0, 0); | ||
509 | } | ||
510 | |||
511 | /* Unfortunately for Lguest, the pv_mmu_ops for page tables were based on | ||
512 | * native page table operations. On native hardware you can set a new page | ||
513 | * table entry whenever you want, but if you want to remove one you have to do | ||
514 | * a TLB flush (a TLB is a little cache of page table entries kept by the CPU). | ||
515 | * | ||
516 | * So the lguest_set_pte_at() and lguest_set_pmd() functions above are only | ||
517 | * called when a valid entry is written, not when it's removed (ie. marked not | ||
518 | * present). Instead, this is where we come when the Guest wants to remove a | ||
519 | * page table entry: we tell the Host to set that entry to 0 (ie. the present | ||
520 | * bit is zero). */ | ||
521 | static void lguest_flush_tlb_single(unsigned long addr) | ||
522 | { | ||
523 | /* Simply set it to zero: if it was not, it will fault back in. */ | ||
524 | lazy_hcall(LHCALL_SET_PTE, current_cr3, addr, 0); | ||
525 | } | ||
526 | |||
527 | /* This is what happens after the Guest has removed a large number of entries. | ||
528 | * This tells the Host that any of the page table entries for userspace might | ||
529 | * have changed, ie. virtual addresses below PAGE_OFFSET. */ | ||
530 | static void lguest_flush_tlb_user(void) | ||
531 | { | ||
532 | lazy_hcall(LHCALL_FLUSH_TLB, 0, 0, 0); | ||
533 | } | ||
534 | |||
535 | /* This is called when the kernel page tables have changed. That's not very | ||
536 | * common (unless the Guest is using highmem, which makes the Guest extremely | ||
537 | * slow), so it's worth separating this from the user flushing above. */ | ||
538 | static void lguest_flush_tlb_kernel(void) | ||
539 | { | ||
540 | lazy_hcall(LHCALL_FLUSH_TLB, 1, 0, 0); | ||
541 | } | ||
542 | |||
543 | /* | ||
544 | * The Unadvanced Programmable Interrupt Controller. | ||
545 | * | ||
546 | * This is an attempt to implement the simplest possible interrupt controller. | ||
547 | * I spent some time looking though routines like set_irq_chip_and_handler, | ||
548 | * set_irq_chip_and_handler_name, set_irq_chip_data and set_phasers_to_stun and | ||
549 | * I *think* this is as simple as it gets. | ||
550 | * | ||
551 | * We can tell the Host what interrupts we want blocked ready for using the | ||
552 | * lguest_data.interrupts bitmap, so disabling (aka "masking") them is as | ||
553 | * simple as setting a bit. We don't actually "ack" interrupts as such, we | ||
554 | * just mask and unmask them. I wonder if we should be cleverer? | ||
555 | */ | ||
556 | static void disable_lguest_irq(unsigned int irq) | ||
557 | { | ||
558 | set_bit(irq, lguest_data.blocked_interrupts); | ||
559 | } | ||
560 | |||
561 | static void enable_lguest_irq(unsigned int irq) | ||
562 | { | ||
563 | clear_bit(irq, lguest_data.blocked_interrupts); | ||
564 | } | ||
565 | |||
566 | /* This structure describes the lguest IRQ controller. */ | ||
567 | static struct irq_chip lguest_irq_controller = { | ||
568 | .name = "lguest", | ||
569 | .mask = disable_lguest_irq, | ||
570 | .mask_ack = disable_lguest_irq, | ||
571 | .unmask = enable_lguest_irq, | ||
572 | }; | ||
573 | |||
574 | /* This sets up the Interrupt Descriptor Table (IDT) entry for each hardware | ||
575 | * interrupt (except 128, which is used for system calls), and then tells the | ||
576 | * Linux infrastructure that each interrupt is controlled by our level-based | ||
577 | * lguest interrupt controller. */ | ||
578 | static void __init lguest_init_IRQ(void) | ||
579 | { | ||
580 | unsigned int i; | ||
581 | |||
582 | for (i = 0; i < LGUEST_IRQS; i++) { | ||
583 | int vector = FIRST_EXTERNAL_VECTOR + i; | ||
584 | if (vector != SYSCALL_VECTOR) { | ||
585 | set_intr_gate(vector, interrupt[i]); | ||
586 | set_irq_chip_and_handler(i, &lguest_irq_controller, | ||
587 | handle_level_irq); | ||
588 | } | ||
589 | } | ||
590 | /* This call is required to set up for 4k stacks, where we have | ||
591 | * separate stacks for hard and soft interrupts. */ | ||
592 | irq_ctx_init(smp_processor_id()); | ||
593 | } | ||
594 | |||
595 | /* | ||
596 | * Time. | ||
597 | * | ||
598 | * It would be far better for everyone if the Guest had its own clock, but | ||
599 | * until then the Host gives us the time on every interrupt. | ||
600 | */ | ||
601 | static unsigned long lguest_get_wallclock(void) | ||
602 | { | ||
603 | return lguest_data.time.tv_sec; | ||
604 | } | ||
605 | |||
606 | static cycle_t lguest_clock_read(void) | ||
607 | { | ||
608 | unsigned long sec, nsec; | ||
609 | |||
610 | /* If the Host tells the TSC speed, we can trust that. */ | ||
611 | if (lguest_data.tsc_khz) | ||
612 | return native_read_tsc(); | ||
613 | |||
614 | /* If we can't use the TSC, we read the time value written by the Host. | ||
615 | * Since it's in two parts (seconds and nanoseconds), we risk reading | ||
616 | * it just as it's changing from 99 & 0.999999999 to 100 and 0, and | ||
617 | * getting 99 and 0. As Linux tends to come apart under the stress of | ||
618 | * time travel, we must be careful: */ | ||
619 | do { | ||
620 | /* First we read the seconds part. */ | ||
621 | sec = lguest_data.time.tv_sec; | ||
622 | /* This read memory barrier tells the compiler and the CPU that | ||
623 | * this can't be reordered: we have to complete the above | ||
624 | * before going on. */ | ||
625 | rmb(); | ||
626 | /* Now we read the nanoseconds part. */ | ||
627 | nsec = lguest_data.time.tv_nsec; | ||
628 | /* Make sure we've done that. */ | ||
629 | rmb(); | ||
630 | /* Now if the seconds part has changed, try again. */ | ||
631 | } while (unlikely(lguest_data.time.tv_sec != sec)); | ||
632 | |||
633 | /* Our non-TSC clock is in real nanoseconds. */ | ||
634 | return sec*1000000000ULL + nsec; | ||
635 | } | ||
636 | |||
637 | /* This is what we tell the kernel is our clocksource. */ | ||
638 | static struct clocksource lguest_clock = { | ||
639 | .name = "lguest", | ||
640 | .rating = 400, | ||
641 | .read = lguest_clock_read, | ||
642 | .mask = CLOCKSOURCE_MASK(64), | ||
643 | .mult = 1 << 22, | ||
644 | .shift = 22, | ||
645 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
646 | }; | ||
647 | |||
648 | /* The "scheduler clock" is just our real clock, adjusted to start at zero */ | ||
649 | static unsigned long long lguest_sched_clock(void) | ||
650 | { | ||
651 | return cyc2ns(&lguest_clock, lguest_clock_read() - clock_base); | ||
652 | } | ||
653 | |||
654 | /* We also need a "struct clock_event_device": Linux asks us to set it to go | ||
655 | * off some time in the future. Actually, James Morris figured all this out, I | ||
656 | * just applied the patch. */ | ||
657 | static int lguest_clockevent_set_next_event(unsigned long delta, | ||
658 | struct clock_event_device *evt) | ||
659 | { | ||
660 | if (delta < LG_CLOCK_MIN_DELTA) { | ||
661 | if (printk_ratelimit()) | ||
662 | printk(KERN_DEBUG "%s: small delta %lu ns\n", | ||
663 | __FUNCTION__, delta); | ||
664 | return -ETIME; | ||
665 | } | ||
666 | hcall(LHCALL_SET_CLOCKEVENT, delta, 0, 0); | ||
667 | return 0; | ||
668 | } | ||
669 | |||
670 | static void lguest_clockevent_set_mode(enum clock_event_mode mode, | ||
671 | struct clock_event_device *evt) | ||
672 | { | ||
673 | switch (mode) { | ||
674 | case CLOCK_EVT_MODE_UNUSED: | ||
675 | case CLOCK_EVT_MODE_SHUTDOWN: | ||
676 | /* A 0 argument shuts the clock down. */ | ||
677 | hcall(LHCALL_SET_CLOCKEVENT, 0, 0, 0); | ||
678 | break; | ||
679 | case CLOCK_EVT_MODE_ONESHOT: | ||
680 | /* This is what we expect. */ | ||
681 | break; | ||
682 | case CLOCK_EVT_MODE_PERIODIC: | ||
683 | BUG(); | ||
684 | case CLOCK_EVT_MODE_RESUME: | ||
685 | break; | ||
686 | } | ||
687 | } | ||
688 | |||
689 | /* This describes our primitive timer chip. */ | ||
690 | static struct clock_event_device lguest_clockevent = { | ||
691 | .name = "lguest", | ||
692 | .features = CLOCK_EVT_FEAT_ONESHOT, | ||
693 | .set_next_event = lguest_clockevent_set_next_event, | ||
694 | .set_mode = lguest_clockevent_set_mode, | ||
695 | .rating = INT_MAX, | ||
696 | .mult = 1, | ||
697 | .shift = 0, | ||
698 | .min_delta_ns = LG_CLOCK_MIN_DELTA, | ||
699 | .max_delta_ns = LG_CLOCK_MAX_DELTA, | ||
700 | }; | ||
701 | |||
702 | /* This is the Guest timer interrupt handler (hardware interrupt 0). We just | ||
703 | * call the clockevent infrastructure and it does whatever needs doing. */ | ||
704 | static void lguest_time_irq(unsigned int irq, struct irq_desc *desc) | ||
705 | { | ||
706 | unsigned long flags; | ||
707 | |||
708 | /* Don't interrupt us while this is running. */ | ||
709 | local_irq_save(flags); | ||
710 | lguest_clockevent.event_handler(&lguest_clockevent); | ||
711 | local_irq_restore(flags); | ||
712 | } | ||
713 | |||
714 | /* At some point in the boot process, we get asked to set up our timing | ||
715 | * infrastructure. The kernel doesn't expect timer interrupts before this, but | ||
716 | * we cleverly initialized the "blocked_interrupts" field of "struct | ||
717 | * lguest_data" so that timer interrupts were blocked until now. */ | ||
718 | static void lguest_time_init(void) | ||
719 | { | ||
720 | /* Set up the timer interrupt (0) to go to our simple timer routine */ | ||
721 | set_irq_handler(0, lguest_time_irq); | ||
722 | |||
723 | /* Our clock structure look like arch/i386/kernel/tsc.c if we can use | ||
724 | * the TSC, otherwise it's a dumb nanosecond-resolution clock. Either | ||
725 | * way, the "rating" is initialized so high that it's always chosen | ||
726 | * over any other clocksource. */ | ||
727 | if (lguest_data.tsc_khz) | ||
728 | lguest_clock.mult = clocksource_khz2mult(lguest_data.tsc_khz, | ||
729 | lguest_clock.shift); | ||
730 | clock_base = lguest_clock_read(); | ||
731 | clocksource_register(&lguest_clock); | ||
732 | |||
733 | /* Now we've set up our clock, we can use it as the scheduler clock */ | ||
734 | pv_time_ops.sched_clock = lguest_sched_clock; | ||
735 | |||
736 | /* We can't set cpumask in the initializer: damn C limitations! Set it | ||
737 | * here and register our timer device. */ | ||
738 | lguest_clockevent.cpumask = cpumask_of_cpu(0); | ||
739 | clockevents_register_device(&lguest_clockevent); | ||
740 | |||
741 | /* Finally, we unblock the timer interrupt. */ | ||
742 | enable_lguest_irq(0); | ||
743 | } | ||
744 | |||
745 | /* | ||
746 | * Miscellaneous bits and pieces. | ||
747 | * | ||
748 | * Here is an oddball collection of functions which the Guest needs for things | ||
749 | * to work. They're pretty simple. | ||
750 | */ | ||
751 | |||
752 | /* The Guest needs to tell the host what stack it expects traps to use. For | ||
753 | * native hardware, this is part of the Task State Segment mentioned above in | ||
754 | * lguest_load_tr_desc(), but to help hypervisors there's this special call. | ||
755 | * | ||
756 | * We tell the Host the segment we want to use (__KERNEL_DS is the kernel data | ||
757 | * segment), the privilege level (we're privilege level 1, the Host is 0 and | ||
758 | * will not tolerate us trying to use that), the stack pointer, and the number | ||
759 | * of pages in the stack. */ | ||
760 | static void lguest_load_esp0(struct tss_struct *tss, | ||
761 | struct thread_struct *thread) | ||
762 | { | ||
763 | lazy_hcall(LHCALL_SET_STACK, __KERNEL_DS|0x1, thread->esp0, | ||
764 | THREAD_SIZE/PAGE_SIZE); | ||
765 | } | ||
766 | |||
767 | /* Let's just say, I wouldn't do debugging under a Guest. */ | ||
768 | static void lguest_set_debugreg(int regno, unsigned long value) | ||
769 | { | ||
770 | /* FIXME: Implement */ | ||
771 | } | ||
772 | |||
773 | /* There are times when the kernel wants to make sure that no memory writes are | ||
774 | * caught in the cache (that they've all reached real hardware devices). This | ||
775 | * doesn't matter for the Guest which has virtual hardware. | ||
776 | * | ||
777 | * On the Pentium 4 and above, cpuid() indicates that the Cache Line Flush | ||
778 | * (clflush) instruction is available and the kernel uses that. Otherwise, it | ||
779 | * uses the older "Write Back and Invalidate Cache" (wbinvd) instruction. | ||
780 | * Unlike clflush, wbinvd can only be run at privilege level 0. So we can | ||
781 | * ignore clflush, but replace wbinvd. | ||
782 | */ | ||
783 | static void lguest_wbinvd(void) | ||
784 | { | ||
785 | } | ||
786 | |||
787 | /* If the Guest expects to have an Advanced Programmable Interrupt Controller, | ||
788 | * we play dumb by ignoring writes and returning 0 for reads. So it's no | ||
789 | * longer Programmable nor Controlling anything, and I don't think 8 lines of | ||
790 | * code qualifies for Advanced. It will also never interrupt anything. It | ||
791 | * does, however, allow us to get through the Linux boot code. */ | ||
792 | #ifdef CONFIG_X86_LOCAL_APIC | ||
793 | static void lguest_apic_write(unsigned long reg, unsigned long v) | ||
794 | { | ||
795 | } | ||
796 | |||
797 | static unsigned long lguest_apic_read(unsigned long reg) | ||
798 | { | ||
799 | return 0; | ||
800 | } | ||
801 | #endif | ||
802 | |||
803 | /* STOP! Until an interrupt comes in. */ | ||
804 | static void lguest_safe_halt(void) | ||
805 | { | ||
806 | hcall(LHCALL_HALT, 0, 0, 0); | ||
807 | } | ||
808 | |||
809 | /* Perhaps CRASH isn't the best name for this hypercall, but we use it to get a | ||
810 | * message out when we're crashing as well as elegant termination like powering | ||
811 | * off. | ||
812 | * | ||
813 | * Note that the Host always prefers that the Guest speak in physical addresses | ||
814 | * rather than virtual addresses, so we use __pa() here. */ | ||
815 | static void lguest_power_off(void) | ||
816 | { | ||
817 | hcall(LHCALL_CRASH, __pa("Power down"), 0, 0); | ||
818 | } | ||
819 | |||
820 | /* | ||
821 | * Panicing. | ||
822 | * | ||
823 | * Don't. But if you did, this is what happens. | ||
824 | */ | ||
825 | static int lguest_panic(struct notifier_block *nb, unsigned long l, void *p) | ||
826 | { | ||
827 | hcall(LHCALL_CRASH, __pa(p), 0, 0); | ||
828 | /* The hcall won't return, but to keep gcc happy, we're "done". */ | ||
829 | return NOTIFY_DONE; | ||
830 | } | ||
831 | |||
832 | static struct notifier_block paniced = { | ||
833 | .notifier_call = lguest_panic | ||
834 | }; | ||
835 | |||
836 | /* Setting up memory is fairly easy. */ | ||
837 | static __init char *lguest_memory_setup(void) | ||
838 | { | ||
839 | /* We do this here and not earlier because lockcheck barfs if we do it | ||
840 | * before start_kernel() */ | ||
841 | atomic_notifier_chain_register(&panic_notifier_list, &paniced); | ||
842 | |||
843 | /* The Linux bootloader header contains an "e820" memory map: the | ||
844 | * Launcher populated the first entry with our memory limit. */ | ||
845 | add_memory_region(boot_params.e820_map[0].addr, | ||
846 | boot_params.e820_map[0].size, | ||
847 | boot_params.e820_map[0].type); | ||
848 | |||
849 | /* This string is for the boot messages. */ | ||
850 | return "LGUEST"; | ||
851 | } | ||
852 | |||
853 | /* Before virtqueues are set up, we use LHCALL_NOTIFY on normal memory to | ||
854 | * produce console output. */ | ||
855 | static __init int early_put_chars(u32 vtermno, const char *buf, int count) | ||
856 | { | ||
857 | char scratch[17]; | ||
858 | unsigned int len = count; | ||
859 | |||
860 | if (len > sizeof(scratch) - 1) | ||
861 | len = sizeof(scratch) - 1; | ||
862 | scratch[len] = '\0'; | ||
863 | memcpy(scratch, buf, len); | ||
864 | hcall(LHCALL_NOTIFY, __pa(scratch), 0, 0); | ||
865 | |||
866 | /* This routine returns the number of bytes actually written. */ | ||
867 | return len; | ||
868 | } | ||
869 | |||
870 | /*G:050 | ||
871 | * Patching (Powerfully Placating Performance Pedants) | ||
872 | * | ||
873 | * We have already seen that pv_ops structures let us replace simple | ||
874 | * native instructions with calls to the appropriate back end all throughout | ||
875 | * the kernel. This allows the same kernel to run as a Guest and as a native | ||
876 | * kernel, but it's slow because of all the indirect branches. | ||
877 | * | ||
878 | * Remember that David Wheeler quote about "Any problem in computer science can | ||
879 | * be solved with another layer of indirection"? The rest of that quote is | ||
880 | * "... But that usually will create another problem." This is the first of | ||
881 | * those problems. | ||
882 | * | ||
883 | * Our current solution is to allow the paravirt back end to optionally patch | ||
884 | * over the indirect calls to replace them with something more efficient. We | ||
885 | * patch the four most commonly called functions: disable interrupts, enable | ||
886 | * interrupts, restore interrupts and save interrupts. We usually have 10 | ||
887 | * bytes to patch into: the Guest versions of these operations are small enough | ||
888 | * that we can fit comfortably. | ||
889 | * | ||
890 | * First we need assembly templates of each of the patchable Guest operations, | ||
891 | * and these are in lguest_asm.S. */ | ||
892 | |||
893 | /*G:060 We construct a table from the assembler templates: */ | ||
894 | static const struct lguest_insns | ||
895 | { | ||
896 | const char *start, *end; | ||
897 | } lguest_insns[] = { | ||
898 | [PARAVIRT_PATCH(pv_irq_ops.irq_disable)] = { lgstart_cli, lgend_cli }, | ||
899 | [PARAVIRT_PATCH(pv_irq_ops.irq_enable)] = { lgstart_sti, lgend_sti }, | ||
900 | [PARAVIRT_PATCH(pv_irq_ops.restore_fl)] = { lgstart_popf, lgend_popf }, | ||
901 | [PARAVIRT_PATCH(pv_irq_ops.save_fl)] = { lgstart_pushf, lgend_pushf }, | ||
902 | }; | ||
903 | |||
904 | /* Now our patch routine is fairly simple (based on the native one in | ||
905 | * paravirt.c). If we have a replacement, we copy it in and return how much of | ||
906 | * the available space we used. */ | ||
907 | static unsigned lguest_patch(u8 type, u16 clobber, void *ibuf, | ||
908 | unsigned long addr, unsigned len) | ||
909 | { | ||
910 | unsigned int insn_len; | ||
911 | |||
912 | /* Don't do anything special if we don't have a replacement */ | ||
913 | if (type >= ARRAY_SIZE(lguest_insns) || !lguest_insns[type].start) | ||
914 | return paravirt_patch_default(type, clobber, ibuf, addr, len); | ||
915 | |||
916 | insn_len = lguest_insns[type].end - lguest_insns[type].start; | ||
917 | |||
918 | /* Similarly if we can't fit replacement (shouldn't happen, but let's | ||
919 | * be thorough). */ | ||
920 | if (len < insn_len) | ||
921 | return paravirt_patch_default(type, clobber, ibuf, addr, len); | ||
922 | |||
923 | /* Copy in our instructions. */ | ||
924 | memcpy(ibuf, lguest_insns[type].start, insn_len); | ||
925 | return insn_len; | ||
926 | } | ||
927 | |||
928 | /*G:030 Once we get to lguest_init(), we know we're a Guest. The pv_ops | ||
929 | * structures in the kernel provide points for (almost) every routine we have | ||
930 | * to override to avoid privileged instructions. */ | ||
931 | __init void lguest_init(void) | ||
932 | { | ||
933 | /* We're under lguest, paravirt is enabled, and we're running at | ||
934 | * privilege level 1, not 0 as normal. */ | ||
935 | pv_info.name = "lguest"; | ||
936 | pv_info.paravirt_enabled = 1; | ||
937 | pv_info.kernel_rpl = 1; | ||
938 | |||
939 | /* We set up all the lguest overrides for sensitive operations. These | ||
940 | * are detailed with the operations themselves. */ | ||
941 | |||
942 | /* interrupt-related operations */ | ||
943 | pv_irq_ops.init_IRQ = lguest_init_IRQ; | ||
944 | pv_irq_ops.save_fl = save_fl; | ||
945 | pv_irq_ops.restore_fl = restore_fl; | ||
946 | pv_irq_ops.irq_disable = irq_disable; | ||
947 | pv_irq_ops.irq_enable = irq_enable; | ||
948 | pv_irq_ops.safe_halt = lguest_safe_halt; | ||
949 | |||
950 | /* init-time operations */ | ||
951 | pv_init_ops.memory_setup = lguest_memory_setup; | ||
952 | pv_init_ops.patch = lguest_patch; | ||
953 | |||
954 | /* Intercepts of various cpu instructions */ | ||
955 | pv_cpu_ops.load_gdt = lguest_load_gdt; | ||
956 | pv_cpu_ops.cpuid = lguest_cpuid; | ||
957 | pv_cpu_ops.load_idt = lguest_load_idt; | ||
958 | pv_cpu_ops.iret = lguest_iret; | ||
959 | pv_cpu_ops.load_esp0 = lguest_load_esp0; | ||
960 | pv_cpu_ops.load_tr_desc = lguest_load_tr_desc; | ||
961 | pv_cpu_ops.set_ldt = lguest_set_ldt; | ||
962 | pv_cpu_ops.load_tls = lguest_load_tls; | ||
963 | pv_cpu_ops.set_debugreg = lguest_set_debugreg; | ||
964 | pv_cpu_ops.clts = lguest_clts; | ||
965 | pv_cpu_ops.read_cr0 = lguest_read_cr0; | ||
966 | pv_cpu_ops.write_cr0 = lguest_write_cr0; | ||
967 | pv_cpu_ops.read_cr4 = lguest_read_cr4; | ||
968 | pv_cpu_ops.write_cr4 = lguest_write_cr4; | ||
969 | pv_cpu_ops.write_gdt_entry = lguest_write_gdt_entry; | ||
970 | pv_cpu_ops.write_idt_entry = lguest_write_idt_entry; | ||
971 | pv_cpu_ops.wbinvd = lguest_wbinvd; | ||
972 | pv_cpu_ops.lazy_mode.enter = paravirt_enter_lazy_cpu; | ||
973 | pv_cpu_ops.lazy_mode.leave = lguest_leave_lazy_mode; | ||
974 | |||
975 | /* pagetable management */ | ||
976 | pv_mmu_ops.write_cr3 = lguest_write_cr3; | ||
977 | pv_mmu_ops.flush_tlb_user = lguest_flush_tlb_user; | ||
978 | pv_mmu_ops.flush_tlb_single = lguest_flush_tlb_single; | ||
979 | pv_mmu_ops.flush_tlb_kernel = lguest_flush_tlb_kernel; | ||
980 | pv_mmu_ops.set_pte = lguest_set_pte; | ||
981 | pv_mmu_ops.set_pte_at = lguest_set_pte_at; | ||
982 | pv_mmu_ops.set_pmd = lguest_set_pmd; | ||
983 | pv_mmu_ops.read_cr2 = lguest_read_cr2; | ||
984 | pv_mmu_ops.read_cr3 = lguest_read_cr3; | ||
985 | pv_mmu_ops.lazy_mode.enter = paravirt_enter_lazy_mmu; | ||
986 | pv_mmu_ops.lazy_mode.leave = lguest_leave_lazy_mode; | ||
987 | |||
988 | #ifdef CONFIG_X86_LOCAL_APIC | ||
989 | /* apic read/write intercepts */ | ||
990 | pv_apic_ops.apic_write = lguest_apic_write; | ||
991 | pv_apic_ops.apic_write_atomic = lguest_apic_write; | ||
992 | pv_apic_ops.apic_read = lguest_apic_read; | ||
993 | #endif | ||
994 | |||
995 | /* time operations */ | ||
996 | pv_time_ops.get_wallclock = lguest_get_wallclock; | ||
997 | pv_time_ops.time_init = lguest_time_init; | ||
998 | |||
999 | /* Now is a good time to look at the implementations of these functions | ||
1000 | * before returning to the rest of lguest_init(). */ | ||
1001 | |||
1002 | /*G:070 Now we've seen all the paravirt_ops, we return to | ||
1003 | * lguest_init() where the rest of the fairly chaotic boot setup | ||
1004 | * occurs. */ | ||
1005 | |||
1006 | /* The native boot code sets up initial page tables immediately after | ||
1007 | * the kernel itself, and sets init_pg_tables_end so they're not | ||
1008 | * clobbered. The Launcher places our initial pagetables somewhere at | ||
1009 | * the top of our physical memory, so we don't need extra space: set | ||
1010 | * init_pg_tables_end to the end of the kernel. */ | ||
1011 | init_pg_tables_end = __pa(pg0); | ||
1012 | |||
1013 | /* Load the %fs segment register (the per-cpu segment register) with | ||
1014 | * the normal data segment to get through booting. */ | ||
1015 | asm volatile ("mov %0, %%fs" : : "r" (__KERNEL_DS) : "memory"); | ||
1016 | |||
1017 | /* The Host uses the top of the Guest's virtual address space for the | ||
1018 | * Host<->Guest Switcher, and it tells us how much it needs in | ||
1019 | * lguest_data.reserve_mem, set up on the LGUEST_INIT hypercall. */ | ||
1020 | reserve_top_address(lguest_data.reserve_mem); | ||
1021 | |||
1022 | /* If we don't initialize the lock dependency checker now, it crashes | ||
1023 | * paravirt_disable_iospace. */ | ||
1024 | lockdep_init(); | ||
1025 | |||
1026 | /* The IDE code spends about 3 seconds probing for disks: if we reserve | ||
1027 | * all the I/O ports up front it can't get them and so doesn't probe. | ||
1028 | * Other device drivers are similar (but less severe). This cuts the | ||
1029 | * kernel boot time on my machine from 4.1 seconds to 0.45 seconds. */ | ||
1030 | paravirt_disable_iospace(); | ||
1031 | |||
1032 | /* This is messy CPU setup stuff which the native boot code does before | ||
1033 | * start_kernel, so we have to do, too: */ | ||
1034 | cpu_detect(&new_cpu_data); | ||
1035 | /* head.S usually sets up the first capability word, so do it here. */ | ||
1036 | new_cpu_data.x86_capability[0] = cpuid_edx(1); | ||
1037 | |||
1038 | /* Math is always hard! */ | ||
1039 | new_cpu_data.hard_math = 1; | ||
1040 | |||
1041 | #ifdef CONFIG_X86_MCE | ||
1042 | mce_disabled = 1; | ||
1043 | #endif | ||
1044 | #ifdef CONFIG_ACPI | ||
1045 | acpi_disabled = 1; | ||
1046 | acpi_ht = 0; | ||
1047 | #endif | ||
1048 | |||
1049 | /* We set the perferred console to "hvc". This is the "hypervisor | ||
1050 | * virtual console" driver written by the PowerPC people, which we also | ||
1051 | * adapted for lguest's use. */ | ||
1052 | add_preferred_console("hvc", 0, NULL); | ||
1053 | |||
1054 | /* Register our very early console. */ | ||
1055 | virtio_cons_early_init(early_put_chars); | ||
1056 | |||
1057 | /* Last of all, we set the power management poweroff hook to point to | ||
1058 | * the Guest routine to power off. */ | ||
1059 | pm_power_off = lguest_power_off; | ||
1060 | |||
1061 | /* Now we're set up, call start_kernel() in init/main.c and we proceed | ||
1062 | * to boot as normal. It never returns. */ | ||
1063 | start_kernel(); | ||
1064 | } | ||
1065 | /* | ||
1066 | * This marks the end of stage II of our journey, The Guest. | ||
1067 | * | ||
1068 | * It is now time for us to explore the nooks and crannies of the three Guest | ||
1069 | * devices and complete our understanding of the Guest in "make Drivers". | ||
1070 | */ | ||
diff --git a/arch/x86/lguest/i386_head.S b/arch/x86/lguest/i386_head.S new file mode 100644 index 000000000000..ebc6ac733899 --- /dev/null +++ b/arch/x86/lguest/i386_head.S | |||
@@ -0,0 +1,115 @@ | |||
1 | #include <linux/linkage.h> | ||
2 | #include <linux/lguest.h> | ||
3 | #include <asm/lguest_hcall.h> | ||
4 | #include <asm/asm-offsets.h> | ||
5 | #include <asm/thread_info.h> | ||
6 | #include <asm/processor-flags.h> | ||
7 | |||
8 | /*G:020 This is where we begin: head.S notes that the boot header's platform | ||
9 | * type field is "1" (lguest), so calls us here. The boot header is in %esi. | ||
10 | * | ||
11 | * WARNING: be very careful here! We're running at addresses equal to physical | ||
12 | * addesses (around 0), not above PAGE_OFFSET as most code expectes | ||
13 | * (eg. 0xC0000000). Jumps are relative, so they're OK, but we can't touch any | ||
14 | * data. | ||
15 | * | ||
16 | * The .section line puts this code in .init.text so it will be discarded after | ||
17 | * boot. */ | ||
18 | .section .init.text, "ax", @progbits | ||
19 | ENTRY(lguest_entry) | ||
20 | /* Make initial hypercall now, so we can set up the pagetables. */ | ||
21 | movl $LHCALL_LGUEST_INIT, %eax | ||
22 | movl $lguest_data - __PAGE_OFFSET, %edx | ||
23 | int $LGUEST_TRAP_ENTRY | ||
24 | |||
25 | /* The Host put the toplevel pagetable in lguest_data.pgdir. The movsl | ||
26 | * instruction uses %esi implicitly. */ | ||
27 | movl lguest_data - __PAGE_OFFSET + LGUEST_DATA_pgdir, %esi | ||
28 | |||
29 | /* Copy first 32 entries of page directory to __PAGE_OFFSET entries. | ||
30 | * This means the first 128M of kernel memory will be mapped at | ||
31 | * PAGE_OFFSET where the kernel expects to run. This will get it far | ||
32 | * enough through boot to switch to its own pagetables. */ | ||
33 | movl $32, %ecx | ||
34 | movl %esi, %edi | ||
35 | addl $((__PAGE_OFFSET >> 22) * 4), %edi | ||
36 | rep | ||
37 | movsl | ||
38 | |||
39 | /* Set up the initial stack so we can run C code. */ | ||
40 | movl $(init_thread_union+THREAD_SIZE),%esp | ||
41 | |||
42 | /* Jumps are relative, and we're running __PAGE_OFFSET too low at the | ||
43 | * moment. */ | ||
44 | jmp lguest_init+__PAGE_OFFSET | ||
45 | |||
46 | /*G:055 We create a macro which puts the assembler code between lgstart_ and | ||
47 | * lgend_ markers. These templates are put in the .text section: they can't be | ||
48 | * discarded after boot as we may need to patch modules, too. */ | ||
49 | .text | ||
50 | #define LGUEST_PATCH(name, insns...) \ | ||
51 | lgstart_##name: insns; lgend_##name:; \ | ||
52 | .globl lgstart_##name; .globl lgend_##name | ||
53 | |||
54 | LGUEST_PATCH(cli, movl $0, lguest_data+LGUEST_DATA_irq_enabled) | ||
55 | LGUEST_PATCH(sti, movl $X86_EFLAGS_IF, lguest_data+LGUEST_DATA_irq_enabled) | ||
56 | LGUEST_PATCH(popf, movl %eax, lguest_data+LGUEST_DATA_irq_enabled) | ||
57 | LGUEST_PATCH(pushf, movl lguest_data+LGUEST_DATA_irq_enabled, %eax) | ||
58 | /*:*/ | ||
59 | |||
60 | /* These demark the EIP range where host should never deliver interrupts. */ | ||
61 | .global lguest_noirq_start | ||
62 | .global lguest_noirq_end | ||
63 | |||
64 | /*M:004 When the Host reflects a trap or injects an interrupt into the Guest, | ||
65 | * it sets the eflags interrupt bit on the stack based on | ||
66 | * lguest_data.irq_enabled, so the Guest iret logic does the right thing when | ||
67 | * restoring it. However, when the Host sets the Guest up for direct traps, | ||
68 | * such as system calls, the processor is the one to push eflags onto the | ||
69 | * stack, and the interrupt bit will be 1 (in reality, interrupts are always | ||
70 | * enabled in the Guest). | ||
71 | * | ||
72 | * This turns out to be harmless: the only trap which should happen under Linux | ||
73 | * with interrupts disabled is Page Fault (due to our lazy mapping of vmalloc | ||
74 | * regions), which has to be reflected through the Host anyway. If another | ||
75 | * trap *does* go off when interrupts are disabled, the Guest will panic, and | ||
76 | * we'll never get to this iret! :*/ | ||
77 | |||
78 | /*G:045 There is one final paravirt_op that the Guest implements, and glancing | ||
79 | * at it you can see why I left it to last. It's *cool*! It's in *assembler*! | ||
80 | * | ||
81 | * The "iret" instruction is used to return from an interrupt or trap. The | ||
82 | * stack looks like this: | ||
83 | * old address | ||
84 | * old code segment & privilege level | ||
85 | * old processor flags ("eflags") | ||
86 | * | ||
87 | * The "iret" instruction pops those values off the stack and restores them all | ||
88 | * at once. The only problem is that eflags includes the Interrupt Flag which | ||
89 | * the Guest can't change: the CPU will simply ignore it when we do an "iret". | ||
90 | * So we have to copy eflags from the stack to lguest_data.irq_enabled before | ||
91 | * we do the "iret". | ||
92 | * | ||
93 | * There are two problems with this: firstly, we need to use a register to do | ||
94 | * the copy and secondly, the whole thing needs to be atomic. The first | ||
95 | * problem is easy to solve: push %eax on the stack so we can use it, and then | ||
96 | * restore it at the end just before the real "iret". | ||
97 | * | ||
98 | * The second is harder: copying eflags to lguest_data.irq_enabled will turn | ||
99 | * interrupts on before we're finished, so we could be interrupted before we | ||
100 | * return to userspace or wherever. Our solution to this is to surround the | ||
101 | * code with lguest_noirq_start: and lguest_noirq_end: labels. We tell the | ||
102 | * Host that it is *never* to interrupt us there, even if interrupts seem to be | ||
103 | * enabled. */ | ||
104 | ENTRY(lguest_iret) | ||
105 | pushl %eax | ||
106 | movl 12(%esp), %eax | ||
107 | lguest_noirq_start: | ||
108 | /* Note the %ss: segment prefix here. Normal data accesses use the | ||
109 | * "ds" segment, but that will have already been restored for whatever | ||
110 | * we're returning to (such as userspace): we can't trust it. The %ss: | ||
111 | * prefix makes sure we use the stack segment, which is still valid. */ | ||
112 | movl %eax,%ss:lguest_data+LGUEST_DATA_irq_enabled | ||
113 | popl %eax | ||
114 | iret | ||
115 | lguest_noirq_end: | ||
diff --git a/arch/x86/mm/pageattr_64.c b/arch/x86/mm/pageattr_64.c index c7b7dfe1d405..c40afbaaf93d 100644 --- a/arch/x86/mm/pageattr_64.c +++ b/arch/x86/mm/pageattr_64.c | |||
@@ -61,10 +61,10 @@ static struct page *split_large_page(unsigned long address, pgprot_t prot, | |||
61 | return base; | 61 | return base; |
62 | } | 62 | } |
63 | 63 | ||
64 | static void cache_flush_page(void *adr) | 64 | void clflush_cache_range(void *adr, int size) |
65 | { | 65 | { |
66 | int i; | 66 | int i; |
67 | for (i = 0; i < PAGE_SIZE; i += boot_cpu_data.x86_clflush_size) | 67 | for (i = 0; i < size; i += boot_cpu_data.x86_clflush_size) |
68 | clflush(adr+i); | 68 | clflush(adr+i); |
69 | } | 69 | } |
70 | 70 | ||
@@ -80,7 +80,7 @@ static void flush_kernel_map(void *arg) | |||
80 | asm volatile("wbinvd" ::: "memory"); | 80 | asm volatile("wbinvd" ::: "memory"); |
81 | else list_for_each_entry(pg, l, lru) { | 81 | else list_for_each_entry(pg, l, lru) { |
82 | void *adr = page_address(pg); | 82 | void *adr = page_address(pg); |
83 | cache_flush_page(adr); | 83 | clflush_cache_range(adr, PAGE_SIZE); |
84 | } | 84 | } |
85 | __flush_tlb_all(); | 85 | __flush_tlb_all(); |
86 | } | 86 | } |
diff --git a/arch/x86/xen/Kconfig b/arch/x86/xen/Kconfig index 9df99e1885a4..fbfa55ce0d55 100644 --- a/arch/x86/xen/Kconfig +++ b/arch/x86/xen/Kconfig | |||
@@ -3,8 +3,9 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | config XEN | 5 | config XEN |
6 | bool "Enable support for Xen hypervisor" | 6 | bool "Xen guest support" |
7 | depends on PARAVIRT && X86_CMPXCHG && X86_TSC && !NEED_MULTIPLE_NODES | 7 | select PARAVIRT |
8 | depends on X86_CMPXCHG && X86_TSC && !NEED_MULTIPLE_NODES && !(X86_VISWS || X86_VOYAGER) | ||
8 | help | 9 | help |
9 | This is the Linux Xen port. Enabling this will allow the | 10 | This is the Linux Xen port. Enabling this will allow the |
10 | kernel to boot in a paravirtualized environment under the | 11 | kernel to boot in a paravirtualized environment under the |
diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig index aab25f3ba3ce..c2d24991bb2b 100644 --- a/arch/x86_64/Kconfig +++ b/arch/x86_64/Kconfig | |||
@@ -750,6 +750,38 @@ config PCI_DOMAINS | |||
750 | depends on PCI | 750 | depends on PCI |
751 | default y | 751 | default y |
752 | 752 | ||
753 | config DMAR | ||
754 | bool "Support for DMA Remapping Devices (EXPERIMENTAL)" | ||
755 | depends on PCI_MSI && ACPI && EXPERIMENTAL | ||
756 | default y | ||
757 | help | ||
758 | DMA remapping (DMAR) devices support enables independent address | ||
759 | translations for Direct Memory Access (DMA) from devices. | ||
760 | These DMA remapping devices are reported via ACPI tables | ||
761 | and include PCI device scope covered by these DMA | ||
762 | remapping devices. | ||
763 | |||
764 | config DMAR_GFX_WA | ||
765 | bool "Support for Graphics workaround" | ||
766 | depends on DMAR | ||
767 | default y | ||
768 | help | ||
769 | Current Graphics drivers tend to use physical address | ||
770 | for DMA and avoid using DMA APIs. Setting this config | ||
771 | option permits the IOMMU driver to set a unity map for | ||
772 | all the OS-visible memory. Hence the driver can continue | ||
773 | to use physical addresses for DMA. | ||
774 | |||
775 | config DMAR_FLOPPY_WA | ||
776 | bool | ||
777 | depends on DMAR | ||
778 | default y | ||
779 | help | ||
780 | Floppy disk drivers are know to bypass DMA API calls | ||
781 | thereby failing to work when IOMMU is enabled. This | ||
782 | workaround will setup a 1:1 mapping for the first | ||
783 | 16M to make floppy (an ISA device) work. | ||
784 | |||
753 | source "drivers/pci/pcie/Kconfig" | 785 | source "drivers/pci/pcie/Kconfig" |
754 | 786 | ||
755 | source "drivers/pci/Kconfig" | 787 | source "drivers/pci/Kconfig" |
diff --git a/arch/xtensa/boot/Makefile b/arch/xtensa/boot/Makefile index 9c5185f605b6..40aa55b485be 100644 --- a/arch/xtensa/boot/Makefile +++ b/arch/xtensa/boot/Makefile | |||
@@ -8,7 +8,8 @@ | |||
8 | # | 8 | # |
9 | 9 | ||
10 | 10 | ||
11 | EXTRA_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include | 11 | # KBUILD_CFLAGS used when building rest of boot (takes effect recursively) |
12 | KBUILD_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include | ||
12 | HOSTFLAGS += -Iarch/$(ARCH)/boot/include | 13 | HOSTFLAGS += -Iarch/$(ARCH)/boot/include |
13 | 14 | ||
14 | BIG_ENDIAN := $(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#") | 15 | BIG_ENDIAN := $(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#") |