X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=arch%2Ftile%2Fkernel%2Fbacktrace.c;h=f8b74ca83b9257a245adaa6a03d05cdb75431c97;hb=5e512d0785e67d9ff41ee4af39bb71fc6161d5c9;hp=9092ce8aa6b472b302ec31d514bb2da71fac3bfe;hpb=287b901dcadd7eb3c5aa93b679bbad4058814921;p=~andy%2Flinux diff --git a/arch/tile/kernel/backtrace.c b/arch/tile/kernel/backtrace.c index 9092ce8aa6b..f8b74ca83b9 100644 --- a/arch/tile/kernel/backtrace.c +++ b/arch/tile/kernel/backtrace.c @@ -14,6 +14,7 @@ #include #include +#include #include #include #include @@ -336,8 +337,12 @@ static void find_caller_pc_and_caller_sp(CallerLocation *location, bytes_to_prefetch / sizeof(tile_bundle_bits); } - /* Decode the next bundle. */ - bundle.bits = prefetched_bundles[next_bundle++]; + /* + * Decode the next bundle. + * TILE always stores instruction bundles in little-endian + * mode, even when the chip is running in big-endian mode. + */ + bundle.bits = le64_to_cpu(prefetched_bundles[next_bundle++]); bundle.num_insns = parse_insn_tile(bundle.bits, pc, bundle.insns); num_info_ops = bt_get_info_ops(&bundle, info_operands);