Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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 */