summaryrefslogtreecommitdiff
path: root/x86.h
diff options
context:
space:
mode:
Diffstat (limited to 'x86.h')
-rw-r--r--x86.h89
1 files changed, 44 insertions, 45 deletions
diff --git a/x86.h b/x86.h
index b9fa8b8..33e240d 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,62 @@ sti(void)
asm volatile("sti");
}
-static inline void lcr0(uint val)
-{
- asm volatile("movl %0,%%cr0" : : "r" (val));
-}
-
-static inline uint rcr0(void)
+static inline uint
+xchg(volatile uint *addr, uint newval)
{
- uint val;
- asm volatile("movl %%cr0,%0" : "=r" (val));
- return val;
+ 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;
}
-static inline uint rcr2(void)
+static inline void
+nop_pause(void)
{
- uint val;
- asm volatile("movl %%cr2,%0" : "=r" (val));
- return val;
+ asm volatile("pause" : :);
}
-static inline void lcr3(uint val)
+//PAGEBREAK!
+static inline void
+lcr0(uint val)
{
- asm volatile("movl %0,%%cr3" : : "r" (val));
+ asm volatile("movl %0,%%cr0" : : "r" (val));
}
-static inline uint rcr3(void)
+static inline uint
+rcr0(void)
{
uint val;
- asm volatile("movl %%cr3,%0" : "=r" (val));
+ asm volatile("movl %%cr0,%0" : "=r" (val));
return val;
}
-static inline void lebp(uint val)
-{
- asm volatile("movl %0,%%ebp" : : "r" (val));
-}
-
-static inline uint rebp(void)
+static inline uint
+rcr2(void)
{
uint val;
- asm volatile("movl %%ebp,%0" : "=r" (val));
+ asm volatile("movl %%cr2,%0" : "=r" (val));
return val;
}
-static inline void lesp(uint val)
+static inline void
+lcr3(uint val)
{
- asm volatile("movl %0,%%esp" : : "r" (val));
+ asm volatile("movl %0,%%cr3" : : "r" (val));
}
-static inline uint resp(void)
+static inline uint
+rcr3(void)
{
uint val;
- asm volatile("movl %%esp,%0" : "=r" (val));
+ asm volatile("movl %%cr3,%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().