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?

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to