summaryrefslogtreecommitdiffstats
path: root/cpukit/score/cpu/x86_64/include/rtems/score/cpu_asm.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/cpu/x86_64/include/rtems/score/cpu_asm.h')
-rw-r--r--cpukit/score/cpu/x86_64/include/rtems/score/cpu_asm.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/cpukit/score/cpu/x86_64/include/rtems/score/cpu_asm.h b/cpukit/score/cpu/x86_64/include/rtems/score/cpu_asm.h
index 09807f1489..4ad50b9f42 100644
--- a/cpukit/score/cpu/x86_64/include/rtems/score/cpu_asm.h
+++ b/cpukit/score/cpu/x86_64/include/rtems/score/cpu_asm.h
@@ -67,6 +67,21 @@ RTEMS_INLINE_ROUTINE void cpuid(
: "a" (code) );
}
+RTEMS_INLINE_ROUTINE uint64_t rdmsr(uint32_t msr)
+{
+ uint32_t low, high;
+ __asm__ volatile ( "rdmsr" :
+ "=a" (low), "=d" (high) :
+ "c" (msr) );
+ return low | (uint64_t) high << 32;
+}
+
+RTEMS_INLINE_ROUTINE void wrmsr(uint32_t msr, uint32_t low, uint32_t high)
+{
+ __asm__ volatile ( "wrmsr" : :
+ "a" (low), "d" (high), "c" (msr) );
+}
+
RTEMS_INLINE_ROUTINE void amd64_enable_interrupts(void)
{
__asm__ volatile ( "sti" );
@@ -76,6 +91,14 @@ RTEMS_INLINE_ROUTINE void amd64_disable_interrupts(void)
{
__asm__ volatile ( "cli" );
}
+
+RTEMS_INLINE_ROUTINE void stub_io_wait(void)
+{
+ /* XXX: This likely won't be required on any modern boards, but this function
+ * exists so it's easier to find all the places it may be used.
+ */
+}
+
#endif /* !ASM */
#endif