On Fri, Dec 23, 2011 at 02:07:53PM +0100, David Turner wrote: > Some parts of QEMU (the JIT) require the use of a global register variable > to point to the "env" CPU state variable. > > This feature is not supported by Clang (which is not very surprising given > that it uses LLVM as its backend, and LLVM explicitely doesn't support this) > > Until the JIT is modified to not require this anymore, it is very unlikely > that Clang will be able to build QEMU. > > There were previous discussions about such a change on this mailing list, > but I believe nobody started working on that change because many feared it > was a lot of work that would have a negative impact on performance (though > I think it was all conjecture, i.e. no one really tried it and got any real > data).
You're right. Here is the discussion, http://lists.gnu.org/archive/html/qemu-devel/2011-05/msg01116.html Since TCI (Tiny Code Interpreter) doesn't need AREG0, I configure QEMU to use TCI and try it out. Here's my flow. --- # apply patches under /usr/ports/emulators/qemu-devel/files/ first $ ../configure --prefix=$INSTALL --target-list=i386-bsd-user \ --enable-tcg-interpreter \ --cc=clang $ gmake install --- So far so good (perhaps freebsd guys should upstream those patches?). But I am stuck at the error below, --- $ qemu-i386 -bsd freebsd hello Unable to load interpreter --- Any thoughts? Thanks! :) Regards, chenwj -- Wei-Ren Chen (陳韋任) Computer Systems Lab, Institute of Information Science, Academia Sinica, Taiwan (R.O.C.) Tel:886-2-2788-3799 #1667 Homepage: http://people.cs.nctu.edu.tw/~chenwj