ia64/xen-unstable

changeset 5758:d80e38e4b31d

Native x86_64 linux uses paranoidentry for exceptions with ist !=3D 0,
while x86_64 xenlinux doesn't have special stacks for these exceptions.
Actually we don't need paranoidentry for x86_64 xenlinux, and these
exceptions except #DB should be handled in hypervisor. With this patch,
#DB is forwarded to guest, and let it use zeroentry should be OK.
-Xin

Signed-off-by: Xin Li <xin.b.li@intel.com>
author kaf24@firebug.cl.cam.ac.uk
date Tue Jul 12 16:50:38 2005 +0000 (2005-07-12)
parents b513fd51f850
children f23750d7c214
files linux-2.6-xen-sparse/arch/xen/x86_64/kernel/entry.S
line diff
     1.1 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/entry.S	Tue Jul 12 16:21:23 2005 +0000
     1.2 +++ b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/entry.S	Tue Jul 12 16:50:38 2005 +0000
     1.3 @@ -582,6 +582,7 @@ ENTRY(spurious_interrupt)
     1.4  	jmp error_entry
     1.5  	.endm
     1.6  
     1.7 +#if 0
     1.8  	/* error code is on the stack already */
     1.9  	/* handle NMI like exceptions that can happen everywhere */
    1.10  	.macro paranoidentry sym
    1.11 @@ -603,6 +604,7 @@ 1:	movq %rsp,%rdi
    1.12  	call \sym
    1.13  	cli
    1.14  	.endm
    1.15 +#endif
    1.16  	
    1.17  /*
    1.18   * Exception entry point. This expects an error code/orig_rax on the stack
    1.19 @@ -923,10 +925,10 @@ ENTRY(device_not_available)
    1.20  	/* runs on exception stack */
    1.21  ENTRY(debug)
    1.22  	CFI_STARTPROC
    1.23 -	pushq $0
    1.24 -	CFI_ADJUST_CFA_OFFSET 8		
    1.25 -	paranoidentry do_debug
    1.26 -	jmp paranoid_exit
    1.27 +/*	pushq $0
    1.28 +	CFI_ADJUST_CFA_OFFSET 8	*/
    1.29 +	zeroentry do_debug
    1.30 +/*	jmp paranoid_exit */
    1.31  	CFI_ENDPROC
    1.32  
    1.33  #if 0
    1.34 @@ -945,7 +947,6 @@ ENTRY(nmi)
    1.35  	 * cannot get reschedule ticks.
    1.36  	 */
    1.37  	/* ebx:	no swapgs flag */
    1.38 -#endif        
    1.39  paranoid_exit:
    1.40  	testl %ebx,%ebx				/* swapgs needed? */
    1.41  	jnz paranoid_restore
    1.42 @@ -991,6 +992,7 @@ paranoid_schedule:
    1.43  	cli
    1.44  	jmp paranoid_userspace
    1.45  	CFI_ENDPROC
    1.46 +#endif        
    1.47  
    1.48  ENTRY(int3)
    1.49  	zeroentry do_int3	
    1.50 @@ -1010,12 +1012,14 @@ ENTRY(coprocessor_segment_overrun)
    1.51  ENTRY(reserved)
    1.52  	zeroentry do_reserved
    1.53  
    1.54 +#if 0
    1.55  	/* runs on exception stack */
    1.56  ENTRY(double_fault)
    1.57  	CFI_STARTPROC
    1.58  	paranoidentry do_double_fault
    1.59  	jmp paranoid_exit
    1.60  	CFI_ENDPROC
    1.61 +#endif
    1.62  
    1.63  ENTRY(invalid_TSS)
    1.64  	errorentry do_invalid_TSS
    1.65 @@ -1026,8 +1030,7 @@ ENTRY(segment_not_present)
    1.66  	/* runs on exception stack */
    1.67  ENTRY(stack_segment)
    1.68  	CFI_STARTPROC
    1.69 -	paranoidentry do_stack_segment
    1.70 -	jmp paranoid_exit
    1.71 +	errorentry do_stack_segment
    1.72  	CFI_ENDPROC
    1.73  
    1.74  ENTRY(general_protection)