On Thu, Feb 24, 2011 at 11:12 AM, 陳韋任 <che...@iis.sinica.edu.tw> wrote: > Hi, all > > I have a Linux/SPARC machine and want to run QEMU on it. > Here is the system information. > > ---------------------------------------------------------- > $ uname -a > Linux sparc 2.6.37-rc5-git #1 SMP Tue Dec 21 17:03:53 CST 2010 sparc64 sun4v > UltraSparc T2 (Niagara2) GNU/Linux > $ gcc --version > gcc (Gentoo 4.3.4 p1.0, pie-10.1.5) 4.3.4 > ---------------------------------------------------------- > > QEMU is configured with "--sparc_cpu=v8plus". QEMU report > there are some missing op definitions. See below, > > ---------------------------------------------------------- > $ qemu-sparc hello > Missing op definition for qemu_ld64 > Missing op definition for qemu_st64 > /tmp/chenwj/qemu-0.14.0/tcg/tcg.c:1116: tcg fatal error > Aborted > ---------------------------------------------------------- > > Is it possible to fix it? If so, how?
Yes, the place is in tcg/sparc/tcg-target.[ch]. Sparc generator for TCG only implements the functions qemu_ld64/st64 on V9 (full 64 bit). These should be implemented also for v8plus. This can be implemented by adding a helper function to call the V9 versions of tcg_out_qemu_ld/st. One problem is that v8plus gives few 64 bit registers, %g1 to %g7, so addr_reg should probably be set up to %g1 and data_reg to %g2 in the v8plus helper. Data and address must be moved to/from these registers from/to 32 bit registers allocated by TCG.