Allow recursive VM entry for VM operations as well

This commit is contained in:
Thilo Schulz 2011-06-23 00:00:27 +00:00
parent d57ba6a57b
commit 19f54e5400

View file

@ -432,6 +432,11 @@ static void DoSyscall(void)
); );
#endif #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) if(syscallNum < 0)
{ {
int *data; int *data;
@ -440,13 +445,8 @@ static void DoSyscall(void)
intptr_t args[11]; intptr_t args[11];
#endif #endif
// save currentVM so as to allow for recursive VM entry
savedVM = currentVM;
data = (int *) (savedVM->dataBase + programStack + 4); data = (int *) (savedVM->dataBase + programStack + 4);
// modify VM stack pointer for recursive VM entry
savedVM->programStack = programStack - 4;
#if idx64 #if idx64
args[0] = ~syscallNum; args[0] = ~syscallNum;
for(index = 1; index < ARRAY_LEN(args); index++) for(index = 1; index < ARRAY_LEN(args); index++)
@ -457,8 +457,6 @@ static void DoSyscall(void)
data[0] = ~syscallNum; data[0] = ~syscallNum;
opStackBase[opStackOfs + 1] = savedVM->systemCall(data); opStackBase[opStackOfs + 1] = savedVM->systemCall(data);
#endif #endif
currentVM = savedVM;
} }
else else
{ {
@ -478,6 +476,8 @@ static void DoSyscall(void)
break; break;
} }
} }
currentVM = savedVM;
} }
/* /*