[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GDB get wrong debug infos on TI DSP architecture extension
From: |
Alex Bennée |
Subject: |
Re: GDB get wrong debug infos on TI DSP architecture extension |
Date: |
Thu, 28 May 2020 09:34:19 +0100 |
User-agent: |
mu4e 1.5.1; emacs 28.0.50 |
casmac <1482995675@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é"<f4bug@amsat.org>;
> Date: Wed, May 27, 2020 03:19 PM
> To: "casmac"<1482995675@qq.com>;"qemu-devel"<qemu-devel@nongnu.org>;
> Cc: "Taylor Simpson"<tsimpson@quicinc.com>;"Alex
> Bennée"<alex.bennee@linaro.org>;"Luc Michel"<luc.michel@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