Am 23.08.2013 23:18, schrieb Richard Henderson: > I don't see how TCI really comes into this except as Yet Another Backend to be > tested. Indeed, such unit testing could show that TCI is in fact broken wrt > helpers, depending on the host abi. > > E.g. tci never defines TCG_TARGET_CALL_ALIGN_ARGS. Thus if one uses tci on an > ARM host, a helper like > > DEF_HELPER_FLAGS_2(store_fpcr, TCG_CALL_NO_RWG, void, env, i64) > > will have its arguments loaded into TCI's R0, R1, R2, and thence into the ARM > r0, r1, r2. But the ARM abi requires the i64 input to be aligned, and thus it > should be r0, r2, r3. > > > r~
For native compilations, TCG_TARGET_CALL_ALIGN_ARGS can be set from configure. Cross compilations cannot set that macro automatically (or is there some way to do this?), so a configure option is needed if the cross target is unknown. Should we use this mechanism for all hosts (and move the definitions in tcg-target.h to a conditional definition in tcg.h), or should we use it only for TCI? TCI on ARM works for most architectures when I set TCG_TARGET_CALL_ALIGN_ARGS. It only fails for qemu-alpha. The alpha disassembler does not work on 32 bit hosts, therefore debugging is difficult. Regards, Stefan