config CRASH_DUMP
        bool "Build a kdump crash kernel"
        depends on PPC64 || 6xx || FSL_BOOKE
-       select RELOCATABLE if PPC64 || FSL_BOOKE
+       select RELOCATABLE if PPC64
+       select DYNAMIC_MEMSTART if FSL_BOOKE
        help
          Build a kernel suitable for use as a kdump capture kernel.
          The same kernel binary can be used as production kernel and dump
 
 endmenu
 
+config NONSTATIC_KERNEL
+       bool
+       default n
+
 menu "Advanced setup"
        depends on PPC32
 
        int "Number of CAMs to use to map low memory" if LOWMEM_CAM_NUM_BOOL
        default 3
 
-config RELOCATABLE
-       bool "Build a relocatable kernel (EXPERIMENTAL)"
+config DYNAMIC_MEMSTART
+       bool "Enable page aligned dynamic load address for kernel (EXPERIMENTAL)"
        depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && (FSL_BOOKE || PPC_47x)
-       help
-         This builds a kernel image that is capable of running at the
-         location the kernel is loaded at (some alignment restrictions may
-         exist).
-
-         One use is for the kexec on panic case where the recovery kernel
-         must live at a different physical address than the primary
-         kernel.
-
-         Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
-         it has been loaded at and the compile time physical addresses
-         CONFIG_PHYSICAL_START is ignored.  However CONFIG_PHYSICAL_START
-         setting can still be useful to bootwrappers that need to know the
-         load location of the kernel (eg. u-boot/mkimage).
+       select NONSTATIC_KERNEL
+       help
+         This option enables the kernel to be loaded at any page aligned
+         physical address. The kernel creates a mapping from KERNELBASE to 
+         the address where the kernel is loaded. The page size here implies
+         the TLB page size of the mapping for kernel on the particular platform.
+         Please refer to the init code for finding the TLB page size.
+
+         DYNAMIC_MEMSTART is an easy way of implementing pseudo-RELOCATABLE
+         kernel image, where the only restriction is the page aligned kernel
+         load address. When this option is enabled, the compile time physical 
+         address CONFIG_PHYSICAL_START is ignored.
+
+# Mapping based RELOCATABLE is moved to DYNAMIC_MEMSTART
+# config RELOCATABLE
+#      bool "Build a relocatable kernel (EXPERIMENTAL)"
+#      depends on EXPERIMENTAL && ADVANCED_OPTIONS && FLATMEM && (FSL_BOOKE || PPC_47x)
+#      help
+#        This builds a kernel image that is capable of running at the
+#        location the kernel is loaded at, without any alignment restrictions.
+#
+#        One use is for the kexec on panic case where the recovery kernel
+#        must live at a different physical address than the primary
+#        kernel.
+#
+#        Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
+#        it has been loaded at and the compile time physical addresses
+#        CONFIG_PHYSICAL_START is ignored.  However CONFIG_PHYSICAL_START
+#        setting can still be useful to bootwrappers that need to know the
+#        load location of the kernel (eg. u-boot/mkimage).
 
 config PAGE_OFFSET_BOOL
        bool "Set custom page offset address"
 config KERNEL_START
        hex "Virtual address of kernel base" if KERNEL_START_BOOL
        default PAGE_OFFSET if PAGE_OFFSET_BOOL
-       default "0xc2000000" if CRASH_DUMP && !RELOCATABLE
+       default "0xc2000000" if CRASH_DUMP && !NONSTATIC_KERNEL
        default "0xc0000000"
 
 config PHYSICAL_START_BOOL
 
 config PHYSICAL_START
        hex "Physical address where the kernel is loaded" if PHYSICAL_START_BOOL
-       default "0x02000000" if PPC_STD_MMU && CRASH_DUMP && !RELOCATABLE
+       default "0x02000000" if PPC_STD_MMU && CRASH_DUMP && !NONSTATIC_KERNEL
        default "0x00000000"
 
 config PHYSICAL_ALIGN
 if PPC64
 config RELOCATABLE
        bool "Build a relocatable kernel"
+       select NONSTATIC_KERNEL
        help
          This builds a kernel image that is capable of running anywhere
          in the RMA (real memory area) at any 16k-aligned base address.