about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-07-15 13:43:53 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-07-15 13:43:53 +0200
commita90c7af708f10acac51cb9fa5c3ff97274455623 (patch)
treedb41a713a2fc631868ac76239c7dbbd9737e49d6 /src
parent176e092a6c22bf66a4728f7351b7a45b54ae8bf3 (diff)
downloadbox64-a90c7af708f10acac51cb9fa5c3ff97274455623.tar.gz
box64-a90c7af708f10acac51cb9fa5c3ff97274455623.zip
Added BOX64_SHAEXT to hide sha cpu extension ([RCFILE] And added a profile using it)
Diffstat (limited to 'src')
-rw-r--r--src/core.c10
-rw-r--r--src/include/debug.h1
-rw-r--r--src/tools/my_cpuid.c2
-rw-r--r--src/tools/rcfile.c1
-rw-r--r--src/wrapped/wrappedlibc.c2
5 files changed, 14 insertions, 2 deletions
diff --git a/src/core.c b/src/core.c
index d222bce1..6c2d791e 100644
--- a/src/core.c
+++ b/src/core.c
@@ -154,6 +154,7 @@ int box64_prefer_wrapped = 0;
 int box64_sse_flushto0 = 0;
 int box64_x87_no80bits = 0;
 int box64_sync_rounding = 0;
+int box64_shaext = 1;
 int box64_sse42 = 1;
 #if defined(DYNAREC) && defined(ARM64)
 int box64_avx = 1;
@@ -1065,6 +1066,15 @@ void LoadLogEnv()
             printf_log(LOG_INFO, "Disable the use of futex waitv syscall\n");
         #endif
     }
+    p = getenv("BOX64_SHAEXT");
+    if(p) {
+        if(strlen(p)==1) {
+            if(p[0]>='0' && p[0]<='0'+1)
+                box64_shaext = p[0]-'0';
+        }
+        if(!box64_shaext)
+            printf_log(LOG_INFO, "Do not expose SHAEXT capabilities\n");
+    }
     p = getenv("BOX64_SSE42");
     if(p) {
         if(strlen(p)==1) {
diff --git a/src/include/debug.h b/src/include/debug.h
index 45b8e560..523dfc14 100644
--- a/src/include/debug.h
+++ b/src/include/debug.h
@@ -97,6 +97,7 @@ extern int box64_dummy_crashhandler;
 extern int box64_sse_flushto0;
 extern int box64_x87_no80bits;
 extern int box64_sync_rounding;
+extern int box64_shaext;
 extern int box64_sse42;
 extern int box64_avx;
 extern int box64_avx2;
diff --git a/src/tools/my_cpuid.c b/src/tools/my_cpuid.c
index 48a163aa..9a65f677 100644
--- a/src/tools/my_cpuid.c
+++ b/src/tools/my_cpuid.c
@@ -336,7 +336,7 @@ void my_cpuid(x64emu_t* emu, uint32_t tmp32u)
                         box64_avx2<<5 |  //AVX2
                         box64_avx2<<8 | //BMI2
                         box64_avx2<<19 | //ADX
-                        1<<29|  // SHA extension
+                        box64_shaext<<29|  // SHA extension
                         0;
                 R_RCX = 
                         box64_avx<<9   | //VAES
diff --git a/src/tools/rcfile.c b/src/tools/rcfile.c
index 2a281923..7f3f6a18 100644
--- a/src/tools/rcfile.c
+++ b/src/tools/rcfile.c
@@ -100,6 +100,7 @@ ENTRYBOOL(BOX64_NOPULSE, box64_nopulse)                 \
 ENTRYBOOL(BOX64_NOGTK, box64_nogtk)                     \
 ENTRYBOOL(BOX64_NOVULKAN, box64_novulkan)               \
 ENTRYBOOL(BOX64_RDTSC_1GHZ, box64_rdtsc_1ghz)           \
+ENTRYBOOL(BOX64_SHAEXT, box64_shaext)                   \
 ENTRYBOOL(BOX64_SSE42, box64_sse42)                     \
 ENTRYINT(BOX64_AVX, new_avx, 0, 2, 2)                   \
 ENTRYBOOL(BOX64_FUTEX_WAITV, box64_futex_waitv)         \
diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c
index f334b09b..d771818f 100644
--- a/src/wrapped/wrappedlibc.c
+++ b/src/wrapped/wrappedlibc.c
@@ -1653,7 +1653,7 @@ 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 sse4_1%s%s lzcnt popcnt%s%s%s%s%s\n", box64_sse42?" sse4_2":"", box64_avx?" avx":"", box64_avx?" bmi1":"", box64_avx2?" avx2":"", box64_avx?" bmi2":"", box64_avx2?" vaes":"", box64_avx2?" fma":"");
+        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 sse4_1%s%s%s lzcnt popcnt%s%s%s%s%s\n", box64_sse42?" sse4_2":"", box64_avx?" avx":"", box64_shaext?"sha_ni":"", box64_avx?" bmi1":"", box64_avx2?" avx2":"", box64_avx?" bmi2":"", box64_avx2?" vaes":"", box64_avx2?" fma":"");
         P;
         sprintf(buff, "address sizes\t: 48 bits physical, 48 bits virtual\n");
         P;