Lines Matching refs:regs
183 static void cpuid(const unsigned int *input, unsigned int *regs) in cpuid() argument
194 : "=a" (regs[0]), "=c" (regs[2]) in cpuid()
195 : "0" (input[0]), "1" (count), "S" (regs) in cpuid()
200 : "=a" (regs[0]), "=b" (regs[1]), "=c" (regs[2]), "=d" (regs[3]) in cpuid()
212 unsigned int in[2] = { 0, ~0U }, regs[4]; in get_cpuid_domain_info() local
216 cpuid(in, regs); in get_cpuid_domain_info()
217 if ( regs[1] == 0x756e6547U && /* "GenuineIntel" */ in get_cpuid_domain_info()
218 regs[2] == 0x6c65746eU && in get_cpuid_domain_info()
219 regs[3] == 0x49656e69U ) in get_cpuid_domain_info()
221 else if ( regs[1] == 0x68747541U && /* "AuthenticAMD" */ in get_cpuid_domain_info()
222 regs[2] == 0x444d4163U && in get_cpuid_domain_info()
223 regs[3] == 0x69746e65U ) in get_cpuid_domain_info()
313 const unsigned int *input, unsigned int *regs) in amd_xc_cpuid_policy() argument
319 regs[0] = regs[1] = regs[2] = 0; in amd_xc_cpuid_policy()
323 if ( regs[0] > DEF_MAX_AMDEXT ) in amd_xc_cpuid_policy()
324 regs[0] = DEF_MAX_AMDEXT; in amd_xc_cpuid_policy()
332 regs[2] = ((regs[2] + (1u << 12)) & 0xf000u) | in amd_xc_cpuid_policy()
333 ((regs[2] & 0xffu) << 1) | 1u; in amd_xc_cpuid_policy()
339 regs[0] = regs[1] = regs[2] = regs[3] = 0; in amd_xc_cpuid_policy()
356 regs[3] &= (SVM_FEATURE_NPT | SVM_FEATURE_LBRV | \ in amd_xc_cpuid_policy()
361 regs[3] |= SVM_FEATURE_VMCBCLEAN | SVM_FEATURE_TSCRATEMSR; in amd_xc_cpuid_policy()
370 const unsigned int *input, unsigned int *regs) in intel_xc_cpuid_policy() argument
379 regs[0] = (((regs[0] & 0x7c000000u) << 1) | 0x04000000u | in intel_xc_cpuid_policy()
380 (regs[0] & 0x3ffu)); in intel_xc_cpuid_policy()
381 regs[3] &= 0x3ffu; in intel_xc_cpuid_policy()
385 if ( regs[0] > DEF_MAX_INTELEXT ) in intel_xc_cpuid_policy()
386 regs[0] = DEF_MAX_INTELEXT; in intel_xc_cpuid_policy()
390 regs[0] = regs[1] = regs[2] = 0; in intel_xc_cpuid_policy()
395 regs[2] = 0; in intel_xc_cpuid_policy()
402 const unsigned int *input, unsigned int *regs) in xc_cpuid_hvm_policy() argument
407 if ( regs[0] > DEF_MAX_BASE ) in xc_cpuid_hvm_policy()
408 regs[0] = DEF_MAX_BASE; in xc_cpuid_hvm_policy()
416 regs[1] = (regs[1] & 0x0000ffffu) | ((regs[1] & 0x007f0000u) << 1); in xc_cpuid_hvm_policy()
418 regs[2] = info->featureset[featureword_of(X86_FEATURE_SSE3)]; in xc_cpuid_hvm_policy()
419 regs[3] = (info->featureset[featureword_of(X86_FEATURE_FPU)] | in xc_cpuid_hvm_policy()
426 regs[1] = info->featureset[featureword_of(X86_FEATURE_FSGSBASE)]; in xc_cpuid_hvm_policy()
427 regs[2] = info->featureset[featureword_of(X86_FEATURE_PREFETCHWT1)]; in xc_cpuid_hvm_policy()
428 regs[3] = info->featureset[featureword_of(X86_FEATURE_AVX512_4VNNIW)]; in xc_cpuid_hvm_policy()
432 regs[1] = 0; in xc_cpuid_hvm_policy()
433 regs[2] = 0; in xc_cpuid_hvm_policy()
434 regs[3] = 0; in xc_cpuid_hvm_policy()
436 regs[0] = 0; in xc_cpuid_hvm_policy()
441 regs[0] = info->featureset[featureword_of(X86_FEATURE_XSAVEOPT)]; in xc_cpuid_hvm_policy()
443 regs[0] = 0; in xc_cpuid_hvm_policy()
444 regs[1] = regs[2] = regs[3] = 0; in xc_cpuid_hvm_policy()
452 regs[2] = (info->featureset[featureword_of(X86_FEATURE_LAHF_LM)] & in xc_cpuid_hvm_policy()
454 regs[3] = info->featureset[featureword_of(X86_FEATURE_SYSCALL)]; in xc_cpuid_hvm_policy()
462 regs[0] = regs[1] = regs[2] = 0; in xc_cpuid_hvm_policy()
463 regs[3] &= 1u<<8; in xc_cpuid_hvm_policy()
467 regs[0] &= 0x0000ffffu; in xc_cpuid_hvm_policy()
468 regs[1] = regs[3] = 0; in xc_cpuid_hvm_policy()
486 regs[0] = regs[1] = regs[2] = regs[3] = 0; in xc_cpuid_hvm_policy()
491 amd_xc_cpuid_policy(xch, info, input, regs); in xc_cpuid_hvm_policy()
493 intel_xc_cpuid_policy(xch, info, input, regs); in xc_cpuid_hvm_policy()
498 const unsigned int *input, unsigned int *regs) in xc_cpuid_pv_policy() argument
503 if ( regs[0] > DEF_MAX_BASE ) in xc_cpuid_pv_policy()
504 regs[0] = DEF_MAX_BASE; in xc_cpuid_pv_policy()
510 bool host_htt = regs[3] & bitmaskof(X86_FEATURE_HTT); in xc_cpuid_pv_policy()
516 regs[1] &= 0x00ffffffu; in xc_cpuid_pv_policy()
518 regs[2] = info->featureset[featureword_of(X86_FEATURE_SSE3)]; in xc_cpuid_pv_policy()
519 regs[3] = (info->featureset[featureword_of(X86_FEATURE_FPU)] & in xc_cpuid_pv_policy()
523 regs[3] |= bitmaskof(X86_FEATURE_HTT); in xc_cpuid_pv_policy()
530 regs[1] = info->featureset[featureword_of(X86_FEATURE_FSGSBASE)]; in xc_cpuid_pv_policy()
531 regs[2] = info->featureset[featureword_of(X86_FEATURE_PREFETCHWT1)]; in xc_cpuid_pv_policy()
532 regs[3] = info->featureset[featureword_of(X86_FEATURE_AVX512_4VNNIW)]; in xc_cpuid_pv_policy()
536 regs[1] = 0; in xc_cpuid_pv_policy()
537 regs[2] = 0; in xc_cpuid_pv_policy()
538 regs[3] = 0; in xc_cpuid_pv_policy()
540 regs[0] = 0; in xc_cpuid_pv_policy()
545 regs[0] = info->featureset[featureword_of(X86_FEATURE_XSAVEOPT)]; in xc_cpuid_pv_policy()
547 regs[0] = 0; in xc_cpuid_pv_policy()
548 regs[1] = regs[2] = regs[3] = 0; in xc_cpuid_pv_policy()
556 if ( regs[0] > max ) in xc_cpuid_pv_policy()
557 regs[0] = max; in xc_cpuid_pv_policy()
564 bool host_cmp_legacy = regs[2] & bitmaskof(X86_FEATURE_CMP_LEGACY); in xc_cpuid_pv_policy()
566 regs[2] = (info->featureset[featureword_of(X86_FEATURE_LAHF_LM)] & in xc_cpuid_pv_policy()
568 regs[3] = info->featureset[featureword_of(X86_FEATURE_SYSCALL)]; in xc_cpuid_pv_policy()
571 regs[2] |= bitmaskof(X86_FEATURE_CMP_LEGACY); in xc_cpuid_pv_policy()
582 regs[0] = regs[1] = regs[2] = regs[3] = 0; in xc_cpuid_pv_policy()
589 const unsigned int *input, unsigned int *regs) in xc_cpuid_policy() argument
598 regs[0] = regs[1] = regs[2] = regs[3] = 0; in xc_cpuid_policy()
603 xc_cpuid_hvm_policy(xch, info, input, regs); in xc_cpuid_policy()
605 xc_cpuid_pv_policy(xch, info, input, regs); in xc_cpuid_policy()
612 const unsigned int *input, const unsigned int *regs) in xc_cpuid_do_domctl() argument
621 domctl.u.cpuid.eax = regs[0]; in xc_cpuid_do_domctl()
622 domctl.u.cpuid.ebx = regs[1]; in xc_cpuid_do_domctl()
623 domctl.u.cpuid.ecx = regs[2]; in xc_cpuid_do_domctl()
624 domctl.u.cpuid.edx = regs[3]; in xc_cpuid_do_domctl()
638 void xc_cpuid_to_str(const unsigned int *regs, char **strs) in xc_cpuid_to_str() argument
648 strs[i][j] = !!((regs[i] & (1U << (31 - j)))) ? '1' : '0'; in xc_cpuid_to_str()
717 unsigned int input[2] = { 0, 0 }, regs[4]; in xc_cpuid_apply_policy() local
725 cpuid(input, regs); in xc_cpuid_apply_policy()
726 base_max = (regs[0] <= DEF_MAX_BASE) ? regs[0] : DEF_MAX_BASE; in xc_cpuid_apply_policy()
728 cpuid(input, regs); in xc_cpuid_apply_policy()
731 ext_max = (regs[0] <= DEF_MAX_AMDEXT) ? regs[0] : DEF_MAX_AMDEXT; in xc_cpuid_apply_policy()
733 ext_max = (regs[0] <= DEF_MAX_INTELEXT) ? regs[0] : DEF_MAX_INTELEXT; in xc_cpuid_apply_policy()
741 cpuid(input, regs); in xc_cpuid_apply_policy()
742 xc_cpuid_policy(xch, &info, input, regs); in xc_cpuid_apply_policy()
744 if ( regs[0] || regs[1] || regs[2] || regs[3] ) in xc_cpuid_apply_policy()
746 rc = xc_cpuid_do_domctl(xch, domid, input, regs); in xc_cpuid_apply_policy()
756 if ( (regs[0] & 0x1f) != 0 ) in xc_cpuid_apply_policy()
803 unsigned int i, j, regs[4], polregs[4]; in xc_cpuid_set() local
812 cpuid(input, regs); in xc_cpuid_set()
814 memcpy(polregs, regs, sizeof(regs)); in xc_cpuid_set()
821 regs[i] = polregs[i]; in xc_cpuid_set()
834 unsigned char val = !!((regs[i] & (1U << (31 - j)))); in xc_cpuid_set()
849 set_feature(31 - j, regs[i]); in xc_cpuid_set()
851 clear_feature(31 - j, regs[i]); in xc_cpuid_set()
859 rc = xc_cpuid_do_domctl(xch, domid, input, regs); in xc_cpuid_set()