[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-smalltalk] [PATCH] embedded: Allow to disable the prefetching.
From: |
Holger Hans Peter Freyther |
Subject: |
[Help-smalltalk] [PATCH] embedded: Allow to disable the prefetching. |
Date: |
Fri, 17 May 2013 14:40:36 +0200 |
Disabling the prefetching is a win on arm9 (arm926ejs, e.g. TI
Davinci DM644x). This was benchmarked using the simple Bench.st
benchmark.
2013-04-28 Holger Hans Peter Freyther <address@hidden>
* libgst/gstpriv.h: Allow to disable the DO_PREFETCH.
---
libgst/ChangeLog | 4 ++++
libgst/gstpriv.h | 7 +++++--
libgst/md-config.h | 1 +
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/libgst/ChangeLog b/libgst/ChangeLog
index 4a51cee..3812850 100644
--- a/libgst/ChangeLog
+++ b/libgst/ChangeLog
@@ -1,5 +1,9 @@
2013-04-28 Holger Hans Peter Freyther <address@hidden>
+ * libgst/gstpriv.h: Allow to disable the DO_PREFETCH.
+
+2013-04-28 Holger Hans Peter Freyther <address@hidden>
+
* libgst/cint.c: Bind link, fsync, sync for additional C level access.
2013-04-25 Holger Hans Peter Freyther <address@hidden>
diff --git a/libgst/gstpriv.h b/libgst/gstpriv.h
index 7127438..7ffe37b 100644
--- a/libgst/gstpriv.h
+++ b/libgst/gstpriv.h
@@ -115,6 +115,7 @@
#endif
#include "gst.h"
+#include "md-config.h"
/* Convenience macros to test the versions of GCC. Note - they won't
work for GCC1, since the _MINOR macros were not defined then, but
@@ -175,7 +176,9 @@
#define PREF_T2 8
#define PREF_NTA 12
-#if GNUC_PREREQ (3, 1)
+/* the prefetch is a loss on on a ARM9 (TI Davinci), hack it out */
+#if !defined(DISABLE_PREFETCH) && GNUC_PREREQ (3, 1)
+#warning "ENABLE PREFETCH"
#define DO_PREFETCH(x, distance, k) \
__builtin_prefetch (((char *) (x)) \
+ (((k) & PREF_BACKWARDS ? -(distance) : (distance)) \
@@ -183,6 +186,7 @@
(k) & PREF_WRITE, \
3 - (k) / (PREF_NTA / 3))
#else
+#warning "DISABLE PREFETCH"
#define DO_PREFETCH(x, distance, kind) ((void)(x))
#endif
@@ -556,7 +560,6 @@ extern OOP _gst_nil_oop
#include "socketx.h"
#include "strspell.h"
#include "alloc.h"
-#include "md-config.h"
#include "avltrees.h"
#include "rbtrees.h"
diff --git a/libgst/md-config.h b/libgst/md-config.h
index 862fdfd..b8ba5bf 100644
--- a/libgst/md-config.h
+++ b/libgst/md-config.h
@@ -74,6 +74,7 @@
# define __DECL_REG3 __asm("r6")
# define BRANCH_REGISTER(name) register void *name __asm("r7")
# define L1_CACHE_SHIFT 4
+# define DISABLE_PREFETCH
#endif
#if !defined(__DECL_REG1) && defined(__alpha__)
--
1.7.10.4
[Help-smalltalk] [PATCH 4/4] embedded: Allow to disable the profiling support in the interpreter, Holger Hans Peter Freyther, 2013/05/05
Re: [Help-smalltalk] [PATCH 1/4] embedded: Use more registers on ARM as there are plenty and reduce the alignment, Paolo Bonzini, 2013/05/11