30 Dec, 2011

3 commits

  • The ColdFire 547x and 548x CPUs have internal MMU hardware. All code
    to support this is now in, so we can build kernels with it enabled.

    Signed-off-by: Greg Ungerer
    Acked-by: Geert Uytterhoeven
    Acked-by: Matt Waddel
    Acked-by: Kurt Mahan

    Greg Ungerer
     
  • While you can build multiplatform kernels for machines with classic
    m68k processors, you cannot mix support for classic m68k and coldfire
    processors. To avoid such hybrid kernels, introduce CONFIG_M68KCLASSIC
    as an antipole for CONFIG_COLDFIRE, and make all specific processor
    support depend on one of them.
    All classic m68k machine support also needs to depend on this.

    The defaults (CONFIG_M68KCLASSIC if MMU, CONFIG_COLDFIRE if !MMU) are
    chosen such to make most of the existing configs build and work.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Greg Ungerer

    Geert Uytterhoeven
     
  • Modify the user space access functions to support the ColdFire V4e cores
    running with MMU enabled.

    The ColdFire processors do not support the "moves" instruction used by
    the traditional 680x0 processors for moving data into and out of another
    address space. They only support the notion of a single address space,
    and you use the usual "move" instruction to access that.

    Create a new config symbol (CONFIG_CPU_HAS_ADDRESS_SPACES) to mark the
    CPU types that support separate address spaces, and thus also support
    the sfc/dfc registers and the "moves" instruction that go along with that.

    The code is almost identical for user space access, so lets just use a
    define to choose either the "move" or "moves" in the assembler code.

    Signed-off-by: Greg Ungerer
    Acked-by: Matt Waddel
    Acked-by: Kurt Mahan
    Acked-by: Geert Uytterhoeven

    Greg Ungerer
     

24 Dec, 2011

3 commits

  • The traditional 68000 processors and the newer reduced instruction set
    ColdFire processors do not support the 32*32->64 multiply or the 64/32->32
    divide instructions. This is not a difference based on the presence of
    a hardware MMU or not.

    Create a new config symbol to mark that a CPU type doesn't support the
    longer multiply/divide instructions. Use this then as a basis for using
    the fast 64bit based divide (in div64.h) and for linking in the extra
    libgcc functions that may be required (mulsi3, divsi3, etc).

    Signed-off-by: Greg Ungerer
    Acked-by: Geert Uytterhoeven

    Greg Ungerer
     
  • We have two implementations of the IP checksuming code for the m68k arch.
    One uses the more advanced instructions available in 68020 and above
    processors, the other uses the simpler instructions available on the
    original 68000 processors and the modern ColdFire processors.

    This simpler code is pretty much the same as the generic lib implementation
    of the IP csum functions. So lets just switch over to using that. That
    means we can completely remove the checksum_no.c file, and only have the
    local fast code used for the more complex 68k CPU family members.

    Signed-off-by: Greg Ungerer

    Greg Ungerer
     
  • The selection of the CONFIG_GENERIC_ATOMIC64 option is not specific to the
    MMU being present and enabled. It is a property of certain CPU families.
    So select it based on those CPU types being selected.

    Signed-off-by: Greg Ungerer

    Greg Ungerer
     

18 Oct, 2011

1 commit

  • The current mmu and non-mmu Kconfig files can be merged to form
    a more general selection of options. The current break up of options
    is due to the simple brute force merge from the m68k and m68knommu
    arch directories.

    Many of the options are not at all specific to having the MMU enabled
    or not. They are actually associated with a particular CPU type or
    platform type.

    Ultimately as we support all processors with the MMU disabled we need
    many of these options to be selectable without the MMU option enabled.
    And likewise some of the ColdFire processors, which currently are only
    supported with the MMU disabled, do have MMU hardware, and will need
    to have options selected on CPU type, not MMU disabled.

    This patch removes the old mmu and non-mmu Kconfigs and instead breaks
    up the configuration into four areas: cpu, machine, bus, devices.

    The Kconfig.cpu lists all the options associated with selecting a CPU,
    and includes options specific to each CPU type as well.

    Kconfig.machine lists all options associated with selecting a machine
    type. Almost always the machines selectable is restricted by the chosen
    CPU.

    Kconfig.bus contains options associated with selecting bus types on the
    various machine types. That includes PCI bus, PCMCIA bus, etc.

    Kconfig.devices contains options for drivers and driver associated
    options.

    Signed-off-by: Greg Ungerer

    Greg Ungerer