From 1c8466165c25970f8336ed3ef11b32009dc238ba Mon Sep 17 00:00:00 2001 From: Hesham ALMatary Date: Thu, 2 Apr 2015 14:11:26 +0100 Subject: or1k: Send halt signal to or1k simulators when rtems terminates --- cpukit/score/cpu/or1k/rtems/score/cpu.h | 1 + cpukit/score/cpu/or1k/rtems/score/or1k-utility.h | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/cpukit/score/cpu/or1k/rtems/score/cpu.h b/cpukit/score/cpu/or1k/rtems/score/cpu.h index 45aeb08a3c..21cbb6d5ce 100644 --- a/cpukit/score/cpu/or1k/rtems/score/cpu.h +++ b/cpukit/score/cpu/or1k/rtems/score/cpu.h @@ -702,6 +702,7 @@ void _CPU_Context_Initialize( #define _CPU_Fatal_halt(_source, _error ) \ printk("Fatal Error %d.%d Halted\n",_source, _error); \ + _OR1KSIM_CPU_Halt(); \ for(;;) /* end of Fatal Error manager macros */ diff --git a/cpukit/score/cpu/or1k/rtems/score/or1k-utility.h b/cpukit/score/cpu/or1k/rtems/score/or1k-utility.h index 6b238b1641..c2d1bcb667 100644 --- a/cpukit/score/cpu/or1k/rtems/score/or1k-utility.h +++ b/cpukit/score/cpu/or1k/rtems/score/or1k-utility.h @@ -362,7 +362,6 @@ static inline void _OR1K_mtspr(uint32_t reg, uint32_t value) #define _OR1K_CPU_Sleep() \ _OR1K_mtspr(CPU_OR1K_SPR_PMR, CPU_OR1K_SPR_PMR_SME) - #define _OR1K_CPU_Suspend() \ _OR1K_mtspr(CPU_OR1K_SPR_PMR, CPU_OR1K_SPR_PMR_SME) @@ -376,6 +375,16 @@ static inline void _OR1K_Sync_pipeline( void ) asm volatile("l.psync"); } +/** + * @brief or1ksim simulator can be sent a halt signal from RTEMS to tell + * the running or1ksim process on the host machine to exit. The following + * implementation has no effect on QEMU or hardware implementation and will + * be treated as normal l.nop. + * + */ +#define _OR1KSIM_CPU_Halt() \ + asm volatile ("l.nop 0xc") + #else /* ASM */ #endif /* ASM */ -- cgit v1.2.3