diff options
| -rw-r--r-- | docs/USAGE.md | 7 | ||||
| -rw-r--r-- | docs/box64.pod | 8 | ||||
| -rw-r--r-- | docs/gen/usage.json | 18 | ||||
| -rw-r--r-- | src/include/env.h | 1 | ||||
| -rw-r--r-- | src/os/my_cpuid_common.c | 4 | ||||
| -rw-r--r-- | src/tools/env.c | 1 | ||||
| -rw-r--r-- | src/wrapped/wrappedlibc.c | 4 |
7 files changed, 40 insertions, 3 deletions
diff --git a/docs/USAGE.md b/docs/USAGE.md index 4efd7b71..e59c65b5 100644 --- a/docs/USAGE.md +++ b/docs/USAGE.md @@ -399,6 +399,13 @@ Path to look for x86_64 binaries. * XXXX: Add path XXXX to the binary path. +### BOX64_PCLMULQDQ + +Expose PCLMULQDQ capabilities. + + * 0: Do not expose PCLMULQDQ capabilities. + * 1: Expose PCLMULQDQ capabilities. [Default] + ### BOX64_RCFILE Path to the rc file to load. diff --git a/docs/box64.pod b/docs/box64.pod index 42ce1ee5..2b0461fa 100644 --- a/docs/box64.pod +++ b/docs/box64.pod @@ -662,6 +662,14 @@ Path to look for x86_64 binaries. * XXXX : Add path XXXX to the binary path. +=item B<BOX64_PCLMULQDQ> =I<0|1> + +Expose PCLMULQDQ capabilities. + + * 0 : Do not expose PCLMULQDQ capabilities. + * 1 : Expose PCLMULQDQ capabilities. [Default] + + =item B<BOX64_PREFER_EMULATED> =I<0|1> Prefer emulated libraries over native ones. diff --git a/docs/gen/usage.json b/docs/gen/usage.json index dfd65aea..523fc8f6 100644 --- a/docs/gen/usage.json +++ b/docs/gen/usage.json @@ -1437,6 +1437,24 @@ ] }, { + "name": "BOX64_PCLMULQDQ", + "description": "Expose PCLMULQDQ capabilities.", + "category": "Compatibility", + "wine": false, + "options": [ + { + "key": "0", + "description": "Do not expose PCLMULQDQ capabilities.", + "default": false + }, + { + "key": "1", + "description": "Expose PCLMULQDQ capabilities.", + "default": true + } + ] + }, + { "name": "BOX64_PREFER_EMULATED", "description": "Prefer emulated libraries over native ones.", "category": "Libraries", diff --git a/src/include/env.h b/src/include/env.h index ac3be9a4..7c5dbcea 100644 --- a/src/include/env.h +++ b/src/include/env.h @@ -103,6 +103,7 @@ extern char* ftrace_name; BOOLEAN(BOX64_NOSIGILL, nosigill, 0, 0) \ BOOLEAN(BOX64_NOVULKAN, novulkan, 0, 0) \ STRING(BOX64_PATH, path, 0) \ + BOOLEAN(BOX64_PCLMULQDQ, pclmulqdq, 1, 0) \ BOOLEAN(BOX64_PREFER_EMULATED, prefer_emulated, 0, 0) \ BOOLEAN(BOX64_PREFER_WRAPPED, prefer_wrapped, 0, 0) \ STRING(BOX64_RCFILE, envfile, 0) \ diff --git a/src/os/my_cpuid_common.c b/src/os/my_cpuid_common.c index 3df5aa03..fa96bb54 100644 --- a/src/os/my_cpuid_common.c +++ b/src/os/my_cpuid_common.c @@ -105,7 +105,7 @@ void my_cpuid(x64emu_t* emu, uint32_t tmp32u) | (BOX64ENV(cputype)?0:1)<<28 // HT / Multi-core ; R_ECX = 1<<0 // SSE3 - | 1<<1 // PCLMULQDQ + | BOX64ENV(pclmulqdq)<<1 // PCLMULQDQ | (BOX64ENV(cputype)?0:1)<<2 // DS 64bits | 1<<3 // Monitor/MWait (priviledge instructions) | (BOX64ENV(cputype)?0:1)<<5 // VMX //is that usefull @@ -210,7 +210,7 @@ void my_cpuid(x64emu_t* emu, uint32_t tmp32u) 0; R_RCX = BOX64ENV(avx)<<9 | //VAES - BOX64ENV(avx2)<<10 | //VPCLMULQDQ. + (BOX64ENV(avx2)&&BOX64ENV(pclmulqdq))<<10 | //VPCLMULQDQ. 1<<22 | // RDPID 0; R_RDX = 0; diff --git a/src/tools/env.c b/src/tools/env.c index 4e41ed74..9df07500 100644 --- a/src/tools/env.c +++ b/src/tools/env.c @@ -883,6 +883,7 @@ typedef struct DynaCacheHeader_s { DS_GO(BOX64_DYNAREC_VOLATILE_METADATA, dynarec_volatile_metadata, 1)\ DS_GO(BOX64_DYNAREC_WEAKBARRIER, dynarec_weakbarrier, 2) \ DS_GO(BOX64_DYNAREC_X87DOUBLE, dynarec_x87double, 2) \ + DS_GO(BOX64_PCLMULQDQ, pclmulqdq, 1) \ DS_GO(BOX64_SHAEXT, shaext, 1) \ DS_GO(BOX64_SSE42, sse42, 1) \ DS_GO(BOX64_AVX, avx, 2) \ diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index 51e255e7..bf7120ac 100644 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -1790,8 +1790,10 @@ void CreateCPUInfoFile(int fd) P; sprintf(buff, "bogomips\t: %g\n", getBogoMips()); P; - sprintf(buff, "flags\t\t: fpu cx8 sep ht cmov clflush mmx sse sse2 syscall tsc lahf_lm ssse3 ht tm lm fxsr cpuid pclmulqdq cx16 aes movbe pni "\ + sprintf(buff, "flags\t\t: fpu cx8 sep ht cmov clflush mmx sse sse2 syscall tsc lahf_lm ssse3 ht tm lm fxsr cpuid"\ + "%s cx16 aes movbe pni "\ "sse4_1%s%s%s lzcnt popcnt%s%s%s%s%s%s%s%s%s\n", + BOX64ENV(pclmulqdq)?" pclmulqdq":"", BOX64ENV(sse42)?" sse4_2":"", BOX64ENV(avx)?" avx":"", BOX64ENV(shaext)?"sha_ni":"", BOX64ENV(avx)?" bmi1":"", BOX64ENV(avx2)?" avx2":"", BOX64ENV(avx)?" bmi2":"", BOX64ENV(avx2)?" vaes":"", BOX64ENV(avx2)?" fma":"", |