1. 25 6月, 2013 1 次提交
    • G
      m68k: Remove inline strcpy() and strcat() implementations · d346a5db
      Geert Uytterhoeven 提交于
      Gcc may replace calls to standard string functions by open code and/or
      calls to other standard string functions. If the replacement function is
      not available out-of-line, link errors will happen.
      
      To avoid this, the out-of-line versions were provided by
      arch/m68k/lib/string.c, but they were usually not linked in anymore as
      typically none of its symbols are referenced by built-in code.
      However, if any module would need them, they would not be available.
      
      Hence remove the inline strcpy() and strcat() implementations, remove
      arch/m68k/lib/string.c, and let the generic string library code handle it.
      
      Impact on a typical kernel build seems minimal or nonexistent:
      
      -      .text : 0x00001000 - 0x002aac74   (2728 KiB)
      -      .data : 0x002ada48 - 0x00392148   ( 914 KiB)
      +      .text : 0x00001000 - 0x002aacf4   (2728 KiB)
      +      .data : 0x002adac8 - 0x00392148   ( 914 KiB)
      
      See also commit e00c73ee ("m68k: Remove
      inline strlen() implementation").
      Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      d346a5db
  2. 17 4月, 2013 1 次提交
  3. 16 2月, 2011 2 次提交
    • G
      m68knommu: add optimize memmove() function · 982cd252
      Greg Ungerer 提交于
      Add an m68k/coldfire optimized memmove() function for the m68knommu arch.
      This is the same function as used by m68k. Simple speed tests show this
      is faster once buffers are larger than 4 bytes, and significantly faster
      on much larger buffers (4 times faster above about 100 bytes).
      
      This also goes part of the way to fixing a regression caused by commit
      ea61bc46 ("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 memmove() fucntion
      defined, since there was none in the m68knommu/lib functions.
      Signed-off-by: NGreg Ungerer <gerg@uclinux.org>
      982cd252
    • G
      m68k: remove arch specific non-optimized memcmp() · f9d693d2
      Greg Ungerer 提交于
      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
      ea61bc46 ("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: NGreg Ungerer <gerg@uclinux.org>
      Acked-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      f9d693d2
  4. 23 1月, 2011 1 次提交
    • G
      m68k: Uninline strchr() · f9b07897
      Geert Uytterhoeven 提交于
      Some versions of gcc replace calls to strstr() with single-character
      "needle" string parameters by calls to strchr() behind our back.
      
      If strchr() is defined as an inline function, this causes linking errors
      like
      
      	ERROR: "strchr" [drivers/target/target_core_mod.ko] undefined!
      
      As m68k is the only architecture that has an inline strchr() and this
      inline version is not an optimized asm version, uninline strchr() and use
      the standard out-of-line C version in lib/string.c instead.
      
      This also decreases the defconfig/allmodconfig kernel image sizes by a few
      hundred bytes.
      Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      f9b07897
  5. 22 10月, 2010 1 次提交
  6. 16 1月, 2009 1 次提交
    • S
      m68k,m68knommu: merge header files · 49148020
      Sam Ravnborg 提交于
      Merge header files for m68k and m68knommu to the single location:
      
          arch/m68k/include/asm
      
      The majority of this patch was the result of the
      script that is included in the changelog below.
      
      The script was originally written by Arnd Bergman and
      exten by me to cover a few more files.
      
      When the header files differed the script uses the following:
      
      The original m68k file is named <file>_mm.h  [mm for memory manager]
      The m68knommu file is named <file>_no.h [no for no memory manager]
      
      The files uses the following include guard:
      
      This include gaurd works as the m68knommu toolchain set
      the __uClinux__ symbol - so this should work in userspace too.
      
      Merging the header files for m68k and m68knommu exposes the
      (unexpected?) ABI differences thus it is easier to actually
      identify these and thus to fix them.
      
      The commit has been build tested with both a m68k and
      a m68knommu toolchain - with success.
      
      The commit has also been tested with "make headers_check"
      and this patch fixes make headers_check for m68knommu.
      
      The script used:
      TARGET=arch/m68k/include/asm
      SOURCE=arch/m68knommu/include/asm
      
      INCLUDE="cachectl.h errno.h fcntl.h hwtest.h ioctls.h ipcbuf.h \
      linkage.h math-emu.h md.h mman.h movs.h msgbuf.h openprom.h \
      oplib.h poll.h posix_types.h resource.h rtc.h sembuf.h shmbuf.h \
      shm.h shmparam.h socket.h sockios.h spinlock.h statfs.h stat.h \
      termbits.h termios.h tlb.h types.h user.h"
      
      EQUAL="auxvec.h cputime.h device.h emergency-restart.h futex.h \
      ioctl.h irq_regs.h kdebug.h local.h mutex.h percpu.h \
      sections.h topology.h"
      
      NOMUUFILES="anchor.h bootstd.h coldfire.h commproc.h dbg.h \
      elia.h flat.h m5206sim.h m520xsim.h m523xsim.h m5249sim.h \
      m5272sim.h m527xsim.h m528xsim.h m5307sim.h m532xsim.h \
      m5407sim.h m68360_enet.h m68360.h m68360_pram.h m68360_quicc.h \
      m68360_regs.h MC68328.h MC68332.h MC68EZ328.h MC68VZ328.h \
      mcfcache.h mcfdma.h mcfmbus.h mcfne.h mcfpci.h mcfpit.h \
      mcfsim.h mcfsmc.h mcftimer.h mcfuart.h mcfwdebug.h \
      nettel.h quicc_simple.h smp.h"
      
      FILES="atomic.h bitops.h bootinfo.h bug.h bugs.h byteorder.h cache.h \
      cacheflush.h checksum.h current.h delay.h div64.h \
      dma-mapping.h dma.h elf.h entry.h fb.h fpu.h hardirq.h hw_irq.h io.h \
      irq.h kmap_types.h machdep.h mc146818rtc.h mmu.h mmu_context.h \
      module.h page.h page_offset.h param.h pci.h pgalloc.h \
      pgtable.h processor.h ptrace.h scatterlist.h segment.h \
      setup.h sigcontext.h siginfo.h signal.h string.h system.h swab.h \
      thread_info.h timex.h tlbflush.h traps.h uaccess.h ucontext.h \
      unaligned.h unistd.h"
      
      mergefile() {
      	BASE=${1%.h}
      	git mv ${SOURCE}/$1 ${TARGET}/${BASE}_no.h
      	git mv ${TARGET}/$1 ${TARGET}/${BASE}_mm.h
      
      cat << EOF > ${TARGET}/$1
      EOF
      
      	git add ${TARGET}/$1
      }
      
      set -e
      
      mkdir -p ${TARGET}
      
      git mv include/asm-m68k/* ${TARGET}
      rmdir include/asm-m68k
      
      git rm ${SOURCE}/Kbuild
      for F in $INCLUDE $EQUAL; do
      	git rm ${SOURCE}/$F
      done
      
      for F in $NOMUUFILES; do
      	git mv ${SOURCE}/$F ${TARGET}/$F
      done
      
      for F in $FILES ; do
      	mergefile $F
      done
      
      rmdir arch/m68knommu/include/asm
      rmdir arch/m68knommu/include
      
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NGreg Ungerer <gerg@uclinux.org>
      49148020