Basic SAL files and makefile modifications for adding gem5.

git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1457 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
friemel
2012-07-17 15:35:29 +00:00
parent ef45841b91
commit c06565aa4e
14 changed files with 100 additions and 4 deletions

View File

@ -27,13 +27,17 @@ SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
include(compilerconfig) include(compilerconfig)
#### #OPTION to configure Bochs/OVP #### #### #OPTION to configure Bochs/OVP ####
OPTION(BUILD_OVP "Build OVP Variant?" OFF) # Defaults to BOCHS ON OPTION( BUILD_OVP "Build OVP Variant?" OFF) # Defaults to BOCHS ON
OPTION(BUILD_BOCHS "Build Bochs Variant?" ON) OPTION( BUILD_GEM5 "Build gem5 Variant?" OFF)
OPTION( BUILD_BOCHS "Build Bochs Variant?" ON)
if(BUILD_BOCHS) if(BUILD_BOCHS)
## add necessary additional header search paths. ## add necessary additional header search paths.
#add_definitions(-I${CMAKE_SOURCE_DIR}/simulators/bochs/instrument/stubs/ -I${CMAKE_SOURCE_DIR}/simulators/bochs) #add_definitions(-I${CMAKE_SOURCE_DIR}/simulators/bochs/instrument/stubs/ -I${CMAKE_SOURCE_DIR}/simulators/bochs)
include_directories(simulators/bochs/instrument/stubs simulators/bochs) include_directories(simulators/bochs/instrument/stubs simulators/bochs)
elseif(BUILD_GEM5)
include_directories(simulators/gem5/src simulators/gem5/build/ARM)
add_definitions(-std=c++0x)
elseif(BUILD_OVP) elseif(BUILD_OVP)
add_subdirectory(simulators/ovp) add_subdirectory(simulators/ovp)
endif(BUILD_BOCHS) endif(BUILD_BOCHS)
@ -55,6 +59,7 @@ add_subdirectory(src)
#### Backend-related build system stuff #### Backend-related build system stuff
include(bochs) include(bochs)
include(ovp) include(ovp)
include(gem5)
## Just for testing: ## Just for testing:
## Invoking bochs build via external project ## Invoking bochs build via external project

7
cmake/gem5.cmake Normal file
View File

@ -0,0 +1,7 @@
#### gem5-specific stuff
if(BUILD_GEM5)
message(STATUS "[${PROJECT_NAME}] Building gem5 variant ...")
SET(VARIANT gem5)
#set(gem5_src_dir ${PROJECT_SOURCE_DIR}/simulators/gem5)
endif(BUILD_GEM5)

View File

@ -0,0 +1 @@
scons EXTRAS=../../src/core/sal/gem5 --colors build/ARM/gem5.debug -j4

View File

@ -3,5 +3,6 @@
#cmakedefine BUILD_OVP #cmakedefine BUILD_OVP
#cmakedefine BUILD_BOCHS #cmakedefine BUILD_BOCHS
#cmakedefine BUILD_GEM5
#endif // __VARIANT_CONFIG_HPP__ #endif // __VARIANT_CONFIG_HPP__

View File

@ -137,7 +137,7 @@ void JobServer::run()
saddr.sin_addr.s_addr = htons(INADDR_ANY); saddr.sin_addr.s_addr = htons(INADDR_ANY);
/* bind to port */ /* bind to port */
if (bind(s, (struct sockaddr*) &saddr, sizeof(saddr)) == -1) { if (::bind(s, (struct sockaddr*) &saddr, sizeof(saddr)) == -1) {
perror("bind"); perror("bind");
// TODO: Log-level? // TODO: Log-level?
return; return;

View File

@ -9,7 +9,7 @@ if(BUILD_BOCHS)
bochs/BochsController.cc bochs/BochsController.cc
bochs/BochsListener.cc bochs/BochsListener.cc
) )
else() elseif(BUILD_OVP)
set(SRCS set(SRCS
BufferCache.cc BufferCache.cc
Listener.cc Listener.cc
@ -19,6 +19,16 @@ else()
SimulatorController.cc SimulatorController.cc
${VARIANT}/OVPController.cc ${VARIANT}/OVPController.cc
) )
elseif(BUILD_GEM5)
set(SRCS
BufferCache.cc
Listener.cc
ListenerManager.cc
Memory.cc
Register.cc
SimulatorController.cc
gem5/Gem5Controller.cc
)
endif(BUILD_BOCHS) endif(BUILD_BOCHS)
add_library(sal ${SRCS}) add_library(sal ${SRCS})

View File

@ -10,6 +10,8 @@
#include "bochs/BochsConfig.hpp" #include "bochs/BochsConfig.hpp"
#elif defined BUILD_OVP #elif defined BUILD_OVP
#include "ovp/OVPConfig.hpp" #include "ovp/OVPConfig.hpp"
#elif defined BUILD_GEM5
#include "gem5/Gem5Config.hpp"
#else #else
#error SAL Config Target not defined #error SAL Config Target not defined
#endif #endif

View File

@ -26,6 +26,17 @@ extern ConcreteSimulatorController simulator; //!< the global simulator-controll
} }
#elif defined BUILD_GEM5
#include "gem5/Gem5Controller.hpp"
namespace fail {
typedef Gem5Controller ConcreteSimulatorController; //!< concrete simulator (type)
extern ConcreteSimulatorController simulator; //!< the global simulator-controller instance
}
#else #else
#error SAL Instance not defined #error SAL Instance not defined
#endif #endif

View File

@ -0,0 +1,22 @@
/**
* \brief Type definitions and configuration settings for
* the gem5 simulator.
*/
#ifndef __GEM5_CONFIG_HPP__
#define __GEM5_CONFIG_HPP__
#include "base/types.hh"
#include "arch/arm/registers.hh"
namespace fail {
typedef Addr guest_address_t; //!< the guest memory address type
// TODO: Set Host Address Type
typedef void* host_address_t; //!< the host memory address type
typedef ArmISA::AnyReg register_data_t; //!< register data type (32 bit)
typedef int timer_t; //!< type of timer IDs
} // end-of-namespace: fail
#endif // __GEM5_CONFIG_HPP__

View File

@ -0,0 +1,7 @@
namespace fail {
int interrupt_to_fire = -1;
} // end-of-namespace: fail

View File

@ -0,0 +1,19 @@
#ifndef __GEM5_CONTROLLER_HPP__
#define __GEM5_CONTROLLER_HPP__
#include "../SimulatorController.hpp"
namespace fail {
extern int interrupt_to_fire;
class Gem5Controller : public SimulatorController {
public:
virtual void save(const std::string &path);
virtual void restore(const std::string &path);
virtual void reboot();
};
} // end-of-namespace: fail
#endif // __GEM_CONTROLLER_HPP__

View File

@ -0,0 +1,9 @@
Import('*')
if env['TARGET_ISA'] == 'no':
Return()
env.Append(CPPPATH=Dir('../../../../../src/core/'))
env.Append(CPPPATH=Dir('../../../../../build/src/core/'))
Source('faildev.cc')

View File

@ -0,0 +1 @@
#include "faildev.hh"

View File

@ -0,0 +1 @@
#include "../SALInst.hpp"