summaryrefslogtreecommitdiff
path: root/x86.h
diff options
context:
space:
mode:
authorrsc <rsc>2006-07-16 01:15:28 +0000
committerrsc <rsc>2006-07-16 01:15:28 +0000
commit65bd8e139a8368e987455a10ec59dd7b079b3af1 (patch)
tree8ce996135fadab4abde8acf5a6ed4eb69d463c60 /x86.h
parent40a2a08319511fd157d2d77eefbda52423cc81ec (diff)
downloadxv6-labs-65bd8e139a8368e987455a10ec59dd7b079b3af1.tar.gz
xv6-labs-65bd8e139a8368e987455a10ec59dd7b079b3af1.tar.bz2
xv6-labs-65bd8e139a8368e987455a10ec59dd7b079b3af1.zip
New scheduler.
Removed cli and sti stack in favor of tracking number of locks held on each CPU and explicit conditionals in spinlock.c.
Diffstat (limited to 'x86.h')
-rw-r--r--x86.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/x86.h b/x86.h
index cc809e7..ee7e6ce 100644
--- a/x86.h
+++ b/x86.h
@@ -29,6 +29,8 @@ static __inline uint32_t read_ebp(void) __attribute__((always_inline));
static __inline uint32_t read_esp(void) __attribute__((always_inline));
static __inline void cpuid(uint32_t info, uint32_t *eaxp, uint32_t *ebxp, uint32_t *ecxp, uint32_t *edxp);
static __inline uint64_t read_tsc(void) __attribute__((always_inline));
+static __inline void cli(void) __attribute__((always_inline));
+static __inline void sti(void) __attribute__((always_inline));
static __inline void
breakpoint(void)
@@ -304,6 +306,18 @@ read_tsc(void)
return tsc;
}
+static __inline void
+cli(void)
+{
+ __asm__ volatile("cli");
+}
+
+static __inline void
+sti(void)
+{
+ __asm__ volatile("sti");
+}
+
struct PushRegs {
/* registers as pushed by pusha */
uint32_t reg_edi;