Discussion:
[uClinux-dev] [PATCH] m68knommu: allow ColdFire CPUs to use unaligned accesses
gerg
2012-06-08 05:43:00 UTC
Permalink
From: Greg Ungerer <gerg at uclinux.org>

All current ColdFire CPUs are able to support unaligned memory accesses.
So remove the CONFIG_CPU_HAS_NO_UNALIGNED option selection for ColdFire.

It seems that the current restriction was inherrited from the early non-MMU
support for the basic 68000 proecssors - which do not support unaligned
accesses.

Signed-off-by: Greg Ungerer <gerg at uclinux.org>
---
arch/m68k/Kconfig.cpu | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu
index d4f3a98..06fa0c3 100644
--- a/arch/m68k/Kconfig.cpu
+++ b/arch/m68k/Kconfig.cpu
@@ -27,7 +27,6 @@ config COLDFIRE
select ARCH_HAVE_CUSTOM_GPIO_H
select CPU_HAS_NO_BITFIELDS
select CPU_HAS_NO_MULDIV64
- select CPU_HAS_NO_UNALIGNED
select GENERIC_CSUM

endchoice
--
1.7.0.4
Geert Uytterhoeven
2012-06-08 07:19:15 UTC
Permalink
Post by gerg
From: Greg Ungerer <gerg at uclinux.org>
All current ColdFire CPUs are able to support unaligned memory accesses.
So remove the CONFIG_CPU_HAS_NO_UNALIGNED option selection for ColdFire.
It seems that the current restriction was inherrited from the early non-MMU
support for the basic 68000 proecssors - which do not support unaligned
accesses.
Signed-off-by: Greg Ungerer <gerg at uclinux.org>
I'll add this to my tree, as it depends on the other
CPU_HAS_NO_UNALIGNED patches.

Gr{oetje,eeting}s,

? ? ? ? ? ? ? ? ? ? ? ? Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?? -- Linus Torvalds
Greg Ungerer
2012-06-08 09:10:55 UTC
Permalink
Post by Geert Uytterhoeven
From: Greg Ungerer<gerg at uclinux.org>
All current ColdFire CPUs are able to support unaligned memory accesses.
So remove the CONFIG_CPU_HAS_NO_UNALIGNED option selection for ColdFire.
It seems that the current restriction was inherrited from the early non-MMU
support for the basic 68000 proecssors - which do not support unaligned
accesses.
Signed-off-by: Greg Ungerer<gerg at uclinux.org>
I'll add this to my tree, as it depends on the other
CPU_HAS_NO_UNALIGNED patches.
Thanks Geert!

Regards
Greg
Post by Geert Uytterhoeven
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Philippe De Muyter
2012-06-08 10:39:31 UTC
Permalink
Post by gerg
From: Greg Ungerer <gerg at uclinux.org>
All current ColdFire CPUs are able to support unaligned memory accesses.
So remove the CONFIG_CPU_HAS_NO_UNALIGNED option selection for ColdFire.
It seems that the current restriction was inherrited from the early non-MMU
support for the basic 68000 proecssors - which do not support unaligned
accesses.
It seems that the first ColdFires needed the restriction :

I read in the "MCF5200 ColdFire Family Programmer?s Reference Manual" :

The ColdFire processor default configuration supports word- and
longword-sized operand references on 0-modulo-2 and 0-modulo-4
addresses, respectively. All other references are defined as
misaligned accesses. Any attempt to access a misaligned operand
generates an address-error exception, unless the optional hardware
module for handling misalignment is present. This misalignment
module converts any misaligned operand references into a series
of aligned bus cycles to access the data. The existence of the
misalignment module is implementation-dependent and is documented
in the appropriate ColdFire user?s manual.

Philippe
Greg Ungerer
2012-06-08 12:19:43 UTC
Permalink
Hi Philippe,
Post by Philippe De Muyter
From: Greg Ungerer<gerg at uclinux.org>
All current ColdFire CPUs are able to support unaligned memory accesses.
So remove the CONFIG_CPU_HAS_NO_UNALIGNED option selection for ColdFire.
It seems that the current restriction was inherrited from the early non-MMU
support for the basic 68000 proecssors - which do not support unaligned
accesses.
The ColdFire processor default configuration supports word- and
longword-sized operand references on 0-modulo-2 and 0-modulo-4
addresses, respectively. All other references are defined as
misaligned accesses. Any attempt to access a misaligned operand
generates an address-error exception, unless the optional hardware
module for handling misalignment is present. This misalignment
module converts any misaligned operand references into a series
of aligned bus cycles to access the data. The existence of the
misalignment module is implementation-dependent and is documented
in the appropriate ColdFire user??s manual.
I wish Freescale really did make that clear within the doco for each
part!

The oldest (and I assume simplest) part we support is the 5206, and it
does explicitly state in the MCF5206UM that it supports unaligned
accesses (Section 6.6). It is not as clear as this in some of the
other CPU/SoC User Manuals that I looked through.

I am pretty confident that all the parts we currently support in Linux
do unaligned accesses.

Regards
Greg


------------------------------------------------------------------------
Greg Ungerer -- Principal Engineer EMAIL: gerg at snapgear.com
SnapGear Group, McAfee PHONE: +61 7 3435 2888
8 Gardner Close, FAX: +61 7 3891 3630
Milton, QLD, 4064, Australia WEB: http://www.SnapGear.com
Philippe De Muyter
2012-06-08 13:35:03 UTC
Permalink
Hi Greg,
Post by Greg Ungerer
Hi Philippe,
Post by Philippe De Muyter
From: Greg Ungerer<gerg at uclinux.org>
All current ColdFire CPUs are able to support unaligned memory accesses.
So remove the CONFIG_CPU_HAS_NO_UNALIGNED option selection for ColdFire.
It seems that the current restriction was inherrited from the early non-MMU
support for the basic 68000 proecssors - which do not support unaligned
accesses.
The ColdFire processor default configuration supports word- and
longword-sized operand references on 0-modulo-2 and 0-modulo-4
addresses, respectively. All other references are defined as
misaligned accesses. Any attempt to access a misaligned operand
generates an address-error exception, unless the optional hardware
module for handling misalignment is present. This misalignment
module converts any misaligned operand references into a series
of aligned bus cycles to access the data. The existence of the
misalignment module is implementation-dependent and is documented
in the appropriate ColdFire user??s manual.
I mentionned that only to make you able to soften the commit comment :)
Post by Greg Ungerer
I wish Freescale really did make that clear within the doco for each
part!
The oldest (and I assume simplest) part we support is the 5206, and it
does explicitly state in the MCF5206UM that it supports unaligned
accesses (Section 6.6). It is not as clear as this in some of the
other CPU/SoC User Manuals that I looked through.
I am pretty confident that all the parts we currently support in Linux
do unaligned accesses.
I agree. And if some parts did not implement it, we'd see it quickly.

Regards

Philippe
Greg Ungerer
2012-06-12 02:25:44 UTC
Permalink
Hi Philippe,
Post by Philippe De Muyter
Post by Greg Ungerer
Hi Philippe,
From: Greg Ungerer<gerg at uclinux.org>
All current ColdFire CPUs are able to support unaligned memory accesses.
So remove the CONFIG_CPU_HAS_NO_UNALIGNED option selection for ColdFire.
It seems that the current restriction was inherrited from the early non-MMU
support for the basic 68000 proecssors - which do not support unaligned
accesses.
I read in the "MCF5200 ColdFire Family Programmer?????s Reference Manual"
The ColdFire processor default configuration supports word- and
longword-sized operand references on 0-modulo-2 and 0-modulo-4
addresses, respectively. All other references are defined as
misaligned accesses. Any attempt to access a misaligned operand
generates an address-error exception, unless the optional hardware
module for handling misalignment is present. This misalignment
module converts any misaligned operand references into a series
of aligned bus cycles to access the data. The existence of the
misalignment module is implementation-dependent and is documented
in the appropriate ColdFire user?????s manual.
I mentionned that only to make you able to soften the commit comment :)
Ok, makes sense. I should probably have mentioned that this means
the ColdFire processors currently support by Linux :-)

Something like:

All of the current Linux supported ColdFire CPUs handle unaligned
memory accesses. So remove the CONFIG_CPU_HAS_NO_UNALIGNED option
selection for ColdFire. If we ever support a specific ColdFire CPU
that does not support unaligned accesses then we can insert the
CONFIG_CPU_HAS_NO_UNALIGNED for that specific CPU type.
Post by Philippe De Muyter
Post by Greg Ungerer
I wish Freescale really did make that clear within the doco for each
part!
The oldest (and I assume simplest) part we support is the 5206, and it
does explicitly state in the MCF5206UM that it supports unaligned
accesses (Section 6.6). It is not as clear as this in some of the
other CPU/SoC User Manuals that I looked through.
I am pretty confident that all the parts we currently support in Linux
do unaligned accesses.
I agree. And if some parts did not implement it, we'd see it quickly.
Yep.

Regards
Greg


------------------------------------------------------------------------
Greg Ungerer -- Principal Engineer EMAIL: gerg at snapgear.com
SnapGear Group, McAfee PHONE: +61 7 3435 2888
8 Gardner Close FAX: +61 7 3217 5323
Milton, QLD, 4064, Australia WEB: http://www.SnapGear.com
Philippe De Muyter
2012-06-12 07:26:19 UTC
Permalink
Hi Greg,
Post by Greg Ungerer
Hi Philippe,
...
Post by Greg Ungerer
Post by Philippe De Muyter
I mentionned that only to make you able to soften the commit comment :)
Ok, makes sense. I should probably have mentioned that this means
the ColdFire processors currently support by Linux :-)
All of the current Linux supported ColdFire CPUs handle unaligned
memory accesses. So remove the CONFIG_CPU_HAS_NO_UNALIGNED option
selection for ColdFire. If we ever support a specific ColdFire CPU
that does not support unaligned accesses then we can insert the
CONFIG_CPU_HAS_NO_UNALIGNED for that specific CPU type.
That's perfect. The line about dumb copying of the m68knommu settings
was too much self-flagellation for you to my eyes :)

Philippe
Geert Uytterhoeven
2012-06-12 20:27:42 UTC
Permalink
...
Post by Greg Ungerer
Post by Philippe De Muyter
I mentionned that only to make you able to soften the commit comment :)
Ok, makes sense. I should probably have mentioned that this means
the ColdFire processors currently support by Linux :-)
? All of the current Linux supported ColdFire CPUs handle unaligned
? memory accesses. So remove the CONFIG_CPU_HAS_NO_UNALIGNED option
? selection for ColdFire. If we ever support a specific ColdFire CPU
? that does not support unaligned accesses then we can insert the
? CONFIG_CPU_HAS_NO_UNALIGNED for that specific CPU type.
That's perfect. ?The line about dumb copying of the m68knommu settings
was too much self-flagellation for you to my eyes :)
So I rewrote history on my for-3.6 branch...

Gr{oetje,eeting}s,

? ? ? ? ? ? ? ? ? ? ? ? Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?? -- Linus Torvalds
Greg Ungerer
2012-06-13 00:27:45 UTC
Permalink
Post by Geert Uytterhoeven
...
Post by Greg Ungerer
Post by Philippe De Muyter
I mentionned that only to make you able to soften the commit comment :)
Ok, makes sense. I should probably have mentioned that this means
the ColdFire processors currently support by Linux :-)
?? All of the current Linux supported ColdFire CPUs handle unaligned
?? memory accesses. So remove the CONFIG_CPU_HAS_NO_UNALIGNED option
?? selection for ColdFire. If we ever support a specific ColdFire CPU
?? that does not support unaligned accesses then we can insert the
?? CONFIG_CPU_HAS_NO_UNALIGNED for that specific CPU type.
That's perfect. ??The line about dumb copying of the m68knommu settings
was too much self-flagellation for you to my eyes :)
So I rewrote history on my for-3.6 branch...
Thanks Geert!

Regards
Greg


------------------------------------------------------------------------
Greg Ungerer -- Principal Engineer EMAIL: gerg at snapgear.com
SnapGear Group, McAfee PHONE: +61 7 3435 2888
8 Gardner Close FAX: +61 7 3217 5323
Milton, QLD, 4064, Australia WEB: http://www.SnapGear.com
Loading...