summaryrefslogtreecommitdiff
path: root/com32/include/sys
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@intel.com>2013-02-25 15:25:16 +0000
committerMatt Fleming <matt.fleming@intel.com>2013-02-26 11:29:04 +0000
commit76da2ae050d72a31fd47c2fb53f7081781de62ff (patch)
tree6da146b5f19ca17ff24d4e74940f14264d38f914 /com32/include/sys
parent41c29c26d70fde563d7c255872bbadad87a39dfa (diff)
parent79312306de0150ef64213ef9fbc5aa8580544f03 (diff)
downloadsyslinux-76da2ae050d72a31fd47c2fb53f7081781de62ff.tar.gz
Merge branch 'lwip' into elflink
Welcome to Syslinux 5.10. Conflicts: NEWS com32/lib/Makefile com32/lib/sys/open.c com32/lib/syslinux/ipappend.c com32/modules/Makefile com32/modules/prdhcp.c core/Makefile core/cmdline.inc core/com32.inc core/comboot.inc core/configinit.inc core/fs/chdir.c core/fs/fs.c core/fs/pxe/dnsresolv.c core/fs/pxe/pxe.c core/fs/pxe/pxe.h core/idle.c core/include/ctype.h core/init.inc core/mem/init.c core/parseconfig.inc core/runkernel.inc core/syslinux.ld core/ui.inc doc/comboot.txt version
Diffstat (limited to 'com32/include/sys')
-rw-r--r--com32/include/sys/cpu.h31
1 files changed, 27 insertions, 4 deletions
diff --git a/com32/include/sys/cpu.h b/com32/include/sys/cpu.h
index 53a6250e..807e13c4 100644
--- a/com32/include/sys/cpu.h
+++ b/com32/include/sys/cpu.h
@@ -121,22 +121,45 @@ static inline void wrmsr(uint64_t v, uint32_t msr)
static inline void cpu_relax(void)
{
- asm volatile("rep ; nop");
+ asm volatile("rep ; nop" : : : "memory");
}
static inline void hlt(void)
{
- asm volatile("hlt");
+ asm volatile("hlt" : : : "memory");
}
static inline void cli(void)
{
- asm volatile("cli");
+ asm volatile("cli" : : : "memory");
}
static inline void sti(void)
{
- asm volatile("sti");
+ asm volatile("sti" : : : "memory");
}
+typedef unsigned long irq_state_t;
+
+static inline irq_state_t irq_state(void)
+{
+ irq_state_t __st;
+
+ asm volatile("pushfl ; popl %0" : "=rm" (__st) : : "memory");
+ return __st;
+}
+
+static inline irq_state_t irq_save(void)
+{
+ irq_state_t __st = irq_state();
+ cli();
+ return __st;
+}
+
+static inline void irq_restore(irq_state_t __st)
+{
+ asm volatile("pushl %0 ; popfl" : : "rm" (__st) : "memory");
+}
+
+
#endif