summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2004-02-17 21:50:39 +0000
committerwpaul <wpaul@FreeBSD.org>2004-02-17 21:50:39 +0000
commit427370d7d184c585bca13df8d6feaa7fb2e6f01a (patch)
tree8508ca0ba2351c3865884e710144e1d81b9ae3b5
parent507e47381e6f0dbae7fd4fee53164d951fe85244 (diff)
downloadFreeBSD-src-427370d7d184c585bca13df8d6feaa7fb2e6f01a.zip
FreeBSD-src-427370d7d184c585bca13df8d6feaa7fb2e6f01a.tar.gz
Add vector for memmove() (currently aliased to memcpy()) a implement
ExInterlockedAddLargeStatistic().
-rw-r--r--sys/compat/ndis/subr_ntoskrnl.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/compat/ndis/subr_ntoskrnl.c b/sys/compat/ndis/subr_ntoskrnl.c
index 8d187a2..fd9d984 100644
--- a/sys/compat/ndis/subr_ntoskrnl.c
+++ b/sys/compat/ndis/subr_ntoskrnl.c
@@ -131,6 +131,8 @@ __stdcall static uint32_t
ntoskrnl_interlock_inc(/*volatile uint32_t * */ void);
__stdcall static uint32_t
ntoskrnl_interlock_dec(/*volatile uint32_t * */ void);
+__stdcall static void ntoskrnl_interlock_addstat(/*uint64_t,
+ uint32_t*/ void);
__stdcall static void ntoskrnl_freemdl(ndis_buffer *);
__stdcall static uint32_t ntoskrnl_sizeofmdl(void *, size_t);
__stdcall static void ntoskrnl_build_npaged_mdl(ndis_buffer *);
@@ -1080,6 +1082,21 @@ ntoskrnl_interlock_dec(/*addend*/ void)
}
__stdcall static void
+ntoskrnl_interlock_addstat(/*addend, inc*/)
+{
+ uint64_t *addend;
+ uint32_t inc;
+
+ __asm__ __volatile__ ("" : "=c" (addend), "=d" (inc));
+
+ mtx_pool_lock(ndis_mtxpool, ntoskrnl_interlock);
+ *addend += inc;
+ mtx_pool_unlock(ndis_mtxpool, ntoskrnl_interlock);
+
+ return;
+};
+
+__stdcall static void
ntoskrnl_freemdl(mdl)
ndis_buffer *mdl;
{
@@ -1615,6 +1632,7 @@ image_patch_table ntoskrnl_functbl[] = {
{ "strcpy", (FUNC)strcpy },
{ "strlen", (FUNC)strlen },
{ "memcpy", (FUNC)memcpy },
+ { "memmove", (FUNC)memcpy },
{ "memset", (FUNC)memset },
{ "IofCallDriver", (FUNC)ntoskrnl_iofcalldriver },
{ "IofCompleteRequest", (FUNC)ntoskrnl_iofcompletereq },
@@ -1651,6 +1669,8 @@ image_patch_table ntoskrnl_functbl[] = {
{ "KefReleaseSpinLockFromDpcLevel", (FUNC)ntoskrnl_unlock_dpc },
{ "InterlockedIncrement", (FUNC)ntoskrnl_interlock_inc },
{ "InterlockedDecrement", (FUNC)ntoskrnl_interlock_dec },
+ { "ExInterlockedAddLargeStatistic",
+ (FUNC)ntoskrnl_interlock_addstat },
{ "IoFreeMdl", (FUNC)ntoskrnl_freemdl },
{ "MmSizeOfMdl", (FUNC)ntoskrnl_sizeofmdl },
{ "MmMapLockedPages", (FUNC)ntoskrnl_mmaplockedpages },
OpenPOWER on IntegriCloud