mirror of https://github.com/red-prig/fpPS4.git
This commit is contained in:
parent
adcf07936c
commit
6da2d28ee6
|
@ -62,7 +62,7 @@ var
|
|||
gc_knlock:mtx;
|
||||
gc_knlist:t_knlist;
|
||||
|
||||
procedure unmap_dmem_gc(start,__end:DWORD); public;
|
||||
procedure unmap_dmem_gc(start,__end:QWORD); public;
|
||||
begin
|
||||
if (MemManager<>nil) then
|
||||
begin
|
||||
|
|
|
@ -1526,6 +1526,8 @@ begin
|
|||
|
||||
jit_cbs[OPPnone,OPxbegin,OPSnone]:=@op_invalid;
|
||||
jit_cbs[OPPnone,OPxend ,OPSnone]:=@op_invalid;
|
||||
|
||||
jit_cbs[OPPnone,OPwbinvd,OPSnone]:=@op_invalid;
|
||||
end;
|
||||
|
||||
function test_disassemble(addr:Pointer;vsize:Integer):Boolean;
|
||||
|
|
|
@ -1607,6 +1607,8 @@ begin
|
|||
pmap_unlock(pmap,lock);
|
||||
end;
|
||||
|
||||
procedure unmap_dmem_gc(start,__end:QWORD); external;
|
||||
|
||||
procedure pmap_remove(pmap :pmap_t;
|
||||
obj :vm_object_t;
|
||||
start:vm_offset_t;
|
||||
|
@ -1697,6 +1699,9 @@ begin
|
|||
end;
|
||||
|
||||
pmap_unlock(pmap,lock);
|
||||
|
||||
unmap_dmem_gc(start+VM_MIN_GPU_ADDRESS,
|
||||
__end+VM_MIN_GPU_ADDRESS);
|
||||
end;
|
||||
|
||||
procedure pmap_gpu_remove(pmap :pmap_t;
|
||||
|
|
|
@ -789,57 +789,6 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure unmap_dmem_gc(start,__end:DWORD); external;
|
||||
|
||||
procedure rmem_map_unmap_check(map:p_rmem_map;
|
||||
start,__end:DWORD);
|
||||
var
|
||||
entry:p_rmem_map_entry;
|
||||
s,e:DWORD;
|
||||
begin
|
||||
RMEM_MAP_ASSERT_LOCKED(map);
|
||||
|
||||
if not rmem_map_lookup_entry(map,start,@entry) then
|
||||
begin
|
||||
Exit;
|
||||
end;
|
||||
|
||||
repeat
|
||||
|
||||
if (entry^.start>start) then
|
||||
begin
|
||||
s:=start;
|
||||
|
||||
if (entry^.start>__end) then
|
||||
begin
|
||||
e:=__end;
|
||||
end else
|
||||
begin
|
||||
e:=entry^.start;
|
||||
end;
|
||||
|
||||
if (s<>e) then
|
||||
begin
|
||||
unmap_dmem_gc(IDX_TO_OFF(s),IDX_TO_OFF(e));
|
||||
end;
|
||||
|
||||
start:=e;
|
||||
end else
|
||||
if (entry^.__end>start) then
|
||||
begin
|
||||
start:=entry^.__end;
|
||||
end;
|
||||
|
||||
if (start>=__end) or (entry=@map^.header) or (entry^.start>=__end) then
|
||||
begin
|
||||
Break;
|
||||
end;
|
||||
|
||||
entry:=entry^.next;
|
||||
|
||||
until false;
|
||||
end;
|
||||
|
||||
function rmem_map_delete(map:p_rmem_map;
|
||||
vaddr:QWORD;
|
||||
start,__end:DWORD):Integer;
|
||||
|
@ -893,18 +842,6 @@ begin
|
|||
entry:=next;
|
||||
end;
|
||||
|
||||
if (vaddr=0) then
|
||||
begin
|
||||
//all
|
||||
|
||||
unmap_dmem_gc(IDX_TO_OFF(start),IDX_TO_OFF(__end));
|
||||
end else
|
||||
begin
|
||||
//one
|
||||
|
||||
rmem_map_unmap_check(map,start,__end);
|
||||
end;
|
||||
|
||||
Result:=(KERN_SUCCESS);
|
||||
end;
|
||||
|
||||
|
|
|
@ -1837,8 +1837,6 @@ begin
|
|||
end;
|
||||
|
||||
procedure TvMemManager.unmap_host(start,__end:QWORD);
|
||||
label
|
||||
_full;
|
||||
var
|
||||
node,next:TvHostMemory;
|
||||
begin
|
||||
|
@ -1855,28 +1853,9 @@ begin
|
|||
|
||||
if (__end>node.FStart) and (start<node.F__End) then
|
||||
begin
|
||||
|
||||
if (start<=node.FStart) and (__end>=node.F__End) then
|
||||
begin
|
||||
//full in
|
||||
_full:
|
||||
Dec(FHosts_count);
|
||||
TAILQ_REMOVE(@FHosts,node,@node.entry);
|
||||
ReleaseAndNil(node); //list
|
||||
end else
|
||||
if rmem_map_test_lock(node.FStart,node.F__End) then
|
||||
begin
|
||||
goto _full;
|
||||
end else
|
||||
if (node.FHold=0) then //lock Hold?
|
||||
begin
|
||||
//partial
|
||||
Dec(FHosts_count);
|
||||
TAILQ_REMOVE(@FHosts,node,@node.entry);
|
||||
node.ReleaseAllDependencies(node);
|
||||
ReleaseAndNil(node); //list
|
||||
end;
|
||||
|
||||
Dec(FHosts_count);
|
||||
TAILQ_REMOVE(@FHosts,node,@node.entry);
|
||||
ReleaseAndNil(node); //list
|
||||
end;
|
||||
|
||||
node:=next;
|
||||
|
|
Loading…
Reference in New Issue