From: Tom Leete <tleete@mountain.net>
To: Andre Hedrick <andre@linux-ide.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: SMP Athlon...(a quiet question)
Date: Sat, 27 Jan 2001 20:36:53 -0500 [thread overview]
Message-ID: <3A7377B5.B3F9FE91@mountain.net> (raw)
In-Reply-To: <Pine.LNX.4.10.10101271650170.25882-100000@master.linux-ide.org>
[-- Attachment #1: Type: text/plain, Size: 989 bytes --]
Andre Hedrick wrote:
>
> ER, they work but must compile as PII/Celeron :-(
> A bunch of memcpy header stuff fails to compile....
> current is one of the left overs in some cases.
>
> I will dive deeper in monday, just wanting some feed back first.
>
> Cheers,
>
> Andre Hedrick
> Linux ATA Development
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> Please read the FAQ at http://www.tux.org/lkml/
Hello Andre,
I think that there is no good way to use in_interrupt() in asm/string.h.
Circular dependencies.
I've been using some form of this patch since last May, posted here several
times. It moves the mmx style memcpy into lib.a (mmx.c). I lose some
inlining, but since k7 does branch prediction for call addresses, inline
functions are somewhat less of a win. Certainly the big speedup from mmx is
more than enough to pay for it.
Cheers,
Tom
--
The Daemons lurk and are dumb. -- Emerson
[-- Attachment #2: k7-smp.patch --]
[-- Type: text/plain, Size: 2151 bytes --]
--- linux/arch/i386/lib/mmx.c.orig Wed Oct 27 21:30:39 1999
+++ linux/arch/i386/lib/mmx.c Tue Jun 6 04:20:01 2000
@@ -1,6 +1,7 @@
#include <linux/types.h>
#include <linux/string.h>
#include <linux/sched.h>
+#include <asm/hardirq.h>
/*
* MMX 3DNow! library helper functions
@@ -88,6 +89,21 @@
stts();
return p;
}
+
+void * __constant_mmx_memcpy3d(void * to, const void * from, size_t len)
+{
+ if(in_interrupt())
+ return __constant_memcpy(to, from, len);
+ return _mmx_memcpy(to, from, len);
+}
+
+void *__mmx_memcpy3d(void *to, const void *from, size_t len)
+{
+ if(in_interrupt())
+ return __memcpy(to, from, len);
+ return _mmx_memcpy(to, from, len);
+}
+
static void fast_clear_page(void *page)
{
--- linux/include/asm-i386/mmx.h.orig Tue Jun 6 03:05:02 2000
+++ linux/include/asm-i386/mmx.h Tue Jun 6 04:25:27 2000
@@ -10,5 +10,7 @@
extern void *_mmx_memcpy(void *to, const void *from, size_t size);
extern void mmx_clear_page(void *page);
extern void mmx_copy_page(void *to, void *from);
+extern __inline__ void *__constant_mmx_memcpy3d(void * to, const void * from, size_t len);
+extern __inline__ void *__mmx_memcpy3d(void *to, const void *from, size_t len);
#endif
--- linux/include/asm-i386/string.h.orig Tue Jun 6 03:05:02 2000
+++ linux/include/asm-i386/string.h Tue Jun 6 04:30:37 2000
@@ -287,13 +287,6 @@
#ifdef CONFIG_X86_USE_3DNOW
-/* All this just for in_interrupt() ... */
-
-#include <asm/system.h>
-#include <asm/ptrace.h>
-#include <linux/smp.h>
-#include <linux/spinlock.h>
-#include <linux/interrupt.h>
#include <asm/mmx.h>
/*
@@ -302,16 +295,16 @@
static inline void * __constant_memcpy3d(void * to, const void * from, size_t len)
{
- if(len<512 || in_interrupt())
+ if(len<512)
return __constant_memcpy(to, from, len);
- return _mmx_memcpy(to, from, len);
+ return __constant_mmx_memcpy3d(to, from, len);
}
extern __inline__ void *__memcpy3d(void *to, const void *from, size_t len)
{
- if(len<512 || in_interrupt())
+ if(len<512)
return __memcpy(to, from, len);
- return _mmx_memcpy(to, from, len);
+ return __mmx_memcpy3d(to, from, len);
}
#define memcpy(t, f, n) \
prev parent reply other threads:[~2001-01-28 1:37 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-01-28 0:53 SMP Athlon...(a quiet question) Andre Hedrick
2001-01-28 1:36 ` Tom Leete [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3A7377B5.B3F9FE91@mountain.net \
--to=tleete@mountain.net \
--cc=andre@linux-ide.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.