Re: ms_sysenter_eip zero value
From: Matteo <hidden>
Date: 2011-01-27 13:02:13
On 01/26/2011 12:24 PM, Avi Kivity wrote:
On 01/23/2011 01:25 PM, Matteo Signorini wrote:quoted
Hi, I'm having some problems understanding the sysenter instruction. As far as I know, in order to successfully call the sysenter instruction, MSR_IA32_SYSENTER_CS and MSR_IA32_SYSENTER_EIP registers have to be correctly set. So I printed the value of such registers while the VM was running but the output is 0 for both. now: 1) I'm having this problem ONLY with the Intel CPU (vmx.c source code). When I run the same code on an AMD CPU (svm.c source code) MSR_IA32_SYSENTER_EIP and MSR_IA32_SYSENTER_CS contain nonzero values. 2) I am 100% sure the guest is not executing an int80 but a sysenter so there is something here I can't understand... please help me solving this problem.How are you printing out the values? Maybe the problem is there?
arguably there is something I'm doing wrong but I don't think it's the print format. Let me explain what I'm doing. I have modified a little bit the "cpu_dump_state" function called by the monitor's "do_info_registers" function in order to print an additional element and precisely the env->sysenter_cs/eip value. Now, as stated before I don't think the problem is the format because if I use the same code on an AMD machine, the value printed during the VM execution is a non zero value so I'm wondering why this difference from amd and intel? Matteo