diff options
author | Chris Zankel <chris@zankel.net> | 2008-02-12 16:17:07 -0500 |
---|---|---|
committer | Chris Zankel <chris@zankel.net> | 2008-02-13 20:41:43 -0500 |
commit | c658eac628aa8df040dfe614556d95e6da3a9ffb (patch) | |
tree | e2211e1d5c894c29e92d4c744f504b38410efe41 /include/asm-xtensa/elf.h | |
parent | 71d28e6c285548106f551fde13ca6d589433d843 (diff) |
[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>
Diffstat (limited to 'include/asm-xtensa/elf.h')
-rw-r--r-- | include/asm-xtensa/elf.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/asm-xtensa/elf.h b/include/asm-xtensa/elf.h index 86479b86c02e..11103e07d028 100644 --- a/include/asm-xtensa/elf.h +++ b/include/asm-xtensa/elf.h | |||
@@ -173,6 +173,21 @@ extern void xtensa_elf_core_copy_regs (xtensa_gregset_t *, struct pt_regs *); | |||
173 | _r->areg[12]=0; _r->areg[13]=0; _r->areg[14]=0; _r->areg[15]=0; \ | 173 | _r->areg[12]=0; _r->areg[13]=0; _r->areg[14]=0; _r->areg[15]=0; \ |
174 | } while (0) | 174 | } while (0) |
175 | 175 | ||
176 | typedef struct { | ||
177 | xtregs_opt_t opt; | ||
178 | xtregs_user_t user; | ||
179 | #if XTENSA_HAVE_COPROCESSORS | ||
180 | xtregs_cp0_t cp0; | ||
181 | xtregs_cp1_t cp1; | ||
182 | xtregs_cp2_t cp2; | ||
183 | xtregs_cp3_t cp3; | ||
184 | xtregs_cp4_t cp4; | ||
185 | xtregs_cp5_t cp5; | ||
186 | xtregs_cp6_t cp6; | ||
187 | xtregs_cp7_t cp7; | ||
188 | #endif | ||
189 | } elf_xtregs_t; | ||
190 | |||
176 | #define SET_PERSONALITY(ex, ibcs2) set_personality(PER_LINUX_32BIT) | 191 | #define SET_PERSONALITY(ex, ibcs2) set_personality(PER_LINUX_32BIT) |
177 | 192 | ||
178 | struct task_struct; | 193 | struct task_struct; |