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