summaryrefslogtreecommitdiff
path: root/x86.h
diff options
context:
space:
mode:
authorAustin Clements <[email protected]>2010-08-31 16:42:05 -0400
committerAustin Clements <[email protected]>2010-08-31 16:42:05 -0400
commit37ee75f42e9d35a96b84fe0c95479178cd41efac (patch)
treedf8e4c266ab047fe07fe3b1541dee50dd7436677 /x86.h
parent7472b2b451f100162fa4542f5bfe260385f861ad (diff)
downloadxv6-labs-37ee75f42e9d35a96b84fe0c95479178cd41efac.tar.gz
xv6-labs-37ee75f42e9d35a96b84fe0c95479178cd41efac.tar.bz2
xv6-labs-37ee75f42e9d35a96b84fe0c95479178cd41efac.zip
Rearrange for better page breaking
Diffstat (limited to 'x86.h')
-rw-r--r--x86.h85
1 files changed, 43 insertions, 42 deletions
diff --git a/x86.h b/x86.h
index b9fa8b8..71427b3 100644
--- a/x86.h
+++ b/x86.h
@@ -90,25 +90,36 @@ readeflags(void)
return eflags;
}
-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;
-}
-
static inline void
loadgs(ushort v)
{
asm volatile("movw %0, %%gs" : : "r" (v));
}
+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
cli(void)
{
@@ -121,6 +132,25 @@ sti(void)
asm volatile("sti");
}
+static inline void nop_pause(void)
+{
+ asm volatile("pause" : :);
+}
+
+//PAGEBREAK!
+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;
+}
+
static inline void lcr0(uint val)
{
asm volatile("movl %0,%%cr0" : : "r" (val));
@@ -152,35 +182,6 @@ static inline uint rcr3(void)
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().