mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 21:27:35 +00:00
Kernel: Fix CPUID usage inside cpu_detect()
Since no features inside the 0x80000001 leaf are required for SerenityOS to work, don't assert if it's unavailable.
This commit is contained in:
parent
fb3447f7ec
commit
8cd96f031d
1 changed files with 10 additions and 9 deletions
|
@ -1003,15 +1003,16 @@ UNMAP_AFTER_INIT void Processor::cpu_detect()
|
|||
|
||||
u32 max_extended_leaf = CPUID(0x80000000).eax();
|
||||
|
||||
VERIFY(max_extended_leaf >= 0x80000001);
|
||||
CPUID extended_processor_info(0x80000001);
|
||||
if (extended_processor_info.edx() & (1 << 20))
|
||||
set_feature(CPUFeature::NX);
|
||||
if (extended_processor_info.edx() & (1 << 27))
|
||||
set_feature(CPUFeature::RDTSCP);
|
||||
if (extended_processor_info.edx() & (1 << 11)) {
|
||||
// Only available in 64 bit mode
|
||||
set_feature(CPUFeature::SYSCALL);
|
||||
if (max_extended_leaf >= 0x80000001) {
|
||||
CPUID extended_processor_info(0x80000001);
|
||||
if (extended_processor_info.edx() & (1 << 20))
|
||||
set_feature(CPUFeature::NX);
|
||||
if (extended_processor_info.edx() & (1 << 27))
|
||||
set_feature(CPUFeature::RDTSCP);
|
||||
if (extended_processor_info.edx() & (1 << 11)) {
|
||||
// Only available in 64 bit mode
|
||||
set_feature(CPUFeature::SYSCALL);
|
||||
}
|
||||
}
|
||||
|
||||
if (max_extended_leaf >= 0x80000007) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue