linux-mtd.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] MTD: Fix Orion NAND driver compilation with ARM OABI
@ 2010-03-20  8:55 Paulius Zaleckas
  2010-03-20  9:41 ` David Woodhouse
  0 siblings, 1 reply; 8+ messages in thread
From: Paulius Zaleckas @ 2010-03-20  8:55 UTC (permalink / raw)
  To: dwmw2
  Cc: nico, linux-kernel, linux-mtd, u.kleine-koenig, simon.kagstrom,
	akpm, linux-arm-kernel

We must tell GCC to use even register for variable passed
to ldrd instruction. Without this patch GCC 4.2.1 puts this
variable to r2/r3 on EABI and r3/r4 on OABI, so force it to
r2/r3. This does not change anything when EABI and OABI
compilation works OK.

Without this patch and with OABI I get:
  CC      drivers/mtd/nand/orion_nand.o
/tmp/ccMkwOCs.s: Assembler messages:
/tmp/ccMkwOCs.s:63: Error: first destination register must be even -- `ldrd r3,[ip]'
make[5]: *** [drivers/mtd/nand/orion_nand.o] Error 1

Signed-off-by: Paulius Zaleckas <paulius.zaleckas@gmail.com>
---

 drivers/mtd/nand/orion_nand.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/drivers/mtd/nand/orion_nand.c b/drivers/mtd/nand/orion_nand.c
index f59c074..cb5175e 100644
--- a/drivers/mtd/nand/orion_nand.c
+++ b/drivers/mtd/nand/orion_nand.c
@@ -60,7 +60,12 @@ static void orion_nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
 	}
 	buf64 = (uint64_t *)buf;
 	while (i < len/8) {
-		uint64_t x;
+		/*
+		 * force x variable to r2/r3 registers since ldrd instruction
+		 * requires first register to be even.
+		 */
+		register uint64_t x asm ("r2");
+
 		asm volatile ("ldrd\t%0, [%1]" : "=&r" (x) : "r" (io_base));
 		buf64[i++] = x;
 	}

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

end of thread, other threads:[~2010-03-21 17:16 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-20  8:55 [PATCH] MTD: Fix Orion NAND driver compilation with ARM OABI Paulius Zaleckas
2010-03-20  9:41 ` David Woodhouse
2010-03-20 11:20   ` Paulius Zaleckas
2010-03-20 11:58     ` David Woodhouse
2010-03-20 14:41       ` Nicolas Pitre
2010-03-20 15:06       ` Mikael Pettersson
2010-03-20 15:37         ` Nicolas Pitre
2010-03-21 17:16       ` Jamie Lokier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).