zephyr/arch
Andy Ross 1a2fecec6d soc/intel_adsp: Unify Xtensa CPU reset between cores
Startup on these devices was sort of a mess, with multiple variants of
Xtensa and platform initialization code from multiple ancestries being
invoked at different places for different purposes.  Just use one code
path for everyone.

Bootloader entry starts with a minimal assembly stub that simply sets
WINDOW{START,BASE}, PS and a stack pointer and then jumps to C code.
That then uses the cpu_early_init() implementation from cAVS 2.5's
secondary cores to finish Xtensa initialization, and then flows
directly into the pre-existing bootloader C code to initialize cache
and memory and copy the HP-SRAM image, then it invokes Zephyr via a
simple C function call to z_cstart().

Likewise, remove the "reset vector" from Zephyr.  This was never a
reset vector, reset on these devices goes to a fixed address in a ROM.
CPU initialization is handled explicitly and completely in the
bootloader now, in a way that can be unified between the main and
secondary cores.  Entry from the bootloader now goes directly into
z_cstart() via a C call (via a single jump instruction placed at the
entry point address -- that's going away soon too once we're using a
unified link).

Now that vector table initialization happens in a uniform way, there's
no need to copy the VECBASE value during arch_start_cpu().

Finally note that this also reverts the
CONFIG_RESET_VECTOR_IN_BOOTLOADER kconfig variable added for these
platforms, because it's no longer a tunable and true always.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-12-14 18:43:05 -06:00
..
arc soc: arc: fix ARC_HAS_ACCL_REGS settings 2021-12-02 11:32:14 -06:00
arm arch: cortex_m: Fix dwt cyccnt assert 2021-12-10 12:27:49 +01:00
arm64 xenvm: arm64: add Xen Enlighten and event channel support 2021-12-07 12:15:38 -05:00
common cmake: CMake linker script generator pass handling 2021-11-08 20:45:07 +01:00
nios2 arch: nios2: Fix 10.4 violations 2021-04-10 09:59:37 -04:00
posix pm: Remove unused parameter 2021-11-17 11:15:49 -05:00
riscv coredump: add support for RISC-V 2021-12-08 08:54:32 -05:00
sparc arch/sparc: Add hook for CONFIG_SCHED_THREAD_USAGE accounting in ISRs 2021-11-08 21:32:20 -05:00
x86 x86: acpi: Fix address-of-packed-mem warning 2021-12-10 14:08:59 +01:00
xtensa soc/intel_adsp: Unify Xtensa CPU reset between cores 2021-12-14 18:43:05 -06:00
CMakeLists.txt cmake: fix include directories to work with out-of-tree arch 2020-08-05 08:06:07 -04:00
Kconfig coredump: add support for RISC-V 2021-12-08 08:54:32 -05:00