diff options
author | Robert Morris <rtm@csail.mit.edu> | 2010-08-31 19:21:52 -0400 |
---|---|---|
committer | Robert Morris <rtm@csail.mit.edu> | 2010-08-31 19:21:52 -0400 |
commit | 23c3e52c2fb5f1709bf5053a8e93161931b56bf9 (patch) | |
tree | cb51f605a35de8980efce5dcab3e5df9757c022a /x86.h | |
parent | 3597d5dc704c192a85b9902f7264fe9025aad277 (diff) | |
parent | 5048762c7e27789a014cc1e74e1002e749c924ce (diff) | |
download | xv6-labs-23c3e52c2fb5f1709bf5053a8e93161931b56bf9.tar.gz xv6-labs-23c3e52c2fb5f1709bf5053a8e93161931b56bf9.tar.bz2 xv6-labs-23c3e52c2fb5f1709bf5053a8e93161931b56bf9.zip |
Merge branch 'master' of git+ssh://amsterdam.csail.mit.edu/home/am0/6.828/xv6
Diffstat (limited to 'x86.h')
-rw-r--r-- | x86.h | 89 |
1 files changed, 44 insertions, 45 deletions
@@ -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(). |