src/Sim/System/SystemBase.h

説明を見る。
00001 // 
00002 // Copyright (c) 2005-2008 Kenichi Watanabe.
00003 // Copyright (c) 2005-2008 Yasuhiro Watari.
00004 // Copyright (c) 2005-2008 Hironori Ichibayashi.
00005 // Copyright (c) 2008-2009 Kazuo Horio.
00006 // Copyright (c) 2009-2013 Naruki Kurata.
00007 // Copyright (c) 2005-2013 Ryota Shioya.
00008 // Copyright (c) 2005-2013 Masahiro Goshima.
00009 // 
00010 // This software is provided 'as-is', without any express or implied
00011 // warranty. In no event will the authors be held liable for any damages
00012 // arising from the use of this software.
00013 // 
00014 // Permission is granted to anyone to use this software for any purpose,
00015 // including commercial applications, and to alter it and redistribute it
00016 // freely, subject to the following restrictions:
00017 // 
00018 // 1. The origin of this software must not be misrepresented; you must not
00019 // claim that you wrote the original software. If you use this software
00020 // in a product, an acknowledgment in the product documentation would be
00021 // appreciated but is not required.
00022 // 
00023 // 2. Altered source versions must be plainly marked as such, and must not be
00024 // misrepresented as being the original software.
00025 // 
00026 // 3. This notice may not be removed or altered from any source
00027 // distribution.
00028 // 
00029 // 
00030 
00031 
00032 #ifndef SIM_SYSTEM_SYSTEM_BASE_H
00033 #define SIM_SYSTEM_SYSTEM_BASE_H
00034 
00035 #include "Sim/Foundation/Hook/Hook.h"
00036 
00037 #include "Sim/Thread/Thread.h"
00038 #include "Sim/Core/Core.h"
00039 #include "Interface/EmulatorIF.h"
00040 #include "Env/Param/ParamExchange.h"
00041 #include "Sim/Foundation/Resource/Builder/ResourceBuilder.h"
00042 
00043 #include "Sim/System/GlobalClock.h"
00044 #include "Sim/System/SimulationSystem/EmulatorWrapper.h"
00045 #include "Sim/System/ArchitectureState.h"
00046 
00047 namespace Onikiri 
00048 {
00049     class ForwardEmulator;
00050 
00051     // Notify  SystemManager oRCSystemBase RNX
00052     // SystemManagerIF::SetSystem oRゥg SystemManager o^KvD
00053     // Cゥgj SystemManagerIF::SetSystem oRゥgo^KvD
00054     // COSystemBase RNXjCK
00055     // SystemManager o^oD
00056     class SystemManagerIF
00057     {
00058     public:
00059         virtual ~SystemManagerIF(){};
00060         virtual void SetSystem( SystemIF* system ) = 0;
00061     };
00062 
00063     // vZbTSNX
00064     class SystemBase : public SystemIF
00065     {
00066     public:
00067     
00068         struct SystemContext
00069         {
00070             SystemContext();
00071             String targetArchitecture;  // Target architecture
00072             String mode;                // Simulation mode
00073 
00074             s64 executionCycles;    
00075             s64 executionInsns;
00076 
00077             s64 executedCycles; 
00078             std::vector<s64> executedInsns; // Executed insns in each thread.
00079 
00080             PhysicalResourceArray<Core>   cores;        // Todo: support non-uniform multi core
00081             PhysicalResourceArray<Thread> threads;
00082             PhysicalResourceArray<Cache>  caches;
00083             GlobalClock*                    globalClock;
00084             ForwardEmulator*                forwardEmulator;
00085             
00086             EmulatorIF*     emulator;
00087             EmulatorWrapper emulatorWrapper;
00088 
00089             ResourceBuilder *resBuilder;
00090             ArchitectureStateList architectureStateList;
00091 
00092             struct InorderParam
00093             {
00094                 bool enableBPred;
00095                 bool enableHMPred;
00096                 bool enableCache;
00097             };
00098             InorderParam inorderParam;
00099 
00100             struct DebugParam
00101             {
00102                 int debugPort;
00103             };
00104             DebugParam debugParam;
00105         };
00106 
00107         virtual void Run( SystemContext* context ) = 0;
00108 
00109         // SystemIF
00110         virtual void NotifyProcessTermination(int pid){}
00111         virtual void NotifySyscallReadFileToMemory(const Addr& addr, u64 size){}
00112         virtual void NotifySyscallWriteFileFromMemory(const Addr& addr, u64 size){}
00113         virtual void NotifyMemoryAllocation(const Addr& addr, u64 size, bool allocate){};
00114 
00115         //
00116         SystemBase();
00117         virtual ~SystemBase();
00118         void SetSystemManager( SystemManagerIF* systemManager );
00119 
00120     protected:
00121         SystemManagerIF* m_systemManager;
00122     };
00123 
00124 }; // namespace Onikiri
00125 
00126 #endif // SIM_SYSTEM_SYSTEM_BASE_H
00127 

Onikiri2に対してTue Jun 18 14:34:26 2013に生成されました。  doxygen 1.4.7