Function report | 
Source Code:arch\x86\boot\cpucheck.c | 
Create Date:2022-07-28 07:26:41 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:Returns -1 on error.* *cpu_level is set to the current CPU level; *req_level to the required* level. x86-64 is considered level 64 for this purpose.* *err_flags_ptr is set to the flags error array if there are flags missing.
Proto:int check_cpu(int *cpu_level_ptr, int *req_level_ptr, unsigned int **err_flags_ptr)
Type:int
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| int * | cpu_level_ptr | |
| int * | req_level_ptr | |
| unsigned int ** | err_flags_ptr | 
| 115 | level = 3 | 
| 117 | If has_eflag(X86_EFLAGS_AC) Then level = 4 | 
| 120 | get_cpuflags() | 
| 123 | If Determine whether a bit is set(Long Mode (x86-64, 64-bit support) , flags) Then level = 64 | 
| 133 | ecx = MSR_K7_HWCR | 
| 136 | asm("rdmsr":"=a"(eax), "=d"(edx):"c"(ecx)) | 
| 137 | eax &= ~(1 << 15) | 
| 138 | asm("wrmsr"::"a"(eax), "d"(edx), "c"(ecx)) | 
| 140 | get_cpuflags() | 
| 142 | Else if err == 0x01 && Not (err_flags[0] & ~(1 << CMPXCHG8 instruction )) && is_centaur() && model >= 6 Then | 
| 148 | ecx = VIA Cyrix defined MSRs | 
| 151 | asm("rdmsr":"=a"(eax), "=d"(edx):"c"(ecx)) | 
| 152 | eax |= 1 << 1 | 1 << 7 | 
| 153 | asm("wrmsr"::"a"(eax), "d"(edx), "c"(ecx)) | 
| 157 | Else if err == 0x01 && is_transmeta() Then | 
| 160 | ecx = 0x80860004 | 
| 162 | level = 1 | 
| 164 | asm("rdmsr":"=a"(eax), "=d"(edx):"c"(ecx)) | 
| 165 | asm("wrmsr"::"a"(~0), "d"(edx), "c"(ecx)) | 
| 166 | asm("cpuid":"+a"(level), "=d"(flags)::"ecx", "ebx") | 
| 169 | asm("wrmsr"::"a"(eax), "d"(edx), "c"(ecx)) | 
| 172 | Else if err == 0x01 && Not (err_flags[0] & ~(1 << Physical Address Extensions )) && is_intel() && Family, or 64 for x86-64 == 6 && ( model == 9 || model == 13 ) Then | 
| 186 | If Not err Then err = check_knl_erratum() | 
| 189 | If err_flags_ptr Then * err_flags_ptr = err ? err_flags : NULL | 
| 191 | If cpu_level_ptr Then cpu_level_ptr = Family, or 64 for x86-64 | 
| 193 | If req_level_ptr Then req_level_ptr = req_level | 
| 196 | Return If Family, or 64 for x86-64 < req_level || err Then -1 Else 0 | 
| Name | Describe | 
|---|---|
| validate_cpu | 
| Source code conversion tool public plug-in interface  | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion  |