about summary refs log tree commit diff stats
path: root/src/box64context.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-09-02 20:25:58 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-09-02 20:25:58 +0200
commit5d5ef75337cd4db7224d5e0cdb6da2dc96ab8224 (patch)
tree6b6f013c09789da472917ff5e00f6bf0d2f7899b /src/box64context.c
parentc3ef6380a7baa6457974fe2eca1652dff6808cca (diff)
downloadbox64-5d5ef75337cd4db7224d5e0cdb6da2dc96ab8224.tar.gz
box64-5d5ef75337cd4db7224d5e0cdb6da2dc96ab8224.zip
Add some support vor VSyscall
Diffstat (limited to 'src/box64context.c')
-rwxr-xr-xsrc/box64context.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/box64context.c b/src/box64context.c
index 5dc64825..eb2512b3 100755
--- a/src/box64context.c
+++ b/src/box64context.c
@@ -163,7 +163,16 @@ box64context_t *NewBox64Context(int argc)
     context->versym = NewDictionnary();
     context->system = NewBridge();
     // create vsyscall
-    context->vsyscall = AddBridge(context->system, vFv, x64Syscall, 0, NULL);
+    context->vsyscall = AddBridge(context->system, vFEv, x64Syscall, 0, NULL);
+    // create the vsyscalls
+    context->vsyscalls[0] = AddVSyscall(context->system, 96);
+    context->vsyscalls[1] = AddVSyscall(context->system, 201);
+    context->vsyscalls[2] = AddVSyscall(context->system, 309);
+    // create the alternate to map at address
+    addAlternate((void*)context->vsyscalls[0], (void*)0xffffffffff600000);
+    addAlternate((void*)context->vsyscalls[1], (void*)0xffffffffff600400);
+    addAlternate((void*)context->vsyscalls[2], (void*)0xffffffffff600800);
+    // get handle to box64 itself
     context->box64lib = dlopen(NULL, RTLD_NOW|RTLD_GLOBAL);
     context->dlprivate = NewDLPrivate();