2004-10-06 12:20:26

by Richard B. Johnson

[permalink] [raw]
Subject: 'C' calling convention change.


The new Red Hat Fedora release uses the following gcc version:

gcc (GCC) 3.3.3 20040412 (Red Hat Linux 3.3.3-7)

I have many assembly-language routines that need to interface with
'C' code. The new 'C' compiler is doing something different than
gcc 3.2, previously used.

I need to know what general-purpose registers need to be saved
in the called procedure. Previously, one needed to save the
index registers only (%ebx, %edi, %esi). Apparently I need to
save others with the new compiler because, although the called
procedures work, subsequent 'C' code fails in strange ways.

Please, if somebody __knows__ (really knows), let me know. I
will have to edit over 200 assembly-language files and I want
to do it only once! I don't want to just save all the registers
used because this wastes CPU cycles and the only reason for
the assembly in the first place was to save CPU cycles.

Cheers,
Dick Johnson
Penguin : Linux version 2.6.5-1.358-noreg on an i686 machine (5570.56 BogoMips).
Note 96.31% of all statistics are fiction.


2004-10-06 13:17:16

by Arjan van de Ven

[permalink] [raw]
Subject: Re: 'C' calling convention change.

On Wed, 2004-10-06 at 14:20, Richard B. Johnson wrote:
> The new Red Hat Fedora release uses the following gcc version:
>
> gcc (GCC) 3.3.3 20040412 (Red Hat Linux 3.3.3-7)
>
> I have many assembly-language routines that need to interface with
> 'C' code. The new 'C' compiler is doing something different than
> gcc 3.2, previously used.

I assume you're talking about userspace code here. Why are you bringing
that up on the kernel list?
The gcc list or even a fedora(-devel) list would be far more
appropriate.


Attachments:
signature.asc (189.00 B)
This is a digitally signed message part

2004-10-06 13:35:50

by Richard B. Johnson

[permalink] [raw]
Subject: Re: 'C' calling convention change.


Well I'm trying to port some drivers. I thought those were
kernel thingies. Also, the kernel is so connected with gcc-isms
that it's kinda important.

Cheers,
Dick Johnson
Penguin : Linux version 2.6.5-1.358-noreg on an i686 machine (5570.56 BogoMips).
Note 96.31% of all statistics are fiction.


On Wed, 6 Oct 2004, Arjan van de Ven wrote:

> On Wed, 2004-10-06 at 14:20, Richard B. Johnson wrote:
>> The new Red Hat Fedora release uses the following gcc version:
>>
>> gcc (GCC) 3.3.3 20040412 (Red Hat Linux 3.3.3-7)
>>
>> I have many assembly-language routines that need to interface with
>> 'C' code. The new 'C' compiler is doing something different than
>> gcc 3.2, previously used.
>
> I assume you're talking about userspace code here. Why are you bringing
> that up on the kernel list?
> The gcc list or even a fedora(-devel) list would be far more
> appropriate.
>



2004-10-06 13:37:42

by Arjan van de Ven

[permalink] [raw]
Subject: Re: 'C' calling convention change.

On Wed, Oct 06, 2004 at 09:34:43AM -0400, Richard B. Johnson wrote:
>
> Well I'm trying to port some drivers. I thought those were

url?

> kernel thingies. Also, the kernel is so connected with gcc-isms
> that it's kinda important.

just mark them asmlinkage and the usual clobber rules apply.