diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/qcommon/vm_x86.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/qcommon/vm_x86.c b/src/qcommon/vm_x86.c index a424949d..91ab5cc2 100644 --- a/src/qcommon/vm_x86.c +++ b/src/qcommon/vm_x86.c @@ -433,6 +433,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; @@ -441,13 +446,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++) @@ -458,8 +458,6 @@ static void DoSyscall(void) data[0] = ~syscallNum; opStackBase[opStackOfs + 1] = savedVM->systemCall(data); #endif - - currentVM = savedVM; } else { @@ -479,6 +477,8 @@ static void DoSyscall(void) break; } } + + currentVM = savedVM; } /* |