Commit 4614a3a3 authored by Jes Sorensen's avatar Jes Sorensen Committed by Rusty Russell

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: default avatarJes Sorensen <jes@sgi.com>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 625efab1
...@@ -133,6 +133,7 @@ ENTRY(switch_to_guest) ...@@ -133,6 +133,7 @@ ENTRY(switch_to_guest)
// The Guest's register page has been mapped // The Guest's register page has been mapped
// Writable onto our %esp (stack) -- // Writable onto our %esp (stack) --
// We can simply pop off all Guest regs. // We can simply pop off all Guest regs.
popl %eax
popl %ebx popl %ebx
popl %ecx popl %ecx
popl %edx popl %edx
...@@ -140,7 +141,6 @@ ENTRY(switch_to_guest) ...@@ -140,7 +141,6 @@ ENTRY(switch_to_guest)
popl %edi popl %edi
popl %ebp popl %ebp
popl %gs popl %gs
popl %eax
popl %fs popl %fs
popl %ds popl %ds
popl %es popl %es
...@@ -168,7 +168,6 @@ ENTRY(switch_to_guest) ...@@ -168,7 +168,6 @@ ENTRY(switch_to_guest)
pushl %es; \ pushl %es; \
pushl %ds; \ pushl %ds; \
pushl %fs; \ pushl %fs; \
pushl %eax; \
pushl %gs; \ pushl %gs; \
pushl %ebp; \ pushl %ebp; \
pushl %edi; \ pushl %edi; \
...@@ -176,6 +175,7 @@ ENTRY(switch_to_guest) ...@@ -176,6 +175,7 @@ ENTRY(switch_to_guest)
pushl %edx; \ pushl %edx; \
pushl %ecx; \ pushl %ecx; \
pushl %ebx; \ pushl %ebx; \
pushl %eax; \
/* Our stack and our code are using segments \ /* Our stack and our code are using segments \
* Set in the TSS and IDT \ * Set in the TSS and IDT \
* Yet if we were to touch data we'd use \ * Yet if we were to touch data we'd use \
......
...@@ -26,10 +26,9 @@ extern unsigned long default_idt_entries[]; ...@@ -26,10 +26,9 @@ extern unsigned long default_idt_entries[];
struct lguest_regs struct lguest_regs
{ {
/* Manually saved part. */ /* Manually saved part. */
unsigned long ebx, ecx, edx; unsigned long eax, ebx, ecx, edx;
unsigned long esi, edi, ebp; unsigned long esi, edi, ebp;
unsigned long gs; unsigned long gs;
unsigned long eax;
unsigned long fs, ds, es; unsigned long fs, ds, es;
unsigned long trapnum, errcode; unsigned long trapnum, errcode;
/* Trap pushed part */ /* Trap pushed part */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment