diff options
author | Amaan Cheval <amaan.cheval@gmail.com> | 2018-08-13 16:20:38 +0530 |
---|---|---|
committer | Joel Sherrill <joel@rtems.org> | 2018-08-13 10:48:20 -0500 |
commit | 686932125dd249a237bcb6d2f0ddb9f2ff1ce1b3 (patch) | |
tree | a83e550123771683c0bb6a77496abfe10729b36c /cpukit/score/cpu/x86_64/include/rtems/score/cpu_asm.h | |
parent | bsps/x86_64: Add paging support with 1GiB super pages (diff) | |
download | rtems-686932125dd249a237bcb6d2f0ddb9f2ff1ce1b3.tar.bz2 |
bsps/x86_64: Add support for RTEMS interrupts
Updates #2898.
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.h | 18 |
1 files changed, 18 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 5d4b608eb8..09807f1489 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 @@ -45,6 +45,14 @@ RTEMS_INLINE_ROUTINE void outport_byte(uint16_t port, uint8_t val) __asm__ volatile ( "outb %0, %1" : : "a" (val), "Nd" (port) ); } +RTEMS_INLINE_ROUTINE uint16_t amd64_get_cs(void) +{ + uint16_t segment = 0; + + __asm__ volatile ( "movw %%cs, %0" : "=r" (segment) : "0" (segment) ); + + return segment; +} RTEMS_INLINE_ROUTINE void amd64_set_cr3(uint64_t segment) { @@ -58,6 +66,16 @@ RTEMS_INLINE_ROUTINE void cpuid( : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "a" (code) ); } + +RTEMS_INLINE_ROUTINE void amd64_enable_interrupts(void) +{ + __asm__ volatile ( "sti" ); +} + +RTEMS_INLINE_ROUTINE void amd64_disable_interrupts(void) +{ + __asm__ volatile ( "cli" ); +} #endif /* !ASM */ #endif |