aboutsummaryrefslogtreecommitdiffstats
path: root/vxd_main.c
diff options
context:
space:
mode:
authorJaroslav Hensl <jara@hensl.cz>2024-02-25 23:54:01 +0100
committerJaroslav Hensl <jara@hensl.cz>2024-02-25 23:54:01 +0100
commit253cd05e58298800ea0038868203defd9b64a374 (patch)
tree1fbaa892e8fe7483d1f2dd372a51b3bad1b2bbf5 /vxd_main.c
parent1725ae3a841d51e8fda682ad8a8265cc760e1e16 (diff)
downloadvmdisp9x-253cd05e58298800ea0038868203defd9b64a374.tar.gz
redone surface memory limitation
Diffstat (limited to 'vxd_main.c')
-rw-r--r--vxd_main.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/vxd_main.c b/vxd_main.c
index 499112f..e5bdc6a 100644
--- a/vxd_main.c
+++ b/vxd_main.c
@@ -409,6 +409,8 @@ void __declspec(naked) VXD_API_entry()
{
_asm {
push ebp
+ mov eax,cr3 ; TLB bug here? Looks like...
+ mov cr3,eax
call VXD_API_Proc
mov [ebp+1Ch], ax
retn
@@ -529,7 +531,12 @@ DWORD __stdcall Device_IO_Control_proc(struct DIOCParams *params)
{
memcpy(outio, inio, sizeof(SVGA_region_info_t));
}
- SVGA_region_create(outio);
+ outio->address = NULL;
+ if(!SVGA_region_create(outio))
+ {
+ SVGA_flushcache();
+ SVGA_region_create(outio);
+ }
return 0;
}
case OP_SVGA_REGION_FREE: