Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions arch/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ config ARCH_X86_64
config ARCH_XTENSA
bool "Xtensa"
select ARCH_HAVE_BACKTRACE
select ARCH_HAVE_VFORK
select ARCH_HAVE_CPUINFO
select ARCH_HAVE_INTERRUPTSTACK
select ARCH_HAVE_STACKCHECK
Expand Down
10 changes: 10 additions & 0 deletions arch/xtensa/include/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,16 @@ struct xcptcontext
uint32_t *regs;

#ifdef CONFIG_LIB_SYSCALL
/* The exception frame of the system call currently in progress, i.e. the
* caller's register context as the vector saved it. A system call body
* runs as ordinary C code long after the exception has been dispatched, so
* this is the only way for one to reach the registers of the thread that
* made the call -- vfork() needs the caller's stack pointer and return
* address to give the child a copy.
*/

uint32_t *sregs;

/* The following array holds the return address and the exc_return value
* needed to return from each nested system call.
*/
Expand Down
5 changes: 5 additions & 0 deletions arch/xtensa/src/common/Make.defs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ CMN_CSRCS += xtensa_modifyreg8.c xtensa_modifyreg16.c xtensa_modifyreg32.c
CMN_CSRCS += xtensa_mpu.c xtensa_nputs.c xtensa_oneshot.c xtensa_perf.c
CMN_CSRCS += xtensa_releasestack.c xtensa_registerdump.c
CMN_CSRCS += xtensa_swint.c xtensa_stackframe.c

ifneq ($(CONFIG_ARCH_HAVE_FORK)$(CONFIG_ARCH_HAVE_VFORK),)
CMN_CSRCS += xtensa_fork.c
endif

CMN_CSRCS += xtensa_saveusercontext.c
CMN_CSRCS += xtensa_usestack.c xtensa_tcbinfo.c

Expand Down
Loading
Loading