| /********************************************************/ |
| /* ntapi: Native API core library */ |
| /* Copyright (C) 2013--2018 Z. Gilboa */ |
| /* Released under GPLv2 and GPLv3; see COPYING.NTAPI. */ |
| /********************************************************/ |
| |
| #include <psxtypes/psxtypes.h> |
| #include <ntapi/nt_string.h> |
| #include <ntapi/nt_sync.h> |
| #include <ntapi/nt_atomic.h> |
| |
| #define __CPU_CACHE_SIZE 64 |
| |
| __attr_protected__ |
| uintptr_t * __cdecl __ntapi_tt_aligned_block_memlock( |
| __in uintptr_t * dst, |
| __in size_t bytes) |
| { |
| size_t addr = (size_t)dst & ~(size_t)(__CPU_CACHE_SIZE); |
| size_t cap = addr + bytes; |
| |
| for (; addr<cap; addr+=__CPU_CACHE_SIZE) |
| at_locked_xadd((intptr_t *)addr,0); |
| |
| return dst; |
| } |