Avoid bus error from reading unaligned 64-bit literal

Change-Id: I5932f130e6a8d31e09ef615e8544ff0e1073ede9
diff --git a/disassembler/disassembler_arm.cc b/disassembler/disassembler_arm.cc
index c35edbb..2a966a3 100644
--- a/disassembler/disassembler_arm.cc
+++ b/disassembler/disassembler_arm.cc
@@ -720,7 +720,8 @@
                 if (Rn.r == 15 && U == 1) {
                   intptr_t lit_adr = reinterpret_cast<intptr_t>(instr_ptr);
                   lit_adr = RoundDown(lit_adr, 4) + 4 + (imm8 << 2);
-                  args << StringPrintf("  ; 0x%" PRIx64, *reinterpret_cast<int64_t*>(lit_adr));
+                  typedef const int64_t unaligned_int64_t __attribute__ ((aligned (2)));
+                  args << StringPrintf("  ; 0x%" PRIx64, *reinterpret_cast<unaligned_int64_t*>(lit_adr));
                 }
               } else if (Rn.r == 13 && W == 1 && U == L) {  // VPUSH/VPOP
                 opcode << (L == 1 ? "vpop" : "vpush");