2000-11-01 21:44:30

by Mikael Pettersson

[permalink] [raw]
Subject: binutils/gas problem with 'lcall'

arch/i386/kernel/apm.c and pci-pc.c use the lcall instruction
(call far indirect) for invoking BIOS services.
The following syntax is used:

(apm) lcall %cs:apm_bios_entry
(pci-pc) lcall (%edi)

This works ok with binutils 2.9.5, but binutils 2.10.0.18
(gas 2.10.90) as shipped with RedHat 7.0 complains:

Warning: indirect lcall without `*'

To keep gas 2.10.90 happy one can insert the * prefix:

(apm) lcall *%cs:apm_bios_entry
(pci-pc) lcall *(%edi)

but older binutils like 2.9.5 treat these as syntax errors. Sigh.

So how do we want to handle this?
- ignore the warnings? (yuck; I hate compiler/assembler warnings)
- specify 2.10.0.18 as the minimum binutils for 2.4 kernels?
if we're going to do it, we should do it NOW, before the real
2.4.0 is released

/Mikael


2000-11-01 21:53:03

by Alan Cox

[permalink] [raw]
Subject: Re: binutils/gas problem with 'lcall'

> but older binutils like 2.9.5 treat these as syntax errors. Sigh.
>
> So how do we want to handle this?
> - ignore the warnings? (yuck; I hate compiler/assembler warnings)

Correct ;)