So far my best guess is that the problem is the Assmebly line mrc 15, 0, r4, cr13, cr0, {3}
in main, which means that it's trying to read from coprocessor 15, register 13, part 3. According to http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0360e/CACEAIHG.html that's a thread ID that's read only for user processes. But that's for ARM11, and the corresponding doc for ARM9 (926EJ-S, specifically) http://infocenter.arm.com/help/topic/com.arm.doc.ddi0198e/I1002240.html doesn't list thread registers at all. So I'm guessing it doesn't exist, and trying to read from it naturally fails. A friend noticed that https://github.com/rust-lang/rust/blob/master/src/librustc_back/target/arm_unknown_linux_gnueabi.rs specifies ARMv6 as the target, but either retargetting from command line or recompiling with that file patched for v5te didn't help; the resulting ASM is the same in that part. I think the problem might be https://github.com/rust-lang/rust/blob/master/src/rt/arch/arm/record_sp.S which assumes a more modern architecture. So perhaps this means that rust has stricter requirements than C gnueabi? Anyone have any idea if that's a larger problem, or simply something nobody has written the small handcoded ASMs needed for ARMv5 or v4? If latter, I might be able to wrap my head around this. -- Tomi Pieviläinen, +358 400 487 504 A: Because it disrupts the natural way of thinking. Q: Why is top posting frowned upon?
signature.asc
Description: Digital signature
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev