zach@vmware.com
2007-Apr-18 13:02 UTC
[PATCH 10/14] i386 / Move descriptor accessors into desc h
Move base / limit accessors into desc.h, where they properly belong.
Patch-base: 2.6.13-rc5-mm1
Patch-keys: i386 desc cleanup
Signed-off-by: Zachary Amsden <zach@vmware.com>
Index: linux-2.6.13/include/asm-i386/system.h
==================================================================---
linux-2.6.13.orig/include/asm-i386/system.h 2005-08-09 20:17:26.000000000 -0700
+++ linux-2.6.13/include/asm-i386/system.h 2005-08-09 20:17:27.000000000 -0700
@@ -29,40 +29,6 @@
"2" (prev), "d" (next)); \
} while (0)
-#define _set_base(desc,base) do { \
- unsigned long __tmp; \
- typecheck(struct desc_struct *, desc); \
- asm volatile("movw %w5,%2\n\t" \
- "rorl $16,%5\n\t" \
- "movb %b5,%3\n\t" \
- "movb %h5,%4" \
- :"=m"(*(desc)), \
- "=&q" (__tmp) \
- :"m" (*((char *)(desc)+2)), \
- "m" (*((char *)(desc)+4)), \
- "m" (*((char *)(desc)+7)), \
- "1" (base)); \
-} while(0)
-
-#define _set_limit(desc,limit) do { \
- unsigned long __tmp; \
- typecheck(struct desc_struct *, desc); \
- asm volatile("movw %w4,%2\n\t" \
- "rorl $16,%4\n\t" \
- "movb %3,%h4\n\t" \
- "andb $0xf0,%h4\n\t" \
- "orb %h4,%b4\n\t" \
- "movb %b4,%3" \
- :"=m"(*(desc)), \
- "=&q" (__tmp) \
- :"m" (*(desc)), \
- "m" (*((char *)(desc)+6)), \
- "1" (limit)); \
-} while(0)
-
-#define set_base(desc,base) _set_base((desc), (base))
-#define set_limit(desc,limit) _set_limit((desc), ((limit)-1)>>12)
-
/*
* Load a segment. Fall back on loading the zero
* segment if something goes wrong..
Index: linux-2.6.13/include/asm-i386/desc.h
==================================================================---
linux-2.6.13.orig/include/asm-i386/desc.h 2005-08-09 20:17:26.000000000 -0700
+++ linux-2.6.13/include/asm-i386/desc.h 2005-08-10 20:40:51.000000000 -0700
@@ -73,6 +73,40 @@
: "1" (addr), "r"(desc), "ir"(limit),
"i"(type)); \
} while (0)
+#define _set_base(desc,base) do { \
+ unsigned long __tmp; \
+ typecheck(struct desc_struct *, desc); \
+ asm volatile("movw %w5,%2\n\t" \
+ "rorl $16,%5\n\t" \
+ "movb %b5,%3\n\t" \
+ "movb %h5,%4" \
+ :"=m"(*(desc)), \
+ "=&q" (__tmp) \
+ :"m" (*((char *)(desc)+2)), \
+ "m" (*((char *)(desc)+4)), \
+ "m" (*((char *)(desc)+7)), \
+ "1" (base)); \
+} while(0)
+
+#define _set_limit(desc,limit) do { \
+ unsigned long __tmp; \
+ typecheck(struct desc_struct *, desc); \
+ asm volatile("movw %w4,%2\n\t" \
+ "rorl $16,%4\n\t" \
+ "movb %3,%h4\n\t" \
+ "andb $0xf0,%h4\n\t" \
+ "orb %h4,%b4\n\t" \
+ "movb %b4,%3" \
+ :"=m"(*(desc)), \
+ "=&q" (__tmp) \
+ :"m" (*(desc)), \
+ "m" (*((char *)(desc)+6)), \
+ "1" (limit)); \
+} while(0)
+
+#define set_base(desc,base) _set_base((desc), (base))
+#define set_limit(desc,limit) _set_limit((desc), ((limit)-1)>>12)
+
#include <mach_desc.h>
#define set_tss_desc(cpu,addr) __set_tss_desc(cpu, GDT_ENTRY_TSS, addr)
