linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch] 2.4.6-pre3 unresolved symbol do_softirq
@ 2001-06-13 12:07 Keith Owens
  2001-06-13 12:13 ` David S. Miller
  0 siblings, 1 reply; 21+ messages in thread
From: Keith Owens @ 2001-06-13 12:07 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel

do_softirq is called from asm code which does not get preprocessed.
It needs to be exported with no version.

Against 2.4.6-pre3.  Note to users: you must run make mrproper after
applying this patch.

Index: 6-pre3.1/kernel/ksyms.c
--- 6-pre3.1/kernel/ksyms.c Sat, 09 Jun 2001 11:25:53 +1000 kaos (linux-2.4/j/46_ksyms.c 1.1.2.2.1.1.2.1.1.8.2.1.2.1 644)
+++ 6-pre3.1(w)/kernel/ksyms.c Wed, 13 Jun 2001 22:04:07 +1000 kaos (linux-2.4/j/46_ksyms.c 1.1.2.2.1.1.2.1.1.8.2.1.2.1 644)
@@ -536,7 +536,7 @@ EXPORT_SYMBOL(remove_bh);
 EXPORT_SYMBOL(tasklet_init);
 EXPORT_SYMBOL(tasklet_kill);
 EXPORT_SYMBOL(__run_task_queue);
-EXPORT_SYMBOL(do_softirq);
+EXPORT_SYMBOL_NOVERS(do_softirq);
 EXPORT_SYMBOL(tasklet_schedule);
 EXPORT_SYMBOL(tasklet_hi_schedule);
 


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 12:07 [patch] 2.4.6-pre3 unresolved symbol do_softirq Keith Owens
@ 2001-06-13 12:13 ` David S. Miller
  2001-06-13 13:48   ` Jeff Garzik
                     ` (3 more replies)
  0 siblings, 4 replies; 21+ messages in thread
From: David S. Miller @ 2001-06-13 12:13 UTC (permalink / raw)
  To: Keith Owens; +Cc: torvalds, linux-kernel


Keith Owens writes:
 > do_softirq is called from asm code which does not get preprocessed.
 > It needs to be exported with no version.

It can get preprocessed if you know how.  Simply use the "i" asm
constraint for an extra argument, and use the symbol there.  For
example:

	__asm__("%0" : : "i" (my_versioned_symbol));

It works and we've been doing it on sparc for ages.

Later,
David S. Miller
davem@redhat.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 12:13 ` David S. Miller
@ 2001-06-13 13:48   ` Jeff Garzik
  2001-06-13 14:03     ` Keith Owens
  2001-06-13 14:06     ` David S. Miller
  2001-06-13 13:58   ` Keith Owens
                     ` (2 subsequent siblings)
  3 siblings, 2 replies; 21+ messages in thread
From: Jeff Garzik @ 2001-06-13 13:48 UTC (permalink / raw)
  To: David S. Miller; +Cc: Keith Owens, torvalds, linux-kernel

"David S. Miller" wrote:
> 
> Keith Owens writes:
>  > do_softirq is called from asm code which does not get preprocessed.
>  > It needs to be exported with no version.
> 
> It can get preprocessed if you know how.  Simply use the "i" asm
> constraint for an extra argument, and use the symbol there.  For
> example:
> 
>         __asm__("%0" : : "i" (my_versioned_symbol));
> 
> It works and we've been doing it on sparc for ages.

how to do this in foo.S code?

-- 
Jeff Garzik      | Andre the Giant has a posse.
Building 1024    |
MandrakeSoft     |

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 12:13 ` David S. Miller
  2001-06-13 13:48   ` Jeff Garzik
@ 2001-06-13 13:58   ` Keith Owens
  2001-06-13 13:58   ` David S. Miller
  2001-06-13 14:01   ` David S. Miller
  3 siblings, 0 replies; 21+ messages in thread
From: Keith Owens @ 2001-06-13 13:58 UTC (permalink / raw)
  To: David S. Miller; +Cc: torvalds, linux-kernel

On Wed, 13 Jun 2001 05:13:02 -0700 (PDT), 
"David S. Miller" <davem@redhat.com> wrote:
>Keith Owens writes:
> > do_softirq is called from asm code which does not get preprocessed.
> > It needs to be exported with no version.
>
>It can get preprocessed if you know how.  Simply use the "i" asm
>constraint for an extra argument, and use the symbol there.  For
>example:
>
>	__asm__("%0" : : "i" (my_versioned_symbol));
>
>It works and we've been doing it on sparc for ages.

It works for integers but call do_softirq is more of a problem.  I
could not find an asm constraint that generated correct code in a
single instruction.  The closest I could get was
  __asm__("call *%%eax" : : "a" (do_softirq));
The 'obvious'
  __asm__("call %0" : : "m" (do_softirq));
calls to a location that contains the address of do_softirq, oops.

Any other architectures that call do_softirq inside asm would need
similar hard coding of indirect branches.  It is simpler to export
do_softirq with no version, and have cleaner asm.


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 12:13 ` David S. Miller
  2001-06-13 13:48   ` Jeff Garzik
  2001-06-13 13:58   ` Keith Owens
@ 2001-06-13 13:58   ` David S. Miller
  2001-06-13 14:01   ` David S. Miller
  3 siblings, 0 replies; 21+ messages in thread
From: David S. Miller @ 2001-06-13 13:58 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Keith Owens, torvalds, linux-kernel


Jeff Garzik writes:
 > how to do this in foo.S code?

foo.S goes through the preprocessor already.

Later,
David S. Miller
davem@redhat.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 12:13 ` David S. Miller
                     ` (2 preceding siblings ...)
  2001-06-13 13:58   ` David S. Miller
@ 2001-06-13 14:01   ` David S. Miller
  2001-06-13 14:09     ` Keith Owens
  2001-06-13 14:21     ` David S. Miller
  3 siblings, 2 replies; 21+ messages in thread
From: David S. Miller @ 2001-06-13 14:01 UTC (permalink / raw)
  To: Keith Owens; +Cc: torvalds, linux-kernel


Keith Owens writes:
 > It works for integers but call do_softirq is more of a problem.  I
 > could not find an asm constraint that generated correct code in a
 > single instruction.  The closest I could get was
 >   __asm__("call *%%eax" : : "a" (do_softirq));
 > The 'obvious'
 >   __asm__("call %0" : : "m" (do_softirq));
 > calls to a location that contains the address of do_softirq, oops.
 > 
 > Any other architectures that call do_softirq inside asm would need
 > similar hard coding of indirect branches.  It is simpler to export
 > do_softirq with no version, and have cleaner asm.

Why doesn't this work on x86?

#define my_symbol	my_symbol_versioned
extern void my_symbol(void);

__asm__("call %0" : : "i" (my_symbol));

Later,
David S. Miller
davem@redhat.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 13:48   ` Jeff Garzik
@ 2001-06-13 14:03     ` Keith Owens
  2001-06-13 14:06     ` David S. Miller
  1 sibling, 0 replies; 21+ messages in thread
From: Keith Owens @ 2001-06-13 14:03 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: David S. Miller, torvalds, linux-kernel

On Wed, 13 Jun 2001 09:48:33 -0400, 
Jeff Garzik <jgarzik@mandrakesoft.com> wrote:
>"David S. Miller" wrote:
>> It can get preprocessed if you know how.  Simply use the "i" asm
>> constraint for an extra argument, and use the symbol there.
>
>how to do this in foo.S code?

Fortunately it is not a problem for foo.S code - yet.  External symbol
references only need module version pre-processing when the code is in
a module.  AFAIK no *.S code is compiled into a module, all *.S code is
built into vmlinux, this is why I did not use this argument myself.
OTOH if any *.S code is compiled into a module then all symbols it
refers to must be EXPORT_SYMBOL_NOVERS().


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 13:48   ` Jeff Garzik
  2001-06-13 14:03     ` Keith Owens
@ 2001-06-13 14:06     ` David S. Miller
  2001-06-13 14:11       ` Keith Owens
  2001-06-13 14:15       ` David S. Miller
  1 sibling, 2 replies; 21+ messages in thread
From: David S. Miller @ 2001-06-13 14:06 UTC (permalink / raw)
  To: Keith Owens; +Cc: Jeff Garzik, torvalds, linux-kernel


Keith Owens writes:
 > OTOH if any *.S code is compiled into a module then all symbols it
 > refers to must be EXPORT_SYMBOL_NOVERS().

Why not just add --include modversions.h to the gcc command line to
build it, why wouldn't this work?

Later,
David S. Miller
davem@redhat.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:01   ` David S. Miller
@ 2001-06-13 14:09     ` Keith Owens
  2001-06-13 14:31       ` Bill Pringlemeir
  2001-06-13 14:21     ` David S. Miller
  1 sibling, 1 reply; 21+ messages in thread
From: Keith Owens @ 2001-06-13 14:09 UTC (permalink / raw)
  To: David S. Miller; +Cc: torvalds, linux-kernel

On Wed, 13 Jun 2001 07:01:34 -0700 (PDT), 
"David S. Miller" <davem@redhat.com> wrote:
>Why doesn't this work on x86?
>
>#define my_symbol	my_symbol_versioned
>extern void my_symbol(void);
>
>__asm__("call %0" : : "i" (my_symbol));

#define my_symbol       my_symbol_versioned
extern void my_symbol(void);

void foo(void) { __asm__("call %0" : : "i" (my_symbol)); }

# gcc -o x x.c
/tmp/cclWXduj.s: Assembler messages:
/tmp/cclWXduj.s:12: Error: suffix or operands invalid for `call'


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:06     ` David S. Miller
@ 2001-06-13 14:11       ` Keith Owens
  2001-06-13 14:15       ` David S. Miller
  1 sibling, 0 replies; 21+ messages in thread
From: Keith Owens @ 2001-06-13 14:11 UTC (permalink / raw)
  To: David S. Miller; +Cc: Jeff Garzik, linux-kernel

On Wed, 13 Jun 2001 07:06:42 -0700 (PDT), 
"David S. Miller" <davem@redhat.com> wrote:
>
>Keith Owens writes:
> > OTOH if any *.S code is compiled into a module then all symbols it
> > refers to must be EXPORT_SYMBOL_NOVERS().
>
>Why not just add --include modversions.h to the gcc command line to
>build it, why wouldn't this work?

Assembler code is not hooked into the generic module symbol version
handling.  Every .S rule is unique and I'm not going to change every
one.


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:06     ` David S. Miller
  2001-06-13 14:11       ` Keith Owens
@ 2001-06-13 14:15       ` David S. Miller
  2001-06-13 14:37         ` Keith Owens
  1 sibling, 1 reply; 21+ messages in thread
From: David S. Miller @ 2001-06-13 14:15 UTC (permalink / raw)
  To: Keith Owens; +Cc: Jeff Garzik, linux-kernel


Keith Owens writes:
 > On Wed, 13 Jun 2001 07:06:42 -0700 (PDT), 
 > "David S. Miller" <davem@redhat.com> wrote:
 > >
 > >Keith Owens writes:
 > > > OTOH if any *.S code is compiled into a module then all symbols it
 > > > refers to must be EXPORT_SYMBOL_NOVERS().
 > >
 > >Why not just add --include modversions.h to the gcc command line to
 > >build it, why wouldn't this work?
 > 
 > Assembler code is not hooked into the generic module symbol version
 > handling.  Every .S rule is unique and I'm not going to change every
 > one.

Why not make a ASM_CPP_DEFINES that all those rules use?

Surely this is a smaller hammer than making them all NOVERS(), I
think all of these workarounds with novers for assembly are silly and
are merely looking for a solution which nobody (perhaps except me :-)
is bothering to look for.

Later,
David S. Miller
davem@redhat.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:01   ` David S. Miller
  2001-06-13 14:09     ` Keith Owens
@ 2001-06-13 14:21     ` David S. Miller
  2001-06-13 14:37       ` Andrew Morton
                         ` (3 more replies)
  1 sibling, 4 replies; 21+ messages in thread
From: David S. Miller @ 2001-06-13 14:21 UTC (permalink / raw)
  To: Keith Owens; +Cc: torvalds, linux-kernel


Keith Owens writes:
 > #define my_symbol       my_symbol_versioned
 > extern void my_symbol(void);
 > 
 > void foo(void) { __asm__("call %0" : : "i" (my_symbol)); }
 > 
 > # gcc -o x x.c
 > /tmp/cclWXduj.s: Assembler messages:
 > /tmp/cclWXduj.s:12: Error: suffix or operands invalid for `call'

I can't believe there is no reliable way to get rid of that
pesky "$" gcc is adding to the symbol.  Oh well...

Later,
David S. Miller
davem@redhat.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:09     ` Keith Owens
@ 2001-06-13 14:31       ` Bill Pringlemeir
  2001-06-13 14:39         ` Keith Owens
  0 siblings, 1 reply; 21+ messages in thread
From: Bill Pringlemeir @ 2001-06-13 14:31 UTC (permalink / raw)
  To: Keith Owens; +Cc: David S. Miller, torvalds, linux-kernel

>>>>> "Keith" == Keith Owens <kaos@ocs.com.au> writes:

 Keith> #define my_symbol my_symbol_versioned extern void
 Keith> my_symbol(void);

 Keith> void foo(void) { __asm__("call %0" : : "i" (my_symbol)); }

 Keith> # gcc -o x x.c /tmp/cclWXduj.s: Assembler messages:
 Keith> /tmp/cclWXduj.s:12: Error: suffix or operands invalid for
 Keith> `call'

Try ye' olde STRINGIFY and string concatenation?  Well, at least I try...

     #define my_symbol my_symbol_versioned
     #define STRINGIFY(a) STRINGIFY1(a)
     #define STRINGIFY1(a) #a
     extern void my_symbol(void);

     void foo(void)
     {
         __asm__("call " STRINGIFY(my_symbol) "\n");
     }

     [bpringle@localhost bpringle]$ gcc -o x x.c
     /usr/lib/crt1.o(.text+0x18): undefined reference to `main'
     /tmp/ccIj9Cit.o: In function `foo':
     /tmp/ccIj9Cit.o(.text+0x4): undefined reference to `my_symbol_versioned'
     collect2: ld returned 1 exit status

regards,
Bill Pringlemeir.


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:21     ` David S. Miller
@ 2001-06-13 14:37       ` Andrew Morton
  2001-06-13 14:44       ` Andreas Schwab
                         ` (2 subsequent siblings)
  3 siblings, 0 replies; 21+ messages in thread
From: Andrew Morton @ 2001-06-13 14:37 UTC (permalink / raw)
  To: David S. Miller; +Cc: Keith Owens, torvalds, linux-kernel

"David S. Miller" wrote:
> 
> Keith Owens writes:
>  > #define my_symbol       my_symbol_versioned
>  > extern void my_symbol(void);
>  >
>  > void foo(void) { __asm__("call %0" : : "i" (my_symbol)); }
>  >
>  > # gcc -o x x.c
>  > /tmp/cclWXduj.s: Assembler messages:
>  > /tmp/cclWXduj.s:12: Error: suffix or operands invalid for `call'
> 
> I can't believe there is no reliable way to get rid of that
> pesky "$" gcc is adding to the symbol.  Oh well...

void foo(void) { __asm__("call %c0" : : "i" (my_symbol)); }
                               ^^^

-

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:15       ` David S. Miller
@ 2001-06-13 14:37         ` Keith Owens
  0 siblings, 0 replies; 21+ messages in thread
From: Keith Owens @ 2001-06-13 14:37 UTC (permalink / raw)
  To: David S. Miller; +Cc: Jeff Garzik, linux-kernel

On Wed, 13 Jun 2001 07:15:31 -0700 (PDT), 
"David S. Miller" <davem@redhat.com> wrote:
>Surely this is a smaller hammer than making them all NOVERS(), I
>think all of these workarounds with novers for assembly are silly and
>are merely looking for a solution which nobody (perhaps except me :-)
>is bothering to look for.

modversions.h will disappear in 2.5 anyway, and be replaced with a
cleaner system of symbol versions which does not rely on pre-processor
fudging of symbol names.  It should be able to handle assembler as well
as C.


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:31       ` Bill Pringlemeir
@ 2001-06-13 14:39         ` Keith Owens
  0 siblings, 0 replies; 21+ messages in thread
From: Keith Owens @ 2001-06-13 14:39 UTC (permalink / raw)
  To: Bill Pringlemeir; +Cc: David S. Miller, linux-kernel

On 13 Jun 2001 10:31:22 -0400, 
Bill Pringlemeir <bpringle@sympatico.ca> wrote:
>Try ye' olde STRINGIFY and string concatenation?  Well, at least I try...
>
>     #define my_symbol my_symbol_versioned
>     #define STRINGIFY(a) STRINGIFY1(a)
>     #define STRINGIFY1(a) #a
>     extern void my_symbol(void);
>
>     void foo(void)
>     {
>         __asm__("call " STRINGIFY(my_symbol) "\n");
>     }
>
>     [bpringle@localhost bpringle]$ gcc -o x x.c
>     /usr/lib/crt1.o(.text+0x18): undefined reference to `main'
>     /tmp/ccIj9Cit.o: In function `foo':
>     /tmp/ccIj9Cit.o(.text+0x4): undefined reference to `my_symbol_versioned'

Only at the cost of polluting every .h file that calls a symbol from
__asm__.  The whole pre-processor kludge for symbol versions goes away
in 2.5 so live with _novers for now.


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:21     ` David S. Miller
  2001-06-13 14:37       ` Andrew Morton
@ 2001-06-13 14:44       ` Andreas Schwab
  2001-06-13 14:53         ` Russell King
  2001-06-13 14:52       ` Russell King
  2001-06-13 14:55       ` David S. Miller
  3 siblings, 1 reply; 21+ messages in thread
From: Andreas Schwab @ 2001-06-13 14:44 UTC (permalink / raw)
  To: David S. Miller; +Cc: Keith Owens, torvalds, linux-kernel

"David S. Miller" <davem@redhat.com> writes:

|> Keith Owens writes:
|>  > #define my_symbol       my_symbol_versioned
|>  > extern void my_symbol(void);
|>  > 
|>  > void foo(void) { __asm__("call %0" : : "i" (my_symbol)); }
|>  > 
|>  > # gcc -o x x.c
|>  > /tmp/cclWXduj.s: Assembler messages:
|>  > /tmp/cclWXduj.s:12: Error: suffix or operands invalid for `call'
|> 
|> I can't believe there is no reliable way to get rid of that
|> pesky "$" gcc is adding to the symbol.  Oh well...

Use %c0.  *Note Output Templates and Operand Substitution: (gcc)Output
Template.


Andreas.

-- 
Andreas Schwab                                  "And now for something
SuSE Labs                                        completely different."
Andreas.Schwab@suse.de
SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:21     ` David S. Miller
  2001-06-13 14:37       ` Andrew Morton
  2001-06-13 14:44       ` Andreas Schwab
@ 2001-06-13 14:52       ` Russell King
  2001-06-13 14:55       ` David S. Miller
  3 siblings, 0 replies; 21+ messages in thread
From: Russell King @ 2001-06-13 14:52 UTC (permalink / raw)
  To: David S. Miller; +Cc: Keith Owens, torvalds, linux-kernel

On Wed, Jun 13, 2001 at 07:21:41AM -0700, David S. Miller wrote:
> I can't believe there is no reliable way to get rid of that
> pesky "$" gcc is adding to the symbol.  Oh well...

GCC on ARM does a similar thing - all constants in the assembler are
prefixed with '#' or '@'.  Using the 'i' constraint adds this.  This
behaviour is actually useful when you want to pass a constant or a
register - it allows GCC to make the decision for you, and do the
right thing in the assembler fragment.  Eg, the following code used
to be in the kernel until 2.3:

extern __inline__ void __outb (unsigned int value, unsigned int port)
{
        unsigned long temp;
        __asm__ __volatile__(
        "tst    %2, #0x80000000\n\t"
        "mov    %0, %4\n\t"
        "addeq  %0, %0, %3\n\t"
        "strb   %1, [%0, %2, lsl #2]    @ outb"
        : "=&r" (temp)
        : "r" (value), "r" (port), "Ir" (PCIO_BASE - IO_BASE), "Ir" (IO_BASE)
        : "cc");
}

%3 and %4 might be a constant:
	mov	r5, #0x03000000

or a real register if the constant can't be loaded in one instruction:
	mov	r5, r1

'I' in this case means "a constant suitable for use with the arithmetic
instructions".

--
Russell King (rmk@arm.linux.org.uk)                The developer of ARM Linux
             http://www.arm.linux.org.uk/personal/aboutme.html


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:44       ` Andreas Schwab
@ 2001-06-13 14:53         ` Russell King
  0 siblings, 0 replies; 21+ messages in thread
From: Russell King @ 2001-06-13 14:53 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: David S. Miller, Keith Owens, torvalds, linux-kernel

On Wed, Jun 13, 2001 at 04:44:40PM +0200, Andreas Schwab wrote:
> Use %c0.  *Note Output Templates and Operand Substitution: (gcc)Output
> Template.

Oh great!  I can get rid of some more crap from the ARM tree!

Thanks.

--
Russell King (rmk@arm.linux.org.uk)                The developer of ARM Linux
             http://www.arm.linux.org.uk/personal/aboutme.html


^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:21     ` David S. Miller
                         ` (2 preceding siblings ...)
  2001-06-13 14:52       ` Russell King
@ 2001-06-13 14:55       ` David S. Miller
  2001-06-13 16:39         ` Keith Owens
  3 siblings, 1 reply; 21+ messages in thread
From: David S. Miller @ 2001-06-13 14:55 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: Keith Owens, torvalds, linux-kernel


Andreas Schwab writes:
 > "David S. Miller" <davem@redhat.com> writes:
 > 
 > |> I can't believe there is no reliable way to get rid of that
 > |> pesky "$" gcc is adding to the symbol.  Oh well...
 > 
 > Use %c0.  *Note Output Templates and Operand Substitution: (gcc)Output
 > Template.

Nice, see Keith?  There are no excuses :-)

Later,
David S. Miller
davem@redhat.com

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [patch] 2.4.6-pre3 unresolved symbol do_softirq
  2001-06-13 14:55       ` David S. Miller
@ 2001-06-13 16:39         ` Keith Owens
  0 siblings, 0 replies; 21+ messages in thread
From: Keith Owens @ 2001-06-13 16:39 UTC (permalink / raw)
  To: David S. Miller; +Cc: Andreas Schwab, torvalds, linux-kernel

On Wed, 13 Jun 2001 07:55:49 -0700 (PDT), 
"David S. Miller" <davem@redhat.com> wrote:
>
>Andreas Schwab writes:
> > "David S. Miller" <davem@redhat.com> writes:
> > 
> > |> I can't believe there is no reliable way to get rid of that
> > |> pesky "$" gcc is adding to the symbol.  Oh well...
> > 
> > Use %c0.  *Note Output Templates and Operand Substitution: (gcc)Output
> > Template.
>
>Nice, see Keith?  There are no excuses :-)

Oh, there are always excuses ;).  But in this case ...

Index: 6-pre3.1/include/asm-i386/softirq.h
--- 6-pre3.1/include/asm-i386/softirq.h Sat, 09 Jun 2001 11:25:53 +1000 kaos (linux-2.4/T/51_softirq.h 1.3 644)
+++ 6-pre3.1(w)/include/asm-i386/softirq.h Thu, 14 Jun 2001 02:26:16 +1000 kaos (linux-2.4/T/51_softirq.h 1.3 644)
@@ -36,13 +36,13 @@ do {									\
 									\
 			".section .text.lock,\"ax\";"			\
 			"2: pushl %%eax; pushl %%ecx; pushl %%edx;"	\
-			"call do_softirq;"				\
+			"call %c1;"					\
 			"popl %%edx; popl %%ecx; popl %%eax;"		\
 			"jmp 1b;"					\
 			".previous;"					\
 									\
 		: /* no output */					\
-		: "r" (ptr)						\
+		: "r" (ptr), "i" (do_softirq)				\
 		/* no registers clobbered */ );				\
 } while (0)
 
No changes to kernel/ksyms, it still says EXPORT_SYMBOL(do_softirq);  I like it.


^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2001-06-13 16:40 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-06-13 12:07 [patch] 2.4.6-pre3 unresolved symbol do_softirq Keith Owens
2001-06-13 12:13 ` David S. Miller
2001-06-13 13:48   ` Jeff Garzik
2001-06-13 14:03     ` Keith Owens
2001-06-13 14:06     ` David S. Miller
2001-06-13 14:11       ` Keith Owens
2001-06-13 14:15       ` David S. Miller
2001-06-13 14:37         ` Keith Owens
2001-06-13 13:58   ` Keith Owens
2001-06-13 13:58   ` David S. Miller
2001-06-13 14:01   ` David S. Miller
2001-06-13 14:09     ` Keith Owens
2001-06-13 14:31       ` Bill Pringlemeir
2001-06-13 14:39         ` Keith Owens
2001-06-13 14:21     ` David S. Miller
2001-06-13 14:37       ` Andrew Morton
2001-06-13 14:44       ` Andreas Schwab
2001-06-13 14:53         ` Russell King
2001-06-13 14:52       ` Russell King
2001-06-13 14:55       ` David S. Miller
2001-06-13 16:39         ` Keith Owens

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).