aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJes Sorensen <jes@sgi.com>2007-10-21 21:03:29 -0400
committerRusty Russell <rusty@rustcorp.com.au>2007-10-23 01:49:51 -0400
commit4614a3a3b638dfd7a67d0237944f6a76331af61d (patch)
tree8ec25721127eb899b97e46551b1644644ca698ac
parent625efab1cd3d4da4634dfe26df6b4005385397e2 (diff)
Reorder guest saved regs to match hyperall order
Move eax next to ebx/ecx/edx in struct lguest_regs on i386, so they will be located together and allow it to map directly to a struct hcall_ring entry (which will be renamed struct hcall_args as in a subsequent patch). This is in preparation for making the code hcall code architecture independent. Signed-off-by: Jes Sorensen <jes@sgi.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-rw-r--r--drivers/lguest/x86/switcher_32.S4
-rw-r--r--include/asm-x86/lguest.h3
2 files changed, 3 insertions, 4 deletions
diff --git a/drivers/lguest/x86/switcher_32.S b/drivers/lguest/x86/switcher_32.S
index e66cec5ac240..1010b90b11fc 100644
--- a/drivers/lguest/x86/switcher_32.S
+++ b/drivers/lguest/x86/switcher_32.S
@@ -133,6 +133,7 @@ ENTRY(switch_to_guest)
133 // The Guest's register page has been mapped 133 // The Guest's register page has been mapped
134 // Writable onto our %esp (stack) -- 134 // Writable onto our %esp (stack) --
135 // We can simply pop off all Guest regs. 135 // We can simply pop off all Guest regs.
136 popl %eax
136 popl %ebx 137 popl %ebx
137 popl %ecx 138 popl %ecx
138 popl %edx 139 popl %edx
@@ -140,7 +141,6 @@ ENTRY(switch_to_guest)
140 popl %edi 141 popl %edi
141 popl %ebp 142 popl %ebp
142 popl %gs 143 popl %gs
143 popl %eax
144 popl %fs 144 popl %fs
145 popl %ds 145 popl %ds
146 popl %es 146 popl %es
@@ -168,7 +168,6 @@ ENTRY(switch_to_guest)
168 pushl %es; \ 168 pushl %es; \
169 pushl %ds; \ 169 pushl %ds; \
170 pushl %fs; \ 170 pushl %fs; \
171 pushl %eax; \
172 pushl %gs; \ 171 pushl %gs; \
173 pushl %ebp; \ 172 pushl %ebp; \
174 pushl %edi; \ 173 pushl %edi; \
@@ -176,6 +175,7 @@ ENTRY(switch_to_guest)
176 pushl %edx; \ 175 pushl %edx; \
177 pushl %ecx; \ 176 pushl %ecx; \
178 pushl %ebx; \ 177 pushl %ebx; \
178 pushl %eax; \
179 /* Our stack and our code are using segments \ 179 /* Our stack and our code are using segments \
180 * Set in the TSS and IDT \ 180 * Set in the TSS and IDT \
181 * Yet if we were to touch data we'd use \ 181 * Yet if we were to touch data we'd use \
diff --git a/include/asm-x86/lguest.h b/include/asm-x86/lguest.h
index f10f1c6cc3d1..ccd338460811 100644
--- a/include/asm-x86/lguest.h
+++ b/include/asm-x86/lguest.h
@@ -26,10 +26,9 @@ extern unsigned long default_idt_entries[];
26struct lguest_regs 26struct lguest_regs
27{ 27{
28 /* Manually saved part. */ 28 /* Manually saved part. */
29 unsigned long ebx, ecx, edx; 29 unsigned long eax, ebx, ecx, edx;
30 unsigned long esi, edi, ebp; 30 unsigned long esi, edi, ebp;
31 unsigned long gs; 31 unsigned long gs;
32 unsigned long eax;
33 unsigned long fs, ds, es; 32 unsigned long fs, ds, es;
34 unsigned long trapnum, errcode; 33 unsigned long trapnum, errcode;
35 /* Trap pushed part */ 34 /* Trap pushed part */