about summary refs log tree commit diff stats
path: root/src/box64context.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-06-17 11:32:56 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-06-17 11:32:56 +0200
commitbf9e5b8e6e3b42768a787f1a3d3c1f423d1fb38f (patch)
tree77430b88dda5a324dcf00055c0ffe90cbef6bdb8 /src/box64context.c
parent7e282c9027a3c7e563b4492a0004174b42de0819 (diff)
downloadbox64-bf9e5b8e6e3b42768a787f1a3d3c1f423d1fb38f.tar.gz
box64-bf9e5b8e6e3b42768a787f1a3d3c1f423d1fb38f.zip
Added support for creating 32bits selector (no 32bits execution yet)
Diffstat (limited to 'src/box64context.c')
-rwxr-xr-xsrc/box64context.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/box64context.c b/src/box64context.c
index fc626305..ff65391c 100755
--- a/src/box64context.c
+++ b/src/box64context.c
@@ -243,6 +243,22 @@ box64context_t *NewBox64Context(int argc)
     context->canary[getrand(4)] = 0;
     printf_log(LOG_DEBUG, "Setting up canary (for Stack protector) at FS:0x28, value:%08X\n", *(uint32_t*)context->canary);
 
+    // init segments
+    for(int i=0; i<16; i++) {
+        context->segtls[i].limit = (uintptr_t)-1LL;
+    }
+    context->segtls[10].key_init = 0;    // 0x53 selector
+    context->segtls[10].present = 1;
+    context->segtls[8].key_init = 0;    // 0x43 selector
+    context->segtls[8].present = 1;
+    context->segtls[6].key_init = 0;    // 0x33 selector
+    context->segtls[6].present = 1;
+    context->segtls[5].key_init = 0;    // 0x2b selector
+    context->segtls[5].present = 1;
+    context->segtls[4].key_init = 0;    // 0x23 selector
+    context->segtls[4].present = 1;
+    context->segtls[4].is32bits = 1;
+
     initAllHelpers(context);
 
     return context;