I implemented the mmx fastmemcpy function from the linux kernel sources.
I haven't implemented the fastclear function yet because the kernel only
has a page clear. If I have the time I will rewrite this so it can clear
any memory range.
I have added a configure option --enable-mmx/--disable-mmx to be able to
use plex86 on non-mmx processors although I doubt anyone would want to
run it an old non-mmx processor. For some reason the diff includes all
code that shifted some lines down because of the few lines I added. I
don't know how to avoid this (should be possible).
Freedos boots with this code and I also started my win95 diskimage.
Win95 starts but I didn't wait the full boot. (takes some time you know
;-)
If you have any more of these mini projects please tell. 
Greetings,
      Martin DvH 
The patch is below:

? kernel/util-nexus-mmx.c
Index: config.h.in
===================================================================
RCS file: /cvsroot-plex86/plex86/config.h.in,v
retrieving revision 1.8
diff -u -r1.8 config.h.in
--- config.h.in 2001/05/15 16:49:56     1.8
+++ config.h.in 2001/05/25 01:02:52
@@ -135,6 +135,8 @@
 /* limited i440FX PCI support */
 #define BX_PCI_SUPPORT 0
 
+#define USE_MMX 0
+
 #define BX_SUPPORT_CDROM 0
 #if BX_SUPPORT_CDROM
    /* This is the C++ class name to use if we are supporting */
Index: configure
===================================================================
RCS file: /cvsroot-plex86/plex86/configure,v
retrieving revision 1.23
diff -u -r1.23 configure
--- configure   2001/05/15 16:49:56     1.23
+++ configure   2001/05/25 01:02:56
@@ -20,6 +20,8 @@
 ac_help="$ac_help
   --enable-instrumentation          instrumentation support"
 ac_help="$ac_help
+  --enable-mmx             enable use of mmx instructions"
+ac_help="$ac_help
   --with-WinNT                      WinNT host"
 ac_help="$ac_help
   --with-BeOS                       BeOS host"
@@ -555,7 +557,7 @@
 # Extract the first word of "gcc", so it can be a program name with
args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:559: checking for $ac_word" >&5
+echo "configure:561: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -585,7 +587,7 @@
   # Extract the first word of "cc", so it can be a program name with
args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:589: checking for $ac_word" >&5
+echo "configure:591: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -636,7 +638,7 @@
       # Extract the first word of "cl", so it can be a program name
with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:640: checking for $ac_word" >&5
+echo "configure:642: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -668,7 +670,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS)
works""... $ac_c" 1>&6
-echo "configure:672: checking whether the C compiler ($CC $CFLAGS
$LDFLAGS) works" >&5
+echo "configure:674: checking whether the C compiler ($CC $CFLAGS
$LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp
options.
@@ -679,12 +681,12 @@
 
 cat > conftest.$ac_ext << EOF
 
-#line 683 "configure"
+#line 685 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:688: \"$ac_link\") 1>&5; (eval $ac_link)
2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:690: \"$ac_link\") 1>&5; (eval $ac_link)
2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross
compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -710,12 +712,12 @@
   { echo "configure: error: installation or configuration problem: C
compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a
cross-compiler""... $ac_c" 1>&6
-echo "configure:714: checking whether the C compiler ($CC $CFLAGS
$LDFLAGS) is a cross-compiler" >&5
+echo "configure:716: checking whether the C compiler ($CC $CFLAGS
$LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:719: checking whether we are using GNU C" >&5
+echo "configure:721: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -724,7 +726,7 @@
   yes;
 #endif

Reply via email to