[XTENSA] Add support for configurable registers and coprocessors
The Xtensa architecture allows to define custom instructions and
registers. Registers that are bound to a coprocessor are only
accessible if the corresponding enable bit is set, which allows
to implement a 'lazy' context switch mechanism. Other registers
needs to be saved and restore at the time of the context switch
or during interrupt handling.
This patch adds support for these additional states:
- save and restore registers that are used by the compiler upon
interrupt entry and exit.
- context switch additional registers unbound to any coprocessor
- 'lazy' context switch of registers bound to a coprocessor
- ptrace interface to provide access to additional registers
- update configuration files in include/asm-xtensa/variant-fsf
Signed-off-by:
Chris Zankel <chris@zankel.net>
Showing
- arch/xtensa/kernel/asm-offsets.c 15 additions, 1 deletionarch/xtensa/kernel/asm-offsets.c
- arch/xtensa/kernel/coprocessor.S 289 additions, 154 deletionsarch/xtensa/kernel/coprocessor.S
- arch/xtensa/kernel/entry.S 73 additions, 222 deletionsarch/xtensa/kernel/entry.S
- arch/xtensa/kernel/process.c 102 additions, 159 deletionsarch/xtensa/kernel/process.c
- arch/xtensa/kernel/ptrace.c 184 additions, 163 deletionsarch/xtensa/kernel/ptrace.c
- arch/xtensa/kernel/signal.c 42 additions, 23 deletionsarch/xtensa/kernel/signal.c
- arch/xtensa/kernel/traps.c 8 additions, 8 deletionsarch/xtensa/kernel/traps.c
- include/asm-xtensa/coprocessor.h 148 additions, 61 deletionsinclude/asm-xtensa/coprocessor.h
- include/asm-xtensa/elf.h 15 additions, 0 deletionsinclude/asm-xtensa/elf.h
- include/asm-xtensa/processor.h 2 additions, 11 deletionsinclude/asm-xtensa/processor.h
- include/asm-xtensa/ptrace.h 21 additions, 23 deletionsinclude/asm-xtensa/ptrace.h
- include/asm-xtensa/regs.h 8 additions, 1 deletioninclude/asm-xtensa/regs.h
- include/asm-xtensa/sigcontext.h 1 addition, 0 deletionsinclude/asm-xtensa/sigcontext.h
- include/asm-xtensa/system.h 1 addition, 38 deletionsinclude/asm-xtensa/system.h
- include/asm-xtensa/thread_info.h 21 additions, 0 deletionsinclude/asm-xtensa/thread_info.h
- include/asm-xtensa/variant-fsf/tie-asm.h 70 additions, 0 deletionsinclude/asm-xtensa/variant-fsf/tie-asm.h
- include/asm-xtensa/variant-fsf/tie.h 65 additions, 10 deletionsinclude/asm-xtensa/variant-fsf/tie.h