Bernhard Rosenkraenzer wrote:
On Sunday, 12. November 2006 14:43, Avi Kivity wrote:
'sel' is a variable, so gcc can't provide it as an immediate operand.
Specifying it as "rm" instead of "g" would have been better, but can't
have any real influence.
Specifying it as "rm" instead of "g" does fix it -- patch attached.
Well, for the code you posted in in the gcc bug, it probaby generated
something like
mov $0, %fs
which is indeed invalid assembly. But the kvm miscompile is something
else (running out of registers or something like that).
What am I overlooking? The code is the exact same (except I replaced "u16"
with "unsigned short" to avoid the #include), and produces the exact same
error message, and the fix is the same ("g" -> "rm").
Well, since it works, I guess I'm overlooking something. Maybe it's
just a bad error message from gcc.
I'll apply this. Thanks!
------------------------------------------------------------------------
--- linux-2.6.18/drivers/kvm/kvm_main.c.ark 2006-11-12 14:40:09.000000000 +0100
+++ linux-2.6.18/drivers/kvm/kvm_main.c 2006-11-12 14:44:57.000000000 +0100
@@ -150,12 +150,12 @@
static void load_fs(u16 sel)
{
- asm ("mov %0, %%fs" : : "g"(sel));
+ asm ("mov %0, %%fs" : : "rm"(sel));
}
static void load_gs(u16 sel)
{
- asm ("mov %0, %%gs" : : "g"(sel));
+ asm ("mov %0, %%gs" : : "rm"(sel));
}
#ifndef load_ldt
--
error compiling committee.c: too many arguments to function
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]