All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sven Luther <luther@dpt-info.u-strasbg.fr>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Sven Luther <luther@dpt-info.u-strasbg.fr>,
	Linux Frame Buffer Device Development
	<linux-fbdev-devel@lists.sourceforge.net>
Subject: Re: writing to a floating point register ?
Date: Wed, 5 Feb 2003 12:02:27 +0100	[thread overview]
Message-ID: <20030205110227.GA977@iliana> (raw)
In-Reply-To: <Pine.GSO.4.21.0302051140460.16681-100000@vervain.sonytel.be>

On Wed, Feb 05, 2003 at 11:44:23AM +0100, Geert Uytterhoeven wrote:
> On Wed, 5 Feb 2003, Sven Luther wrote:
> > On Wed, Feb 05, 2003 at 11:28:58AM +0100, Geert Uytterhoeven wrote:
> > > On Wed, 5 Feb 2003, Sven Luther wrote:
> > > > while writing a fbdev driver, i need to write a value to a floating
> > > > point register. Do we have any macro doing this, or should i need to
> > > > calculate the sign, mantissa and exponent by hand ?
> > > > 
> > > > Just doing a unsigned int cast would round the value i think, and thus
> > > > not give the right result.
> > > 
> > > You cannot use floating point math in the kernel.
> > > 
> > > What exactly are you trying to achieve?
> > 
> > Well, my framebuffer is not linear, and i have to enable a bypass unit
> > to fake a linear framebuffer. This bypass unit need that i write the
> > bytestride/64 32bit floating point value in a register.
> > 
> > for example : 1024 in 32 bpp => 4*1024/64 = 64.
> > 
> > 64 is 0100 0000 or 1.0 * 2^6.
> > 
> > So i have sign = 0, exp = 127+6=133 = 10000101, and mantissa = 0.
> > 
> > which gives 0100 0010 1000 0000 ... or 0x42 80 00 00.
> > 
> > I was hoping that i would not need to do this calculation by hand, but i
> > guess it is not possible, since like you said, we cannot use the FP
> > unit in the kernel.
> 
> Even if you could, it would work for 32-bit IEEE floating point format only.
> Is the hardware register format IEEE compatible.

Mmm, sure, didn't think of this. Would endianess and other such issue 
not be a problem for this kind of calculation ? Would it make sense to
have a special macro available for this kind of thing, like we have for
writing 8, 16 or 32 bits ?

> Anyway, the calculation is not that difficult.

Sure ...

> Perhaps you can even restrict line_length to be a multiple of 64 in all cases,
> in which case it's even made more easy?

Are all video modes we want to use multiples of 64 ? I guess yes.

> Does the hardware register allow denormalized numbers? Since you want to divide
> by 64 only, this would allow you to use a fixed exponent.

Erm, no idea, will need to try. That say, i don't know much about
floating point numbers, so i really don't know all that much about
denormalized numbers.

Mmm, i guess you mean that since we divide by 64, the mantissa would
always be 0 (1.000...) and we only need to write 127 + log2(value) in it
?  
Friendly,

Sven Luther


-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com

  reply	other threads:[~2003-02-05 11:02 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-02-05 10:17 writing to a floating point register ? Sven Luther
2003-02-05 10:28 ` Geert Uytterhoeven
2003-02-05 10:38   ` Sven Luther
2003-02-05 10:44     ` Geert Uytterhoeven
2003-02-05 11:02       ` Sven Luther [this message]
2003-02-05 12:04       ` Sven Luther

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030205110227.GA977@iliana \
    --to=luther@dpt-info.u-strasbg.fr \
    --cc=geert@linux-m68k.org \
    --cc=linux-fbdev-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.