public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
From: Sergei Organov <osv@Javad.RU>
To: ecos-discuss@sourceware.cygnus.com
Subject: Re: [ECOS] Re: Ecos Port to PPC509/PPC555
Date: Fri, 24 Sep 1999 04:39:00 -0000	[thread overview]
Message-ID: <87puz8v8sh.fsf@osv.javad.ru> (raw)
In-Reply-To: <199909231448.PAA13861@sheesh.cygnus.co.uk>

Bart Veer <bartv@cygnus.co.uk> writes:
[...]
> I do not know whether or not this MPC555 port includes floating point
> support. Cygnus has implemented hardware floating point support for
> one architecture, the VR4300, but this port has not yet been generally
> released. Based on this experience very little needs to be done to the
> system to support hardware floating point. There is code to manipulate
> thread contexts in the architectural HAL packages, and obviously this
> will need to be updated to include the floating point registers. The
> interrupt handling code will be affected as well, and you may want to
> worry about additional exceptions that may get raised. As far as I am
> aware there was little or no code outside the HAL packages that had
> to be changed.

You are definitely right for the simplest possible FP support
implementation. However, let's look a little bit further. I don't want 
to have FP overhead for every task in my system. Actually only few
tasks should have floating point context, and the rest of tasks never
use floating point. Therefore it is required to somehow specify if
given task has FP context or not. This requires change(s) to the
kernel API. Optimizing further, if only some tasks have FP context,
then FP context switch is actually required only when control is given 
to FP task. Such lazy FP context switch requires some support from
kernel and apparently some changes in HAL interface.

> 
> You should be aware of one complication. For some architectures the
> compiler may make use of floating point registers even if the
> application code does not involve floating point arithmetic. If the
> compiler runs out of integer registers then it may temporarily store
> values in a floating point register rather than on the stack. Also
> structure move operations and the like can sometimes be done more
> efficiently using the floating point registers.
> 
> I have checked with the appropriate gcc maintainer, and the PowerPC
> compiler will make use of the floating point registers in this way if
> you explicitly enable -mhard-float or set the cpu type to e.g.
> -mcpu=603. Therefore the HAL packages always have to save floating
> point state during context switching or interrupts.

You was right so far, but I can't agree with the last statement. I'd
prefer to don't save/restore FP context on interrupts and all context
switches. First, it is possible to compile code that should never use
FP with -msoft-float to prevent compiler from generating FP
instructions. For PowerPC it is possible to disable FP in MSR and get
exception if code executes FP instruction, then change code to don't
use constructs that are translated to FP instructions (actually so far
I soo only one place where gcc generates FP for PowerPC: structure
move operations, and fixing this is very simple: just do per-member
copy).

Overall, I'd prefer to have full FP support in eCos to be able to use
all possible tricks to get maximum performance from hardware. That's
why I asked about FP support in eCos - I meant general support, and
not FP context save/restore implementation for some particular
architecture. Sure, I can do all this myself, but then another
implementation will come from Cygnus. So the question remains.

Regards,
Sergei Organov.

  reply	other threads:[~1999-09-24  4:39 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-09-21 12:32 [ECOS] " Ramana
1999-09-22  2:01 ` Sergei Organov
1999-09-23  8:16 ` [ECOS] " Bart Veer
1999-09-24  4:39   ` Sergei Organov [this message]
1999-09-24  8:52     ` Jonathan Larmour
1999-09-24 10:34       ` Sergei Organov
1999-09-27 11:54     ` Bart Veer
1999-09-27 17:36       ` Jonathan Larmour
1999-09-28  4:23         ` Sergei Organov
1999-09-28  7:42           ` Jonathan Larmour
1999-09-28  8:00         ` Bart Veer
1999-09-28  8:02           ` Jonathan Larmour
1999-09-28  4:19       ` Sergei Organov
1999-09-28  8:08         ` Jonathan Larmour
1999-09-28 11:03         ` Bart Veer

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=87puz8v8sh.fsf@osv.javad.ru \
    --to=osv@javad.ru \
    --cc=ecos-discuss@sourceware.cygnus.com \
    /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 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 read-only IMAP folder(s) and NNTP newsgroup(s).