[ale] Driver question

Joe Steele joe at madewell.com
Thu Sep 5 15:46:15 EDT 2002


Ah ha!  Very good.  The macro seems to limit the divisor to 
32 bits, but no doubt there are many applications where that is 
not a problem.

--Joe

-----Original Message-----
From:	Mike Panetta [SMTP:ahuitzot at mindspring.com]
Sent:	Wednesday, September 04, 2002 9:24 PM
To:	Joe Steele
Cc:	'cfowler'; ale at ale.org
Subject:	RE: [ale] Driver question

Um... There is a div64.h file in the asm-i386 dir....  Take a look at
that and see if it works before doing anything else...

BTW, you may want to go to your favorite linux-kernel mailing list
archive (mine is marc.theaimsgroup.com) and do a search for long
division or somthing, as I think it was a year or 2 ago that a long
hashed out discusion on just this subject was held on the list.



Mike

On Wed, 2002-09-04 at 17:39, Joe Steele wrote:
> One piece of info you don't mention is the type of arguments you are 
> trying to divide.  However, the fact that the code needs to call 
> __udivdi3 must mean you are working with arguments of type unsigned 
> long long (64 bit unsigned ints).  
> 
> Normally, gcc should handle this without complaining, but your 
> subject line suggests that this is kernel related, which means that 
> the usual libraries are not available for linking.  Oddly, the kernel 
> does contain code for __udivdi3, but apparently for only a few 
> architectures such as ia64 and sparc (not i386).  
> 
> If there's a way of writing your code without using 64 bit ints, that 
> would probably be best.  Short of that, you could attempt to 
> statically link your code against libgcc.  On a redhat box, it can be 
> found in /usr/lib/gcc-lib/i386-redhat-linux/<gcc-version>/libgcc.a.  
> 
> Other options are to extract the __udivdi3 source code from gcc and 
> either incorporate it into your code or into your kernel, depending 
> on which way makes more sense.
> 
> --Joe
> 
> 
> 
> -----Original Message-----
> From:	cfowler [SMTP:cfowler at outpostsentinel.com]
> Sent:	Wednesday, September 04, 2002 1:46 PM
> To:	Stephan Uphoff
> Cc:	ale at ale.org
> Subject:	Re: [ale] Driver question
> 
> Can you tell me the best way to do division?
> 
> 
> A = b / c;
> 
> I get the following unresolved symbol:
> 
> /sbin/rocket.o: unresolved symbol __udivdi3
> 
> 
> 
> ---
> This message has been sent through the ALE general discussion list.
> See http://www.ale.org/mailing-lists.shtml for more info. Problems should be 
> sent to listmaster at ale dot org.
> 



---
This message has been sent through the ALE general discussion list.
See http://www.ale.org/mailing-lists.shtml for more info. Problems should be 
sent to listmaster at ale dot org.

---
This message has been sent through the ALE general discussion list.
See http://www.ale.org/mailing-lists.shtml for more info. Problems should be 
sent to listmaster at ale dot org.






More information about the Ale mailing list