This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Blackfin: support L2 memory


Hi Bernd,

Bernd Schmidt wrote:
Joseph S. Myers wrote:
On Fri, 11 Sep 2009, Bernd Schmidt wrote:

This patch by Jie Zhang allows us to place sections into L2 memory (a
piece of SRAM on certain chips).  Committed.
This patch is missing documentation for the new attribute in extend.texi and testcases for the testsuite that valid cases of the attribute are accepted with the desired effect and invalid cases are rejected.

I found the docs commit in our tree and committed it, as below. Jie, could you do a testcase?


How about this one? Tested on bf548.


Jie


	* gcc.target/bfin/l2.c: New test.
	* gcc.target/bfin/bfin.exp (dg-bfin-processors): New.

Index: gcc.target/bfin/l2.c
===================================================================
--- gcc.target/bfin/l2.c	(revision 0)
+++ gcc.target/bfin/l2.c	(revision 0)
@@ -0,0 +1,38 @@
+/* { dg-do run { target bfin-*-linux-uclibc } } */
+/* { dg-bfin-processors bf544 bf547 bf548 bf549 bf561} */
+
+#if defined(__ADSPBF544__)
+#define L2_START 0xFEB00000
+#define L2_LENGTH 0x10000
+#else
+#define L2_START 0xFEB00000
+#define L2_LENGTH 0x20000
+#endif
+
+int n __attribute__ ((l2));
+
+int foo (int i) __attribute__ ((l2));
+
+int foo (int a)
+{
+  return a + 1;
+}
+
+int main ()
+{
+  int r;
+  unsigned long *p;
+
+  p = (unsigned long *) foo;
+  if (*p < L2_START || *p >= L2_START + L2_LENGTH)
+    return 1;
+
+  p = (unsigned long *) &n;
+  if ((unsigned long) p < L2_START || (unsigned long) p >= L2_START + L2_LENGTH)
+    return 2;
+
+  if (foo (0) != 1)
+    return 3;
+
+  return 0;
+}
Index: gcc.target/bfin/bfin.exp
===================================================================
--- gcc.target/bfin/bfin.exp	(revision 151707)
+++ gcc.target/bfin/bfin.exp	(working copy)
@@ -53,6 +53,30 @@
     }
 }
 
+# dg-bfin-processors can be used to specify the processors which can
+# run the test case.
+proc dg-bfin-processors {args} {
+    upvar dg-extra-tool-flags extra_tool_flags
+    upvar dg-do-what do_what
+
+    set multilib_cpu ""
+    set cpu ""
+
+    foreach flag [target_info multilib_flags] {
+	regexp "^-mcpu=([^-]*)" $flag dummy multilib_cpu
+    }
+
+    set cpus [lindex $args 1]
+
+    foreach cpu $cpus {
+	if {$multilib_cpu == $cpu} {
+	    return
+	}
+    }
+
+    set do_what [list [lindex $do_what 0] "N" "P"]
+}
+
 # Initialize `dg'.
 dg-init
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]