30 Dec, 2011

1 commit

  • 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

2 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
     

18 Oct, 2011

1 commit

  • The original 68000 processors cannot copy 16bit or larger quantities from
    odd addresses. All newer members of the 68k family (including ColdFire)
    can do this.

    In the current memcpy implementation after trying to align the destination
    address to a 16bit boundary if we end up with an odd source address we go
    off and try to copy multi-byte quantities from it. This will trap on the
    68000.

    The only solution if we end with an odd source address is to byte wise
    copy the whole memcpy region. We only need to do this if we are supporting
    original 68000 processors.

    Signed-off-by: Greg Ungerer

    Greg Ungerer
     

25 Jul, 2011

1 commit

  • The real difference between the mmu and non-mmu varients of the delay.h
    files has nothing to do with having an mmu or not. It is processor family
    differences that means slightly different code. Merge the delay_mm.h and
    delay_no.h files back into a single file.

    The primarly difference we need to deal with is whether the processor
    supports a 32bit * 32bit -> 64bit multiply. Without it we need to do some
    shift scaling as well as use a 32bit * 32bit -> 32bit multiply. If building
    for a multi-CPU type kernel then we must use the simpler mult/shift scaling.

    This version of delay code allows the CPU32 family to use a 64bit mul,
    since it supports this instruction, the old code did not.

    The changes use macros where appropriate to try and optimize constant sized
    udelay times. And it removes the use of a fixed lib function for the non-mmu
    case. Code size on typical kernel configurations is similar, or only larger
    by a few tens of bytes.

    Also removed the unused muldiv() code from delay_mm.h.

    Build and run tested on ColdFire and ARAnyM. Build tested only on 68328
    and 68360 (CPU32).

    Signed-off-by: Greg Ungerer

    Greg Ungerer
     

14 Jun, 2011

1 commit

  • Older m68k-linux compilers will include pre-defined symbols that
    confuse what processor it is being targeted for. For example gcc-4.1.2
    will pre-define __mc68020__ even if you specify the target processor
    as -m68000 on the gcc command line. Newer versions of gcc have this
    corrected.

    In a few places the m68k code uses defined(__mc68020__) for optimizations
    that include instructions that are specific to the CPU 68020 and above.
    When compiling with older compilers this will be true even when we have
    selected to compile for the older 68000 processors.

    Switch to using the kernel processor defines, CONFIG_M68020 and friends.

    Signed-off-by: Greg Ungerer

    Greg Ungerer
     

24 May, 2011

7 commits


25 Mar, 2011

1 commit

  • There is a lot of common code that could be shared between the m68k
    and m68knommu arch branches. It makes sense to merge the two branches
    into a single directory structure so that we can more easily share
    that common code.

    This is a brute force merge, based on a script from Stephen King
    , which was originally written by Arnd Bergmann
    .

    > The script was inspired by the script Sam Ravnborg used to merge the
    > includes from m68knommu. For those files common to both arches but
    > differing in content, the m68k version of the file is renamed to
    > _mm. and the m68knommu version of the file is moved into the
    > corresponding m68k directory and renamed _no. and a small
    > wrapper file . is used to select between the two version. Files
    > that are common to both but don't differ are removed from the m68knommu
    > tree and files and directories that are unique to the m68knommu tree are
    > moved to the m68k tree. Finally, the arch/m68knommu tree is removed.
    >
    > To select between the the versions of the files, the wrapper uses
    >
    > #ifdef CONFIG_MMU
    > #include _mm.
    > #else
    > #include _no.
    > #endif

    On top of this file merge I have done a simplistic merge of m68k and
    m68knommu Kconfig, which primarily attempts to keep existing options and
    menus in place. Other than a handful of options being moved it produces
    identical .config outputs on m68k and m68knommu targets I tested it on.

    With this in place there is now quite a bit of scope for merge cleanups
    in future patches.

    Signed-off-by: Greg Ungerer

    Greg Ungerer
     

16 Feb, 2011

1 commit

  • The m68k arch implements its own memcmp() function. It is not optimized
    in any way (it is the most strait forward coding of memcmp you can get).
    Remove it and use the kernels standard memcmp() implementation.

    This also goes part of the way to fixing a regression caused by commit
    ea61bc461d09e8d331a307916530aaae808c72a2 ("m68k/m68knommu: merge MMU and
    non-MMU string.h"), which breaks non-coldfire non-mmu builds (which is
    the 68x328 and 68360 families). They currently have no memcmp() function
    defined, since there is none in the m68knommu/lib functions.

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

    Greg Ungerer
     

21 Jul, 2008

1 commit

  • > This is a no-no for those archs that still use -traditional.
    > > I dunno if this is a problem for you at the moment and the
    > > right fix is anyway to nuke -traditional.
    > >
    > > Sam

    Signed-off-by: Mathieu Desnoyers
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     

22 May, 2008

1 commit

  • Whether we sidestep it in init/main.c or not, such situations
    will arise again; compiler does generate calls of strcat()
    on optimizations, so we really ought to have an out-of-line
    version...

    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     

17 Apr, 2008

1 commit

  • Semaphores are no longer performance-critical, so a generic C
    implementation is better for maintainability, debuggability and
    extensibility. Thanks to Peter Zijlstra for fixing the lockdep
    warning. Thanks to Harvey Harrison for pointing out that the
    unlikely() was unnecessary.

    Signed-off-by: Matthew Wilcox
    Acked-by: Ingo Molnar

    Matthew Wilcox
     

18 Jul, 2007

1 commit


15 May, 2007

1 commit

  • m68k: implement __clear_user(), which is needed by fs/signalfd.c

    Since we always let the MMU do all checking, clear_user() and __clear_user()
    are identical. The old clear_user() is renamed to __clear_user() for
    consistency.

    Signed-off-by: Geert Uytterhoeven
    Cc: Davide Libenzi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     

05 May, 2007

1 commit


03 Dec, 2006

1 commit


06 Oct, 2006

2 commits


23 Jun, 2006

1 commit

  • This uninlines a few large functions in uaccess.h and cleans up the rest.
    It includes a (hopefully temporary) workaround for the broken typeof of
    gcc-4.1.

    Signed-off-by: Roman Zippel
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roman Zippel
     

13 Jan, 2006

1 commit


05 Sep, 2005

1 commit

  • Use the builtin functions for memset/memclr/memcpy, special optimizations for
    page operations have dedicated functions now. Uninline memmove/memchr and
    move all functions into a single file and clean it up a little.

    Signed-off-by: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roman Zippel
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds