x86: Remove CALLBACKTYPE_sysexit.

Looking at the Linux patch as an example, it adds more code and
complexity than it removes, for no obvious performance benefit.

Signed-off-by: Keir Fraser <keir@xensource.com>
This commit is contained in:
Keir Fraser committed 2007-10-24 17:15:54 +01:00
1 parent cd75d47348
commit f0baaccd75
7 files changed
+2 -31

No files matched your search

-4
View File
@@ -418,10 +418,6 @@ int vcpu_initialise(struct vcpu *v)
v->arch.perdomain_ptes =
d->arch.mm_perdomain_pt + (v->vcpu_id << GDT_LDT_VCPU_SHIFT);
#ifdef __x86_64__
v->arch.sysexit_cs = 3;
#endif
return (is_pv_32on64_vcpu(v) ? setup_compat_l4(v) : 0);
}
-2
View File
@@ -79,8 +79,6 @@ void __dummy__(void)
OFFSET(VCPU_sysenter_sel, struct vcpu, arch.sysenter_callback_cs);
OFFSET(VCPU_sysenter_disables_events, struct vcpu,
arch.sysenter_disables_events);
OFFSET(VCPU_sysexit_addr, struct vcpu, arch.sysexit_eip);
OFFSET(VCPU_sysexit_sel, struct vcpu, arch.sysexit_cs);
OFFSET(VCPU_gp_fault_addr, struct vcpu,
arch.guest_context.trap_ctxt[TRAP_gp_fault].address);
OFFSET(VCPU_gp_fault_sel, struct vcpu,
-6
View File
@@ -179,11 +179,6 @@ static long compat_register_guest_callback(
(reg->flags & CALLBACKF_mask_events) != 0;
break;
case CALLBACKTYPE_sysexit:
v->arch.sysexit_cs = reg->address.cs | 3;
v->arch.sysexit_eip = reg->address.eip;
break;
case CALLBACKTYPE_nmi:
ret = register_guest_nmi_callback(reg->address.eip);
break;
@@ -207,7 +202,6 @@ static long compat_unregister_guest_callback(
case CALLBACKTYPE_failsafe:
case CALLBACKTYPE_syscall32:
case CALLBACKTYPE_sysenter:
case CALLBACKTYPE_sysexit:
ret = -EINVAL;
break;
+2 -4
View File
@@ -264,11 +264,9 @@ sysenter_eflags_saved:
movl $TRAP_syscall,4(%rsp)
SAVE_ALL
GET_CURRENT(%rbx)
movq VCPU_sysexit_addr(%rbx),%rax
movzwl VCPU_sysexit_sel(%rbx),%edx
cmpb $0,VCPU_sysenter_disables_events(%rbx)
movq %rax,UREGS_rip(%rsp)
movl %edx,UREGS_cs(%rsp)
movq $0,UREGS_rip(%rsp) /* null rip */
movl $3,UREGS_cs(%rsp) /* ring 3 null cs */
movq VCPU_sysenter_addr(%rbx),%rax
setne %cl
leaq VCPU_trap_bounce(%rbx),%rdx
-6
View File
@@ -431,11 +431,6 @@ static long register_guest_callback(struct callback_register *reg)
!!(reg->flags & CALLBACKF_mask_events);
break;
case CALLBACKTYPE_sysexit:
v->arch.sysexit_eip = reg->address;
v->arch.sysexit_cs = FLAT_USER_CS32;
break;
case CALLBACKTYPE_nmi:
ret = register_guest_nmi_callback(reg->address);
break;
@@ -459,7 +454,6 @@ static long unregister_guest_callback(struct callback_unregister *unreg)
case CALLBACKTYPE_syscall:
case CALLBACKTYPE_syscall32:
case CALLBACKTYPE_sysenter:
case CALLBACKTYPE_sysexit:
ret = -EINVAL;
break;
-2
View File
@@ -303,10 +303,8 @@ struct arch_vcpu
struct trap_bounce int80_bounce;
unsigned long syscall32_callback_eip;
unsigned long sysenter_callback_eip;
unsigned long sysexit_eip;
unsigned short syscall32_callback_cs;
unsigned short sysenter_callback_cs;
unsigned short sysexit_cs;
bool_t syscall32_disables_events;
bool_t sysenter_disables_events;
#endif
-7
View File
@@ -64,13 +64,6 @@
*/
#define CALLBACKTYPE_sysenter 5
/*
* x86/64 hypervisor: used to fill a sysenter frame's return address, if the
* guest desires to have a non-NULL value there. If the guest kernel is
* 64-bit then the sysexit code selector is always set to FLAT_USER_CS32.
*/
#define CALLBACKTYPE_sysexit 6
/*
* x86/64 hypervisor: Syscall by 32-bit guest app on AMD CPUs
* ('32-on-32-on-64', '32-on-64-on-64')
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.