public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* unresolved symbols __udivdi3 and __umoddi3
@ 2002-01-25  6:31 simon
  2002-01-25 16:45 ` Andreas Dilger
                   ` (2 more replies)
  0 siblings, 3 replies; 21+ messages in thread
From: simon @ 2002-01-25  6:31 UTC (permalink / raw)
  To: linux-kernel

I am writing a module and would like to perform arithmetic on long 
long variables. When I try to do this the module does not load due
to the unresolved symbols __udivdi3 and __umoddi3. I notice these
are normally defined in libc. Is there any way I can do this in a 
kernel module.

Many Thanks

Simon.
__________________________

Simon Haynes - Baydel 
Phone : 44 (0) 1372 378811
Email : simon@baydel.com
__________________________

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-25  6:31 unresolved symbols __udivdi3 and __umoddi3 simon
@ 2002-01-25 16:45 ` Andreas Dilger
  2002-01-25 16:56 ` Richard B. Johnson
  2002-01-25 17:06 ` christophe barbé
  2 siblings, 0 replies; 21+ messages in thread
From: Andreas Dilger @ 2002-01-25 16:45 UTC (permalink / raw)
  To: simon; +Cc: linux-kernel

On Jan 25, 2002  06:31 -0000, simon@baydel.com wrote:
> I am writing a module and would like to perform arithmetic on long 
> long variables. When I try to do this the module does not load due
> to the unresolved symbols __udivdi3 and __umoddi3. I notice these
> are normally defined in libc. Is there any way I can do this in a 
> kernel module.

Normally you do not need to do 64-bit arithmetic in the kernel.  You
normally use power-of-2 values, and then shift/mask to get the results
you want.

What is it exactly that you need to do?

Cheers, Andreas
--
Andreas Dilger
http://sourceforge.net/projects/ext2resize/
http://www-mddsp.enel.ucalgary.ca/People/adilger/


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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-25  6:31 unresolved symbols __udivdi3 and __umoddi3 simon
  2002-01-25 16:45 ` Andreas Dilger
@ 2002-01-25 16:56 ` Richard B. Johnson
  2002-01-25 21:42   ` Tim Schmielau
  2002-01-28 11:08   ` Daniel Phillips
  2002-01-25 17:06 ` christophe barbé
  2 siblings, 2 replies; 21+ messages in thread
From: Richard B. Johnson @ 2002-01-25 16:56 UTC (permalink / raw)
  To: simon; +Cc: linux-kernel

On Fri, 25 Jan 2002,  wrote:

> I am writing a module and would like to perform arithmetic on long 
> long variables. When I try to do this the module does not load due
> to the unresolved symbols __udivdi3 and __umoddi3. I notice these
> are normally defined in libc. Is there any way I can do this in a 
> kernel module.
> 
> Many Thanks
> 
> Simon.

Normally, in modules, the granularity is such that divisions can
be made by powers-of-two. In a 32-bit world, the modulus that you
obtain with umoddi3 (the remainder from a long-long, division) should
normally fit within a 32-bit variable. If you insist upon doing 64-bit
math in a 32-bit world, then you can either make your own procedures
and link them, of you can "appropriate" them from the 'C' runtime
library code, include them with your source, assemble, and link them
in.


Cheers,
Dick Johnson

Penguin : Linux version 2.4.1 on an i686 machine (797.90 BogoMips).

    I was going to compile a list of innovations that could be
    attributed to Microsoft. Once I realized that Ctrl-Alt-Del
    was handled in the BIOS, I found that there aren't any.



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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-25  6:31 unresolved symbols __udivdi3 and __umoddi3 simon
  2002-01-25 16:45 ` Andreas Dilger
  2002-01-25 16:56 ` Richard B. Johnson
@ 2002-01-25 17:06 ` christophe barbé
  2002-01-25 18:53   ` Christoph Hellwig
  2 siblings, 1 reply; 21+ messages in thread
From: christophe barbé @ 2002-01-25 17:06 UTC (permalink / raw)
  To: simon; +Cc: linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1542 bytes --]

GFS uses (provide) a module which provides these symbols.
I don't know if this is still the case with their non-free software but
you can certainly find the last free GFS release.

You can have a look at 
   http://www.sistina.com
but I guess that if they provide a way to get the last free release this
will not be a easy to find link.

Or at
   http://www.opengfs.org

But IIRC these symbol were used only for the 2.2 kernel (that I assume
you are using?) and the support for 2.2 kernel was removed in the
opengfs fork.

Christophe

On Fri, Jan 25, 2002 at 06:31:10AM -0000, simon@baydel.com wrote:
> I am writing a module and would like to perform arithmetic on long 
> long variables. When I try to do this the module does not load due
> to the unresolved symbols __udivdi3 and __umoddi3. I notice these
> are normally defined in libc. Is there any way I can do this in a 
> kernel module.
> 
> Many Thanks
> 
> Simon.
> __________________________
> 
> Simon Haynes - Baydel 
> Phone : 44 (0) 1372 378811
> Email : simon@baydel.com
> __________________________
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
Christophe Barbé <christophe.barbe@ufies.org>
GnuPG FingerPrint: E0F6 FADF 2A5C F072 6AF8  F67A 8F45 2F1E D72C B41E

Dogs believe they are human. Cats believe they are God.

[-- Attachment #2: Type: application/pgp-signature, Size: 241 bytes --]

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-25 17:06 ` christophe barbé
@ 2002-01-25 18:53   ` Christoph Hellwig
  2002-01-25 19:03     ` christophe barbé
  0 siblings, 1 reply; 21+ messages in thread
From: Christoph Hellwig @ 2002-01-25 18:53 UTC (permalink / raw)
  To: christophe barb? ; +Cc: linux-kernel, simon

In article <20020125170642.GG671@online.fr> you wrote:
> But IIRC these symbol were used only for the 2.2 kernel (that I assume
> you are using?) and the support for 2.2 kernel was removed in the
> opengfs fork.

No - OpenGFS 0.0.9x still needs them even on 2.4.
The next development series leading toward 0.2 will remove that
requirement by resturcturing all the code that currently uses
64bit arithmetics without any real need.

	Christoph

-- 
Of course it doesn't work. We've performed a software upgrade.

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-25 18:53   ` Christoph Hellwig
@ 2002-01-25 19:03     ` christophe barbé
  0 siblings, 0 replies; 21+ messages in thread
From: christophe barbé @ 2002-01-25 19:03 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: linux-kernel, simon

[-- Attachment #1: Type: text/plain, Size: 1519 bytes --]

On Fri, Jan 25, 2002 at 07:53:38PM +0100, Christoph Hellwig wrote:
> In article <20020125170642.GG671@online.fr> you wrote:
> > But IIRC these symbol were used only for the 2.2 kernel (that I assume
> > you are using?) and the support for 2.2 kernel was removed in the
> > opengfs fork.
> 
> No - OpenGFS 0.0.9x still needs them even on 2.4.
> The next development series leading toward 0.2 will remove that
> requirement by resturcturing all the code that currently uses
> 64bit arithmetics without any real need.

Oh yes my mistake was that GFS for kernel 2.2 require a lfs patch and I
had in mind that it was this patch that requires 64bits arithmetics.
But this is definitevly not the case (otherwise this should be compiled
in the kernel and not as a module).

Then your module (divdi3.o I guess) is enough for the need of the
original poster of this thread.
But the best thing to do for him is to rewrite his module to avoid
these 64bits operations.

As a side note, I was a contributor for this part of GFS and Sistina
never contacted me to ask me to give them my right before their
relicensing. But perhaps they have dropped the ppc support.

Christophe

> 
> 	Christoph
> 
> -- 
> Of course it doesn't work. We've performed a software upgrade.

-- 
Christophe Barbé <christophe.barbe@ufies.org>
GnuPG FingerPrint: E0F6 FADF 2A5C F072 6AF8  F67A 8F45 2F1E D72C B41E

Cats seem go on the principle that it never does any harm to ask for
what you want. --Joseph Wood Krutch

[-- Attachment #2: Type: application/pgp-signature, Size: 241 bytes --]

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-25 16:56 ` Richard B. Johnson
@ 2002-01-25 21:42   ` Tim Schmielau
  2002-01-28  4:21     ` simon
  2002-01-28 11:08   ` Daniel Phillips
  1 sibling, 1 reply; 21+ messages in thread
From: Tim Schmielau @ 2002-01-25 21:42 UTC (permalink / raw)
  To: simon; +Cc: linux-kernel

On Fri, 25 Jan 2002, Richard B. Johnson wrote:

> On Fri, 25 Jan 2002,  wrote:
>
> > I am writing a module and would like to perform arithmetic on long
> > long variables. When I try to do this the module does not load due
> > to the unresolved symbols __udivdi3 and __umoddi3. I notice these
> > are normally defined in libc. Is there any way I can do this in a
> > kernel module.
> >
> > Many Thanks
> >
> > Simon.
>
> Normally, in modules, the granularity is such that divisions can
> be made by powers-of-two. In a 32-bit world, the modulus that you
> obtain with umoddi3 (the remainder from a long-long, division) should
> normally fit within a 32-bit variable. If you insist upon doing 64-bit
> math in a 32-bit world, then you can either make your own procedures
> and link them, of you can "appropriate" them from the 'C' runtime
> library code, include them with your source, assemble, and link them
> in.

If 64-bit arithmetics cannot be avoided, the do_div64() macro defined in
include/asm/div64.h comes in handy.
  mod = do_div((unsigned long) x, (long) y)
will set  x  to the quotient x/y  and  mod  to the remainder  x%y .

Tim


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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-25 21:42   ` Tim Schmielau
@ 2002-01-28  4:21     ` simon
  2002-01-28 17:38       ` Tim Schmielau
  2002-01-28 19:17       ` Daniel Phillips
  0 siblings, 2 replies; 21+ messages in thread
From: simon @ 2002-01-28  4:21 UTC (permalink / raw)
  To: Tim Schmielau; +Cc: linux-kernel

First of all I would like to thank all the people that responded to my 
mail. Unfortunately the numbers I am using are not restricted to 
powers of two so I could not simply shift the data. I have decided to 
use the div64.h solution and it seems to work well. 

I have looked at this header file and I do not understand the asm 
syntax. 

In particular the only x86 div instruction I know only returns a 32 bit 
div result. Because I don't understand the div64 header I cannot 
see how a 64 bit result is calculated.

I also tried this header in a regular application. This failed to return 
the modulus although it works in a module.

Is this asm syntax documented anywhere ? 

Thanks Again 

Simon.


On 25 Jan 2002, at 22:42, Tim Schmielau wrote:

> On Fri, 25 Jan 2002, Richard B. Johnson wrote:
> 
> > On Fri, 25 Jan 2002,  wrote:
> >
> > > I am writing a module and would like to perform arithmetic on long
> > > long variables. When I try to do this the module does not load due
> > > to the unresolved symbols __udivdi3 and __umoddi3. I notice these
> > > are normally defined in libc. Is there any way I can do this in a
> > > kernel module.
> > >
> > > Many Thanks
> > >
> > > Simon.
> >
> > Normally, in modules, the granularity is such that divisions can
> > be made by powers-of-two. In a 32-bit world, the modulus that you
> > obtain with umoddi3 (the remainder from a long-long, division) should
> > normally fit within a 32-bit variable. If you insist upon doing 64-bit
> > math in a 32-bit world, then you can either make your own procedures
> > and link them, of you can "appropriate" them from the 'C' runtime
> > library code, include them with your source, assemble, and link them
> > in.
> 
> If 64-bit arithmetics cannot be avoided, the do_div64() macro defined in
> include/asm/div64.h comes in handy.
>   mod = do_div((unsigned long) x, (long) y)
> will set  x  to the quotient x/y  and  mod  to the remainder  x%y .
> 
> Tim
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/


__________________________

Simon Haynes - Baydel 
Phone : 44 (0) 1372 378811
Email : simon@baydel.com
__________________________

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-25 16:56 ` Richard B. Johnson
  2002-01-25 21:42   ` Tim Schmielau
@ 2002-01-28 11:08   ` Daniel Phillips
  2002-01-28 11:10     ` Arjan van de Ven
  1 sibling, 1 reply; 21+ messages in thread
From: Daniel Phillips @ 2002-01-28 11:08 UTC (permalink / raw)
  To: root, simon; +Cc: linux-kernel

On January 25, 2002 05:56 pm, Richard B. Johnson wrote:
> On Fri, 25 Jan 2002,  wrote:
> 
> > I am writing a module and would like to perform arithmetic on long 
> > long variables. When I try to do this the module does not load due
> > to the unresolved symbols __udivdi3 and __umoddi3. I notice these
> > are normally defined in libc. Is there any way I can do this in a 
> > kernel module.
> > 
> > Many Thanks
> > 
> > Simon.
> 
> Normally, in modules, the granularity is such that divisions can
> be made by powers-of-two. In a 32-bit world, the modulus that you
> obtain with umoddi3 (the remainder from a long-long, division) should
> normally fit within a 32-bit variable. If you insist upon doing 64-bit
> math in a 32-bit world, then you can either make your own procedures
> and link them, of you can "appropriate" them from the 'C' runtime
> library code, include them with your source, assemble, and link them
> in.

Let's be clear on one thing.  There is nothing unnatural about
32bits * 32bits = 64bits or 64bits / 32bits = 32bits in a 32 bit world.
In fact, it is a rare architecture that does not support this directly
in hardware.  It may be awkward to express it in C, but since when has
that ever stopped us from using the best machine instructions for the
job?

Personally, I find the omission of these mixed size muldiv operations
from the kernel a great inconvenience.  Think 'multiply by a ratio'.
Yes, I know that by various posturings you can force most problems
that would be most naturally be expressed this way into some other
form, but several things suffer:

  - Readability
  - Efficiency
  - Code complexity
  - Code size

I think the argument I've seen most often presented against mixed
size muldiv operations goes something like 'I've never used them, so
why would anybody need them?'.  This just means that somebody hasn't
written very many kinds of programs, particularly the kind of code
we need to write if we are ever going to get the VM and IO
balancing code working properly.

-- 
Daniel

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-28 11:08   ` Daniel Phillips
@ 2002-01-28 11:10     ` Arjan van de Ven
  2002-01-28 11:47       ` Daniel Phillips
  0 siblings, 1 reply; 21+ messages in thread
From: Arjan van de Ven @ 2002-01-28 11:10 UTC (permalink / raw)
  To: Daniel Phillips, linux-kernel

Daniel Phillips wrote:
> 
> On January 25, 2002 05:56 pm, Richard B. Johnson wrote:
> > On Fri, 25 Jan 2002,  wrote:
> >
> > > I am writing a module and would like to perform arithmetic on long
> > > long variables. When I try to do this the module does not load due
> > > to the unresolved symbols __udivdi3 and __umoddi3. I notice these
> > > are normally defined in libc. Is there any way I can do this in a
> > > kernel module.
> > >
> > > Many Thanks
> > >
> > > Simon.
> >
> > Normally, in modules, the granularity is such that divisions can
> > be made by powers-of-two. In a 32-bit world, the modulus that you
> > obtain with umoddi3 (the remainder from a long-long, division) should
> > normally fit within a 32-bit variable. If you insist upon doing 64-bit
> > math in a 32-bit world, then you can either make your own procedures
> > and link them, of you can "appropriate" them from the 'C' runtime
> > library code, include them with your source, assemble, and link them
> > in.
> 
> Let's be clear on one thing.  There is nothing unnatural about
> 32bits * 32bits = 64bits or 64bits / 32bits = 32bits in a 32 bit world.
> In fact, it is a rare architecture that does not support this directly
> in hardware.  It may be awkward to express it in C, but since when has
> that ever stopped us from using the best machine instructions for the
> job?
> 
> Personally, I find the omission of these mixed size muldiv operations
> from the kernel a great inconvenience.  

*cough* #include <asm/div64.h> *cough*

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-28 11:10     ` Arjan van de Ven
@ 2002-01-28 11:47       ` Daniel Phillips
  0 siblings, 0 replies; 21+ messages in thread
From: Daniel Phillips @ 2002-01-28 11:47 UTC (permalink / raw)
  To: arjanv, linux-kernel

On January 28, 2002 12:10 pm, Arjan van de Ven wrote:
> Daniel Phillips wrote:
> > 
> > On January 25, 2002 05:56 pm, Richard B. Johnson wrote:
> > > On Fri, 25 Jan 2002,  wrote:
> > >
> > > > I am writing a module and would like to perform arithmetic on long
> > > > long variables. When I try to do this the module does not load due
> > > > to the unresolved symbols __udivdi3 and __umoddi3. I notice these
> > > > are normally defined in libc. Is there any way I can do this in a
> > > > kernel module.
> > > >
> > > > Many Thanks
> > > >
> > > > Simon.
> > >
> > > Normally, in modules, the granularity is such that divisions can
> > > be made by powers-of-two. In a 32-bit world, the modulus that you
> > > obtain with umoddi3 (the remainder from a long-long, division) should
> > > normally fit within a 32-bit variable. If you insist upon doing 64-bit
> > > math in a 32-bit world, then you can either make your own procedures
> > > and link them, of you can "appropriate" them from the 'C' runtime
> > > library code, include them with your source, assemble, and link them
> > > in.
> > 
> > Let's be clear on one thing.  There is nothing unnatural about
> > 32bits * 32bits = 64bits or 64bits / 32bits = 32bits in a 32 bit world.
> > In fact, it is a rare architecture that does not support this directly
> > in hardware.  It may be awkward to express it in C, but since when has
> > that ever stopped us from using the best machine instructions for the
> > job?
> > 
> > Personally, I find the omission of these mixed size muldiv operations
> > from the kernel a great inconvenience.  
> 
> *cough* #include <asm/div64.h> *cough*

Thanks, it's a start, but it is half of what's needed at best.  A 32*32=64
mul is needed as well.  Also, the div you allude to is expressed in an
awkward form.  It's better than nothing, but it's far from as useful as it
could be.

I have a reasonably useful pair of operations constructed some time back,
which I'll offer if the thread doesn't heat up too much.

-- 
Daniel

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-28  4:21     ` simon
@ 2002-01-28 17:38       ` Tim Schmielau
  2002-01-28 19:17       ` Daniel Phillips
  1 sibling, 0 replies; 21+ messages in thread
From: Tim Schmielau @ 2002-01-28 17:38 UTC (permalink / raw)
  To: simon; +Cc: linux-kernel

> > If 64-bit arithmetics cannot be avoided, the do_div64() macro defined in
> > include/asm/div64.h comes in handy.
> >   mod = do_div((unsigned long) x, (long) y)
> > will set  x  to the quotient x/y  and  mod  to the remainder  x%y .
>
> I have looked at this header file and I do not understand the asm
> syntax.
>
> In particular the only x86 div instruction I know only returns a 32 bit
> div result. Because I don't understand the div64 header I cannot
> see how a 64 bit result is calculated.
>

Sorry, there are (platform-dependent) restrictions that I forgot to
mention. I think do_div(x,y) should work for all platforms if
y < 2^16 and x/y < 2^32, but I may stand corrected.

Actually, Momchil Velikov just pointed out that some archs only do 32 bit
divs in do_div64, where at least the C code from asm-parisc/div64.h
should be used.

Tim


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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-28  4:21     ` simon
  2002-01-28 17:38       ` Tim Schmielau
@ 2002-01-28 19:17       ` Daniel Phillips
  2002-01-28 19:28         ` Mark Zealey
  2002-01-28 19:46         ` Momchil Velikov
  1 sibling, 2 replies; 21+ messages in thread
From: Daniel Phillips @ 2002-01-28 19:17 UTC (permalink / raw)
  To: simon, Tim Schmielau; +Cc: linux-kernel

On January 28, 2002 05:21 am,  wrote:
> First of all I would like to thank all the people that responded to my 
> mail. Unfortunately the numbers I am using are not restricted to 
> powers of two so I could not simply shift the data. I have decided to 
> use the div64.h solution and it seems to work well. 
> 
> I have looked at this header file and I do not understand the asm 
> syntax. 
> 
> In particular the only x86 div instruction I know only returns a 32 bit 
> div result. Because I don't understand the div64 header I cannot 
> see how a 64 bit result is calculated.

This particular macro can't do that.  However, 64bits/32bits = 64bits is
easily calculated with two 64/32 hardware divides, in assembly.

> I also tried this header in a regular application. This failed to return 
> the modulus although it works in a module.
> 
> Is this asm syntax documented anywhere ? 

It's painful, isn't it?  And no, I don't know where it's documented.

--
Daniel

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-28 19:17       ` Daniel Phillips
@ 2002-01-28 19:28         ` Mark Zealey
  2002-01-28 19:46         ` Momchil Velikov
  1 sibling, 0 replies; 21+ messages in thread
From: Mark Zealey @ 2002-01-28 19:28 UTC (permalink / raw)
  To: linux-kernel

On Mon, Jan 28, 2002 at 08:17:06PM +0100, Daniel Phillips wrote:

> > I also tried this header in a regular application. This failed to return 
> > the modulus although it works in a module.
> > 
> > Is this asm syntax documented anywhere ? 
> 
> It's painful, isn't it?  And no, I don't know where it's documented.

I've had these docs for some time, can't remember where I got them from:
http://pkl.net/~mark/GCC_INLINE_ASM_HOWTO
http://pkl.net/~mark/rmiyagi-inline-asm.txt

They're quite good. the rest is experiance..

-- 

Mark Zealey
mark@zealos.org
mark@itsolve.co.uk

UL++++>$ G!>(GCM/GCS/GS/GM) dpu? s:-@ a16! C++++>$ P++++>+++++$ L+++>+++++$
!E---? W+++>$ N- !o? !w--- O? !M? !V? !PS !PE--@ PGP+? r++ !t---?@ !X---?
!R- b+ !tv b+ DI+ D+? G+++ e>+++++ !h++* r!-- y--

(www.geekcode.com)

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-28 19:17       ` Daniel Phillips
  2002-01-28 19:28         ` Mark Zealey
@ 2002-01-28 19:46         ` Momchil Velikov
  2002-01-28 20:06           ` Daniel Phillips
  1 sibling, 1 reply; 21+ messages in thread
From: Momchil Velikov @ 2002-01-28 19:46 UTC (permalink / raw)
  To: Daniel Phillips; +Cc: simon, Tim Schmielau, linux-kernel

>>>>> "Daniel" == Daniel Phillips <phillips@bonn-fries.net> writes:
>> Is this asm syntax documented anywhere ? 

Daniel> It's painful, isn't it?  And no, I don't know where it's documented.

It is documented in "Using and Porting GNU Compiler Collection"
http://gcc.gnu.org/onlinedocs/gcc-3.0.3/gcc_5.html#SEC103

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-28 19:46         ` Momchil Velikov
@ 2002-01-28 20:06           ` Daniel Phillips
  2002-01-28 20:14             ` Momchil Velikov
  2002-01-29 16:38             ` Horst von Brand
  0 siblings, 2 replies; 21+ messages in thread
From: Daniel Phillips @ 2002-01-28 20:06 UTC (permalink / raw)
  To: Momchil Velikov; +Cc: simon, Tim Schmielau, linux-kernel

On January 28, 2002 08:46 pm, Momchil Velikov wrote:
> >>>>> "Daniel" == Daniel Phillips <phillips@bonn-fries.net> writes:
> >> Is this asm syntax documented anywhere ? 
> 
> Daniel> It's painful, isn't it?  And no, I don't know where it's documented.
> 
> It is documented in "Using and Porting GNU Compiler Collection"
> http://gcc.gnu.org/onlinedocs/gcc-3.0.3/gcc_5.html#SEC103

I suppose we could dignify that with the term 'documentation'.  (To me, it 
reads more like a tutorial than a reference work, though as always I'm 
grateful to RMS and the FSF for having contributed this.  And the price can't 
be beat.)

Do you know where to find documentation for the assembly instructions 
themselves?

-- 
Daniel

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-28 20:06           ` Daniel Phillips
@ 2002-01-28 20:14             ` Momchil Velikov
  2002-01-29 16:38             ` Horst von Brand
  1 sibling, 0 replies; 21+ messages in thread
From: Momchil Velikov @ 2002-01-28 20:14 UTC (permalink / raw)
  To: Daniel Phillips; +Cc: simon, Tim Schmielau, linux-kernel

>>>>> "Daniel" == Daniel Phillips <phillips@bonn-fries.net> writes:

Daniel> On January 28, 2002 08:46 pm, Momchil Velikov wrote:
>> >>>>> "Daniel" == Daniel Phillips <phillips@bonn-fries.net> writes:
>> >> Is this asm syntax documented anywhere ? 
>> 
Daniel> It's painful, isn't it?  And no, I don't know where it's documented.
>> 
>> It is documented in "Using and Porting GNU Compiler Collection"
>> http://gcc.gnu.org/onlinedocs/gcc-3.0.3/gcc_5.html#SEC103

Daniel> I suppose we could dignify that with the term 'documentation'.  (To me, it 
Daniel> reads more like a tutorial than a reference work, though as always I'm 
Daniel> grateful to RMS and the FSF for having contributed this.  And the price can't 
Daniel> be beat.)

Daniel> Do you know where to find documentation for the assembly instructions 
Daniel> themselves?

The appropriate place would be the processor's reference manual.


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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-28 20:06           ` Daniel Phillips
  2002-01-28 20:14             ` Momchil Velikov
@ 2002-01-29 16:38             ` Horst von Brand
  2002-01-30  8:09               ` Daniel Phillips
  2002-01-30  8:23               ` Jeff Garzik
  1 sibling, 2 replies; 21+ messages in thread
From: Horst von Brand @ 2002-01-29 16:38 UTC (permalink / raw)
  To: Daniel Phillips; +Cc: linux-kernel

Daniel Phillips <phillips@bonn-fries.net> said:

[...]

> Do you know where to find documentation for the assembly instructions 
> themselves?

Standard ia32 references, i.e., at Intel's website. Beware, it is some 500
pages PDF. But they (and standard PC assembly books) use the nearly
unreadable Intel syntax with operands the other way around, so this is much
less of a help than it could be.

Has anyone gotten a instruction listing (just instructions and short
description, not the whole other stuff in there), preferably in AT&T
syntax?
-- 
Horst von Brand			     http://counter.li.org # 22616

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-29 16:38             ` Horst von Brand
@ 2002-01-30  8:09               ` Daniel Phillips
  2002-01-30  8:43                 ` Jeff Garzik
  2002-01-30  8:23               ` Jeff Garzik
  1 sibling, 1 reply; 21+ messages in thread
From: Daniel Phillips @ 2002-01-30  8:09 UTC (permalink / raw)
  To: Horst von Brand; +Cc: linux-kernel

On January 29, 2002 05:38 pm, Horst von Brand wrote:
> Daniel Phillips <phillips@bonn-fries.net> said:
> 
> [...]
> 
> > Do you know where to find documentation for the assembly instructions 
> > themselves?
> 
> Standard ia32 references, i.e., at Intel's website. Beware, it is some 500
> pages PDF. But they (and standard PC assembly books) use the nearly
> unreadable Intel syntax with operands the other way around, so this is much
> less of a help than it could be.

I was afraid somebody would say that.

I need look no further than the shelf at my right hand for a full set of 
Pentium documentation.  I do not consider that an adequate substitute for a 
document expressing the syntax of all machine instructions of a particular 
architecture in the GNU syntax.

The only excuse I can think of for not having such a document is "we're all 
so busy we couldn't write it, please use the Intel documentation".  Please 
don't suggest that we have no need for our own documentmentation, written in 
a form familiar to us.

> Has anyone gotten a instruction listing (just instructions and short
> description, not the whole other stuff in there), preferably in AT&T
> syntax?

Err, now I feel I wrote the above a little too strongly, but I'm not going to 
change it, because it was my initial reaction.  Yes, that's *exactly* what I 
want.

-- 
Daniel

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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-29 16:38             ` Horst von Brand
  2002-01-30  8:09               ` Daniel Phillips
@ 2002-01-30  8:23               ` Jeff Garzik
  1 sibling, 0 replies; 21+ messages in thread
From: Jeff Garzik @ 2002-01-30  8:23 UTC (permalink / raw)
  To: Horst von Brand; +Cc: Daniel Phillips, linux-kernel

On Tue, Jan 29, 2002 at 05:38:50PM +0100, Horst von Brand wrote:
> Has anyone gotten a instruction listing (just instructions and short
> description, not the whole other stuff in there), preferably in AT&T
> syntax?

What is the AT&T syntax for short descriptions accompanying insns?

:)

	Jeff




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

* Re: unresolved symbols __udivdi3 and __umoddi3
  2002-01-30  8:09               ` Daniel Phillips
@ 2002-01-30  8:43                 ` Jeff Garzik
  0 siblings, 0 replies; 21+ messages in thread
From: Jeff Garzik @ 2002-01-30  8:43 UTC (permalink / raw)
  To: Daniel Phillips; +Cc: Horst von Brand, linux-kernel

On Wed, Jan 30, 2002 at 09:09:32AM +0100, Daniel Phillips wrote:
> I need look no further than the shelf at my right hand for a full set of 
> Pentium documentation.  I do not consider that an adequate substitute for a 
> document expressing the syntax of all machine instructions of a particular 
> architecture in the GNU syntax.
[...]
> > Has anyone gotten a instruction listing (just instructions and short
> > description, not the whole other stuff in there), preferably in AT&T
> > syntax?
> 
> Err, now I feel I wrote the above a little too strongly, but I'm not going to 
> change it, because it was my initial reaction.  Yes, that's *exactly* what I 
> want.

Then whip up a Perl script or somesuch, and generate that from the data
provided in binutils.

	Jeff



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

end of thread, other threads:[~2002-01-30  8:43 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-01-25  6:31 unresolved symbols __udivdi3 and __umoddi3 simon
2002-01-25 16:45 ` Andreas Dilger
2002-01-25 16:56 ` Richard B. Johnson
2002-01-25 21:42   ` Tim Schmielau
2002-01-28  4:21     ` simon
2002-01-28 17:38       ` Tim Schmielau
2002-01-28 19:17       ` Daniel Phillips
2002-01-28 19:28         ` Mark Zealey
2002-01-28 19:46         ` Momchil Velikov
2002-01-28 20:06           ` Daniel Phillips
2002-01-28 20:14             ` Momchil Velikov
2002-01-29 16:38             ` Horst von Brand
2002-01-30  8:09               ` Daniel Phillips
2002-01-30  8:43                 ` Jeff Garzik
2002-01-30  8:23               ` Jeff Garzik
2002-01-28 11:08   ` Daniel Phillips
2002-01-28 11:10     ` Arjan van de Ven
2002-01-28 11:47       ` Daniel Phillips
2002-01-25 17:06 ` christophe barbé
2002-01-25 18:53   ` Christoph Hellwig
2002-01-25 19:03     ` christophe barbé

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox