mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: barebox@lists.infradead.org
Subject: [PATCH 02/12] nand_imx: use optimized memcpy
Date: Mon, 29 Mar 2010 11:36:13 +0200	[thread overview]
Message-ID: <1269855383-22716-3-git-send-email-s.hauer@pengutronix.de> (raw)
In-Reply-To: <1269855383-22716-1-git-send-email-s.hauer@pengutronix.de>

The internal SRAM buffer of the i.MX NAND controller does not
allow byte accesses. We use the memcpy32 function to handle this.
If we have assembler optimized string functions we can do better
because they won't do byte accesses when source and target are word
aligned.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/nand/nand_imx.c |   19 +++++++++++++++++--
 1 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/drivers/nand/nand_imx.c b/drivers/nand/nand_imx.c
index afd5637..da9b2d5 100644
--- a/drivers/nand/nand_imx.c
+++ b/drivers/nand/nand_imx.c
@@ -200,12 +200,17 @@ static struct nand_ecclayout nandv2_hw_eccoob_largepage = {
 	}
 };
 
-static void __nand_boot_init memcpy32(void *trg, const void *src, int size)
+static void memcpy32(void *trg, const void *src, int size)
 {
 	int i;
 	unsigned int *t = trg;
 	unsigned const int *s = src;
 
+#ifdef CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS
+	if (!((unsigned long)trg & 0x3) && !((unsigned long)src & 0x3))
+		memcpy(trg, src, size);
+	else
+#endif
 	for (i = 0; i < (size >> 2); i++)
 		*t++ = *s++;
 }
@@ -1025,6 +1030,16 @@ static void __nand_boot_init nfc_addr(struct imx_nand_host *host, u32 offs)
 	}
 }
 
+static void __nand_boot_init __memcpy32(void *trg, const void *src, int size)
+{
+	int i;
+	unsigned int *t = trg;
+	unsigned const int *s = src;
+
+	for (i = 0; i < (size >> 2); i++)
+		*t++ = *s++;
+}
+
 void __nand_boot_init imx_nand_load_image(void *dest, int size)
 {
 	struct imx_nand_host host;
@@ -1135,7 +1150,7 @@ void __nand_boot_init imx_nand_load_image(void *dest, int size)
 					continue;
 			}
 
-			memcpy32(dest, host.base, pagesize);
+			__memcpy32(dest, host.base, pagesize);
 			dest += pagesize;
 			size -= pagesize;
 
-- 
1.7.0


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  parent reply	other threads:[~2010-03-29  9:36 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-29  9:36 Patches for next merge window Sascha Hauer
2010-03-29  9:36 ` [PATCH 01/12] ARM zImage: do memmap if possible Sascha Hauer
2010-03-29 18:47   ` Peter Korsgaard
2010-03-30  9:20     ` Sascha Hauer
2010-03-30 10:01       ` Peter Korsgaard
2010-03-30 12:18         ` Sascha Hauer
2010-03-29  9:36 ` Sascha Hauer [this message]
2010-03-29  9:36 ` [PATCH 03/12] nand_imx: Speed up sequential read Sascha Hauer
2010-03-29  9:36 ` [PATCH 04/12] imx_nand: use memcpy for copying from/to buffer Sascha Hauer
2010-03-29 10:42   ` Ivo Clarysse
2010-03-29  9:36 ` [PATCH 05/12] add unaligned access support Sascha Hauer
2010-03-29  9:36 ` [PATCH 06/12] add unlzo support Sascha Hauer
2010-03-30 11:04   ` Sascha Hauer
2010-03-29  9:36 ` [PATCH 07/12] add snprintf function Sascha Hauer
2010-03-29  9:36 ` [PATCH 08/12] echo: add -e option support Sascha Hauer
2010-03-30 11:45   ` Peter Korsgaard
2010-03-30 12:17     ` Sascha Hauer
2010-03-29  9:36 ` [PATCH 09/12] add process_escape_sequence function Sascha Hauer
2010-03-29  9:36 ` [PATCH 10/12] echo command: Add -e option Sascha Hauer
2010-03-29  9:36 ` [PATCH 11/12] hush: only remove backslashes introduced from glob Sascha Hauer
2010-03-29 10:00   ` Sascha Hauer
2010-03-29  9:36 ` [PATCH 12/12] hush: allow fancy prompts Sascha Hauer

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=1269855383-22716-3-git-send-email-s.hauer@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=barebox@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox