X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=arch%2Ftile%2Fkernel%2Fbacktrace.c;h=f8b74ca83b9257a245adaa6a03d05cdb75431c97;hb=d5b2e30bdc695a1735b3c970e1f9738e9ca3dbf0;hp=9092ce8aa6b472b302ec31d514bb2da71fac3bfe;hpb=0d2cd91bf7b1a7cc1d638296111fcc2bcf5c0bb4;p=linux-2.6-block.git diff --git a/arch/tile/kernel/backtrace.c b/arch/tile/kernel/backtrace.c index 9092ce8aa6b4..f8b74ca83b92 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);