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;  }  /*  | 
