1457c8996SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 2e683014cSPaul Gortmaker #include <linux/types.h> 3e683014cSPaul Gortmaker #include <linux/export.h> 4*04f5bda8SValdis Klētnieks #include <asm/cpu.h> 599f925ceSBorislav Petkov x86_family(unsigned int sig)699f925ceSBorislav Petkovunsigned int x86_family(unsigned int sig) 799f925ceSBorislav Petkov { 899f925ceSBorislav Petkov unsigned int x86; 999f925ceSBorislav Petkov 1099f925ceSBorislav Petkov x86 = (sig >> 8) & 0xf; 1199f925ceSBorislav Petkov 1299f925ceSBorislav Petkov if (x86 == 0xf) 1399f925ceSBorislav Petkov x86 += (sig >> 20) & 0xff; 1499f925ceSBorislav Petkov 1599f925ceSBorislav Petkov return x86; 1699f925ceSBorislav Petkov } 1799f925ceSBorislav Petkov EXPORT_SYMBOL_GPL(x86_family); 1899f925ceSBorislav Petkov x86_model(unsigned int sig)1999f925ceSBorislav Petkovunsigned int x86_model(unsigned int sig) 2099f925ceSBorislav Petkov { 2199f925ceSBorislav Petkov unsigned int fam, model; 2299f925ceSBorislav Petkov 2399f925ceSBorislav Petkov fam = x86_family(sig); 2499f925ceSBorislav Petkov 2599f925ceSBorislav Petkov model = (sig >> 4) & 0xf; 2699f925ceSBorislav Petkov 2799f925ceSBorislav Petkov if (fam >= 0x6) 2899f925ceSBorislav Petkov model += ((sig >> 16) & 0xf) << 4; 2999f925ceSBorislav Petkov 3099f925ceSBorislav Petkov return model; 3199f925ceSBorislav Petkov } 3299f925ceSBorislav Petkov EXPORT_SYMBOL_GPL(x86_model); 3399f925ceSBorislav Petkov x86_stepping(unsigned int sig)3499f925ceSBorislav Petkovunsigned int x86_stepping(unsigned int sig) 3599f925ceSBorislav Petkov { 3699f925ceSBorislav Petkov return sig & 0xf; 3799f925ceSBorislav Petkov } 3899f925ceSBorislav Petkov EXPORT_SYMBOL_GPL(x86_stepping); 39