nativetrace.hh revision 4776
12689Sktlim@umich.edu/*
22689Sktlim@umich.edu * Copyright (c) 2001-2005 The Regents of The University of Michigan
32689Sktlim@umich.edu * All rights reserved.
42689Sktlim@umich.edu *
52689Sktlim@umich.edu * Redistribution and use in source and binary forms, with or without
62689Sktlim@umich.edu * modification, are permitted provided that the following conditions are
72689Sktlim@umich.edu * met: redistributions of source code must retain the above copyright
82689Sktlim@umich.edu * notice, this list of conditions and the following disclaimer;
92689Sktlim@umich.edu * redistributions in binary form must reproduce the above copyright
102689Sktlim@umich.edu * notice, this list of conditions and the following disclaimer in the
112689Sktlim@umich.edu * documentation and/or other materials provided with the distribution;
122689Sktlim@umich.edu * neither the name of the copyright holders nor the names of its
132689Sktlim@umich.edu * contributors may be used to endorse or promote products derived from
142689Sktlim@umich.edu * this software without specific prior written permission.
152689Sktlim@umich.edu *
162689Sktlim@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
172689Sktlim@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
182689Sktlim@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
192689Sktlim@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
202689Sktlim@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
212689Sktlim@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
222689Sktlim@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
232689Sktlim@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
242689Sktlim@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
252689Sktlim@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
262689Sktlim@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
272689Sktlim@umich.edu *
282689Sktlim@umich.edu * Authors: Steve Reinhardt
292689Sktlim@umich.edu *          Nathan Binkert
302689Sktlim@umich.edu */
318793Sgblack@eecs.umich.edu
322683Sktlim@umich.edu#ifndef __NATIVETRACE_HH__
333402Sktlim@umich.edu#define __NATIVETRACE_HH__
342683Sktlim@umich.edu
358793Sgblack@eecs.umich.edu#include "base/trace.hh"
362683Sktlim@umich.edu#include "cpu/static_inst.hh"
378799Sgblack@eecs.umich.edu#include "sim/host.hh"
387679Sgblack@eecs.umich.edu#include "sim/insttracer.hh"
398706Sandreas.hansson@arm.com
408706Sandreas.hansson@arm.comclass ThreadContext;
418793Sgblack@eecs.umich.edu
422862Sktlim@umich.edu
438706Sandreas.hansson@arm.comnamespace Trace {
442862Sktlim@umich.edu
456331Sgblack@eecs.umich.educlass NativeTrace;
468834Satgutier@umich.edu
476031Ssteve.reinhardt@amd.comclass NativeTraceRecord : public InstRecord
482683Sktlim@umich.edu{
498799Sgblack@eecs.umich.edu  protected:
508799Sgblack@eecs.umich.edu    NativeTrace * parent;
512683Sktlim@umich.edu
522683Sktlim@umich.edu    bool
532683Sktlim@umich.edu    checkIntReg(const char * regName, int index, int size);
543486Sktlim@umich.edu
553486Sktlim@umich.edu    bool
568799Sgblack@eecs.umich.edu    checkPC(const char * regName, int size);
578706Sandreas.hansson@arm.com
588799Sgblack@eecs.umich.edu  public:
598706Sandreas.hansson@arm.com    NativeTraceRecord(NativeTrace * _parent,
608799Sgblack@eecs.umich.edu               Tick _when, ThreadContext *_thread,
618706Sandreas.hansson@arm.com               const StaticInstPtr &_staticInst, Addr _pc, bool spec)
623486Sktlim@umich.edu        : InstRecord(_when, _thread, _staticInst, _pc, spec), parent(_parent)
633486Sktlim@umich.edu    {
642862Sktlim@umich.edu    }
652862Sktlim@umich.edu
662862Sktlim@umich.edu    void dump();
672862Sktlim@umich.edu};
682862Sktlim@umich.edu
692862Sktlim@umich.educlass NativeTrace : public InstTracer
702862Sktlim@umich.edu{
718806Sgblack@eecs.umich.edu  protected:
728806Sgblack@eecs.umich.edu    int fd;
738806Sgblack@eecs.umich.edu
748806Sgblack@eecs.umich.edu    ListenSocket native_listener;
758806Sgblack@eecs.umich.edu
768806Sgblack@eecs.umich.edu  public:
778806Sgblack@eecs.umich.edu
788806Sgblack@eecs.umich.edu    NativeTrace(const std::string & name);
798806Sgblack@eecs.umich.edu
802862Sktlim@umich.edu    NativeTraceRecord *
812862Sktlim@umich.edu    getInstRecord(Tick when, ThreadContext *tc,
822862Sktlim@umich.edu            const StaticInstPtr staticInst, Addr pc)
832862Sktlim@umich.edu    {
842862Sktlim@umich.edu        if (tc->misspeculating())
852862Sktlim@umich.edu            return NULL;
862862Sktlim@umich.edu
872862Sktlim@umich.edu        return new NativeTraceRecord(this, when, tc,
882862Sktlim@umich.edu                staticInst, pc, tc->misspeculating());
892862Sktlim@umich.edu    }
908806Sgblack@eecs.umich.edu
918806Sgblack@eecs.umich.edu    friend class NativeTraceRecord;
928806Sgblack@eecs.umich.edu};
938806Sgblack@eecs.umich.edu
948806Sgblack@eecs.umich.edu/* namespace Trace */ }
958806Sgblack@eecs.umich.edu
968806Sgblack@eecs.umich.edu#endif // __EXETRACE_HH__
978806Sgblack@eecs.umich.edu