mirror of
				https://github.com/hedge-dev/UnleashedRecomp.git
				synced 2025-10-30 07:11:05 +00:00 
			
		
		
		
	Added check for AVX on boot (#1067)
Co-authored-by: Wiseguy <68165316+mr-wiseguy@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									3c050887d8
								
							
						
					
					
						commit
						c19a7b1e11
					
				
					 2 changed files with 26 additions and 2 deletions
				
			
		|  | @ -352,7 +352,7 @@ if (WIN32) | |||
|         Synchronization | ||||
|         winmm | ||||
|     ) | ||||
| endif() | ||||
| endif() | ||||
| 
 | ||||
| target_link_libraries(UnleashedRecomp PRIVATE | ||||
|     fmt::fmt | ||||
|  |  | |||
|  | @ -1,4 +1,5 @@ | |||
| #include <stdafx.h> | ||||
| #include <cpuid.h> | ||||
| #include <cpu/guest_thread.h> | ||||
| #include <gpu/video.h> | ||||
| #include <kernel/function.h> | ||||
|  | @ -147,6 +148,29 @@ uint32_t LdrLoadModule(const std::filesystem::path &path) | |||
|     return entry; | ||||
| } | ||||
| 
 | ||||
| __attribute__((constructor(101), target("no-avx,no-avx2"), noinline)) | ||||
| void init() | ||||
| { | ||||
| #ifdef __x86_64__ | ||||
|     uint32_t eax, ebx, ecx, edx; | ||||
| 
 | ||||
|     // Execute CPUID for processor info and feature bits.
 | ||||
|     __get_cpuid(1, &eax, &ebx, &ecx, &edx); | ||||
| 
 | ||||
|     // Check for AVX support.
 | ||||
|     if ((ecx & (1 << 28)) == 0) | ||||
|     { | ||||
|         printf("[*] CPU does not support the AVX instruction set.\n"); | ||||
| 
 | ||||
| #ifdef _WIN32 | ||||
|         MessageBoxA(nullptr, "Your CPU does not meet the minimum system requirements.", "Unleashed Recompiled", MB_ICONERROR); | ||||
| #endif | ||||
| 
 | ||||
|         std::_Exit(1); | ||||
|     } | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| int main(int argc, char *argv[]) | ||||
| { | ||||
| #ifdef _WIN32 | ||||
|  | @ -156,7 +180,7 @@ int main(int argc, char *argv[]) | |||
|     os::process::CheckConsole(); | ||||
| 
 | ||||
|     if (!os::registry::Init()) | ||||
|         LOGN_WARNING("OS doesn't support registry"); | ||||
|         LOGN_WARNING("OS does not support registry."); | ||||
| 
 | ||||
|     os::logger::Init(); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Hyper
						Hyper