[patch 12/26] Xen-paravirt_ops: Fix patch site clobbers to include return register

Jeremy Fitzhardinge
2007-03-01T23:59:04Z

[-- Attachment #1: paravirt-fix-clobbers.patch --]
[-- Type: text/plain, Size: 1257 bytes --]

Fix a few clobbers to include the return register. The clobbers set
is the set of all registers modified (or may be modified) by the code
snippet, regardless of whether it was deliberate or accidental.

Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Zachary Amsden <zach@vmware.com>

---
include/asm-i386/paravirt.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

===================================================================
--- a/include/asm-i386/paravirt.h
+++ b/include/asm-i386/paravirt.h
@@ -556,7 +556,7 @@ static inline unsigned long __raw_local_
"popl %%edx; popl %%ecx")
: "=a"(f): "m"(paravirt_ops.save_fl),
paravirt_type(PARAVIRT_PATCH(save_fl)),
- paravirt_clobber(CLBR_NONE)
+ paravirt_clobber(CLBR_EAX)
: "memory", "cc");
return f;
}
@@ -610,7 +610,7 @@ static inline unsigned long __raw_local_
"%c[paravirt_cli_type]", "%c[paravirt_clobber]")

#define STI_STRING _paravirt_alt("pushl %%ecx; pushl %%edx;" \
- "call *paravirt_ops+%c[irq_enable];" \
+ "call *paravirt_ops+%c[irq_enable];" \
"popl %%edx; popl %%ecx", \
"%c[paravirt_cli_type]", "%c[paravirt_clobber]")

--