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>
This commit is contained in:
committed by
Rusty Russell
parent
625efab1cd
commit
4614a3a3b6
@@ -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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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[];
|
|||||||
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 */
|
||||||
|
Reference in New Issue
Block a user