2009-02-26 Joel Sherrill <joel.sherrill@oarcorp.com>

* shared/clock/ckinit.c, shared/start/start.S, shared/timer/timer.c:
	Run better on simulator. Timer is probably not right yet but
This commit is contained in:
Joel Sherrill
2009-02-26 20:45:48 +00:00
parent be9f085602
commit 5d64375f71
4 changed files with 23 additions and 10 deletions

View File

@@ -1,3 +1,8 @@
2009-02-26 Joel Sherrill <joel.sherrill@oarcorp.com>
* shared/clock/ckinit.c, shared/start/start.S, shared/timer/timer.c:
Run better on simulator. Timer is probably not right yet but
2009-02-25 Joel Sherrill <joel.sherrill@oarcorp.com> 2009-02-25 Joel Sherrill <joel.sherrill@oarcorp.com>
* shared/clock/ckinit.c: Use shared Clock Driver Template and support * shared/clock/ckinit.c: Use shared Clock Driver Template and support

View File

@@ -20,7 +20,7 @@
#include "clock.h" #include "clock.h"
#include "bspopts.h" #include "bspopts.h"
#if SIMULATOR_FAST_IDLE #if ON_SIMULATOR
#define CLOCK_DRIVER_USE_FAST_IDLE #define CLOCK_DRIVER_USE_FAST_IDLE
#endif #endif

View File

@@ -13,6 +13,8 @@
* Micro-Research Finland Oy * Micro-Research Finland Oy
*/ */
#include "bspopts.h"
.section .boot,"a",@progbits .section .boot,"a",@progbits
.align 4 .align 4
@@ -145,12 +147,14 @@ crt0:
mvi r2, 0 mvi r2, 0
mvi r3, 0 mvi r3, 0
calli boot_card calli boot_card
# boot_card returns when RTEMS is shutdown
#if ON_SIMULATOR
#define SYS_exit 1
mvi r8, SYS_exit
scall
#endif
.dead_end: .dead_end:
bi .dead_end bi .dead_end
calli boot_card
# boot_card should never return
_stuck_in_start:
bi _stuck_in_start

View File

@@ -29,17 +29,21 @@
static inline int timerread(unsigned int reg) static inline int timerread(unsigned int reg)
{ {
#ifdef TIMER1_BASE_ADDRESS #if ON_SIMULATOR && defined(TIMER0_BASE_ADDRESS)
return *((int*)(TIMER0_BASE_ADDRESS + reg));
#elif defined(TIMER1_BASE_ADDRESS)
return *((int*)(TIMER1_BASE_ADDRESS + reg)); return *((int*)(TIMER1_BASE_ADDRESS + reg));
#else #else
#warning "Benchmarking timer TIMER1 not available!" #warning "Benchmarking timer not available!"
return 0; return 0;
#endif #endif
} }
static inline void timerwrite(unsigned int reg, int value) static inline void timerwrite(unsigned int reg, int value)
{ {
#ifdef TIMER1_BASE_ADDRESS #if ON_SIMULATOR && defined(TIMER0_BASE_ADDRESS)
*((int*)(TIMER0_BASE_ADDRESS + reg)) = value;
#elif defined(TIMER1_BASE_ADDRESS)
*((int*)(TIMER1_BASE_ADDRESS + reg)) = value; *((int*)(TIMER1_BASE_ADDRESS + reg)) = value;
#endif #endif
} }