# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1175770682 -3600
# Node ID 4de01232447731f73171ec574ea4f94b83aec7f2
# Parent 602d061ff51f50d7b46bd5ca78c4b70fbe809d20
Revert 14730:07d3208c0ca3b6e746745d2bc08f7aa12ed39269.
Breaks the x86/64 build with (at least) gcc 3.4.4.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S | 60 ++++++++------------
1 files changed, 24 insertions(+), 36 deletions(-)
diff -r 602d061ff51f -r 4de012324477
linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S
--- a/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S Thu Apr 05
10:43:50 2007 +0100
+++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S Thu Apr 05
11:58:02 2007 +0100
@@ -201,20 +201,6 @@ END(ret_from_fork)
END(ret_from_fork)
/*
- * initial frame state for interrupts and exceptions
- */
- .macro _frame ref
- CFI_STARTPROC simple
- CFI_SIGNAL_FRAME
- CFI_DEF_CFA rsp,SS+8-\ref
- /*CFI_REL_OFFSET ss,SS-\ref*/
- CFI_REL_OFFSET rsp,RSP-\ref
- /*CFI_REL_OFFSET rflags,EFLAGS-\ref*/
- /*CFI_REL_OFFSET cs,CS-\ref*/
- CFI_REL_OFFSET rip,RIP-\ref
- .endm
-
-/*
* System call entry. Upto 6 arguments in registers are supported.
*
* SYSCALL does not save anything on the stack and does not change the
@@ -246,7 +232,10 @@ END(ret_from_fork)
*/
ENTRY(system_call)
- _frame (RIP-0x10)
+ CFI_STARTPROC simple
+ CFI_DEF_CFA rsp,PDA_STACKOFFSET
+ CFI_REGISTER rip,rcx
+ /*CFI_REGISTER rflags,r11*/
SAVE_ARGS -8,0
movq %rax,ORIG_RAX-ARGOFFSET(%rsp)
/*
@@ -284,7 +273,9 @@ sysret_check:
*/
TRACE_IRQS_ON
XEN_UNBLOCK_EVENTS(%rsi)
+ CFI_REGISTER rip,rcx
RESTORE_ARGS 0,8,0
+ /*CFI_REGISTER rflags,r11*/
HYPERVISOR_IRET VGCF_IN_SYSCALL
/* Handle reschedules */
@@ -514,16 +505,24 @@ ENTRY(stub_rt_sigreturn)
CFI_ENDPROC
END(stub_rt_sigreturn)
+/*
+ * initial frame state for interrupts and exceptions
+ */
+ .macro _frame ref
+ CFI_STARTPROC simple
+ CFI_DEF_CFA rsp,SS+8-\ref
+ /*CFI_REL_OFFSET ss,SS-\ref*/
+ CFI_REL_OFFSET rsp,RSP-\ref
+ /*CFI_REL_OFFSET rflags,EFLAGS-\ref*/
+ /*CFI_REL_OFFSET cs,CS-\ref*/
+ CFI_REL_OFFSET rip,RIP-\ref
+ .endm
+
/* initial frame state for interrupts (and exceptions without error code) */
-#define INTR_FRAME _frame (RIP-0x10); \
- CFI_REL_OFFSET rcx,0; \
- CFI_REL_OFFSET r11,8
-
+#define INTR_FRAME _frame RIP
/* initial frame state for exceptions with error code (and interrupts with
vector already pushed) */
-#define XCPT_FRAME _frame (RIP-0x18); \
- CFI_REL_OFFSET rcx,0; \
- CFI_REL_OFFSET r11,8
+#define XCPT_FRAME _frame ORIG_RAX
/*
* Interrupt exit.
@@ -600,9 +599,8 @@ retint_kernel:
#endif
CFI_ENDPROC
-END(retint_check)
-
-#ifndef CONFIG_XEN
+END(common_interrupt)
+
/*
* APIC interrupts.
*/
@@ -615,6 +613,7 @@ END(retint_check)
CFI_ENDPROC
.endm
+#ifndef CONFIG_XEN
ENTRY(thermal_interrupt)
apicinterrupt THERMAL_APIC_VECTOR,smp_thermal_interrupt
END(thermal_interrupt)
@@ -669,16 +668,12 @@ END(spurious_interrupt)
.macro zeroentry sym
INTR_FRAME
movq (%rsp),%rcx
- CFI_RESTORE rcx
movq 8(%rsp),%r11
- CFI_RESTORE r11
addq $0x10,%rsp /* skip rcx and r11 */
- CFI_ADJUST_CFA_OFFSET -0x10
pushq $0 /* push error code/oldrax */
CFI_ADJUST_CFA_OFFSET 8
pushq %rax /* push real oldrax to the rdi slot */
CFI_ADJUST_CFA_OFFSET 8
- CFI_REL_OFFSET rax,0
leaq \sym(%rip),%rax
jmp error_entry
CFI_ENDPROC
@@ -687,14 +682,10 @@ END(spurious_interrupt)
.macro errorentry sym
XCPT_FRAME
movq (%rsp),%rcx
- CFI_RESTORE rcx
movq 8(%rsp),%r11
- CFI_RESTORE r11
addq $0x10,%rsp /* rsp points to the error code */
- CFI_ADJUST_CFA_OFFSET -0x10
pushq %rax
CFI_ADJUST_CFA_OFFSET 8
- CFI_REL_OFFSET rax,0
leaq \sym(%rip),%rax
jmp error_entry
CFI_ENDPROC
@@ -808,7 +799,6 @@ paranoid_schedule\trace:
*/
ENTRY(error_entry)
_frame RDI
- CFI_REL_OFFSET rax,0
/* rdi slot contains rax, oldrax contains error code */
cld
subq $14*8,%rsp
@@ -816,7 +806,6 @@ ENTRY(error_entry)
movq %rsi,13*8(%rsp)
CFI_REL_OFFSET rsi,RSI
movq 14*8(%rsp),%rsi /* load rax from rdi slot */
- CFI_REGISTER rax,rsi
movq %rdx,12*8(%rsp)
CFI_REL_OFFSET rdx,RDX
movq %rcx,11*8(%rsp)
@@ -850,7 +839,6 @@ ENTRY(error_entry)
#endif
error_call_handler:
movq %rdi, RDI(%rsp)
- CFI_REL_OFFSET rdi,RDI
movq %rsp,%rdi
movq ORIG_RAX(%rsp),%rsi # get error code
movq $-1,ORIG_RAX(%rsp)
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|