casmac <1482995...@qq.com> writes:
> Hi, > Thank you for forwarding my question to developers and sharing > the C6x implementation. > Perhaps I should follow up with another problem I encountered. > The senerio is the emulator keeps running eventhough the program it > emulates has already exited. And it keeps retrieving instructions which are > all zero "instruction"(0x00000000). > > It looks to me that in function cpu_exec(CPUState *cpu), the > following loop never terminate: > while (!cpu_handle_exception(cpu, &ret)) { > TranslationBlock *last_tb = NULL; > int tb_exit = 0; > while (!cpu_handle_interrupt(cpu, > &last_tb)) { ... } > Is it because cpu->exit_request remains 0 ? > > At what point should we make cpu->exit_request=1 ? cpu->exit_request is set for asynchronus conditions (e.g. timer IRQs or IO events). A number of helpers will "kick" the cpu by calling cpu_exit(). > Thanks again!! > > > regards > xiaolei > > > > ------------------ Original ------------------ > From: "Philippe Mathieu-Daudé"<f4...@amsat.org>; > Date: Wed, May 27, 2020 03:19 PM > To: "casmac"<1482995...@qq.com>;"qemu-devel"<qemu-devel@nongnu.org>; > Cc: "Taylor Simpson"<tsimp...@quicinc.com>;"Alex > Bennée"<alex.ben...@linaro.org>;"Luc Michel"<luc.mic...@greensocs.com>; > Subject: Re: GDB get wrong debug infos on TI DSP architecture extension > > > > Hi Xiaolei, > > Cc'ing more developers who might answer you. > > On 5/27/20 8:48 AM, casmac wrote: > > Hi all, > > I am working on a TI DSP architecture extension for QEMU. > > FYI you can find the TI TMS320C6x target implemented here: > https://github.com/philmd/qemu/releases/tag/target-c6x-2.4 > > I started rebasing it to QEMU 4.2 but then got distracted. > > > Now, we are > > adding GDB debugging features. > > We have done the following, but not sure we are on the > right track : > > - add a xml description file in gdb-xml, without > understanding the > > purpose of the file, why some architectures don't provide such xml file? > > - add ***_cpu_gdb_read_register(), > ***_cpu_gdb_write_register(); > > - added dsp_cpu_get_phys_page_attrs_debug(), but > uncertain about > > what to return > > dsp_cpu_get_phys_page_attrs_debug(CPUState *cs, > vaddr addr, > > MemTxAttrs *attrs) > > { > > return addr & > TARGET_PAGE_MASK; > > } > > > > We run QEMU with the these arguments > > qemu-system-dsp ... -kernel filename.out -S -s > > > > It turns out that gdb reads incorrect register values, and > complains > > : "warning: Target-supplied registers are not supported by the current > > architecture". > > > > Something is missing here, or we do it in a wrong > way. Any advise > > would be helpful to us. > > > > Thanks. > > > > xiaolei > > > > ----- ti_dsp.xml ----- > > > > <?xml version="1.0"?> > > <!DOCTYPE feature SYSTEM "gdb-target.dtd"> > > <feature name="org.gnu.gdb.tic3x.core"> > > <reg name="r0" bitsize="32"></reg> > > <reg name="r1" bitsize="32"/> > > <reg name="r2" bitsize="32"></reg> > > <reg name="r3" bitsize="32"/> > > <reg name="r4" bitsize="32"/> > > <reg name="r5" bitsize="32"/> > > <reg name="r6" bitsize="32"/> > > <reg name="r7" bitsize="32"/> > > <reg name="ar0" bitsize="32"/> > > <reg name="ar1" bitsize="32"/> > > <reg name="ar2" bitsize="32"/> > > <reg name="ar3" bitsize="32"/> > > <reg name="ar4" bitsize="32"/> > > <reg name="ar5" bitsize="32"/> > > <reg name="ar6" bitsize="32"/> > > <reg name="ar7" bitsize="32"/> > > <reg name="dp" bitsize="32"/> > > <reg name="ir0" bitsize="32"/> > > <reg name="ir1" bitsize="32"/> > > <reg name="bk" bitsize="32"/> > > <reg name="sp" bitsize="32" type="data_ptr"/> > > <reg name="st" bitsize="32"></reg> > > <reg name="ie" bitsize="32"/> > > <reg name="if" bitsize="32"/> > > <reg name="iof" bitsize="32"/> > > <reg name="rs" bitsize="32"/> > > <reg name="re" bitsize="32"/> > > <reg name="rc" bitsize="32"/> > > <reg name="pc" bitsize="32" type="data_ptr"/> > > <reg name="clk" bitsize="32"/> > > </feature> > > -- Alex Bennée