x86: organize 64-bit ESF
The callee-saved registers have been separated out and will not be saved/restored if exception debugging is shut off. Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
parent
7353c7f95d
commit
768a30c14f
2 changed files with 53 additions and 38 deletions
|
@ -32,22 +32,32 @@ static ALWAYS_INLINE unsigned int arch_irq_lock(void)
|
|||
*/
|
||||
|
||||
struct x86_esf {
|
||||
unsigned long rax;
|
||||
#ifdef CONFIG_EXCEPTION_DEBUG
|
||||
/* callee-saved */
|
||||
unsigned long rbx;
|
||||
unsigned long rbp;
|
||||
unsigned long r12;
|
||||
unsigned long r13;
|
||||
unsigned long r14;
|
||||
unsigned long r15;
|
||||
#endif /* CONFIG_EXCEPTION_DEBUG */
|
||||
|
||||
/* Caller-saved regs */
|
||||
unsigned long rax;
|
||||
unsigned long rcx;
|
||||
unsigned long rdx;
|
||||
unsigned long rbp;
|
||||
unsigned long rsi;
|
||||
unsigned long rdi;
|
||||
unsigned long r8;
|
||||
unsigned long r9;
|
||||
unsigned long r10;
|
||||
unsigned long r11;
|
||||
unsigned long r12;
|
||||
unsigned long r13;
|
||||
unsigned long r14;
|
||||
/* Must be aligned 16 bytes from the end of this struct due to
|
||||
* requirements of 'fxsave (%rsp)'
|
||||
*/
|
||||
char fxsave[X86_FXSAVE_SIZE];
|
||||
unsigned long r15;
|
||||
unsigned long r11;
|
||||
|
||||
/* Pushed by CPU or assembly stub */
|
||||
unsigned long vector;
|
||||
unsigned long code;
|
||||
unsigned long rip;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue