lkml.org 
[lkml]   [1998]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subjectbinutils 2.9.0.4 and linux kernel
Date
> 
> : 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

\
 
 \ /
  Last update: 2005-03-22 13:42    [W:0.037 / U:0.044 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site