xtensa: make secondary reset vector support conditional
Whether xtensa cores start from primary or secondary reset vector is configurable and may be chosen by board designer or controlled at runtime. When secondary reset vector is unused its location in memory may not be writable. Make secondary reset vector support conditional and don't build and load secondary reset vector code when it is disabled. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
c20e1117d9
commit
89b184f980
|
@ -227,6 +227,15 @@ config HOTPLUG_CPU
|
||||||
|
|
||||||
Say N if you want to disable CPU hotplug.
|
Say N if you want to disable CPU hotplug.
|
||||||
|
|
||||||
|
config SECONDARY_RESET_VECTOR
|
||||||
|
bool "Secondary cores use alternative reset vector"
|
||||||
|
default y
|
||||||
|
depends on HAVE_SMP
|
||||||
|
help
|
||||||
|
Secondary cores may be configured to use alternative reset vector,
|
||||||
|
or all cores may use primary reset vector.
|
||||||
|
Say Y here to supply handler for the alternative reset location.
|
||||||
|
|
||||||
config FAST_SYSCALL_XTENSA
|
config FAST_SYSCALL_XTENSA
|
||||||
bool "Enable fast atomic syscalls"
|
bool "Enable fast atomic syscalls"
|
||||||
default n
|
default n
|
||||||
|
|
|
@ -13,7 +13,8 @@ obj-$(CONFIG_MMU) += pci-dma.o
|
||||||
obj-$(CONFIG_PCI) += pci.o
|
obj-$(CONFIG_PCI) += pci.o
|
||||||
obj-$(CONFIG_MODULES) += xtensa_ksyms.o module.o
|
obj-$(CONFIG_MODULES) += xtensa_ksyms.o module.o
|
||||||
obj-$(CONFIG_FUNCTION_TRACER) += mcount.o
|
obj-$(CONFIG_FUNCTION_TRACER) += mcount.o
|
||||||
obj-$(CONFIG_SMP) += smp.o mxhead.o
|
obj-$(CONFIG_SMP) += smp.o
|
||||||
|
obj-$(CONFIG_SECONDARY_RESET_VECTOR) += mxhead.o
|
||||||
obj-$(CONFIG_XTENSA_VARIANT_HAVE_PERF_EVENTS) += perf_event.o
|
obj-$(CONFIG_XTENSA_VARIANT_HAVE_PERF_EVENTS) += perf_event.o
|
||||||
obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o
|
obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o
|
||||||
obj-$(CONFIG_S32C1I_SELFTEST) += s32c1i_selftest.o
|
obj-$(CONFIG_S32C1I_SELFTEST) += s32c1i_selftest.o
|
||||||
|
|
|
@ -349,7 +349,7 @@ void __init setup_arch(char **cmdline_p)
|
||||||
|
|
||||||
#endif /* CONFIG_VECTORS_ADDR */
|
#endif /* CONFIG_VECTORS_ADDR */
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SECONDARY_RESET_VECTOR
|
||||||
mem_reserve(__pa(_SecondaryResetVector_text_start),
|
mem_reserve(__pa(_SecondaryResetVector_text_start),
|
||||||
__pa(_SecondaryResetVector_text_end));
|
__pa(_SecondaryResetVector_text_end));
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -207,7 +207,7 @@ SECTIONS
|
||||||
RELOCATE_ENTRY(_xip_data, .data);
|
RELOCATE_ENTRY(_xip_data, .data);
|
||||||
RELOCATE_ENTRY(_xip_init_data, .init.data);
|
RELOCATE_ENTRY(_xip_init_data, .init.data);
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_SMP)
|
#if defined(CONFIG_SECONDARY_RESET_VECTOR)
|
||||||
RELOCATE_ENTRY(_SecondaryResetVector_text,
|
RELOCATE_ENTRY(_SecondaryResetVector_text,
|
||||||
.SecondaryResetVector.text);
|
.SecondaryResetVector.text);
|
||||||
#endif
|
#endif
|
||||||
|
@ -303,7 +303,7 @@ SECTIONS
|
||||||
#define LAST .DoubleExceptionVector.text
|
#define LAST .DoubleExceptionVector.text
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_SMP)
|
#if defined(CONFIG_SECONDARY_RESET_VECTOR)
|
||||||
|
|
||||||
SECTION_VECTOR4 (_SecondaryResetVector_text,
|
SECTION_VECTOR4 (_SecondaryResetVector_text,
|
||||||
.SecondaryResetVector.text,
|
.SecondaryResetVector.text,
|
||||||
|
|
Loading…
Reference in New Issue