There is the PCEvent class (see src/cpu/pc_event.hh) that's used for breakpoints, skipping kernel functions, etc. You could create a subclass of that to generate a checkpoint and then "schedule" it from python.
Steve On Thu, Aug 6, 2015 at 7:03 AM Lingxiao Jia <[email protected]> wrote: > Thanks, Steve. I know the pseudo-instruction stuff, but I do want to > generate checkpoint at certain PC. > > On Thu, Aug 6, 2015 at 3:38 AM, Steve Reinhardt <[email protected]> wrote: > >> If you're just trying to generate a checkpoint at a particular point in a >> program, you can also insert a pseudo-instruction in the program to cause a >> checkpoint to be generated without having to figure out the PC value. >> >> Steve >> >> >> On Wed, Aug 5, 2015 at 11:34 AM Lingxiao Jia <[email protected]> >> wrote: >> >>> Thanks, Patrick. I think it at least gives me a way to get access to the >>> pc. >>> Of course it would be ideal if there is any way that can directly access >>> the pc without getting the address of the thread first. >>> >>> On Wed, Aug 5, 2015 at 12:42 PM, Patrick <[email protected]> wrote: >>> >>>> Lingxiao, >>>> >>>> In lieu of a response from someone else with more gem5 expertise, I >>>> thought this might help. >>>> >>>> (I assume you've seen this page: link >>>> <http://www.m5sim.org/Debugger_Based_Debugging>.) >>>> >>>> I put a breakpoint in src/cpu/simple/base.cc in the BaseSimpleCPU >>>> constructor. After it allocates a "SimpleThread" for its "thread" member, I >>>> can get the address of "thread." Then, at another point in the program, I >>>> can use that address to examine the pc member of "thread" like this >>>> (assuming the address of "thread" is 0x385e9c0): >>>> >>>> (gdb) call ((SimpleThread*)0x385e9c0)->pcState() >>>> $6 = {<GenericISA::UPCState<unsigned long>> = >>>> {<GenericISA::SimplePCState<unsigned long>> = {<GenericISA::PCStateBase> = >>>> {_pc = 4194710, _npc = 4194718}, <No data fields>}, _upc = 0, _nupc = 1}, >>>> _size = 0 '\000'} >>>> >>>> A caveat is that gdb won't let me print out the address of "thread". >>>> When I try to print it in gdb, I get this error: >>>> >>>> (gdb) p thread >>>> >>>> A syntax error in expression, near `'. >>>> >>>> >>>> My guess is that it's because "thread" is a keyword in gdb. In the >>>> code, I stored the value of "thread" in a variable with a different name, >>>> and it let me print the other variable. >>>> >>>> I don't know if this answers your question. If it does, I would guess >>>> there's probably a better way than this. Maybe someone else can give input. >>>> >>>> Hope this helps, >>>> Patrick >>>> >>>> On Tue, Aug 4, 2015 at 10:31 AM, Lingxiao Jia <[email protected]> >>>> wrote: >>>> >>>>> Hello all, >>>>> >>>>> I am new to gem5. I want to use gdb to inspect what is going on inside >>>>> the simulator in SE mode. >>>>> Specifically, I want to stop at certain PC and make a checkpoint at >>>>> that point, but I don't find an easy way to do that. The existing way to >>>>> take checkpoints can only be taken at certain tick. >>>>> I reviewed the source code and generally located where the PC is >>>>> stored (in the ThreadState structure of the thread of the corresponding >>>>> CPU). >>>>> But since gem5 use swig to bridge python and C++, I am really confused >>>>> if it is possible to access the PC globally in gdb? >>>>> >>>>> Thanks. >>>>> >>>>> -- >>>>> >>>>> Best regards, >>>>> >>>>> Lingxiao Jia >>>>> >>>>> >>>>> Electrical & Computer Engineering (ECE) >>>>> >>>>> The University of Texas at Austin (UT-Austin) >>>>> >>>>> _______________________________________________ >>>>> gem5-users mailing list >>>>> [email protected] >>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users >>>>> >>>> >>>> >>>> _______________________________________________ >>>> gem5-users mailing list >>>> [email protected] >>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users >>>> >>> >>> >>> >>> -- >>> >>> Best regards, >>> >>> Lingxiao Jia >>> >>> 贾凌霄 >>> >>> >>> Electrical & Computer Engineering (ECE) >>> >>> The University of Texas at Austin (UT-Austin) >>> _______________________________________________ >>> gem5-users mailing list >>> [email protected] >>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users >> >> >> _______________________________________________ >> gem5-users mailing list >> [email protected] >> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users >> > > > > -- > > Best regards, > > Lingxiao Jia > > 贾凌霄 > > > Electrical & Computer Engineering (ECE) > > The University of Texas at Austin (UT-Austin) > _______________________________________________ > gem5-users mailing list > [email protected] > http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________ gem5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
