ecos_kernel_test: wait with timer in step 0 again, otherwise bochs crashes ; updated binaries
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1479 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
@ -45,14 +45,18 @@ bool EcosKernelTestExperiment::retrieveGuestAddresses() {
|
|||||||
// workaround for 00002808875p[BIOS ] >>PANIC<< Keyboard error:21
|
// workaround for 00002808875p[BIOS ] >>PANIC<< Keyboard error:21
|
||||||
// *** If the first listener is a TimerListener, FailBochs panics. ***
|
// *** If the first listener is a TimerListener, FailBochs panics. ***
|
||||||
// *** Therefore, just wait one instruction before using a timer. ***
|
// *** Therefore, just wait one instruction before using a timer. ***
|
||||||
// BPSingleListener bp;
|
|
||||||
// bp.setWatchInstructionPointer(ANY_ADDR);
|
|
||||||
// simulator.addListenerAndResume(&bp);
|
|
||||||
|
|
||||||
// run until 'ECOS_FUNC_FINISH' is reached
|
|
||||||
BPSingleListener bp;
|
BPSingleListener bp;
|
||||||
bp.setWatchInstructionPointer(ECOS_FUNC_FINISH);
|
bp.setWatchInstructionPointer(ANY_ADDR);
|
||||||
simulator.addListener(&bp);
|
simulator.addListenerAndResume(&bp);
|
||||||
|
|
||||||
|
// run until 'ECOS_FUNC_FINISH' is reached //FIXME: [CPU0 ] prefetch: EIP [00010000] > CS.limit [0000ffff]
|
||||||
|
//BPSingleListener bp;
|
||||||
|
//bp.setWatchInstructionPointer(ECOS_FUNC_FINISH);
|
||||||
|
//simulator.addListener(&bp);
|
||||||
|
|
||||||
|
// 10000us = 500000 instructions
|
||||||
|
TimerListener record_timeout(50000000); //TODO: how long to wait?
|
||||||
|
simulator.addListener(&record_timeout);
|
||||||
|
|
||||||
// memory map serialization
|
// memory map serialization
|
||||||
ofstream mm(mm_filename, ios::out | ios::app);
|
ofstream mm(mm_filename, ios::out | ios::app);
|
||||||
@ -91,7 +95,8 @@ bool EcosKernelTestExperiment::retrieveGuestAddresses() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert(number_of_guest_events > 0);
|
assert(number_of_guest_events > 0);
|
||||||
log << "Breakpoint at 'ECOS_FUNC_FINISH' reached: created memory map (" << number_of_guest_events << " entries)" << endl;
|
//log << "Breakpoint at 'ECOS_FUNC_FINISH' reached: created memory map (" << number_of_guest_events << " entries)" << endl;
|
||||||
|
log << "Record timeout reached: created memory map (" << number_of_guest_events << " entries)" << endl;
|
||||||
delete str;
|
delete str;
|
||||||
|
|
||||||
// close serialized mm
|
// close serialized mm
|
||||||
@ -100,8 +105,8 @@ bool EcosKernelTestExperiment::retrieveGuestAddresses() {
|
|||||||
|
|
||||||
// workaround for 00291674339e[CPU0 ] prefetch: EIP [00010000] > CS.limit [0000ffff]
|
// workaround for 00291674339e[CPU0 ] prefetch: EIP [00010000] > CS.limit [0000ffff]
|
||||||
// *** just wait some time here *** //FIXME
|
// *** just wait some time here *** //FIXME
|
||||||
TimerListener record_timeout(1);
|
//TimerListener record_timeout(10000);
|
||||||
simulator.addListenerAndResume(&record_timeout);
|
//simulator.addListenerAndResume(&record_timeout);
|
||||||
|
|
||||||
// clean up simulator
|
// clean up simulator
|
||||||
simulator.clearListeners();
|
simulator.clearListeners();
|
||||||
|
|||||||
@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
// user-specified start-function address:
|
// user-specified start-function address:
|
||||||
// nm -C thread1.elf|fgrep cyg_start
|
// nm -C thread1.elf|fgrep cyg_start
|
||||||
#define ECOS_FUNC_ENTRY 0x0000406c
|
#define ECOS_FUNC_ENTRY 0x0000409c
|
||||||
// cyg_test_exit address
|
// cyg_test_exit address
|
||||||
#define ECOS_FUNC_FINISH 0x00005eb0
|
#define ECOS_FUNC_FINISH 0x00005f0c
|
||||||
// cyg_test_output address
|
// cyg_test_output address
|
||||||
#define ECOS_FUNC_TEST_OUTPUT 0x00005eb8
|
#define ECOS_FUNC_TEST_OUTPUT 0x00005f14
|
||||||
// the variable that's increased if ECC corrects an error:
|
// the variable that's increased if ECC corrects an error:
|
||||||
#define ECOS_ERROR_CORRECTED 0x99999999
|
#define ECOS_ERROR_CORRECTED 0x99999999
|
||||||
|
|
||||||
@ -17,12 +17,7 @@
|
|||||||
#define ECOS_TEXT_START 0x00003000
|
#define ECOS_TEXT_START 0x00003000
|
||||||
// text end:
|
// text end:
|
||||||
// nm -C thread1.elf|fgrep _etext
|
// nm -C thread1.elf|fgrep _etext
|
||||||
#define ECOS_TEXT_END 0x00013c9e
|
#define ECOS_TEXT_END 0x0001627a
|
||||||
|
|
||||||
// number of instructions the target executes under non-error conditions from ENTRY to FINISH:
|
|
||||||
#define ECOS_NUMINSTR 71618
|
|
||||||
// number of instructions that are executed additionally for error corrections
|
|
||||||
// (this is a rough guess ... TODO)
|
|
||||||
#define ECOS_RECOVERYINSTR 0x2000
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user