X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm_lowlevel.h;h=ea32b2308ade96424f54e587a87962aba941f7fd;hp=4719cce1e77caebe2754b4dcdf42996beec92187;hb=04977d080b9850506ced2523b6130abc517b61df;hpb=729766ab651b7ea7f10f6e4a49ac8fffdc0694c4 diff --git a/palacios/include/palacios/vmm_lowlevel.h b/palacios/include/palacios/vmm_lowlevel.h index 4719cce..ea32b23 100644 --- a/palacios/include/palacios/vmm_lowlevel.h +++ b/palacios/include/palacios/vmm_lowlevel.h @@ -22,7 +22,7 @@ #ifdef __V3_32BIT__ -void __inline__ v3_cpuid(uint_t target, uint_t * eax, uint_t * ebx, uint_t * ecx, uint_t * edx) { +void __inline__ v3_cpuid(uint_t target, addr_t * eax, addr_t * ebx, addr_t * ecx, addr_t * edx) { __asm__ __volatile__ ( "pushl %%ebx\n\t" "cpuid\n\t" @@ -34,7 +34,21 @@ void __inline__ v3_cpuid(uint_t target, uint_t * eax, uint_t * ebx, uint_t * ecx return; } +#elif __V3_64BIT__ +void __inline__ v3_cpuid(uint_t target, addr_t * eax, addr_t * ebx, addr_t * ecx, addr_t * edx) { + __asm__ __volatile__ ( + "pushq %%rbx\n\t" + "cpuid\n\t" + "movq %%rbx, %%rsi\n\t" + "popq %%rbx\n\t" + : "=a" (*eax), "=S" (*ebx), "=c" (*ecx), "=d" (*edx) + : "a" (target) + ); + return; +} + +#endif void __inline__ v3_set_msr(uint_t msr, uint_t high_byte, uint_t low_byte) { @@ -67,4 +81,3 @@ void __inline__ v3_disable_ints() { __asm__ __volatile__ ("cli"); } -#endif