Browse Source

sh: Fix up unaligned current_text_addr().

As noted by Adrian:

	Commit 3ab83521378268044a448113c6aa9a9e245f4d2f (kexec jump)
	causes the following build error on sh:

	<--  snip  -->

	...
	  CC      kernel/kexec.o
	{standard input}: Assembler messages:
	{standard input}:1518: Error: offset to unaligned destination
	make[2]: *** [kernel/kexec.o] Error 1

	<--  snip  -->

	If I understand the assembler correctly it fails at
	include/asm-sh/kexec.h:59

The issue here is that the mova reference lacks an explicit alignment,
and previous code paths would end up with this on a 16-bit boundary,
so we make the alignment explicit.

Reported-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt 17 years ago
parent
commit
103340cc36
1 changed files with 1 additions and 1 deletions
  1. 1 1
      include/asm-sh/processor_32.h

+ 1 - 1
include/asm-sh/processor_32.h

@@ -19,7 +19,7 @@
  * Default implementation of macro that returns current
  * instruction pointer ("program counter").
  */
-#define current_text_addr() ({ void *pc; __asm__("mova	1f, %0\n1:":"=z" (pc)); pc; })
+#define current_text_addr() ({ void *pc; __asm__("mova	1f, %0\n.align 2\n1:":"=z" (pc)); pc; })
 
 /* Core Processor Version Register */
 #define CCN_PVR		0xff000030