Messages in this thread |  | | Date | Sun, 07 Jun 2009 13:03:50 +0300 | From | Avi Kivity <> | Subject | Re: [2.6.30-rc8 KVM] gcc 3.3 dies at emulate_2op_cl(). |
| |
Tetsuo Handa wrote: > Avi Kivity wrote: > >> I can eliminate _tmp by using lahf/sahf, but it's not going to be a >> trivial patch. >> > > I don't know what's happening here. > > If I comment out (_dst).bytes == 2 , it compiles. > The problem happens only "w" + "unsigned short" case. > > # diff -urp arch/x86/kvm/x86_emulate.c~ arch/x86/kvm/x86_emulate.c > --- arch/x86/kvm/x86_emulate.c~ 2009-06-03 12:07:25.000000000 +0900 > +++ arch/x86/kvm/x86_emulate.c 2009-06-07 17:52:05.591542272 +0900 > @@ -461,8 +461,8 @@ static u32 group2_table[] = { > do { \ > switch ((_dst).bytes) { \ > case 2: \ > - __emulate_2op_cl(_op, _cl, _src, _dst, _eflags, \ > - "w", unsigned short); \ > + /* __emulate_2op_cl(_op, _cl, _src, _dst, _eflags, \ > + "w", unsigned short); */ \ > break; \ > case 4: \ > __emulate_2op_cl(_op, _cl, _src, _dst, _eflags, \ >
It's a gcc register allocator bug. Bugs don't have to be reasonable.
-- Do not meddle in the internals of kernels, for they are subtle and quick to panic.
|  |