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

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
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -133,6 +133,7 @@ ENTRY(switch_to_guest)
	// The Guest's register page has been mapped
	// Writable onto our %esp (stack) --
	// We can simply pop off all Guest regs.
	popl	%eax
	popl	%ebx
	popl	%ecx
	popl	%edx
@@ -140,7 +141,6 @@ ENTRY(switch_to_guest)
	popl	%edi
	popl	%ebp
	popl	%gs
	popl	%eax
	popl	%fs
	popl	%ds
	popl	%es
@@ -168,7 +168,6 @@ ENTRY(switch_to_guest)
	pushl	%es;							\
	pushl	%ds;							\
	pushl	%fs;							\
	pushl	%eax;							\
	pushl	%gs;							\
	pushl	%ebp;							\
	pushl	%edi;							\
@@ -176,6 +175,7 @@ ENTRY(switch_to_guest)
	pushl	%edx;							\
	pushl	%ecx;							\
	pushl	%ebx;							\
	pushl	%eax;							\
	/* Our stack and our code are using segments			\
	 * Set in the TSS and IDT					\
	 * Yet if we were to touch data we'd use			\
+1 −2
Original line number Diff line number Diff line
@@ -26,10 +26,9 @@ extern unsigned long default_idt_entries[];
struct lguest_regs
{
	/* Manually saved part. */
	unsigned long ebx, ecx, edx;
	unsigned long eax, ebx, ecx, edx;
	unsigned long esi, edi, ebp;
	unsigned long gs;
	unsigned long eax;
	unsigned long fs, ds, es;
	unsigned long trapnum, errcode;
	/* Trap pushed part */