linux-next: manual merge of the tile tree with Linus' tree

From: Stephen Rothwell
Date: Mon Apr 09 2012 - 20:35:07 EST


Hi Chris,

Today's linux-next merge of the tile tree got a conflict in
arch/tile/kernel/single_step.c between commit cdd8e16feba8 ("arch/tile:
return SIGBUS for addresses that are unaligned AND invalid") from Linus'
tree and commit 25c5acbdcc06 ("arch/tile: support building big-endian
kernel") from the tile tree.

Just context changes. I fixed it up (see below) and can carry the fix as
necessary.
--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx

diff --cc arch/tile/kernel/single_step.c
index 9efbc13,8935deb..0000000
--- a/arch/tile/kernel/single_step.c
+++ b/arch/tile/kernel/single_step.c
@@@ -153,28 -153,6 +153,25 @@@ static tile_bundle_bits rewrite_load_st
if (((unsigned long)addr % size) == 0)
return bundle;

+ /*
+ * Return SIGBUS with the unaligned address, if requested.
+ * Note that we return SIGBUS even for completely invalid addresses
+ * as long as they are in fact unaligned; this matches what the
+ * tilepro hardware would be doing, if it could provide us with the
+ * actual bad address in an SPR, which it doesn't.
+ */
+ if (unaligned_fixup == 0) {
+ siginfo_t info = {
+ .si_signo = SIGBUS,
+ .si_code = BUS_ADRALN,
+ .si_addr = addr
+ };
+ trace_unhandled_signal("unaligned trap", regs,
+ (unsigned long)addr, SIGBUS);
+ force_sig_info(info.si_signo, &info, current);
+ return (tilepro_bundle_bits) 0;
+ }
+
- #ifndef __LITTLE_ENDIAN
- # error We assume little-endian representation with copy_xx_user size 2 here
- #endif
/* Handle unaligned load/store */
if (mem_op == MEMOP_LOAD || mem_op == MEMOP_LOAD_POSTINCR) {
unsigned short val_16;

Attachment: pgp00000.pgp
Description: PGP signature