hv: cpu: using struct cpu_gp_regs for general-purpose regs in inter_excp_ctx
The purpos is to unify the layout of general-purpose regs in interrupt/excpetion context. Signed-off-by: Binbin Wu <binbin.wu@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
parent
586b527e2c
commit
f1b9f5ac97
|
@ -265,42 +265,45 @@ vector =0x20
|
|||
*/
|
||||
.align 8
|
||||
excp_save_frame:
|
||||
pushq %r11
|
||||
pushq %r10
|
||||
pushq %r9
|
||||
pushq %r8
|
||||
pushq %rdi
|
||||
pushq %rsi
|
||||
pushq %rdx
|
||||
pushq %rcx
|
||||
pushq %rax
|
||||
pushq %rbp
|
||||
pushq %rbx
|
||||
pushq %r15
|
||||
pushq %r14
|
||||
pushq %r13
|
||||
pushq %r12
|
||||
pushq %r15
|
||||
pushq %r14
|
||||
pushq %r13
|
||||
pushq %r12
|
||||
pushq %r11
|
||||
pushq %r10
|
||||
pushq %r9
|
||||
pushq %r8
|
||||
pushq %rdi
|
||||
pushq %rsi
|
||||
pushq %rbp
|
||||
pushq %rsp
|
||||
pushq %rbx
|
||||
pushq %rdx
|
||||
pushq %rcx
|
||||
pushq %rax
|
||||
|
||||
|
||||
/* Put current stack pointer into 1st param register (rdi) */
|
||||
movq %rsp, %rdi
|
||||
|
||||
call dispatch_exception
|
||||
|
||||
popq %r12
|
||||
popq %r13
|
||||
popq %r14
|
||||
popq %r15
|
||||
popq %rbx
|
||||
popq %rbp
|
||||
popq %rax
|
||||
popq %rcx
|
||||
popq %rdx
|
||||
popq %rbx
|
||||
popq %rsp
|
||||
popq %rbp
|
||||
popq %rsi
|
||||
popq %rdi
|
||||
popq %r8
|
||||
popq %r9
|
||||
popq %r10
|
||||
popq %r11
|
||||
popq %r12
|
||||
popq %r13
|
||||
popq %r14
|
||||
popq %r15
|
||||
|
||||
/* Skip vector and error code*/
|
||||
add $16, %rsp
|
||||
|
@ -315,45 +318,44 @@ excp_save_frame:
|
|||
*/
|
||||
.align 8
|
||||
excp_rsvd:
|
||||
pushq %r11
|
||||
pushq %r10
|
||||
pushq %r9
|
||||
pushq %r8
|
||||
pushq %rdi
|
||||
pushq %rsi
|
||||
pushq %rdx
|
||||
pushq %rcx
|
||||
pushq %rax
|
||||
|
||||
|
||||
pushq %rbp
|
||||
pushq %rbx
|
||||
pushq %r15
|
||||
pushq %r14
|
||||
pushq %r13
|
||||
pushq %r12
|
||||
pushq %r15
|
||||
pushq %r14
|
||||
pushq %r13
|
||||
pushq %r12
|
||||
pushq %r11
|
||||
pushq %r10
|
||||
pushq %r9
|
||||
pushq %r8
|
||||
pushq %rdi
|
||||
pushq %rsi
|
||||
pushq %rbp
|
||||
pushq %rsp
|
||||
pushq %rbx
|
||||
pushq %rdx
|
||||
pushq %rcx
|
||||
pushq %rax
|
||||
|
||||
/* Put current stack pointer into 1st param register (rdi) */
|
||||
movq %rsp, %rdi
|
||||
|
||||
call dispatch_exception
|
||||
|
||||
popq %r12
|
||||
popq %r13
|
||||
popq %r14
|
||||
popq %r15
|
||||
popq %rbx
|
||||
popq %rbp
|
||||
|
||||
popq %rax
|
||||
popq %rcx
|
||||
popq %rdx
|
||||
popq %rbx
|
||||
popq %rsp
|
||||
popq %rbp
|
||||
popq %rsi
|
||||
popq %rdi
|
||||
popq %r8
|
||||
popq %r9
|
||||
popq %r10
|
||||
popq %r11
|
||||
popq %r12
|
||||
popq %r13
|
||||
popq %r14
|
||||
popq %r15
|
||||
|
||||
/* Skip vector and error code*/
|
||||
add $16, %rsp
|
||||
|
@ -367,23 +369,22 @@ excp_rsvd:
|
|||
*/
|
||||
.align 8
|
||||
external_interrupt_save_frame:
|
||||
pushq %r11
|
||||
pushq %r10
|
||||
pushq %r9
|
||||
pushq %r8
|
||||
pushq %rdi
|
||||
pushq %rsi
|
||||
pushq %rdx
|
||||
pushq %rcx
|
||||
pushq %rax
|
||||
|
||||
|
||||
pushq %rbp
|
||||
pushq %rbx
|
||||
pushq %r15
|
||||
pushq %r14
|
||||
pushq %r13
|
||||
pushq %r12
|
||||
pushq %r15
|
||||
pushq %r14
|
||||
pushq %r13
|
||||
pushq %r12
|
||||
pushq %r11
|
||||
pushq %r10
|
||||
pushq %r9
|
||||
pushq %r8
|
||||
pushq %rdi
|
||||
pushq %rsi
|
||||
pushq %rbp
|
||||
pushq %rsp
|
||||
pushq %rbx
|
||||
pushq %rdx
|
||||
pushq %rcx
|
||||
pushq %rax
|
||||
|
||||
/* Put current stack pointer into 1st param register (rdi) */
|
||||
movq %rsp, %rdi
|
||||
|
@ -395,22 +396,22 @@ external_interrupt_save_frame:
|
|||
* are for Guest, and we can execute softirq in hv_main() loop
|
||||
*/
|
||||
|
||||
popq %r12
|
||||
popq %r13
|
||||
popq %r14
|
||||
popq %r15
|
||||
popq %rbx
|
||||
popq %rbp
|
||||
|
||||
popq %rax
|
||||
popq %rcx
|
||||
popq %rdx
|
||||
popq %rbx
|
||||
popq %rsp
|
||||
popq %rbp
|
||||
popq %rsi
|
||||
popq %rdi
|
||||
popq %r8
|
||||
popq %r9
|
||||
popq %r10
|
||||
popq %r11
|
||||
popq %r12
|
||||
popq %r13
|
||||
popq %r14
|
||||
popq %r15
|
||||
|
||||
/* Skip vector and error code*/
|
||||
add $16, %rsp
|
||||
|
|
|
@ -261,17 +261,17 @@ void dump_intr_excp_frame(struct intr_excp_ctx *ctx)
|
|||
printf("= Vector=0x%016llX RIP=0x%016llX\n",
|
||||
ctx->vector, ctx->rip);
|
||||
printf("= RAX=0x%016llX RBX=0x%016llX RCX=0x%016llX\n",
|
||||
ctx->rax, ctx->rbx, ctx->rcx);
|
||||
ctx->gp_regs.rax, ctx->gp_regs.rbx, ctx->gp_regs.rcx);
|
||||
printf("= RDX=0x%016llX RDI=0x%016llX RSI=0x%016llX\n",
|
||||
ctx->rdx, ctx->rdi, ctx->rsi);
|
||||
ctx->gp_regs.rdx, ctx->gp_regs.rdi, ctx->gp_regs.rsi);
|
||||
printf("= RSP=0x%016llX RBP=0x%016llX RBX=0x%016llX\n",
|
||||
ctx->rsp, ctx->rbp, ctx->rbx);
|
||||
ctx->gp_regs.rsp, ctx->gp_regs.rbp, ctx->gp_regs.rbx);
|
||||
printf("= R8=0x%016llX R9=0x%016llX R10=0x%016llX\n",
|
||||
ctx->r8, ctx->r9, ctx->r10);
|
||||
ctx->gp_regs.r8, ctx->gp_regs.r9, ctx->gp_regs.r10);
|
||||
printf("= R11=0x%016llX R12=0x%016llX R13=0x%016llX\n",
|
||||
ctx->r11, ctx->r12, ctx->r13);
|
||||
ctx->gp_regs.r11, ctx->gp_regs.r12, ctx->gp_regs.r13);
|
||||
printf("= RFLAGS=0x%016llX R14=0x%016llX R15=0x%016llX\n",
|
||||
ctx->rflags, ctx->r14, ctx->r15);
|
||||
ctx->rflags, ctx->gp_regs.r14, ctx->gp_regs.r15);
|
||||
printf("= ERRCODE=0x%016llX CS=0x%016llX SS=0x%016llX\n",
|
||||
ctx->error_code, ctx->cs, ctx->ss);
|
||||
printf("\r\n");
|
||||
|
@ -285,7 +285,7 @@ void dump_exception(struct intr_excp_ctx *ctx, uint16_t pcpu_id)
|
|||
/* Dump host context */
|
||||
dump_intr_excp_frame(ctx);
|
||||
/* Show host stack */
|
||||
show_host_call_trace(ctx->rsp, ctx->rbp, pcpu_id);
|
||||
show_host_call_trace(ctx->gp_regs.rsp, ctx->gp_regs.rbp, pcpu_id);
|
||||
/* Dump guest context */
|
||||
dump_guest_context(pcpu_id);
|
||||
|
||||
|
|
|
@ -39,29 +39,12 @@
|
|||
* Definition of the stack frame layout
|
||||
*/
|
||||
struct intr_excp_ctx {
|
||||
uint64_t r12;
|
||||
uint64_t r13;
|
||||
uint64_t r14;
|
||||
uint64_t r15;
|
||||
uint64_t rbx;
|
||||
uint64_t rbp;
|
||||
|
||||
uint64_t rax;
|
||||
uint64_t rcx;
|
||||
uint64_t rdx;
|
||||
uint64_t rsi;
|
||||
uint64_t rdi;
|
||||
uint64_t r8;
|
||||
uint64_t r9;
|
||||
uint64_t r10;
|
||||
uint64_t r11;
|
||||
|
||||
struct cpu_gp_regs gp_regs;
|
||||
uint64_t vector;
|
||||
uint64_t error_code;
|
||||
uint64_t rip;
|
||||
uint64_t cs;
|
||||
uint64_t rflags;
|
||||
uint64_t rsp;
|
||||
uint64_t ss;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue