public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL] Blackfin arch bug fixing for 2.6.23-rc6
@ 2007-09-13  5:48 Bryan Wu
  2007-09-13  6:54 ` Jan Dittmer
  0 siblings, 1 reply; 6+ messages in thread
From: Bryan Wu @ 2007-09-13  5:48 UTC (permalink / raw)
  To: LKML, Linus Torvalds, Andrew Morton, uclinux-dist-devel

Hi Linus,

Please pull from 'for-linus' branch of

master.kernel.org:/pub/scm/linux/kernel/git/cooloney/blackfin-2.6.git for-linus

to receive the following updates:

 arch/blackfin/mach-common/pm.c              |    6 ++
 include/asm-blackfin/mach-bf561/cdefBF561.h |    4 +-
 include/asm-blackfin/string.h               |  129 +++++++++++++++++----------
 3 files changed, 88 insertions(+), 51 deletions(-)

Michael Hennerich (1):
      Blackfin arch: Update/Fix PM support add new pm_ops valid

Mike Frysinger (1):
      Blackfin arch: fix some bugs in lib/string.h functions found by our string testing modules

Robin Getz (1):
      Blackfin arch: fix the aliased write macros

diff --git a/arch/blackfin/mach-common/pm.c b/arch/blackfin/mach-common/pm.c
index 1772d8d..b103027 100644
--- a/arch/blackfin/mach-common/pm.c
+++ b/arch/blackfin/mach-common/pm.c
@@ -158,10 +158,16 @@ static int bfin_pm_finish(suspend_state_t state)
 	return 0;
 }
 
+static int bfin_pm_valid(suspend_state_t state)
+{
+	return (state == PM_SUSPEND_STANDBY);
+}
+
 struct pm_ops bfin_pm_ops = {
 	.prepare = bfin_pm_prepare,
 	.enter = bfin_pm_enter,
 	.finish = bfin_pm_finish,
+	.valid	= bfin_pm_valid,
 };
 
 static int __init bfin_pm_init(void)
diff --git a/include/asm-blackfin/mach-bf561/cdefBF561.h b/include/asm-blackfin/mach-bf561/cdefBF561.h
index 6e87ab2..73d4d65 100644
--- a/include/asm-blackfin/mach-bf561/cdefBF561.h
+++ b/include/asm-blackfin/mach-bf561/cdefBF561.h
@@ -83,9 +83,9 @@ static __inline__ void bfin_write_VR_CTL(unsigned int val)
 
 /* For MMR's that are reserved on Core B, set up defines to better integrate with other ports */
 #define bfin_read_SWRST()                    bfin_read_SICA_SWRST()
-#define bfin_write_SWRST()                   bfin_write_SICA_SWRST()
+#define bfin_write_SWRST(val)                bfin_write_SICA_SWRST(val)
 #define bfin_read_SYSCR()                    bfin_read_SICA_SYSCR()
-#define bfin_write_SYSCR()                   bfin_write_SICA_SYSCR()
+#define bfin_write_SYSCR(val)                bfin_write_SICA_SYSCR(val)
 
 /* System Reset and Interrupt Controller registers for core A (0xFFC0 0100-0xFFC0 01FF) */
 #define bfin_read_SICA_SWRST()               bfin_read16(SICA_SWRST)
diff --git a/include/asm-blackfin/string.h b/include/asm-blackfin/string.h
index 6f1eb7d..e8ada91 100644
--- a/include/asm-blackfin/string.h
+++ b/include/asm-blackfin/string.h
@@ -9,13 +9,16 @@ extern inline char *strcpy(char *dest, const char *src)
 	char *xdest = dest;
 	char temp = 0;
 
-	__asm__ __volatile__
-	    ("1:\t%2 = B [%1++] (Z);\n\t"
-	     "B [%0++] = %2;\n\t"
-	     "CC = %2;\n\t"
-        "if cc jump 1b (bp);\n"
-	: "+&a" (dest), "+&a" (src), "=&d" (temp)
-	     ::"memory", "CC");
+	__asm__ __volatile__ (
+		"1:"
+		"%2 = B [%1++] (Z);"
+		"B [%0++] = %2;"
+		"CC = %2;"
+		"if cc jump 1b (bp);"
+		: "+&a" (dest), "+&a" (src), "=&d" (temp)
+		:
+		: "memory", "CC");
+
 	return xdest;
 }
 
@@ -28,37 +31,56 @@ extern inline char *strncpy(char *dest, const char *src, size_t n)
 	if (n == 0)
 		return xdest;
 
-	__asm__ __volatile__
-	    ("1:\t%3 = B [%1++] (Z);\n\t"
-	     "B [%0++] = %3;\n\t"
-	     "CC = %3;\n\t"
-	     "if ! cc jump 2f;\n\t"
-	     "%2 += -1;\n\t"
-	     "CC = %2 == 0;\n\t"
-	     "if ! cc jump 1b (bp);\n"
-        "2:\n"
-	: "+&a" (dest), "+&a" (src), "+&da" (n), "=&d" (temp)
-	     ::"memory", "CC");
+	__asm__ __volatile__ (
+		"1:"
+		"%3 = B [%1++] (Z);"
+		"B [%0++] = %3;"
+		"CC = %3;"
+		"if ! cc jump 2f;"
+		"%2 += -1;"
+		"CC = %2 == 0;"
+		"if ! cc jump 1b (bp);"
+		"jump 4f;"
+		"2:"
+		/* if src is shorter than n, we need to null pad bytes now */
+		"%3 = 0;"
+		"3:"
+		"%2 += -1;"
+		"CC = %2 == 0;"
+		"if cc jump 4f;"
+		"B [%0++] = %3;"
+		"jump 3b;"
+		"4:"
+		: "+&a" (dest), "+&a" (src), "+&da" (n), "=&d" (temp)
+		:
+		: "memory", "CC");
+
 	return xdest;
 }
 
 #define __HAVE_ARCH_STRCMP
 extern inline int strcmp(const char *cs, const char *ct)
 {
-	char __res1, __res2;
-
-	__asm__
-       ("1:\t%2 = B[%0++] (Z);\n\t" /* get *cs */
-		"%3 = B[%1++] (Z);\n\t"	/* get *ct */
-		"CC = %2 == %3;\n\t"	/* compare a byte */
-		"if ! cc jump 2f;\n\t"	/* not equal, break out */
-		"CC = %2;\n\t"	/* at end of cs? */
-		"if cc jump 1b (bp);\n\t"	/* no, keep going */
-		"jump.s 3f;\n"	/* strings are equal */
-		"2:\t%2 = %2 - %3;\n"	/* *cs - *ct */
-        "3:\n"
-	: "+&a" (cs), "+&a" (ct), "=&d" (__res1), "=&d" (__res2)
-      : :	"CC");
+	/* need to use int's here so the char's in the assembly don't get
+	 * sign extended incorrectly when we don't want them to be
+	 */
+	int __res1, __res2;
+
+	__asm__ __volatile__ (
+		"1:"
+		"%2 = B[%0++] (Z);"      /* get *cs */
+		"%3 = B[%1++] (Z);"      /* get *ct */
+		"CC = %2 == %3;"         /* compare a byte */
+		"if ! cc jump 2f;"       /* not equal, break out */
+		"CC = %2;"               /* at end of cs? */
+		"if cc jump 1b (bp);"    /* no, keep going */
+		"jump.s 3f;"             /* strings are equal */
+		"2:"
+		"%2 = %2 - %3;"          /* *cs - *ct */
+		"3:"
+		: "+&a" (cs), "+&a" (ct), "=&d" (__res1), "=&d" (__res2)
+		:
+		: "memory", "CC");
 
 	return __res1;
 }
@@ -66,26 +88,35 @@ extern inline int strcmp(const char *cs, const char *ct)
 #define __HAVE_ARCH_STRNCMP
 extern inline int strncmp(const char *cs, const char *ct, size_t count)
 {
-	char __res1, __res2;
+	/* need to use int's here so the char's in the assembly don't get
+	 * sign extended incorrectly when we don't want them to be
+	 */
+	int __res1, __res2;
 
 	if (!count)
 		return 0;
-	__asm__
-       ("1:\t%3 = B[%0++] (Z);\n\t"        /* get *cs */
-		"%4 = B[%1++] (Z);\n\t"	/* get *ct */
-		"CC = %3 == %4;\n\t"	/* compare a byte */
-		"if ! cc jump 3f;\n\t"	/* not equal, break out */
-		"CC = %3;\n\t"	/* at end of cs? */
-		"if ! cc jump 4f;\n\t"	/* yes, all done */
-		"%2 += -1;\n\t"	/* no, adjust count */
-	"CC = %2 == 0;\n\t"
-        "if ! cc jump 1b;\n"                 /* more to do, keep going */
-		"2:\t%3 = 0;\n\t"	/* strings are equal */
-        "jump.s    4f;\n"
-        "3:\t%3 = %3 - %4;\n"          /* *cs - *ct */
-        "4:"
-	: "+&a" (cs), "+&a" (ct), "+&da" (count), "=&d" (__res1), "=&d" (__res2)
-      : :	"CC");
+
+	__asm__ __volatile__ (
+		"1:"
+		"%3 = B[%0++] (Z);"      /* get *cs */
+		"%4 = B[%1++] (Z);"      /* get *ct */
+		"CC = %3 == %4;"         /* compare a byte */
+		"if ! cc jump 3f;"       /* not equal, break out */
+		"CC = %3;"               /* at end of cs? */
+		"if ! cc jump 4f;"       /* yes, all done */
+		"%2 += -1;"              /* no, adjust count */
+		"CC = %2 == 0;"
+		"if ! cc jump 1b;"       /* more to do, keep going */
+		"2:"
+		"%3 = 0;"                /* strings are equal */
+		"jump.s 4f;"
+		"3:"
+		"%3 = %3 - %4;"          /* *cs - *ct */
+		"4:"
+		: "+&a" (cs), "+&a" (ct), "+&da" (count), "=&d" (__res1), "=&d" (__res2)
+		:
+		: "memory", "CC");
+
 	return __res1;
 }
 

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [GIT PULL] Blackfin arch bug fixing for 2.6.23-rc6
  2007-09-13  5:48 [GIT PULL] Blackfin arch bug fixing for 2.6.23-rc6 Bryan Wu
@ 2007-09-13  6:54 ` Jan Dittmer
  2007-09-13  6:58   ` Bryan Wu
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Dittmer @ 2007-09-13  6:54 UTC (permalink / raw)
  To: bryan.wu; +Cc: LKML

Bryan Wu wrote:
> Hi Linus,
> 
> Please pull from 'for-linus' branch of
> 
> master.kernel.org:/pub/scm/linux/kernel/git/cooloney/blackfin-2.6.git for-linus
> 
> to receive the following updates:
> 
>  arch/blackfin/mach-common/pm.c              |    6 ++
>  include/asm-blackfin/mach-bf561/cdefBF561.h |    4 +-
>  include/asm-blackfin/string.h               |  129 +++++++++++++++++----------

btw. what about this error?

fs/binfmt_flat.c:760:50: error: macro "flat_get_addr_from_rp" requires 4 
arguments, but only 3 given
fs/binfmt_flat.c:760: error: ‘flat_get_addr_from_rp’ undeclared (first use in 
this function)
fs/binfmt_flat.c:760: error: (Each undeclared identifier is reported only once
fs/binfmt_flat.c:760: error: for each function it appears in.)
make[2]: *** [fs/binfmt_flat.o] Error 1
make[1]: *** [fs] Error 2
make: *** [_all] Error 2

any chance to get that fixed prior to .23? (not a regression, but
happens approx. since blackfin was merged)

Thanks,

Jan

Full build log: http://l4x.org/k/?d=34032

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [GIT PULL] Blackfin arch bug fixing for 2.6.23-rc6
  2007-09-13  6:54 ` Jan Dittmer
@ 2007-09-13  6:58   ` Bryan Wu
  2007-09-13  8:12     ` Jan Dittmer
  2007-09-13 11:36     ` Bernd Schmidt
  0 siblings, 2 replies; 6+ messages in thread
From: Bryan Wu @ 2007-09-13  6:58 UTC (permalink / raw)
  To: Jan Dittmer; +Cc: bryan.wu, LKML, uclinux-dist-devel

On Thu, 2007-09-13 at 08:54 +0200, Jan Dittmer wrote:
> Bryan Wu wrote:
> > Hi Linus,
> > 
> > Please pull from 'for-linus' branch of
> > 
> > master.kernel.org:/pub/scm/linux/kernel/git/cooloney/blackfin-2.6.git for-linus
> > 
> > to receive the following updates:
> > 
> >  arch/blackfin/mach-common/pm.c              |    6 ++
> >  include/asm-blackfin/mach-bf561/cdefBF561.h |    4 +-
> >  include/asm-blackfin/string.h               |  129 +++++++++++++++++----------
> 
> btw. what about this error?
> 
> fs/binfmt_flat.c:760:50: error: macro "flat_get_addr_from_rp" requires 4 
> arguments, but only 3 given
> fs/binfmt_flat.c:760: error: ‘flat_get_addr_from_rp’ undeclared (first use in 
> this function)
> fs/binfmt_flat.c:760: error: (Each undeclared identifier is reported only once
> fs/binfmt_flat.c:760: error: for each function it appears in.)
> make[2]: *** [fs/binfmt_flat.o] Error 1
> make[1]: *** [fs] Error 2
> make: *** [_all] Error 2
> 

Thanks for the testing.

> any chance to get that fixed prior to .23? (not a regression, but
> happens approx. since blackfin was merged)
> 

This is because a binfmt_flat hacking patch for Blackfin arch is not
accept by the mainline. It can be workaround by disabling
CONFIG_BINFMT_FLAT in menuconfig.

Need I disable CONFIG_BINFMT_FLAT in defconfigs for Blackfin to make the
compile pass?

> Full build log: http://l4x.org/k/?d=34032

Thanks again, beautiful log and which defconfigs do you using to do the
test and what's the toolchain version?

Best Regards
-Bryan Wu

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [GIT PULL] Blackfin arch bug fixing for 2.6.23-rc6
  2007-09-13  6:58   ` Bryan Wu
@ 2007-09-13  8:12     ` Jan Dittmer
  2007-09-13 11:36     ` Bernd Schmidt
  1 sibling, 0 replies; 6+ messages in thread
From: Jan Dittmer @ 2007-09-13  8:12 UTC (permalink / raw)
  To: bryan.wu; +Cc: LKML, uclinux-dist-devel

Bryan Wu wrote:
> Need I disable CONFIG_BINFMT_FLAT in defconfigs for Blackfin to make the
> compile pass?

That would be a workaround, yes. Better would be of course to fix
the bug or the Kconfig dependency.

>> Full build log: http://l4x.org/k/?d=34032
> 
> Thanks again, beautiful log and which defconfigs do you using to do the
> test and what's the toolchain version?

All information is on the page:

ld-version 2.17
gcc-version 4.1.2 (adi svn)

make HOSTCC=gcc-4.0 ARCH=blackfin CROSS_COMPILE=bfin-elf- CROSS32_COMPILE= 
O=/tmp/tmp.vLOkGP3410/out/blackfin defconfig

Jan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [GIT PULL] Blackfin arch bug fixing for 2.6.23-rc6
  2007-09-13  6:58   ` Bryan Wu
  2007-09-13  8:12     ` Jan Dittmer
@ 2007-09-13 11:36     ` Bernd Schmidt
  2007-09-14  4:01       ` Bryan Wu
  1 sibling, 1 reply; 6+ messages in thread
From: Bernd Schmidt @ 2007-09-13 11:36 UTC (permalink / raw)
  To: bryan.wu; +Cc: Jan Dittmer, LKML, uclinux-dist-devel

Bryan Wu wrote:
> This is because a binfmt_flat hacking patch for Blackfin arch is not
> accept by the mainline.

Did you see someone reject it, or did it just get lost?


Bernd
-- 
This footer brought to you by insane German lawmakers.
Analog Devices GmbH      Wilhelm-Wagenfeld-Str. 6      80807 Muenchen
Sitz der Gesellschaft Muenchen, Registergericht Muenchen HRB 40368
Geschaeftsfuehrer Thomas Wessel, William A. Martin, Margaret Seif

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [GIT PULL] Blackfin arch bug fixing for 2.6.23-rc6
  2007-09-13 11:36     ` Bernd Schmidt
@ 2007-09-14  4:01       ` Bryan Wu
  0 siblings, 0 replies; 6+ messages in thread
From: Bryan Wu @ 2007-09-14  4:01 UTC (permalink / raw)
  To: Bernd Schmidt; +Cc: bryan.wu, Jan Dittmer, LKML, uclinux-dist-devel

On Thu, 2007-09-13 at 13:36 +0200, Bernd Schmidt wrote:
> Bryan Wu wrote:
> > This is because a binfmt_flat hacking patch for Blackfin arch is not
> > accept by the mainline.
> 
> Did you see someone reject it, or did it just get lost?
> 
> 

Actually no one response to the patch. Need I resend it to try again,
-:))?

http://lkml.org/lkml/2007/5/29/24
http://lkml.org/lkml/2007/5/28/63

-Bryan

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-09-14  4:05 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-09-13  5:48 [GIT PULL] Blackfin arch bug fixing for 2.6.23-rc6 Bryan Wu
2007-09-13  6:54 ` Jan Dittmer
2007-09-13  6:58   ` Bryan Wu
2007-09-13  8:12     ` Jan Dittmer
2007-09-13 11:36     ` Bernd Schmidt
2007-09-14  4:01       ` Bryan Wu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox