Messages in this thread | | | From | (H.J. Lu) | Subject | binutils 2.9.0.4 and linux kernel | Date | Sun, 26 Apr 1998 10:57:48 -0700 (PDT) |
| |
> > : Yes, it does. But I don't think your change is correct. It should > : check > : > : if ((t->opcode_modifier & OperandSizeMask) == DWordOperand) > : > : But we also need to check the explicit opcode suffix. > > So now I check like this: > > if ((t->opcode_modifier & (Data32|OperandSizeMask)) != DWordOperand) > > Also, I changed the opcode modifiers in the templates for "call", > "lcall", "jmp" and "ljmp" and removed the "callw" and "lcallw" > templates. This changes the semantics of "callw": earlier "callw 0" > assembled to "data16 call *0x000000", but it now assembles to "addr16 > call 0x0000" in 32 bit mode. You need to use "callw *0" to get the > previous behaviour. Is this a problem and how do other assemblers > interprete "callw 0"? >
I am preparing for binutils 2.9.0.4 now. It will include Martynas's 16 bit changes. I also tighten the x86 asm syntax checking. Previously, gas will silently turn
call sys_call_table(,%eax,4)
into call *sys_call_table(,%eax,4)
I fixed gas such that
call sys_call_table(,%eax,4)
won't assemble anymore since it is not a valid x86 asm. There are a few places in both linux 2.0 and 2.1 where something like
call sys_call_table(,%eax,4)
is used.
Linus, do you want me to send a patch to fix those problems and other bugs discovered by the new x86 gas?
Thanks.
H.J.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu
| |