From f5ede33bc8643189a7948d8bf9632a3a4d6403f3 Mon Sep 17 00:00:00 2001 From: Mark Date: Sun, 2 Mar 2025 20:35:05 -0800 Subject: [PATCH] Remove `cpuid` checks --- bios/cpuid.asm | 176 ------------------------------------------------ bios/stage2.asm | 5 -- 2 files changed, 181 deletions(-) delete mode 100644 bios/cpuid.asm diff --git a/bios/cpuid.asm b/bios/cpuid.asm deleted file mode 100644 index e4aeb90..0000000 --- a/bios/cpuid.asm +++ /dev/null @@ -1,176 +0,0 @@ -SECTION .text -USE16 - -cpuid_required_features: - .edx equ cpuid_edx.fpu | cpuid_edx.pse | cpuid_edx.pge | cpuid_edx.fxsr - .ecx equ 0 - -cpuid_check: - ; If bit 21 of EFLAGS can be changed, then CPUID is supported - pushfd ;Save EFLAGS - pushfd ;Store EFLAGS - xor dword [esp],0x00200000 ;Invert the ID bit in stored EFLAGS - popfd ;Load stored EFLAGS (with ID bit inverted) - pushfd ;Store EFLAGS again (ID bit may or may not be inverted) - pop eax ;eax = modified EFLAGS (ID bit may or may not be inverted) - xor eax,[esp] ;eax = whichever bits were changed - popfd ;Restore original EFLAGS - test eax,0x00200000 ;eax = zero if ID bit can't be changed, else non-zero - jz .no_cpuid - - mov eax, 1 - cpuid - - and edx, cpuid_required_features.edx - cmp edx, cpuid_required_features.edx - jne .error - - and ecx, cpuid_required_features.ecx - cmp ecx, cpuid_required_features.ecx - jne .error - - ret - -.no_cpuid: - mov si, .msg_cpuid - call print - - mov si, .msg_line - call print - - jmp .halt - -.error: - push ecx - push edx - - mov si, .msg_features - call print - - mov si, .msg_line - call print - - mov si, .msg_edx - call print - - pop ebx - push ebx - shr ebx, 16 - call print_hex - - pop ebx - call print_hex - - mov si, .msg_must_contain - call print - - mov ebx, cpuid_required_features.edx - shr ebx, 16 - call print_hex - - mov ebx, cpuid_required_features.edx - call print_hex - - mov si, .msg_line - call print - - mov si, .msg_ecx - call print - - pop ebx - push ebx - shr ebx, 16 - call print_hex - - pop ebx - call print_hex - - mov si, .msg_must_contain - call print - - mov ebx, cpuid_required_features.ecx - shr ebx, 16 - call print_hex - - mov ebx, cpuid_required_features.ecx - call print_hex - - mov si, .msg_line - call print - -.halt: - cli - hlt - jmp .halt - -.msg_cpuid: db "CPUID not supported",0 -.msg_features: db "Required CPU features are not present",0 -.msg_line: db 13,10,0 -.msg_edx: db "EDX ",0 -.msg_ecx: db "ECX ",0 -.msg_must_contain: db " must contain ",0 - -cpuid_edx: - .fpu equ 1 << 0 - .vme equ 1 << 1 - .de equ 1 << 2 - .pse equ 1 << 3 - .tsc equ 1 << 4 - .msr equ 1 << 5 - .pae equ 1 << 6 - .mce equ 1 << 7 - .cx8 equ 1 << 8 - .apic equ 1 << 9 - .sep equ 1 << 11 - .mtrr equ 1 << 12 - .pge equ 1 << 13 - .mca equ 1 << 14 - .cmov equ 1 << 15 - .pat equ 1 << 16 - .pse_36 equ 1 << 17 - .psn equ 1 << 18 - .clfsh equ 1 << 19 - .ds equ 1 << 21 - .acpi equ 1 << 22 - .mmx equ 1 << 23 - .fxsr equ 1 << 24 - .sse equ 1 << 25 - .sse2 equ 1 << 26 - .ss equ 1 << 27 - .htt equ 1 << 28 - .tm equ 1 << 29 - .ia64 equ 1 << 30 - .pbe equ 1 << 31 - -cpuid_ecx: - .sse3 equ 1 << 0 - .pclmulqdq equ 1 << 1 - .dtes64 equ 1 << 2 - .monitor equ 1 << 3 - .ds_cpl equ 1 << 4 - .vmx equ 1 << 5 - .smx equ 1 << 6 - .est equ 1 << 7 - .tm2 equ 1 << 8 - .ssse3 equ 1 << 9 - .cnxt_id equ 1 << 10 - .sdbg equ 1 << 11 - .fma equ 1 << 12 - .cmpxchg16b equ 1 << 13 - .xtpr equ 1 << 14 - .pdcm equ 1 << 15 - .pcid equ 1 << 17 - .dca equ 1 << 18 - .sse4_1 equ 1 << 19 - .sse4_2 equ 1 << 20 - .x2apic equ 1 << 21 - .movbe equ 1 << 22 - .popcnt equ 1 << 23 - .tsc_deadline equ 1 << 24 - .aes equ 1 << 25 - .xsave equ 1 << 26 - .osxsave equ 1 << 27 - .avx equ 1 << 28 - .f16c equ 1 << 29 - .rdrand equ 1 << 30 - .hypervisor equ 1 << 31 diff --git a/bios/stage2.asm b/bios/stage2.asm index 9dcb4a4..f964884 100644 --- a/bios/stage2.asm +++ b/bios/stage2.asm @@ -8,10 +8,6 @@ stage2.entry: call print_char call print_line - - ; check for required features - call cpuid_check - ; enable A20-Line via IO-Port 92, might not work on all motherboards in al, 0x92 or al, 2 @@ -20,7 +16,6 @@ stage2.entry: mov dword [protected_mode.func], stage3.entry jmp protected_mode.entry -%include "cpuid.asm" %include "gdt.asm" %include "protected_mode.asm" %include "thunk.asm"