From 0ebe0f992932dd51d051c251dab33d2c7656ec44 Mon Sep 17 00:00:00 2001 From: Pavel <68122101+red-prig@users.noreply.github.com> Date: Wed, 15 May 2024 23:28:39 +0300 Subject: [PATCH] + --- sys/vm/vm_nt_map.pas | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/sys/vm/vm_nt_map.pas b/sys/vm/vm_nt_map.pas index 25edc5b2..969916ee 100644 --- a/sys/vm/vm_nt_map.pas +++ b/sys/vm/vm_nt_map.pas @@ -1075,6 +1075,29 @@ begin end; end; +//rdi, rsi +procedure ZeroPages(addr:Pointer;size:Ptruint); assembler nostackframe SysV_ABI_CDecl; +label + _exit, + _rep; +asm + shr $5, %rsi // div 32 + jz _exit + + vpxor %ymm0, %ymm0, %ymm0 //zero + + _rep: + + vmovaps %ymm0, (%rdi) + + lea 32(%rdi),%rdi + dec %rsi + + jnz _rep + + _exit: +end; + procedure vm_nt_map_madvise(map:p_vm_nt_map; start:vm_offset_t; __end:vm_offset_t; @@ -1125,7 +1148,7 @@ begin mirror:=vm_nt_map_mirror(map,base,base+size); if (mirror<>nil) then begin - FillChar(mirror^,size,0); + ZeroPages(mirror,size); md_unmap_ex(mirror,size); end;