[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Problem with modify CR0 of xen kernel


  • To: xen-devel@xxxxxxxxxxxxxxxxxxx
  • From: errik <waitingfor2009marry@xxxxxxxxx>
  • Date: Sun, 13 Dec 2009 16:44:21 +0800
  • Delivery-date: Sun, 13 Dec 2009 00:44:41 -0800
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=Hcs3Ibpa6F6/DVV0MCjz4iI7IvNC/xnknwDOwRCMZd7PIlsDlLRGv1gP5jGms8frJ7 NDL3Mp68m9+MPwlCrwLrXRo40rIwioSube96LB2mB3ac+Z7m13zstVIhdGad6/vM8HV3 r0JO5wNoaOoACOFPXICBuEoktkOMrc0q0m9VI=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

Hi All,
    
   This is a function of a kernel module, but when I calls this function, a segment fault error happens, I don't know why because the code works well on other types of kernel such as PAE and default.
 unsigned long clear_and_return_cr0(void)
{
    unsigned long cr0 = 0;
    unsigned long ret;
#ifdef X86_64
    __asm__ __volatile("movq %%cr0, %%rax" : "=a"(cr0));
    ret = cr0;
    cr0 &= 0xfffffffffffeffff;
    __asm__ __volatile__("movq %%rax, %%cr0" : : "a"(cr0));
#else
    __asm__ __volatile("mov %%cr0, %%eax" : "=a"(cr0));
    ret = cr0;
    cr0 &= 0xfffeffff;
    __asm__ __volatile__("mov %%eax, %%cr0" : : "a"(cr0));
   
#endif
    return ret;
}
 
May anyone give me some suggestions?
 
Thanks a lot!
Eric
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.