summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHesham ALMatary <heshamelmatary@gmail.com>2015-04-02 14:11:26 +0100
committerJoel Sherrill <joel.sherrill@oarcorp.com>2015-04-02 10:01:50 -0500
commit1c8466165c25970f8336ed3ef11b32009dc238ba (patch)
tree7bcf7e23e7d463c47711a77653680b0e5ca06fac
parentaae6c218102f248a2ed036a270601da6da92189e (diff)
downloadrtems-1c8466165c25970f8336ed3ef11b32009dc238ba.tar.bz2
or1k: Send halt signal to or1k simulators when rtems terminates
-rw-r--r--cpukit/score/cpu/or1k/rtems/score/cpu.h1
-rw-r--r--cpukit/score/cpu/or1k/rtems/score/or1k-utility.h11
2 files changed, 11 insertions, 1 deletions
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 */