From 06a279040b280661f5a75436f84b2c7cf12c06fb Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Wed, 28 Sep 2011 16:57:52 +0100 Subject: [PATCH] --- yaml --- r: 269215 b: refs/heads/master c: eab9e6137f237681a04649e786cc4d942bedd6d1 h: refs/heads/master i: 269213: 854a7419bc76adc761a16466b64e2b01e78e9096 269211: 9decd71926791b1ad0cf472a2cf9d8b11dbb9890 269207: e3d16bb6a040e72e0572fa568bcf0e7ca09a860f 269199: 2e23e256e7199395217fed137767684739c51af3 269183: cb6f994ae2e009b95b631fafb86d53f91bac784e v: v3 --- [refs] | 2 +- trunk/arch/x86/include/asm/dwarf2.h | 2 ++ trunk/arch/x86/kernel/entry_64.S | 14 +++++++++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 7fa355c68693..ff544599589b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e05139f2569ecf699b229a6473a86cdffed62956 +refs/heads/master: eab9e6137f237681a04649e786cc4d942bedd6d1 diff --git a/trunk/arch/x86/include/asm/dwarf2.h b/trunk/arch/x86/include/asm/dwarf2.h index 326099199318..f6f15986df6c 100644 --- a/trunk/arch/x86/include/asm/dwarf2.h +++ b/trunk/arch/x86/include/asm/dwarf2.h @@ -27,6 +27,7 @@ #define CFI_REMEMBER_STATE .cfi_remember_state #define CFI_RESTORE_STATE .cfi_restore_state #define CFI_UNDEFINED .cfi_undefined +#define CFI_ESCAPE .cfi_escape #ifdef CONFIG_AS_CFI_SIGNAL_FRAME #define CFI_SIGNAL_FRAME .cfi_signal_frame @@ -68,6 +69,7 @@ #define CFI_REMEMBER_STATE cfi_ignore #define CFI_RESTORE_STATE cfi_ignore #define CFI_UNDEFINED cfi_ignore +#define CFI_ESCAPE cfi_ignore #define CFI_SIGNAL_FRAME cfi_ignore #endif diff --git a/trunk/arch/x86/kernel/entry_64.S b/trunk/arch/x86/kernel/entry_64.S index 6419bb05ecd5..faf8d5e74b0b 100644 --- a/trunk/arch/x86/kernel/entry_64.S +++ b/trunk/arch/x86/kernel/entry_64.S @@ -331,10 +331,15 @@ ENDPROC(native_usergs_sysret64) 1: incl PER_CPU_VAR(irq_count) jne 2f mov PER_CPU_VAR(irq_stack_ptr),%rsp - EMPTY_FRAME 0 + CFI_DEF_CFA_REGISTER rsi 2: /* Store previous stack value */ pushq %rsi + CFI_ESCAPE 0x0f /* DW_CFA_def_cfa_expression */, 6, \ + 0x77 /* DW_OP_breg7 */, 0, \ + 0x06 /* DW_OP_deref */, \ + 0x08 /* DW_OP_const1u */, SS+8-RBP, \ + 0x22 /* DW_OP_plus */ /* We entered an interrupt context - irqs are off: */ TRACE_IRQS_OFF .endm @@ -788,7 +793,6 @@ END(interrupt) subq $ORIG_RAX-RBP, %rsp CFI_ADJUST_CFA_OFFSET ORIG_RAX-RBP SAVE_ARGS_IRQ - PARTIAL_FRAME 0 call \func .endm @@ -813,10 +817,10 @@ ret_from_intr: /* Restore saved previous stack */ popq %rsi - leaq 16(%rsi), %rsp - + CFI_DEF_CFA_REGISTER rsi + leaq ARGOFFSET-RBP(%rsi), %rsp CFI_DEF_CFA_REGISTER rsp - CFI_ADJUST_CFA_OFFSET -16 + CFI_ADJUST_CFA_OFFSET RBP-ARGOFFSET exit_intr: GET_THREAD_INFO(%rcx)