From 19f54e540055e41a118cf0b2f876693224ab0df3 Mon Sep 17 00:00:00 2001 From: Thilo Schulz Date: Thu, 23 Jun 2011 00:00:27 +0000 Subject: [PATCH] Allow recursive VM entry for VM operations as well --- code/qcommon/vm_x86.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/qcommon/vm_x86.c b/code/qcommon/vm_x86.c index debb7537..8053b184 100644 --- a/code/qcommon/vm_x86.c +++ b/code/qcommon/vm_x86.c @@ -432,6 +432,11 @@ static void DoSyscall(void) ); #endif + // save currentVM so as to allow for recursive VM entry + savedVM = currentVM; + // modify VM stack pointer for recursive VM entry + currentVM->programStack = programStack - 4; + if(syscallNum < 0) { int *data; @@ -440,13 +445,8 @@ static void DoSyscall(void) intptr_t args[11]; #endif - // save currentVM so as to allow for recursive VM entry - savedVM = currentVM; data = (int *) (savedVM->dataBase + programStack + 4); - // modify VM stack pointer for recursive VM entry - savedVM->programStack = programStack - 4; - #if idx64 args[0] = ~syscallNum; for(index = 1; index < ARRAY_LEN(args); index++) @@ -457,8 +457,6 @@ static void DoSyscall(void) data[0] = ~syscallNum; opStackBase[opStackOfs + 1] = savedVM->systemCall(data); #endif - - currentVM = savedVM; } else { @@ -478,6 +476,8 @@ static void DoSyscall(void) break; } } + + currentVM = savedVM; } /*