formatting, typos, comments, details

Change-Id: Iae5f1acb653a694622e9ac2bad93efcfca588f3a
This commit is contained in:
Horst Schirmeier
2013-10-14 14:43:39 +02:00
parent 7591c9edc5
commit 4cb97a7fa5
138 changed files with 1566 additions and 1576 deletions

View File

@ -1,6 +1,6 @@
#ifndef __ABO_SIMPLE_ARM_EXPERIMENT_HPP__
#define __ABO_SIMPLE_ARM_EXPERIMENT_HPP__
#define __ABO_SIMPLE_ARM_EXPERIMENT_HPP__
#include "efw/ExperimentFlow.hpp"
#include "efw/JobClient.hpp"

View File

@ -1,5 +1,5 @@
#ifndef __CHECKSUM_OOSTUBS_CAMPAIGN_HPP__
#define __CHECKSUM_OOSTUBS_CAMPAIGN_HPP__
#define __CHECKSUM_OOSTUBS_CAMPAIGN_HPP__
#include "cpn/Campaign.hpp"
#include "comm/ExperimentData.hpp"

View File

@ -36,7 +36,7 @@ bool ChecksumOOStuBSExperiment::run()
char const *statename = "checksum-oostubs.state";
Logger log("Checksum-OOStuBS", false);
BPSingleListener bp;
log << "startup" << endl;
#if 0
@ -107,7 +107,7 @@ bool ChecksumOOStuBSExperiment::run()
}
log << dec << "tracing finished after " << instr_counter << endl;
uint32_t results[OOSTUBS_RESULTS_BYTES / sizeof(uint32_t)];
simulator.getMemoryManager().getBytes(OOSTUBS_RESULTS_ADDR, sizeof(results), results);
for (unsigned i = 0; i < sizeof(results) / sizeof(*results); ++i) {
@ -124,7 +124,7 @@ bool ChecksumOOStuBSExperiment::run()
}
of.close();
log << "trace written to " << tracefile << endl;
#elif 1
// STEP 3: The actual experiment.
#if !LOCAL

View File

@ -1,6 +1,6 @@
#ifndef __CHECKSUM_OOSTUBS_EXPERIMENT_HPP__
#define __CHECKSUM_OOSTUBS_EXPERIMENT_HPP__
#define __CHECKSUM_OOSTUBS_EXPERIMENT_HPP__
#include "efw/ExperimentFlow.hpp"
#include "efw/JobClient.hpp"

View File

@ -1,5 +1,5 @@
#ifndef __EXPERIMENT_INFO_HPP__
#define __EXPERIMENT_INFO_HPP__
#define __EXPERIMENT_INFO_HPP__
// FIXME autogenerate this

View File

@ -52,7 +52,7 @@ bool CoolChecksumCampaign::run()
CoolChecksumExperimentData *d = new CoolChecksumExperimentData;
d->msg.set_instr_offset(instr_offset);
d->msg.set_bit_offset(bit_offset);
campaignmanager.addParam(d);
++count;
}
@ -107,8 +107,8 @@ bool CoolChecksumCampaign::run()
address_t instr_absolute = 0; // FIXME this one probably should also be recorded ...
Trace_Event ev;
ps.reset();
while(ps.getNext(&ev)) {
while (ps.getNext(&ev)) {
// only count instruction events
if (!ev.has_memaddr()) {
// new instruction
@ -131,7 +131,7 @@ bool CoolChecksumCampaign::run()
// we now have an interval-terminating R/W
// event to the memaddr we're currently looking
// at:
// complete the equivalence interval
current_ec.instr2 = instr;
current_ec.instr2_absolute = instr_absolute;
@ -150,7 +150,7 @@ bool CoolChecksumCampaign::run()
} else {
log << "WAT" << endl;
}
// next interval must start at next
// instruction; the aforementioned
// skipping mechanism wouldn't work

View File

@ -1,5 +1,5 @@
#ifndef __COOLCAMPAIGN_HPP__
#define __COOLCAMPAIGN_HPP__
#define __COOLCAMPAIGN_HPP__
#include "cpn/Campaign.hpp"
#include "comm/ExperimentData.hpp"

View File

@ -30,7 +30,7 @@ bool CoolChecksumExperiment::run()
{
Logger log("CoolChecksum", false);
BPSingleListener bp;
log << "startup" << endl;
#if 1

View File

@ -1,6 +1,6 @@
#ifndef __COOLEXPERIMENT_HPP__
#define __COOLEXPERIMENT_HPP__
#define __COOLEXPERIMENT_HPP__
#include "efw/ExperimentFlow.hpp"
#include "efw/JobClient.hpp"

View File

@ -1,5 +1,5 @@
#ifndef __EXPERIMENT_INFO_HPP__
#define __EXPERIMENT_INFO_HPP__
#define __EXPERIMENT_INFO_HPP__
#define COOL_FAULTSPACE_PRUNING 0

View File

@ -60,7 +60,7 @@ bool EcosKernelTestCampaign::readTraceInfo(unsigned &instr_counter, unsigned &ti
while (getline(file, buf)) {
stringstream ss(buf, ios::in);
switch(count) {
switch (count) {
case 0:
ss >> instr_counter;
break;

View File

@ -27,7 +27,7 @@
#define LOCAL 0
#ifndef PREREQUISITES
#error Configure experimentInfo.hpp properly!
#error Configure experimentInfo.hpp properly!
#endif
// create/use multiple snapshots to speed up long experiments
@ -113,7 +113,7 @@ bool EcosKernelTestExperiment::establishState(guest_address_t addr_entry, guest_
while (true) {
simulator.addListenerAndResume(&g);
if(g.getData() == 'Q') {
if (g.getData() == 'Q') {
log << "Guest system triggered: " << g.getData() << endl;
break;
}
@ -203,15 +203,15 @@ bool EcosKernelTestExperiment::performTrace(guest_address_t addr_entry, guest_ad
// do the job, 'till the end
BaseListener* ev = simulator.resume();
while(ev != &bp) {
if(ev == &ev_count) {
if(instr_counter++ == 0xFFFFFFFFU) {
while (ev != &bp) {
if (ev == &ev_count) {
if (instr_counter++ == 0xFFFFFFFFU) {
log << "ERROR: instr_counter overflowed" << endl;
return false;
}
simulator.addListener(&ev_count);
}
else if(ev == &ev_mem) {
else if (ev == &ev_mem) {
unsigned lo = ev_mem.getTriggerAddress();
unsigned hi = lo + ev_mem.getTriggerWidth() - 1;
@ -259,7 +259,7 @@ bool EcosKernelTestExperiment::performTrace(guest_address_t addr_entry, guest_ad
}
of.close();
log << "trace written to " << EcosKernelTestCampaign::filename_trace(m_variant, m_benchmark) << endl;
return true;
}
@ -301,7 +301,7 @@ bool EcosKernelTestExperiment::faultInjection() {
addr_data_start, addr_data_end;
BPSingleListener bp;
int experiments = 0;
#if !LOCAL
for (experiments = 0;
@ -511,7 +511,7 @@ bool EcosKernelTestExperiment::faultInjection() {
//BPSingleListener ev_end(ANY_ADDR);
//ev_end.setCounter(instr_counter - instr_offset + ECOS_RECOVERYINSTR);
//simulator.addListener(&ev_end);
// function called by ecc aspects, when an uncorrectable error is detected
BPSingleListener func_ecc_panic(addr_panic);
if (addr_panic != ADDR_INV) {
@ -558,7 +558,7 @@ bool EcosKernelTestExperiment::faultInjection() {
} else {
result->set_error_corrected(0);
}
// record ecos_test_result
if ( (ecos_test_passed == true) && (ecos_test_failed == false) ) {
result->set_ecos_test_result(result->PASS);

View File

@ -33,7 +33,7 @@ bool FaultCoverageExperiment::run()
d) trap triggered
---- restore previously saved simulator state
*/
// log the results on std::cout
Logger log("FaultCoverageExperiment", false);
@ -55,7 +55,7 @@ bool FaultCoverageExperiment::run()
// Note: This heavily uses the save-restore feature which causes
// causes a memory leak after several rounds (seg-fault).
// iterate over all registers
ConcreteCPU cpu = simulator.getCPU(0);
for (ConcreteCPU::iterator it = cpu.begin(); it != cpu.end(); it++) {

View File

@ -1,5 +1,5 @@
#ifndef __FAULT_COVERAGE_EXPERIMENT_HPP__
#define __FAULT_COVERAGE_EXPERIMENT_HPP__
#define __FAULT_COVERAGE_EXPERIMENT_HPP__
#include <iostream>
#include <fstream>
@ -7,7 +7,7 @@
#include "config/FailConfig.hpp"
#include "efw/ExperimentFlow.hpp"
#define INST_ADDR_FUNC_START 0x4ae6
#define INST_ADDR_FUNC_START 0x4ae6
#define INST_ADDR_FUNC_END 0x4be6
// Check if configuration dependencies are satisfied:

View File

@ -30,7 +30,7 @@ bool FireInterruptExperiment::run()
log << "experiment start" << endl;
#if 1
while (true) {
while (true) {
int j = 0;
for (j = 0; j <= 100; j++) {
BPSingleListener mainbp(0x1045f5);

View File

@ -1,5 +1,5 @@
#ifndef __FIREINTERRUPT_EXPERIMENT_HPP__
#define __FIREINTERRUPT_EXPERIMENT_HPP__
#define __FIREINTERRUPT_EXPERIMENT_HPP__
#include "efw/ExperimentFlow.hpp"

View File

@ -22,7 +22,7 @@ using namespace fail;
void GenericTracing::parseOptions() {
CommandLine &cmd = CommandLine::Inst();
CommandLine::option_handle IGNORE = cmd.addOption("", "", Arg::None, "USAGE: fail-client -Wf,[option] -Wf,[option] ... <BochsOptions...>\n\n");
cmd.addOption("", "", Arg::None, "USAGE: fail-client -Wf,[option] -Wf,[option] ... <BochsOptions...>\n\n");
CommandLine::option_handle HELP = cmd.addOption("h", "help", Arg::None, "-h,--help \tPrint usage and exit");
@ -35,18 +35,18 @@ void GenericTracing::parseOptions() {
CommandLine::option_handle SAVE_SYMBOL = cmd.addOption("S", "save-symbol", Arg::Required,
"-S,--save-symbol \tELF symbol to save the state of the machine (default: main)\n");
CommandLine::option_handle STATE_FILE = cmd.addOption("f", "state-file", Arg::Required,
"-f,--state-file \tFile/dir to save the state to (default state)");
"-f,--state-file \tFile/dir to save the state to (default: state)");
CommandLine::option_handle TRACE_FILE = cmd.addOption("t", "trace-file", Arg::Required,
"-t,--trace-file \tFile to save the execution trace to\n");
"-t,--trace-file \tFile to save the execution trace to (default: trace.pb)\n");
CommandLine::option_handle FULL_TRACE = cmd.addOption("", "full-trace", Arg::None, "--full-trace \tDo a full trace (more data, default: off)");
CommandLine::option_handle MEM_SYMBOL = cmd.addOption("m", "memory-symbol", Arg::Required,
"-m,--memory-symbol \tELF symbol(s) to trace accesses (default: all mem read/writes are traced)");
CommandLine::option_handle MEM_REGION = cmd.addOption("M", "memory-region", Arg::Required,
"-M,--memory-region \trestrict memory region which is traced"
" Possible formats: 0x<address>, 0x<address>:0x<address>, 0x<address>:<length>");
" (Possible formats: 0x<address>, 0x<address>:0x<address>, 0x<address>:<length>)");
if(!cmd.parse()) {
if (!cmd.parse()) {
cerr << "Error parsing arguments." << endl;
exit(-1);
}
@ -60,7 +60,7 @@ void GenericTracing::parseOptions() {
elf_file = cmd[ELF_FILE].first()->arg;
else {
char * elfpath = getenv("FAIL_ELF_PATH");
if(elfpath == NULL){
if (elfpath == NULL) {
m_log << "FAIL_ELF_PATH not set :( (alternative: --elf-file) " << std::endl;
exit(-1);
}
@ -102,7 +102,7 @@ void GenericTracing::parseOptions() {
use_memory_map = true;
option::Option *opt = cmd[MEM_SYMBOL].first();
while(opt != 0) {
while (opt != 0) {
const ElfSymbol &symbol = m_elf->getSymbol(opt->arg);
assert(symbol.isValid());
@ -118,7 +118,7 @@ void GenericTracing::parseOptions() {
use_memory_map = true;
option::Option *opt = cmd[MEM_REGION].first();
while(opt != 0) {
while (opt != 0) {
char *endptr;
guest_address_t begin = strtol(opt->arg, &endptr, 16);
guest_address_t size;
@ -130,14 +130,14 @@ void GenericTracing::parseOptions() {
char delim = *endptr;
if (delim == 0) {
size = 1;
} else if(delim == ':') {
} else if (delim == ':') {
char *p = endptr +1;
size = strtol(p, &endptr, 16) - begin;
if (p == endptr || *endptr != 0) {
m_log << "Couldn't parse " << opt->arg << std::endl;
exit(-1);
}
} else if(delim == '+') {
} else if (delim == '+') {
char *p = endptr +1;
size = strtol(p, &endptr, 10);
if (p == endptr || *endptr != 0) {

View File

@ -22,13 +22,13 @@ bool HSCSimpleExperiment::run()
// do funny things here...
#if 1
// STEP 1
// STEP 1
BPSingleListener mainbp(0x00003c34);
simulator.addListenerAndResume(&mainbp);
log << "breakpoint reached, saving" << endl;
simulator.save("hello.state");
#elif 0
// STEP 2
// STEP 2
log << "restoring ..." << endl;
simulator.restore("hello.state");
log << "restored!" << endl;

View File

@ -1,5 +1,5 @@
#ifndef __HSC_SIMPLE_EXPERIMENT_HPP__
#define __HSC_SIMPLE_EXPERIMENT_HPP__
#define __HSC_SIMPLE_EXPERIMENT_HPP__
#include "efw/ExperimentFlow.hpp"

View File

@ -132,7 +132,7 @@ bool KESOrefs::run()
while (executed_jobs < 25 || m_jc.getNumberOfUndoneJobs() > 0) {
m_log << "asking jobserver for parameters" << endl;
KesoRefExperimentData param;
if(!m_jc.getParam(param)){
if (!m_jc.getParam(param)) {
m_log << "Dying." << endl; // We were told to die.
simulator.terminate(1);
}
@ -218,7 +218,7 @@ bool KESOrefs::run()
m_log << "CDX has ended" << std::endl;
// Evaluate result
if(l == &l_error) {
if (l == &l_error) {
handleEvent(*result, result->EXC_ERROR, "exc error");
} else if ( l == &l_nullp ) {
handleEvent(*result, result->EXC_NULLPOINTER, "exc nullpointer");
@ -241,10 +241,10 @@ bool KESOrefs::run()
sstr << "trap #" << l_trap.getTriggerNumber();
handleEvent(*result, result->TRAP, sstr.str());
} else if (l == &l_mem_text){
} else if (l == &l_mem_text) {
handleMemoryAccessEvent(*result, l_mem_text);
} else if (l == &l_mem_outerspace){
} else if (l == &l_mem_outerspace) {
handleMemoryAccessEvent(*result, l_mem_outerspace);
} else {

View File

@ -452,7 +452,7 @@ void L4SysExperiment::collectInstructionTrace(fail::BPSingleListener* bp)
log << "mem accesses: " << mem << ", valid: " << mem_valid << std::endl;
#else
bp->setWatchInstructionPointer(ANY_ADDR);
while(bp->getTriggerInstructionPointer() != L4SYS_FUNC_EXIT)
while (bp->getTriggerInstructionPointer() != L4SYS_FUNC_EXIT)
{
fail::BaseListener *res = simulator.resume();
address_t curr_addr = 0;

View File

@ -36,7 +36,7 @@ using namespace fail;
bool NanoJPEGExperiment::run()
{
Logger log("nJPEG", true);
log << "startup" << endl;
#if PREPARATION == 1

View File

@ -1,6 +1,6 @@
#ifndef __NANOJPEG_EXPERIMENT_HPP__
#define __NANOJPEG_EXPERIMENT_HPP__
#define __NANOJPEG_EXPERIMENT_HPP__
#include "efw/ExperimentFlow.hpp"
#include "efw/JobClient.hpp"

View File

@ -70,7 +70,7 @@ bool PSNR::load_refimage(char const *refimage_filename)
// one whitespace character
fs.ignore();
get_remaining_file_contents(fs, refimg);
if (refimg.size() < refimg_width * refimg_height * 3) {
std::cerr << "image too small" << std::endl;

View File

@ -30,7 +30,7 @@ char const *
Udis86Helper::mnemonicToString(unsigned mnemonic)
{
switch(mnemonic) {
switch (mnemonic) {
CASE(UD_Iinvalid) CASE(UD_I3dnow) CASE(UD_Inone) CASE(UD_Idb) CASE(UD_Ipause) CASE(UD_Iaaa)
CASE(UD_Iaad) CASE(UD_Iaam) CASE(UD_Iaas) CASE(UD_Iadc) CASE(UD_Iadd) CASE(UD_Iaddpd)
CASE(UD_Iaddps) CASE(UD_Iaddsd) CASE(UD_Iaddss) CASE(UD_Iand) CASE(UD_Iandpd) CASE(UD_Iandps)
@ -141,67 +141,67 @@ char const *
Udis86Helper::typeToString(ud_type type)
{
switch (type) {
CASE(UD_NONE)
CASE(UD_NONE)
/* 8 bit GPRs */
CASE(UD_R_AL) CASE(UD_R_CL) CASE(UD_R_DL) CASE(UD_R_BL)
CASE(UD_R_AH) CASE(UD_R_CH) CASE(UD_R_DH) CASE(UD_R_BH)
CASE(UD_R_SPL) CASE(UD_R_BPL) CASE(UD_R_SIL) CASE(UD_R_DIL)
CASE(UD_R_R8B) CASE(UD_R_R9B) CASE(UD_R_R10B) CASE(UD_R_R11B)
CASE(UD_R_R12B) CASE(UD_R_R13B) CASE(UD_R_R14B) CASE(UD_R_R15B)
CASE(UD_R_AL) CASE(UD_R_CL) CASE(UD_R_DL) CASE(UD_R_BL)
CASE(UD_R_AH) CASE(UD_R_CH) CASE(UD_R_DH) CASE(UD_R_BH)
CASE(UD_R_SPL) CASE(UD_R_BPL) CASE(UD_R_SIL) CASE(UD_R_DIL)
CASE(UD_R_R8B) CASE(UD_R_R9B) CASE(UD_R_R10B) CASE(UD_R_R11B)
CASE(UD_R_R12B) CASE(UD_R_R13B) CASE(UD_R_R14B) CASE(UD_R_R15B)
/* 16 bit GPRs */
CASE(UD_R_AX) CASE(UD_R_CX) CASE(UD_R_DX) CASE(UD_R_BX)
CASE(UD_R_SP) CASE(UD_R_BP) CASE(UD_R_SI) CASE(UD_R_DI)
CASE(UD_R_R8W) CASE(UD_R_R9W) CASE(UD_R_R10W) CASE(UD_R_R11W)
CASE(UD_R_R12W) CASE(UD_R_R13W) CASE(UD_R_R14W) CASE(UD_R_R15W)
CASE(UD_R_AX) CASE(UD_R_CX) CASE(UD_R_DX) CASE(UD_R_BX)
CASE(UD_R_SP) CASE(UD_R_BP) CASE(UD_R_SI) CASE(UD_R_DI)
CASE(UD_R_R8W) CASE(UD_R_R9W) CASE(UD_R_R10W) CASE(UD_R_R11W)
CASE(UD_R_R12W) CASE(UD_R_R13W) CASE(UD_R_R14W) CASE(UD_R_R15W)
/* 32 bit GPRs */
CASE(UD_R_EAX) CASE(UD_R_ECX) CASE(UD_R_EDX) CASE(UD_R_EBX)
CASE(UD_R_ESP) CASE(UD_R_EBP) CASE(UD_R_ESI) CASE(UD_R_EDI)
CASE(UD_R_R8D) CASE(UD_R_R9D) CASE(UD_R_R10D) CASE(UD_R_R11D)
CASE(UD_R_R12D) CASE(UD_R_R13D) CASE(UD_R_R14D) CASE(UD_R_R15D)
CASE(UD_R_EAX) CASE(UD_R_ECX) CASE(UD_R_EDX) CASE(UD_R_EBX)
CASE(UD_R_ESP) CASE(UD_R_EBP) CASE(UD_R_ESI) CASE(UD_R_EDI)
CASE(UD_R_R8D) CASE(UD_R_R9D) CASE(UD_R_R10D) CASE(UD_R_R11D)
CASE(UD_R_R12D) CASE(UD_R_R13D) CASE(UD_R_R14D) CASE(UD_R_R15D)
/* 64 bit GPRs */
CASE(UD_R_RAX) CASE(UD_R_RCX) CASE(UD_R_RDX) CASE(UD_R_RBX)
CASE(UD_R_RSP) CASE(UD_R_RBP) CASE(UD_R_RSI) CASE(UD_R_RDI)
CASE(UD_R_R8) CASE(UD_R_R9) CASE(UD_R_R10) CASE(UD_R_R11)
CASE(UD_R_R12) CASE(UD_R_R13) CASE(UD_R_R14) CASE(UD_R_R15)
CASE(UD_R_RAX) CASE(UD_R_RCX) CASE(UD_R_RDX) CASE(UD_R_RBX)
CASE(UD_R_RSP) CASE(UD_R_RBP) CASE(UD_R_RSI) CASE(UD_R_RDI)
CASE(UD_R_R8) CASE(UD_R_R9) CASE(UD_R_R10) CASE(UD_R_R11)
CASE(UD_R_R12) CASE(UD_R_R13) CASE(UD_R_R14) CASE(UD_R_R15)
/* segment registers */
CASE(UD_R_ES) CASE(UD_R_CS) CASE(UD_R_SS) CASE(UD_R_DS)
CASE(UD_R_FS) CASE(UD_R_GS)
CASE(UD_R_ES) CASE(UD_R_CS) CASE(UD_R_SS) CASE(UD_R_DS)
CASE(UD_R_FS) CASE(UD_R_GS)
/* control registers*/
CASE(UD_R_CR0) CASE(UD_R_CR1) CASE(UD_R_CR2) CASE(UD_R_CR3)
CASE(UD_R_CR4) CASE(UD_R_CR5) CASE(UD_R_CR6) CASE(UD_R_CR7)
CASE(UD_R_CR8) CASE(UD_R_CR9) CASE(UD_R_CR10) CASE(UD_R_CR11)
CASE(UD_R_CR12) CASE(UD_R_CR13) CASE(UD_R_CR14) CASE(UD_R_CR15)
CASE(UD_R_CR0) CASE(UD_R_CR1) CASE(UD_R_CR2) CASE(UD_R_CR3)
CASE(UD_R_CR4) CASE(UD_R_CR5) CASE(UD_R_CR6) CASE(UD_R_CR7)
CASE(UD_R_CR8) CASE(UD_R_CR9) CASE(UD_R_CR10) CASE(UD_R_CR11)
CASE(UD_R_CR12) CASE(UD_R_CR13) CASE(UD_R_CR14) CASE(UD_R_CR15)
/* debug registers */
CASE(UD_R_DR0) CASE(UD_R_DR1) CASE(UD_R_DR2) CASE(UD_R_DR3)
CASE(UD_R_DR4) CASE(UD_R_DR5) CASE(UD_R_DR6) CASE(UD_R_DR7)
CASE(UD_R_DR8) CASE(UD_R_DR9) CASE(UD_R_DR10) CASE(UD_R_DR11)
CASE(UD_R_DR12) CASE(UD_R_DR13) CASE(UD_R_DR14) CASE(UD_R_DR15)
CASE(UD_R_DR0) CASE(UD_R_DR1) CASE(UD_R_DR2) CASE(UD_R_DR3)
CASE(UD_R_DR4) CASE(UD_R_DR5) CASE(UD_R_DR6) CASE(UD_R_DR7)
CASE(UD_R_DR8) CASE(UD_R_DR9) CASE(UD_R_DR10) CASE(UD_R_DR11)
CASE(UD_R_DR12) CASE(UD_R_DR13) CASE(UD_R_DR14) CASE(UD_R_DR15)
/* mmx registers */
CASE(UD_R_MM0) CASE(UD_R_MM1) CASE(UD_R_MM2) CASE(UD_R_MM3)
CASE(UD_R_MM4) CASE(UD_R_MM5) CASE(UD_R_MM6) CASE(UD_R_MM7)
CASE(UD_R_MM0) CASE(UD_R_MM1) CASE(UD_R_MM2) CASE(UD_R_MM3)
CASE(UD_R_MM4) CASE(UD_R_MM5) CASE(UD_R_MM6) CASE(UD_R_MM7)
/* x87 registers */
CASE(UD_R_ST0) CASE(UD_R_ST1) CASE(UD_R_ST2) CASE(UD_R_ST3)
CASE(UD_R_ST4) CASE(UD_R_ST5) CASE(UD_R_ST6) CASE(UD_R_ST7)
CASE(UD_R_ST0) CASE(UD_R_ST1) CASE(UD_R_ST2) CASE(UD_R_ST3)
CASE(UD_R_ST4) CASE(UD_R_ST5) CASE(UD_R_ST6) CASE(UD_R_ST7)
/* extended multimedia registers */
CASE(UD_R_XMM0) CASE(UD_R_XMM1) CASE(UD_R_XMM2) CASE(UD_R_XMM3)
CASE(UD_R_XMM4) CASE(UD_R_XMM5) CASE(UD_R_XMM6) CASE(UD_R_XMM7)
CASE(UD_R_XMM8) CASE(UD_R_XMM9) CASE(UD_R_XMM10) CASE(UD_R_XMM11)
CASE(UD_R_XMM12) CASE(UD_R_XMM13) CASE(UD_R_XMM14) CASE(UD_R_XMM15)
CASE(UD_R_XMM0) CASE(UD_R_XMM1) CASE(UD_R_XMM2) CASE(UD_R_XMM3)
CASE(UD_R_XMM4) CASE(UD_R_XMM5) CASE(UD_R_XMM6) CASE(UD_R_XMM7)
CASE(UD_R_XMM8) CASE(UD_R_XMM9) CASE(UD_R_XMM10) CASE(UD_R_XMM11)
CASE(UD_R_XMM12) CASE(UD_R_XMM13) CASE(UD_R_XMM14) CASE(UD_R_XMM15)
CASE(UD_R_RIP)
CASE(UD_R_RIP)
/* Operand Types */
CASE(UD_OP_REG) CASE(UD_OP_MEM) CASE(UD_OP_PTR) CASE(UD_OP_IMM)
CASE(UD_OP_REG) CASE(UD_OP_MEM) CASE(UD_OP_PTR) CASE(UD_OP_IMM)
CASE(UD_OP_JIMM) CASE(UD_OP_CONST)
default:
return "???";

View File

@ -48,7 +48,7 @@ bool PerfTestExperiment::run()
#if 1
log << "Activated: CASE A (Best-Case)..." << endl;
// Case A): A lot of non-BP listeners a only one (or none) BPs:
log << "Adding " << NON_BP_COUNT << " non-BP listeners..." << endl;
MemReadListener mrl[NON_BP_COUNT];
for (unsigned i = 0; i < NON_BP_COUNT; ++i) {

View File

@ -112,7 +112,7 @@ uint64_t RAMpageCampaign::reverse_bits(uint64_t v)
int s = sizeof(v) * CHAR_BIT - 1; // extra shift needed at end
for (v >>= 1; v; v >>= 1)
{
{
r <<= 1;
r |= v & 1;
s--;

View File

@ -1,6 +1,6 @@
#ifndef __RAMPAGE_EXPERIMENT_HPP__
#define __RAMPAGE_EXPERIMENT_HPP__
#define __RAMPAGE_EXPERIMENT_HPP__
#include <string>
#include <ctime>

View File

@ -17,7 +17,7 @@
|| !defined(CONFIG_EVENT_GUESTSYS) || !defined(CONFIG_EVENT_INTERRUPT) \
|| !defined(CONFIG_EVENT_IOPORT) || !defined(CONFIG_EVENT_JUMP) || !defined(CONFIG_EVENT_MEMREAD) \
|| !defined(CONFIG_EVENT_MEMWRITE) || !defined(CONFIG_EVENT_TRAP) || !defined(CONFIG_SR_REBOOT) \
|| !defined(CONFIG_SR_SAVE) || !defined(CONFIG_SR_RESTORE) || !defined(CONFIG_SUPPRESS_INTERRUPTS)
|| !defined(CONFIG_SR_SAVE) || !defined(CONFIG_SR_RESTORE) || !defined(CONFIG_SUPPRESS_INTERRUPTS)
#error This experiment needs: all CONFIG_EVENT_*, all CONFIG_SR_* and the CONFIG_SUPPRESS_INTERRUPTS flag. Enable these in the configuration.
#endif
@ -25,17 +25,17 @@ using namespace std;
using namespace fail;
bool RegressionTest::run()
{
{
unsigned instrAddr_at_save = 0;
BaseListener *ev;
//Result-File
fstream file ("regression-test.results", ios::out | ios::trunc);
file << "experiment start" << endl;
//Wait for correct start point
GuestListener g;
while (simulator.addListenerAndResume(&g) == &g) {
if (g.getData() == 'A') {
file << "Found start-point with signal: " << g.getData() << endl;
@ -43,25 +43,25 @@ bool RegressionTest::run()
break;
}
}
//Watchdog-Timer
TimerListener watchdog(100000);
simulator.addListener(&watchdog);
//Save state
file << "Saving state." << endl;
simulator.save("regression-save");
instrAddr_at_save = simulator.getCPU(0).getInstructionPointer();
//Start Plugins
TracingPlugin tp;
ofstream of("regression-trace.results");
tp.setOstream(&of);
simulator.addFlow(&tp);
SerialOutput so(0x3F8);
simulator.addFlow(&so);
//BPListener
BPSingleListener bp_test(REGRESSION_FUNC_BP);
BPSingleListener mem_read_test(REGRESSION_FUNC_MEM_READ);
@ -76,53 +76,53 @@ bool RegressionTest::run()
simulator.addListener(&trap_test);
simulator.addListener(&jump_test);
simulator.addListener(&interrupt_test);
while (true) {
simulator.removeListener(&watchdog);
simulator.addListener(&watchdog);
ev = simulator.resume();
if (ev == &bp_test) {
file << "Breakpoint-Test start." << endl;
BPSingleListener mainbp(ANY_ADDR);
BPSingleListener mainbp(ANY_ADDR);
mainbp.setCounter(1000);
BPRangeListener bprange(REGRESSION_FUNC_LOOP_DONE, REGRESSION_FUNC_LOOP_DONE);
BPSingleListener breakcounter(REGRESSION_FUNC_LOOP_DONE);
simulator.addListener(&breakcounter);
int count = 0;
while(true){
while (true) {
BaseListener* ev = simulator.resume();
if(ev == &breakcounter || ev == &bprange) {
if (ev == &breakcounter || ev == &bprange) {
count++;
//First 5 times test BPSingleListener
if(count < 5){
if (count < 5) {
simulator.addListener(&breakcounter);
//Next 5 times test BPRangeListener
}else if(count < 10){
} else if (count < 10) {
simulator.addListener(&bprange);
//At 10 run of loop start BPSingleListener, BPRangeListener, mainListener
//which waits 1000 instructions.
}else if(count == 10){
//At 10 run of loop start BPSingleListener, BPRangeListener, mainListener
//which waits 1000 instructions.
} else if (count == 10) {
simulator.addListener(&breakcounter);
simulator.addListener(&bprange);
simulator.addListener(&mainbp);
//If mainListener fires not first the test failes.
}else if(count >= 10){
}else if (count >= 10) {
file << "Breakpoint-Test FAILED."<< endl;
break;
}
//If mainListener fires first the test success.
}else if(ev == &mainbp) {
} else if (ev == &mainbp) {
file << "Breakpoint-Test SUCCESSFUL." <<endl;
break;
}else if (ev == &watchdog) {
} else if (ev == &watchdog) {
file << "Breakpoint-Test FAILED --> Watchdog fired. Timeout!" << endl;
}
}
@ -130,63 +130,63 @@ bool RegressionTest::run()
simulator.removeListener(&breakcounter);
simulator.removeListener(&bprange);
simulator.removeListener(&mainbp);
} else if (ev == &mem_read_test) {
file << "Memory-Read-Test start." << endl;
MemReadListener memread(REGRESSION_VAR_MTEST_READ);
simulator.addListener(&memread);
simulator.resume();
file << "Memaddr-Read: " << hex << memread.getTriggerAddress() << dec << endl;
if(memread.getTriggerAddress() == REGRESSION_VAR_MTEST_READ) {
if (memread.getTriggerAddress() == REGRESSION_VAR_MTEST_READ) {
file << "Memory-Read-Test SUCCESSFUL." << endl;
} else {
file << "Memory-Read-Test FAILED." << endl;
}
file << "Memory-Read-Test end." << endl;
simulator.removeListener(&memread);
} else if (ev == &mem_write_test) {
file << "Memory-Write-Test start." << endl;
MemWriteListener memwrite(REGRESSION_VAR_MTEST_WRITE);
simulator.addListener(&memwrite);
simulator.resume();
file << "Memaddr-WRITE: " << hex << memwrite.getTriggerAddress() << dec << endl;
if(memwrite.getTriggerAddress() == REGRESSION_VAR_MTEST_WRITE) {
if (memwrite.getTriggerAddress() == REGRESSION_VAR_MTEST_WRITE) {
file << "Memory-Write-Test SUCCESSFUL." << endl;
} else {
file << "Memory-Write-Test FAILED." << endl;
}
file << "Memory-Write-Test end." << endl;
} else if (ev == &trap_test) {
file << "Trap-Test start" << endl;
TrapListener trap(ANY_TRAP);
simulator.addListener(&trap);
simulator.resume();
file << "Trap found: " << trap.getTriggerNumber() << endl;
file << "Trap-Test end" << endl;
simulator.removeListener(&trap);
//After a division-error trap ecos halts the cpu
//Because of this a restore to start point is needed
simulator.restore("regression-save");
if (simulator.getCPU(0).getInstructionPointer() == instrAddr_at_save) {
file << "Save-/Restore-Test SUCCESSFUL." << endl;
} else {
@ -196,44 +196,44 @@ bool RegressionTest::run()
file << "Instructionpointer after restore: " << \
simulator.getCPU(0).getInstructionPointer() << endl;
}
// Reboot test
file << "Reboot-Test start" << endl;
BPSingleListener bpReboot(ANY_ADDR);
simulator.addListener(&bpReboot);
simulator.resume();
long beforeReboot = bpReboot.getTriggerInstructionPointer();
file << "Before Reboot-Addr: 0x" << hex << beforeReboot << dec << endl;
simulator.reboot();
simulator.reboot();
bpReboot.setWatchInstructionPointer(beforeReboot);
simulator.addListener(&bpReboot);
simulator.resume();
long afterReboot = bpReboot.getTriggerInstructionPointer();
file << "After Reboot-Addr: 0x" << hex << afterReboot << dec << endl;
if (beforeReboot == afterReboot){
if (beforeReboot == afterReboot) {
file << "Reboot-Test SUCCESSFUL." << endl;
}else {
} else {
file << "Reboot-Test FAILED." << endl;
}
file << "Reboot-Test end" << endl;
simulator.removeListener(&bpReboot);
file << "Serial-Output: " << so.getOutput() << endl;
file.flush();
of.flush();
simulator.terminate();
} else if (ev == &jump_test) {
@ -242,36 +242,36 @@ bool RegressionTest::run()
JumpListener jump(ANY_INSTR);
simulator.addListener(&jump);
simulator.resume();
file << "Jump-Instruction found: " << jump.getOpcode() << endl;
file << "current Instruction-Pointer: 0x" << hex <<\
simulator.getCPU(0).getInstructionPointer() << dec << endl;
file << "Jump-Test end" << endl;
simulator.removeListener(&jump);
} else if (ev == &interrupt_test) {
file << "Interrupt-Test start" << endl;
InterruptListener interrupt(32);
simulator.addListener(&interrupt);
ev = simulator.resume();
if (ev == &interrupt) {
file << "Interrupt-Test SUCCESSFUL. Interruptnum: " << interrupt.getTriggerNumber() \
<< endl;
}
file << "Interrupt-Test end" << endl;
} else if (ev == &watchdog) {
file << "Watchdog fired. Timeout!" << endl;
}
}
file << "experiment end" << endl;
return true;
}

View File

@ -7,7 +7,7 @@ class RegressionTest : public fail::ExperimentFlow
{
public:
RegressionTest() { }
bool run();
};

View File

@ -305,7 +305,7 @@ bool WeatherMonitorCampaign::run()
// is not the case in this experiment, and with -1 we'll get a result
// comparable to the non-pruned campaign.
// XXX still true for weathermonitor?
current_ec.instr2 = instr - 1;
current_ec.instr2_absolute = 0; // unknown
current_ec.data_address = data_address;

View File

@ -36,7 +36,7 @@ bool WeatherMonitorExperiment::run()
char const *statename = "bochs.state" WEATHER_SUFFIX;
Logger log("Weathermonitor", false);
BPSingleListener bp;
log << "startup" << endl;
#if 1
@ -160,11 +160,11 @@ bool WeatherMonitorExperiment::run()
int id = param.getWorkloadID();
int instr_offset = param.msg.instr_offset();
int mem_addr = param.msg.mem_addr();
// Choose the bit_offset for this gem5 build.
// Choose the bit_offset for this gem5 build.
// To test all 8 bits, 8 campaign runs are needed.
int bit_offset = 0;
// 8 results in one job
WeathermonitorProtoMsg_Result *result = param.msg.add_result();
result->set_bit_offset(bit_offset);

View File

@ -1,6 +1,6 @@
#ifndef __WEATHERMONITOR_EXPERIMENT_HPP__
#define __WEATHERMONITOR_EXPERIMENT_HPP__
#define __WEATHERMONITOR_EXPERIMENT_HPP__
#include "efw/ExperimentFlow.hpp"
#include "efw/JobClient.hpp"

View File

@ -37,7 +37,7 @@ bool WeatherMonitorExperiment::run()
char const *statename = "bochs.state" WEATHER_SUFFIX;
Logger log("Weathermonitor", false);
BPSingleListener bp;
log << "startup" << endl;
/*
@ -179,7 +179,7 @@ bool WeatherMonitorExperiment::run()
for (int bit_offset = 0; bit_offset < 8; ++bit_offset) {
// 8 results in one job
WeathermonitorProtoMsg_Result *result = param.msg.add_result();
result->set_bitoffset(bit_offset);
result->set_bitoffset(bit_offset);
log << dec << "job " << id << " instr " << injection_instr
<< " mem " << data_address << "+" << bit_offset << endl;

View File

@ -1,6 +1,6 @@
#ifndef __WEATHERMONITOR_EXPERIMENT_HPP__
#define __WEATHERMONITOR_EXPERIMENT_HPP__
#define __WEATHERMONITOR_EXPERIMENT_HPP__
#include "efw/ExperimentFlow.hpp"
#include "efw/JobClient.hpp"