-# $Id: Makefile,v 1.79 2002/08/10 16:41:17 dwelch Exp $
+# $Id: Makefile,v 1.80 2002/08/28 07:03:09 hbirr Exp $
#
# ReactOS Operating System
#
rtl/memcmp.o \
rtl/capture.o
+OBJECTS_RTL := $(filter-out $(RTL_EXCLUDE_FILTER), $(OBJECTS_RTL))
+
+
# Kernel (Ke)
OBJECTS_KE = \
ke/apc.o \
mm/i386/page.o \
mm/i386/pfault.o
-OBJECTS_ARCH = $(OBJECTS_BOOT) $(OBJECTS_EX_I386) $(OBJECTS_KE_I386) $(OBJECTS_MM_I386)
+OBJECTS_RTL_I386 := \
+ rtl/i386/memset.o \
+ rtl/i386/memcpy.o
+
+RTL_EXCLUDE_FILTER := \
+ rtl/memset.o \
+ rtl/memcpy.o
+
+OBJECTS_ARCH = $(OBJECTS_BOOT) $(OBJECTS_EX_I386) $(OBJECTS_KE_I386) $(OBJECTS_MM_I386) $(OBJECTS_RTL_I386)
--- /dev/null
+/* $Id: memcpy.c,v 1.1 2002/08/28 07:03:10 hbirr Exp $
+ *
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS kernel
+ * FILE: ntoskrnl/rtl/i386/memcpy.c
+ * PROGRAMMER: Hartmut Birr
+ * UPDATE HISTORY:
+ */
+
+/* INCLUDES *****************************************************************/
+
+#include <ddk/ntddk.h>
+#include <string.h>
+
+#define NDEBUG
+#include <internal/debug.h>
+
+/* FUNCTIONS *****************************************************************/
+
+#undef memcpy
+void *memcpy (void *to, const void *from, size_t count)
+{
+ __asm__( \
+ "or %%ecx,%%ecx\n\t"\
+ "jz .L1\n\t" \
+ "cld\n\t" \
+ "rep\n\t" \
+ "movsb\n\t" \
+ ".L1:\n\t"
+ :
+ : "D" (to), "S" (from), "c" (count));
+ return to;
+}
+
--- /dev/null
+/* $Id: memset.c,v 1.1 2002/08/28 07:03:10 hbirr Exp $
+ *
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS kernel
+ * FILE: ntoskrnl/rtl/i386/memcpy.c
+ * PROGRAMMER: Hartmut Birr
+ * UPDATE HISTORY:
+ */
+
+/* INCLUDES *****************************************************************/
+
+#include <string.h>
+
+#define NDEBUG
+#include <internal/debug.h>
+
+/* FUNCTIONS *****************************************************************/
+
+void * memset(void *src, int val, size_t count)
+{
+ __asm__( \
+ "or %%ecx,%%ecx\n\t"\
+ "jz .L1\n\t" \
+ "cld\t\n" \
+ "rep\t\n" \
+ "stosb\t\n" \
+ ".L1:\n\t"
+ :
+ : "D" (src), "c" (count), "a" (val));
+ return src;
+}