diff options
author | rsc <rsc> | 2006-07-16 01:15:28 +0000 |
---|---|---|
committer | rsc <rsc> | 2006-07-16 01:15:28 +0000 |
commit | 65bd8e139a8368e987455a10ec59dd7b079b3af1 (patch) | |
tree | 8ce996135fadab4abde8acf5a6ed4eb69d463c60 /x86.h | |
parent | 40a2a08319511fd157d2d77eefbda52423cc81ec (diff) | |
download | xv6-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.h | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -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; |