aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/Kconfig
diff options
context:
space:
mode:
authorEric Miao <eric.miao@canonical.com>2010-07-05 09:56:50 -0400
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>2010-07-12 04:11:50 -0400
commite69edc7939abda1f696c482faa8168d80420f75c (patch)
tree55209745a63b2c3fd4f85827dc1969fdd2a16b7a /arch/arm/Kconfig
parentdb7b2b4b0e0513627420940d3d62be44a37f0524 (diff)
ARM: Auto calculate ZRELADDR and provide option for exceptions
As long as the zImage is placed within the 128MB range from the start of memory, ZRELADDR (Address where the decompressed kernel will be placed, usually == PHYS_OFFSET + TEXT_OFFSET) can be determined at run-time by masking PC with 0xf80000000. Running through all the Makefile.boot, all those zreladdr-y addresses == 0x[0-f][08]00_0000 + TEXT_OFFSET can be determined at run-time. Option CONFIG_AUTO_ZRELADDR and CONFIG_ZRELADDR are introduced, CONFIG_ZRELADDR _must_ be explicitly specified if: - ((zreladdr-y - TEXT_OFFSET) & ~0xf8000000) != 0, which means masking PC with 0xf8000000 will result in an incorrect address. Currently this is only a problem on u300. - or the assumption of the zImage being loaded by the bootloader within the first 128MB of RAM is incorrect - or when ZBOOT_ROM is used, where the above assumption is usually wrong. [ukleinek: changed mask from 0xf0000000 to 0xf8000000 for mx1 and shark + some review fixes from the mailing list] Original-Idea-and-Signed-off-by: Nicolas Pitre <nicolas.pitre@linaro.org> Signed-off-by: Eric Miao <eric.miao@canonical.com> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Diffstat (limited to 'arch/arm/Kconfig')
-rw-r--r--arch/arm/Kconfig99
1 files changed, 99 insertions, 0 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index a53ac6570b66..0b0cf0d2872f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1490,6 +1490,105 @@ config ATAGS_PROC
1490 Should the atags used to boot the kernel be exported in an "atags" 1490 Should the atags used to boot the kernel be exported in an "atags"
1491 file in procfs. Useful with kexec. 1491 file in procfs. Useful with kexec.
1492 1492
1493config AUTO_ZRELADDR
1494 bool "Auto calculation of the decompressed kernel image address"
1495 depends on !ZBOOT_ROM && !ARCH_U300
1496 help
1497 ZRELADDR is the physical address where the decompressed kernel
1498 image will be placed. If AUTO_ZRELADDR is selected, the address
1499 will be determined at run-time by masking the current IP with
1500 0xf8000000. This assumes the zImage being placed in the first 128MB
1501 from start of memory.
1502
1503config ZRELADDR
1504 hex "Physical address of the decompressed kernel image"
1505 depends on !AUTO_ZRELADDR
1506 default 0x00008000 if ARCH_BCMRING ||\
1507 ARCH_CNS3XXX ||\
1508 ARCH_DOVE ||\
1509 ARCH_EBSA110 ||\
1510 ARCH_FOOTBRIDGE ||\
1511 ARCH_INTEGRATOR ||\
1512 ARCH_IOP13XX ||\
1513 ARCH_IOP33X ||\
1514 ARCH_IXP2000 ||\
1515 ARCH_IXP23XX ||\
1516 ARCH_IXP4XX ||\
1517 ARCH_KIRKWOOD ||\
1518 ARCH_KS8695 ||\
1519 ARCH_LOKI ||\
1520 ARCH_MMP ||\
1521 ARCH_MV78XX0 ||\
1522 ARCH_NOMADIK ||\
1523 ARCH_NUC93X ||\
1524 ARCH_NS9XXX ||\
1525 ARCH_ORION5X ||\
1526 ARCH_SPEAR3XX ||\
1527 ARCH_SPEAR6XX ||\
1528 ARCH_U8500 ||\
1529 ARCH_VERSATILE ||\
1530 ARCH_W90X900
1531 default 0x08008000 if ARCH_MX1 ||\
1532 ARCH_SHARK
1533 default 0x10008000 if ARCH_MSM ||\
1534 ARCH_OMAP1 ||\
1535 ARCH_RPC
1536 default 0x20008000 if ARCH_S5P6440 ||\
1537 ARCH_S5P6442 ||\
1538 ARCH_S5PC100 ||\
1539 ARCH_S5PV210
1540 default 0x30008000 if ARCH_S3C2410 ||\
1541 ARCH_S3C2400 ||\
1542 ARCH_S3C2412 ||\
1543 ARCH_S3C2416 ||\
1544 ARCH_S3C2440 ||\
1545 ARCH_S3C2443
1546 default 0x40008000 if ARCH_STMP378X ||\
1547 ARCH_STMP37XX ||\
1548 ARCH_SH7372 ||\
1549 ARCH_SH7377
1550 default 0x50008000 if ARCH_S3C64XX ||\
1551 ARCH_SH7367
1552 default 0x60008000 if ARCH_VEXPRESS
1553 default 0x80008000 if ARCH_MX25 ||\
1554 ARCH_MX3 ||\
1555 ARCH_NETX ||\
1556 ARCH_OMAP2PLUS ||\
1557 ARCH_PNX4008
1558 default 0x90008000 if ARCH_MX5 ||\
1559 ARCH_MX91231
1560 default 0xa0008000 if ARCH_IOP32X ||\
1561 ARCH_PXA ||\
1562 MACH_MX27
1563 default 0xc0008000 if ARCH_LH7A40X ||\
1564 MACH_MX21
1565 default 0xf0008000 if ARCH_AAEC2000 ||\
1566 ARCH_L7200
1567 default 0xc0028000 if ARCH_CLPS711X
1568 default 0x70008000 if ARCH_AT91 && (ARCH_AT91CAP9 || ARCH_AT91SAM9G45)
1569 default 0x20008000 if ARCH_AT91 && !(ARCH_AT91CAP9 || ARCH_AT91SAM9G45)
1570 default 0xc0008000 if ARCH_DAVINCI && ARCH_DAVINCI_DA8XX
1571 default 0x80008000 if ARCH_DAVINCI && !ARCH_DAVINCI_DA8XX
1572 default 0x00008000 if ARCH_EP93XX && EP93XX_SDCE3_SYNC_PHYS_OFFSET
1573 default 0xc0008000 if ARCH_EP93XX && EP93XX_SDCE0_PHYS_OFFSET
1574 default 0xd0008000 if ARCH_EP93XX && EP93XX_SDCE1_PHYS_OFFSET
1575 default 0xe0008000 if ARCH_EP93XX && EP93XX_SDCE2_PHYS_OFFSET
1576 default 0xf0008000 if ARCH_EP93XX && EP93XX_SDCE3_ASYNC_PHYS_OFFSET
1577 default 0x00008000 if ARCH_GEMINI && GEMINI_MEM_SWAP
1578 default 0x10008000 if ARCH_GEMINI && !GEMINI_MEM_SWAP
1579 default 0x70008000 if ARCH_REALVIEW && REALVIEW_HIGH_PHYS_OFFSET
1580 default 0x00008000 if ARCH_REALVIEW && !REALVIEW_HIGH_PHYS_OFFSET
1581 default 0xc0208000 if ARCH_SA1100 && SA1111
1582 default 0xc0008000 if ARCH_SA1100 && !SA1111
1583 default 0x30108000 if ARCH_S3C2410 && PM_H1940
1584 default 0x28E08000 if ARCH_U300 && MACH_U300_SINGLE_RAM
1585 default 0x48008000 if ARCH_U300 && !MACH_U300_SINGLE_RAM
1586 help
1587 ZRELADDR is the physical address where the decompressed kernel
1588 image will be placed. ZRELADDR has to be specified when the
1589 assumption of AUTO_ZRELADDR is not valid, or when ZBOOT_ROM is
1590 selected.
1591
1493endmenu 1592endmenu
1494 1593
1495menu "CPU Power Management" 1594menu "CPU Power Management"