ARM: 8646/1: mmu: decouple VECTORS_BASE from Kconfig

For MMU configurations, VECTORS_BASE is always 0xffff0000, a macro
definition will suffice.

For no-MMU, exception base address is dynamically determined in
subsequent patches. To preserve bisectability, now make the
macro applicable for no-MMU scenario too.

Thanks to 0-DAY kernel test infrastructure that found the
bisectability issue. This macro will be restricted to MMU case upon
dynamically determining exception base address for no-MMU.

Once exception address is handled dynamically for no-MMU,
VECTORS_BASE can be removed from Kconfig.

Signed-off-by: afzal mohammed <afzal.mohd.ma@gmail.com>
Tested-by: Vladimir Murzin <vladimir.murzin@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
Afzal Mohammed 2017-01-29 17:31:32 +01:00 committed by Russell King
parent 035e787543
commit d2ca5f2491
4 changed files with 9 additions and 5 deletions

View file

@ -111,6 +111,8 @@
#endif /* !CONFIG_MMU */ #endif /* !CONFIG_MMU */
#define VECTORS_BASE UL(0xffff0000)
#ifdef CONFIG_XIP_KERNEL #ifdef CONFIG_XIP_KERNEL
#define KERNEL_START _sdata #define KERNEL_START _sdata
#else #else

View file

@ -15,6 +15,7 @@
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <asm/cp15.h> #include <asm/cp15.h>
#include <asm/memory.h>
#include <asm/smp_plat.h> #include <asm/smp_plat.h>
#include <asm/smp_scu.h> #include <asm/smp_scu.h>
@ -75,7 +76,7 @@ static void __init berlin_smp_prepare_cpus(unsigned int max_cpus)
if (!cpu_ctrl) if (!cpu_ctrl)
goto unmap_scu; goto unmap_scu;
vectors_base = ioremap(CONFIG_VECTORS_BASE, SZ_32K); vectors_base = ioremap(VECTORS_BASE, SZ_32K);
if (!vectors_base) if (!vectors_base)
goto unmap_scu; goto unmap_scu;

View file

@ -18,6 +18,7 @@
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <asm/fixmap.h> #include <asm/fixmap.h>
#include <asm/memory.h>
#include <asm/pgtable.h> #include <asm/pgtable.h>
struct addr_marker { struct addr_marker {
@ -31,8 +32,8 @@ static struct addr_marker address_markers[] = {
{ 0, "vmalloc() Area" }, { 0, "vmalloc() Area" },
{ VMALLOC_END, "vmalloc() End" }, { VMALLOC_END, "vmalloc() End" },
{ FIXADDR_START, "Fixmap Area" }, { FIXADDR_START, "Fixmap Area" },
{ CONFIG_VECTORS_BASE, "Vectors" }, { VECTORS_BASE, "Vectors" },
{ CONFIG_VECTORS_BASE + PAGE_SIZE * 2, "Vectors End" }, { VECTORS_BASE + PAGE_SIZE * 2, "Vectors End" },
{ -1, NULL }, { -1, NULL },
}; };

View file

@ -27,6 +27,7 @@
#include <asm/cp15.h> #include <asm/cp15.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/memblock.h> #include <asm/memblock.h>
#include <asm/memory.h>
#include <asm/prom.h> #include <asm/prom.h>
#include <asm/sections.h> #include <asm/sections.h>
#include <asm/setup.h> #include <asm/setup.h>
@ -518,8 +519,7 @@ void __init mem_init(void)
" .data : 0x%p" " - 0x%p" " (%4td kB)\n" " .data : 0x%p" " - 0x%p" " (%4td kB)\n"
" .bss : 0x%p" " - 0x%p" " (%4td kB)\n", " .bss : 0x%p" " - 0x%p" " (%4td kB)\n",
MLK(UL(CONFIG_VECTORS_BASE), UL(CONFIG_VECTORS_BASE) + MLK(VECTORS_BASE, VECTORS_BASE + PAGE_SIZE),
(PAGE_SIZE)),
#ifdef CONFIG_HAVE_TCM #ifdef CONFIG_HAVE_TCM
MLK(DTCM_OFFSET, (unsigned long) dtcm_end), MLK(DTCM_OFFSET, (unsigned long) dtcm_end),
MLK(ITCM_OFFSET, (unsigned long) itcm_end), MLK(ITCM_OFFSET, (unsigned long) itcm_end),