diff options
| author | Thilo Schulz <arny@ats.s.bawue.de> | 2011-06-23 00:00:27 +0000 | 
|---|---|---|
| committer | Tim Angus <tim@ngus.net> | 2013-01-10 21:51:33 +0000 | 
| commit | 1677472bc312791c5e6bd634a0044aa4d7f71a07 (patch) | |
| tree | 542b361bd4e51f415c35c5cc5f63a4566dc4d644 /src/qcommon | |
| parent | aa3e32997bf3decdce451c8a6a915c27a489d84c (diff) | |
Allow recursive VM entry for VM operations as well
Diffstat (limited to 'src/qcommon')
| -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;  }  /*  | 
