Module Name: src Committed By: matt Date: Thu Jan 30 06:38:00 UTC 2014
Modified Files: src/sys/arch/arm/include: locore.h Log Message: ldrht is v6t2 or later so use ldrt and extract the right halfword. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/include/locore.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/include/locore.h diff -u src/sys/arch/arm/include/locore.h:1.8 src/sys/arch/arm/include/locore.h:1.9 --- src/sys/arch/arm/include/locore.h:1.8 Wed Jan 29 18:45:20 2014 +++ src/sys/arch/arm/include/locore.h Thu Jan 30 06:38:00 2014 @@ -197,7 +197,16 @@ read_thumb_insn(vaddr_t va, bool user_p) va &= ~1; uint32_t insn; if (user_p) { +#ifdef _ARM_ARCH_T2 __asm __volatile("ldrht %0, [%1]" : "=&r"(insn) : "r"(va)); +#else + __asm __volatile("ldrt %0, [%1]" : "=&r"(insn) : "r"(va & ~3)); +#ifdef __ARMEB__ + insn = (uint16_t) (insn >> (((va ^ 2) & 2) << 3)); +#else + insn = (uint16_t) (insn >> ((va & 2) << 3)); +#endif +#endif } else { insn = *(const uint16_t *)va; }