xtensa: Add Kconfig for asm2 layer

The asm2 layer will build alongside the traditional assembly, but the
reverse is not true.  Add a CONFIG_XTENSA_ASM2 to force its use at
runtime and disable the older code.

Note that the older assembly had an initialization function that is
properly part of the timer driver.  Move a C equivalent into the timer
driver itself for now to prevent a build breakage.  Long term we need
to clean that driver up in a bunch of other ways.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
This commit is contained in:
Andy Ross 2017-12-10 12:43:12 -08:00 committed by Anas Nashif
commit c761ae9695
2 changed files with 23 additions and 8 deletions

View file

@ -93,6 +93,18 @@ config XTENSA_OMIT_HIGH_INTERRUPTS
code. Default is "n" for legacy compatibility. Consider
changing to "y" in the future.
config XTENSA_ASM2
bool
prompt "New-sytle Xtensa context switch & interrupt layer"
default n
select USE_SWITCH
help
This selects a new implementation of context switching and
interrupt handling. Advantages are a much lower interrupt
overhead and smaller code size, and this scheme is required
for SMP. Assumes/requires hardware that implements the
register window xtension, however.
config TOOLCHAIN_VARIANT
string
default RG-2016.4-linux

View file

@ -2,19 +2,22 @@ zephyr_cc_option(-mlongcalls)
zephyr_sources(
cpu_idle.c
fatal.c
irq_manage.c
swap.S
thread.c
xtensa_context.S
xtensa_intr_asm.S
xtensa_intr.c
xtensa_vectors.S
xt_zephyr.S
window_vectors.S
xtensa-asm2-util.S
xtensa-asm2.c
)
zephyr_sources_ifndef(CONFIG_XTENSA_ASM2
xtensa_intr.c
irq_manage.c
swap.S
thread.c
xtensa_context.S
xtensa_intr_asm.S
xtensa_vectors.S
xt_zephyr.S
)
zephyr_sources_ifndef(CONFIG_ATOMIC_OPERATIONS_C atomic.S)
zephyr_sources_ifdef(CONFIG_XTENSA_USE_CORE_CRT1
crt1.S