diff options
author | Jes Sorensen <jes@sgi.com> | 2007-10-21 21:03:29 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2007-10-23 01:49:51 -0400 |
commit | 4614a3a3b638dfd7a67d0237944f6a76331af61d (patch) | |
tree | 8ec25721127eb899b97e46551b1644644ca698ac | |
parent | 625efab1cd3d4da4634dfe26df6b4005385397e2 (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.S | 4 | ||||
-rw-r--r-- | include/asm-x86/lguest.h | 3 |
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[]; | |||
26 | struct lguest_regs | 26 | struct 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 */ |