summaryrefslogtreecommitdiff
path: root/x86.h
diff options
context:
space:
mode:
authorFrans Kaashoek <[email protected]>2011-07-27 20:49:45 -0400
committerFrans Kaashoek <[email protected]>2011-07-27 20:49:45 -0400
commitdccb915282854476ce47752df6631dcce3b8f661 (patch)
treea84aa8ed35618f99c3d7e8cdd466d22ae7bad597 /x86.h
parent9acdfe0d04f3fcf95c6e392e08afb45bdfe16c20 (diff)
parent13a96baefc0ff5d8262c4bc8c797bee4b157443c (diff)
downloadxv6-labs-dccb915282854476ce47752df6631dcce3b8f661.tar.gz
xv6-labs-dccb915282854476ce47752df6631dcce3b8f661.tar.bz2
xv6-labs-dccb915282854476ce47752df6631dcce3b8f661.zip
Merge commit 'origin/master' into page
Diffstat (limited to 'x86.h')
-rw-r--r--x86.h85
1 files changed, 39 insertions, 46 deletions
diff --git a/x86.h b/x86.h
index b9fa8b8..5a59cc2 100644
--- a/x86.h
+++ b/x86.h
@@ -90,23 +90,26 @@ readeflags(void)
return eflags;
}
+static inline void
+loadgs(ushort v)
+{
+ asm volatile("movw %0, %%gs" : : "r" (v));
+}
+
static inline uint
-xchg(volatile uint *addr, uint newval)
+rebp(void)
{
- uint result;
-
- // The + in "+m" denotes a read-modify-write operand.
- asm volatile("lock; xchgl %0, %1" :
- "+m" (*addr), "=a" (result) :
- "1" (newval) :
- "cc");
- return result;
+ uint val;
+ asm volatile("movl %%ebp,%0" : "=r" (val));
+ return val;
}
-static inline void
-loadgs(ushort v)
+static inline uint
+resp(void)
{
- asm volatile("movw %0, %%gs" : : "r" (v));
+ uint val;
+ asm volatile("movl %%esp,%0" : "=r" (val));
+ return val;
}
static inline void
@@ -121,66 +124,56 @@ sti(void)
asm volatile("sti");
}
-static inline void lcr0(uint val)
+static inline uint
+xchg(volatile uint *addr, uint newval)
+{
+ uint result;
+
+ // The + in "+m" denotes a read-modify-write operand.
+ asm volatile("lock; xchgl %0, %1" :
+ "+m" (*addr), "=a" (result) :
+ "1" (newval) :
+ "cc");
+ return result;
+}
+
+//PAGEBREAK!
+static inline void
+lcr0(uint val)
{
asm volatile("movl %0,%%cr0" : : "r" (val));
}
-static inline uint rcr0(void)
+static inline uint
+rcr0(void)
{
uint val;
asm volatile("movl %%cr0,%0" : "=r" (val));
return val;
}
-static inline uint rcr2(void)
+static inline uint
+rcr2(void)
{
uint val;
asm volatile("movl %%cr2,%0" : "=r" (val));
return val;
}
-static inline void lcr3(uint val)
+static inline void
+lcr3(uint val)
{
asm volatile("movl %0,%%cr3" : : "r" (val));
}
-static inline uint rcr3(void)
+static inline uint
+rcr3(void)
{
uint val;
asm volatile("movl %%cr3,%0" : "=r" (val));
return val;
}
-static inline void lebp(uint val)
-{
- asm volatile("movl %0,%%ebp" : : "r" (val));
-}
-
-static inline uint rebp(void)
-{
- uint val;
- asm volatile("movl %%ebp,%0" : "=r" (val));
- return val;
-}
-
-static inline void lesp(uint val)
-{
- asm volatile("movl %0,%%esp" : : "r" (val));
-}
-
-static inline uint resp(void)
-{
- uint val;
- asm volatile("movl %%esp,%0" : "=r" (val));
- return val;
-}
-
-static inline void nop_pause(void)
-{
- asm volatile("pause" : :);
-}
-
//PAGEBREAK: 36
// Layout of the trap frame built on the stack by the
// hardware and by trapasm.S, and passed to trap().