about summary refs log tree commit diff stats
path: root/src/main.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-04 20:11:06 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-04 20:11:06 +0100
commitf2a9066697b86d2764a73bba8e63d626814be5bc (patch)
tree2396825ed78a7bcb9d2950e302decbe0ec702cf3 /src/main.c
parentad05515b70dfa5c28dbd1552b4bc9df9bf98788c (diff)
downloadbox64-f2a9066697b86d2764a73bba8e63d626814be5bc.tar.gz
box64-f2a9066697b86d2764a73bba8e63d626814be5bc.zip
Added 0F 1F NOP opcode
Diffstat (limited to 'src/main.c')
-rwxr-xr-xsrc/main.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/main.c b/src/main.c
index 92b3c0e6..cf7af7ce 100755
--- a/src/main.c
+++ b/src/main.c
@@ -826,8 +826,9 @@ int main(int argc, const char **argv, const char **env) {
     // stack setup is much more complicated then just that!
     SetupInitialStack(emu); // starting here, the argv[] don't need free anymore
     SetupX64Emu(emu);
-    SetRAX(emu, my_context->argc);
-    SetRBX(emu, (uintptr_t)my_context->argv);
+    SetRSI(emu, my_context->argc);
+    SetRDX(emu, (uint64_t)my_context->argv);
+    SetRCX(emu, (uint64_t)my_context->envv);
 
     // child fork to handle traces
     pthread_atfork(NULL, NULL, my_child_fork);
@@ -894,9 +895,12 @@ int main(int argc, const char **argv, const char **env) {
 
     // emulate!
     printf_log(LOG_DEBUG, "Start x64emu on Main\n");
-    SetRAX(emu, my_context->argc);
+    SetRSI(emu, my_context->argc);
     SetRDX(emu, (uint64_t)my_context->argv);
+    SetRCX(emu, (uint64_t)my_context->envv);
     SetRIP(emu, my_context->ep);
+    PushExit(emu);
+    *(uint64_t*)GetRSP(emu) = my_context->argc;
     ResetFlags(emu);
     Run(emu, 0);
     // Get EAX