[PATCH v4 00/11] A series of updates related to MIPS

Jovan Dmitrovic jovan.dmitrovic@htecgroup.com
Wed Jun 11 14:18:25 GMT 2025


Changes for v4 (thanks Jeff for your input on v3):

Deleted changes for config-ml.in. There is a patch for changing
config-ml.in on the GCC mailing list, so I will submit a request
for merging those changes into newlib if/when that patch itself
gets merged.

Deleted changes for config/mt-sde. These changes seem unecessary at
this moment.

Removed patches pertaining stdio changes and SmallLibC support.

Faraz Shahbazker (6):
  libc: mips: Add improved C implementation of memcpy/memset
  libc: mips: memcpy prefetches beyond copied memory
  libc: mips: Improve performance of strcmp implementation
  libgloss: mips: g++ exception handling failure on o32 elf targets
  libgloss: mips: UHI linker scripts fail to link with _isr_vec_count=1
  libc: mips: fix strcmp bug for little endian targets

Jovan Dmitrović (2):
  mips: Implement MIPS HAL and UHI
  libgloss: mips: Add mipshal.mk

Matthew Fortune (2):
  libgloss: mips: Add srec2hex.pl for preparing input to simulators
  libgloss: mips: Fixes and improvements for CM3 bootcode

Robert Suchanek (1):
  libgloss: mips: Boot and startup code improvements inc. linker script
    fixes

 libgloss/config/mips.mt                     |   60 +-
 libgloss/configure                          |   19 +-
 libgloss/kill.c                             |    1 +
 libgloss/mips/Makefile.in                   |  202 ++-
 libgloss/mips/acinclude.m4                  |   19 +-
 libgloss/mips/boot/corecheck_predef.S       |  227 +++
 libgloss/mips/boot/init_caches.S            |  178 ++
 libgloss/mips/boot/init_caches_predef.S     |  183 +++
 libgloss/mips/boot/init_cm3l2.S             |  137 ++
 libgloss/mips/boot/init_cm3l2_predef.S      |  117 ++
 libgloss/mips/boot/init_cp0.S               |  105 ++
 libgloss/mips/boot/init_cp0_predef.S        |  131 ++
 libgloss/mips/boot/init_l23caches.S         |  141 ++
 libgloss/mips/boot/init_l23caches_predef.S  |  161 ++
 libgloss/mips/boot/init_tlb.S               |  348 ++++
 libgloss/mips/boot/init_tlb_predef.S        |  149 ++
 libgloss/mips/boot/predef.h                 |  153 ++
 libgloss/mips/boot/reset.S                  |  233 +++
 libgloss/mips/boot/reset_predef.S           |  261 +++
 libgloss/mips/bootcode.ld                   |   14 +
 libgloss/mips/crt0.S                        |  316 ----
 libgloss/mips/fstat.c                       |   32 +
 libgloss/mips/hal/__exit.c                  |   48 +
 libgloss/mips/hal/abiflags.S                |  110 ++
 libgloss/mips/hal/cache.h                   |   82 +
 libgloss/mips/hal/crt0.S                    |  312 ++++
 libgloss/mips/hal/get_ram_range.c           |   65 +
 libgloss/mips/hal/libcm3.a                  |   34 +
 libgloss/mips/hal/link.c                    |   39 +
 libgloss/mips/hal/minicrt.S                 |   41 +
 libgloss/mips/hal/mips64_tlb.c              |  219 +++
 libgloss/mips/hal/mips_clean_cache.c        |  113 ++
 libgloss/mips/hal/mips_cm3_l2size.c         |   88 +
 libgloss/mips/hal/mips_dsp.S                |  127 ++
 libgloss/mips/hal/mips_excpt_boot.S         |  378 +++++
 libgloss/mips/hal/mips_excpt_entry.S        |  210 +++
 libgloss/mips/hal/mips_excpt_handler.c      |  309 ++++
 libgloss/mips/hal/mips_excpt_isr_fallback.S |   50 +
 libgloss/mips/hal/mips_excpt_isr_fragment.S |   71 +
 libgloss/mips/hal/mips_excpt_register.S     |  145 ++
 libgloss/mips/hal/mips_excpt_timer.S        |  101 ++
 libgloss/mips/hal/mips_flush_cache.c        |  106 ++
 libgloss/mips/hal/mips_fp.S                 |  182 +++
 libgloss/mips/hal/mips_intctrl.c            |  148 ++
 libgloss/mips/hal/mips_l2size.c             |   94 ++
 libgloss/mips/hal/mips_lock_cache.c         |   81 +
 libgloss/mips/hal/mips_msa.S                |  181 +++
 libgloss/mips/hal/mips_size_cache.c         |  106 ++
 libgloss/mips/hal/mips_sync_cache.c         |   62 +
 libgloss/mips/hal/mips_tlb.c                |  477 ++++++
 libgloss/mips/hal/mips_xpa.S                |   75 +
 libgloss/mips/hal/syscalls.c                |   52 +
 libgloss/mips/idtmon.S                      |    3 +-
 libgloss/mips/include/mips/asm.h            |  354 ++++
 libgloss/mips/include/mips/cm3.h            |   75 +
 libgloss/mips/include/mips/cpu.h            |  354 ++++
 libgloss/mips/include/mips/ctx.S            |  147 ++
 libgloss/mips/include/mips/dsp.h            |   58 +
 libgloss/mips/include/mips/endian.h         |   91 ++
 libgloss/mips/include/mips/fgregdef.h       |  126 ++
 libgloss/mips/include/mips/fpa.h            |   31 +
 libgloss/mips/include/mips/hal.h            |  454 ++++++
 libgloss/mips/include/mips/intctrl.h        |   69 +
 libgloss/mips/include/mips/m32c0.h          | 1605 +++++++++++++++++++
 libgloss/mips/include/mips/m32c1.h          |  274 ++++
 libgloss/mips/include/mips/m32tlb.h         |  101 ++
 libgloss/mips/include/mips/m64c0.h          |  266 +++
 libgloss/mips/include/mips/m64tlb.h         |  104 ++
 libgloss/mips/include/mips/mips32.h         |  175 ++
 libgloss/mips/include/mips/mips64.h         |  114 ++
 libgloss/mips/include/mips/mt.h             |  519 ++++++
 libgloss/mips/include/mips/notlb.h          |  113 ++
 libgloss/mips/include/mips/prid.h           |  128 ++
 libgloss/mips/include/mips/regdef.h         |  131 ++
 libgloss/mips/include/mips/uhi_syscalls.h   |   68 +
 libgloss/mips/include/mips/version.h        |    4 +
 libgloss/mips/malta32-yamon.ld              |  316 ++++
 libgloss/mips/mti32.ld                      |   20 +-
 libgloss/mips/mti64.ld                      |    1 -
 libgloss/mips/mti64_n32.ld                  |    1 -
 libgloss/mips/regs.S                        |    5 +-
 libgloss/mips/rules/mipshal.mk              |  135 ++
 libgloss/mips/rules/srec2hex.pl             |  196 +++
 libgloss/mips/syscalls.c                    |   48 -
 libgloss/mips/uhi/uhi_assert.c              |   73 +
 libgloss/mips/uhi/uhi_break.c               |   62 +
 libgloss/mips/uhi/uhi_close.c               |   71 +
 libgloss/mips/uhi/uhi_exception.c           |   63 +
 libgloss/mips/uhi/uhi_exit.c                |   87 +
 libgloss/mips/uhi/uhi_fstat.c               |  159 ++
 libgloss/mips/uhi/uhi_get_ram_range.c       |   62 +
 libgloss/mips/uhi/uhi_getargs.S             |  106 ++
 libgloss/mips/uhi/uhi_indirect.c            |   56 +
 libgloss/mips/uhi/uhi_link.c                |   80 +
 libgloss/mips/uhi/uhi_lseek.c               |   76 +
 libgloss/mips/uhi/uhi_open.c                |   75 +
 libgloss/mips/uhi/uhi_plog.c                |   79 +
 libgloss/mips/uhi/uhi_pread.c               |   78 +
 libgloss/mips/uhi/uhi_pwrite.c              |   78 +
 libgloss/mips/uhi/uhi_read.c                |   75 +
 libgloss/mips/uhi/uhi_stat.c                |   58 +
 libgloss/mips/uhi/uhi_stat.h                |   51 +
 libgloss/mips/uhi/uhi_unlink.c              |   77 +
 libgloss/mips/uhi/uhi_write.c               |   75 +
 libgloss/mips/uhi/yamon_close.c             |   81 +
 libgloss/mips/uhi/yamon_exception.c         |   52 +
 libgloss/mips/uhi/yamon_exit.c              |   60 +
 libgloss/mips/uhi/yamon_fstat.c             |  183 +++
 libgloss/mips/uhi/yamon_read.c              |  101 ++
 libgloss/mips/uhi/yamon_syscalls.h          |   33 +
 libgloss/mips/uhi/yamon_write.c             |   98 ++
 libgloss/mips/uhi32.ld                      |  346 ++++
 libgloss/mips/uhi64_64.ld                   |  345 ++++
 libgloss/mips/uhi64_n32.ld                  |  345 ++++
 newlib/Makefile.in                          |    8 +-
 newlib/configure.host                       |    1 +
 newlib/libc/include/machine/ieeefp.h        |    6 +
 newlib/libc/include/sys/config.h            |    2 +-
 newlib/libc/include/sys/stat.h              |   16 +-
 newlib/libc/machine/mips/Makefile.inc       |    2 +-
 newlib/libc/machine/mips/machine/regdef.h   |   38 +
 newlib/libc/machine/mips/memcpy.c           |  449 ++++++
 newlib/libc/machine/mips/memset.c           |  176 ++
 newlib/libc/machine/mips/setjmp.S           |    6 +-
 newlib/libc/machine/mips/strcmp.S           |  289 ++--
 newlib/libc/machine/mips/strlen.c           |   20 +-
 126 files changed, 17009 insertions(+), 568 deletions(-)
 create mode 100644 libgloss/mips/boot/corecheck_predef.S
 create mode 100644 libgloss/mips/boot/init_caches.S
 create mode 100644 libgloss/mips/boot/init_caches_predef.S
 create mode 100644 libgloss/mips/boot/init_cm3l2.S
 create mode 100644 libgloss/mips/boot/init_cm3l2_predef.S
 create mode 100644 libgloss/mips/boot/init_cp0.S
 create mode 100644 libgloss/mips/boot/init_cp0_predef.S
 create mode 100644 libgloss/mips/boot/init_l23caches.S
 create mode 100644 libgloss/mips/boot/init_l23caches_predef.S
 create mode 100644 libgloss/mips/boot/init_tlb.S
 create mode 100644 libgloss/mips/boot/init_tlb_predef.S
 create mode 100644 libgloss/mips/boot/predef.h
 create mode 100644 libgloss/mips/boot/reset.S
 create mode 100644 libgloss/mips/boot/reset_predef.S
 create mode 100644 libgloss/mips/bootcode.ld
 delete mode 100644 libgloss/mips/crt0.S
 create mode 100644 libgloss/mips/fstat.c
 create mode 100644 libgloss/mips/hal/__exit.c
 create mode 100644 libgloss/mips/hal/abiflags.S
 create mode 100644 libgloss/mips/hal/cache.h
 create mode 100644 libgloss/mips/hal/crt0.S
 create mode 100644 libgloss/mips/hal/get_ram_range.c
 create mode 100644 libgloss/mips/hal/libcm3.a
 create mode 100644 libgloss/mips/hal/link.c
 create mode 100644 libgloss/mips/hal/minicrt.S
 create mode 100644 libgloss/mips/hal/mips64_tlb.c
 create mode 100644 libgloss/mips/hal/mips_clean_cache.c
 create mode 100644 libgloss/mips/hal/mips_cm3_l2size.c
 create mode 100644 libgloss/mips/hal/mips_dsp.S
 create mode 100644 libgloss/mips/hal/mips_excpt_boot.S
 create mode 100644 libgloss/mips/hal/mips_excpt_entry.S
 create mode 100644 libgloss/mips/hal/mips_excpt_handler.c
 create mode 100644 libgloss/mips/hal/mips_excpt_isr_fallback.S
 create mode 100644 libgloss/mips/hal/mips_excpt_isr_fragment.S
 create mode 100644 libgloss/mips/hal/mips_excpt_register.S
 create mode 100644 libgloss/mips/hal/mips_excpt_timer.S
 create mode 100644 libgloss/mips/hal/mips_flush_cache.c
 create mode 100644 libgloss/mips/hal/mips_fp.S
 create mode 100644 libgloss/mips/hal/mips_intctrl.c
 create mode 100644 libgloss/mips/hal/mips_l2size.c
 create mode 100644 libgloss/mips/hal/mips_lock_cache.c
 create mode 100644 libgloss/mips/hal/mips_msa.S
 create mode 100644 libgloss/mips/hal/mips_size_cache.c
 create mode 100644 libgloss/mips/hal/mips_sync_cache.c
 create mode 100644 libgloss/mips/hal/mips_tlb.c
 create mode 100644 libgloss/mips/hal/mips_xpa.S
 create mode 100644 libgloss/mips/hal/syscalls.c
 create mode 100644 libgloss/mips/include/mips/asm.h
 create mode 100644 libgloss/mips/include/mips/cm3.h
 create mode 100644 libgloss/mips/include/mips/cpu.h
 create mode 100644 libgloss/mips/include/mips/ctx.S
 create mode 100644 libgloss/mips/include/mips/dsp.h
 create mode 100644 libgloss/mips/include/mips/endian.h
 create mode 100644 libgloss/mips/include/mips/fgregdef.h
 create mode 100644 libgloss/mips/include/mips/fpa.h
 create mode 100644 libgloss/mips/include/mips/hal.h
 create mode 100644 libgloss/mips/include/mips/intctrl.h
 create mode 100644 libgloss/mips/include/mips/m32c0.h
 create mode 100644 libgloss/mips/include/mips/m32c1.h
 create mode 100644 libgloss/mips/include/mips/m32tlb.h
 create mode 100644 libgloss/mips/include/mips/m64c0.h
 create mode 100644 libgloss/mips/include/mips/m64tlb.h
 create mode 100644 libgloss/mips/include/mips/mips32.h
 create mode 100644 libgloss/mips/include/mips/mips64.h
 create mode 100644 libgloss/mips/include/mips/mt.h
 create mode 100644 libgloss/mips/include/mips/notlb.h
 create mode 100644 libgloss/mips/include/mips/prid.h
 create mode 100644 libgloss/mips/include/mips/regdef.h
 create mode 100644 libgloss/mips/include/mips/uhi_syscalls.h
 create mode 100644 libgloss/mips/include/mips/version.h
 create mode 100644 libgloss/mips/malta32-yamon.ld
 create mode 100644 libgloss/mips/rules/mipshal.mk
 create mode 100755 libgloss/mips/rules/srec2hex.pl
 delete mode 100644 libgloss/mips/syscalls.c
 create mode 100644 libgloss/mips/uhi/uhi_assert.c
 create mode 100644 libgloss/mips/uhi/uhi_break.c
 create mode 100644 libgloss/mips/uhi/uhi_close.c
 create mode 100644 libgloss/mips/uhi/uhi_exception.c
 create mode 100644 libgloss/mips/uhi/uhi_exit.c
 create mode 100644 libgloss/mips/uhi/uhi_fstat.c
 create mode 100644 libgloss/mips/uhi/uhi_get_ram_range.c
 create mode 100644 libgloss/mips/uhi/uhi_getargs.S
 create mode 100644 libgloss/mips/uhi/uhi_indirect.c
 create mode 100644 libgloss/mips/uhi/uhi_link.c
 create mode 100644 libgloss/mips/uhi/uhi_lseek.c
 create mode 100644 libgloss/mips/uhi/uhi_open.c
 create mode 100644 libgloss/mips/uhi/uhi_plog.c
 create mode 100644 libgloss/mips/uhi/uhi_pread.c
 create mode 100644 libgloss/mips/uhi/uhi_pwrite.c
 create mode 100644 libgloss/mips/uhi/uhi_read.c
 create mode 100644 libgloss/mips/uhi/uhi_stat.c
 create mode 100644 libgloss/mips/uhi/uhi_stat.h
 create mode 100644 libgloss/mips/uhi/uhi_unlink.c
 create mode 100644 libgloss/mips/uhi/uhi_write.c
 create mode 100644 libgloss/mips/uhi/yamon_close.c
 create mode 100644 libgloss/mips/uhi/yamon_exception.c
 create mode 100644 libgloss/mips/uhi/yamon_exit.c
 create mode 100644 libgloss/mips/uhi/yamon_fstat.c
 create mode 100644 libgloss/mips/uhi/yamon_read.c
 create mode 100644 libgloss/mips/uhi/yamon_syscalls.h
 create mode 100644 libgloss/mips/uhi/yamon_write.c
 create mode 100644 libgloss/mips/uhi32.ld
 create mode 100644 libgloss/mips/uhi64_64.ld
 create mode 100644 libgloss/mips/uhi64_n32.ld
 create mode 100644 newlib/libc/machine/mips/memcpy.c
 create mode 100644 newlib/libc/machine/mips/memset.c

-- 
2.34.1


More information about the Newlib mailing list