From: Becky Bruce <becky.bruce@freescale.com>
To: Kumar Gala <galak@kernel.crashing.org>
Cc: linuxppc-dev list <linuxppc-dev@ozlabs.org>,
linuxppc64-dev <linuxppc64-dev@ozlabs.org>
Subject: Re: [PATCH] powerpc: Merge align.c
Date: Wed, 16 Nov 2005 10:31:59 -0600 [thread overview]
Message-ID: <28076a8ba1e55469c74b0677a289fd0b@freescale.com> (raw)
In-Reply-To: <43D0A21D-89BC-4EFE-BA2A-94760BA32276@kernel.crashing.org>
> >
> > The 603 is still in production? And is the upcoming 8641 exactly
> > the same as the 74xx series in this respect?
>
> 603 is used in all 82xx/83xx processors from Freescale. The 8641 is=A0
> the same core as 7448.
The differences between 603 and 603e wrt alignment exceptions, as far=20
as I can tell, are:
- 603 does not take exception on misaligned LE accesses except for=20
strings and multiples
- 603 takes an alignment exception on ecowx/eciwx, 603e does not
- 603 generates an alignment when a ld/st crosses a segment boundary=20
and the T bit is different in the 2 segments
I should have listed these out above, sorry!
>
> >> - single and double precision floating point ld/st ops (non-E500,=20=
> non
> >> data size aligned)
> >
> > Hmm, you can load a double from any 4 byte aligned address AFAIR.
>
> This is only because every processor handles the misalignment for=A0
> you.=A0 Its completely valid for someone to build a PPC that has an=A0
> alignment exception in this case.
You're right, I should have said "word-aligned", not "data size=20
aligned". While a load of a doubleword from a word aligned address is=20=
considered misaligned by the hardware, it doesn't generate an exception=20=
in any parts we have now that I know of.
> > However we do care about byte reversal instructions, which
> > probably believe like the corresponding normal instruction
> > (i.e., lwbrx has the same rules as lwzx, etc.)
Yep, they would work the same way, which for all of FSL's current parts=20=
would mean no exception.
> >
> >> - lwarx/stwcx (all procs)
> >
> > And ldarx/stdcx. on 64 bit, but these ones should not
> > be emulated. So it's easy ;-)
> >
> >> - multiple/string with LE set (750, 603e, 7450, 7400)
> >
> > Again LE mode is probably irrelevant.
>
> Agree with that. We dont support LE on classic.
Yep. Just listed for completeness.
>
>
> >> - eciwx/ecowx (750, 7450, 7400)
> >
> > Have these instructions ever been used for something
> > under Linux?
>
> I dont believe so.
These guys are legagy - I don't think anyone uses them, and the=20
alignment exception doesn't (and, IMHO shouldn't) care about them at=20
all. They're just listed here for completeness.
>
> >> - a couple of others related to vector processing
> >
> > Which ones? The Altivec load and store instructions
> > simply mask the low order bits AFAIR.
>
> SPE misalignment is something to look at.
I'll look into it when I have a moment to breathe...... There are 2=20
conditions here that aren't currently handled (from the manual):
- SPFP and SPE instructions are not aligned on a natural boundary=20
(defined by the size of the data element being accessed)
- physical address of certain evld/st instructions is not aligned on a=20=
64-bit boundary.
=09
>
> >> If anybody knows offhand of something missing there, let me know.
> >
> > Nothing, but did you check when crossing a segment (256MB) boundary.
> > I seem to remember that some processors performed misaligned
> > load/store across pages but not across segments.
As far as I can tell, the only one that cares about segment boundaries=20=
is 603 (604, 604e, and 601 may care, but I don't consider those=20
"current", and I don't have any working hardware). And it only takes=20
an exception if there's a difference in the T-bit across the segments.
Cheers!
-B=
next prev parent reply other threads:[~2005-11-16 16:31 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-14 8:00 [PATCH] powerpc: Merge align.c Benjamin Herrenschmidt
2005-11-14 19:53 ` Becky Bruce
2005-11-14 20:55 ` Benjamin Herrenschmidt
2005-11-15 5:10 ` Becky Bruce
2005-11-15 5:35 ` Benjamin Herrenschmidt
2005-11-16 2:19 ` Becky Bruce
2005-11-16 2:34 ` Benjamin Herrenschmidt
2005-11-16 3:23 ` Becky Bruce
2005-11-16 16:54 ` Andrey Volkov
2005-11-16 4:26 ` Dan Malek
2005-11-16 5:00 ` Benjamin Herrenschmidt
2005-11-16 5:35 ` Dan Malek
2005-11-16 6:13 ` Benjamin Herrenschmidt
2005-11-16 9:36 ` Gabriel Paubert
2005-11-16 15:15 ` Kumar Gala
2005-11-16 16:31 ` Becky Bruce [this message]
2005-11-16 19:24 ` Dan Malek
2005-11-16 19:20 ` Dan Malek
2005-11-16 19:45 ` Gabriel Paubert
2005-11-16 20:36 ` Dan Malek
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=28076a8ba1e55469c74b0677a289fd0b@freescale.com \
--to=becky.bruce@freescale.com \
--cc=galak@kernel.crashing.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=linuxppc64-dev@ozlabs.org \
/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 NNTP newsgroup(s).