nuttx/arch
Daniel P. Carvalho d4201facd8 arch/mips/mips32: fix the L1 cache maintenance functions.
Several bugs made the MIPS32 cache functions unusable:

- The range functions rounded the end address down instead of up and
  stopped before it, so the last line was never handled.  A range
  within a single line started a loop that only ended when the address
  wrapped around 4 GB, which took seconds.
- HIT_WRITEBACK_D was 0x15, which is Hit_Writeback_Inv_D.  Hit
  Writeback D is 0x19.  up_clean_dcache() now uses it and
  up_flush_dcache() uses Hit_Writeback_Inv_D.
- The *_all functions used Hit operations over a KSEG0 range the size of
  the cache, which only affects lines caching that range.  Use index
  operations instead: Index_Invalidate_I, Index_Writeback_Inv_D and, to
  discard the D-Cache, Index_Store_Tag_D with a zero tag.
- With CONFIG_MIPS32_CACHE_AUTOINFO the line size was computed with a
  right shift instead of a left shift.
- The CACHE_OP loop label was "1", the same label the callers use to
  skip the operation, and the branch delay slot was left to whatever
  instruction followed.
- up_coherent_dcache() called up_invalidate_icache_all() even when it is
  not built.

Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: Daniel P. Carvalho <danieloak@gmail.com>
2026-10-04 17:16:09 -03:00
..
arm arch/arm/imxrt: a fixed link when no PHY answers 2026-10-04 17:15:18 -03:00
arm64 arch/arm64: refuse reserved syscalls from user space 2026-10-01 23:14:53 +08:00
avr arch, boards, cmake: Build C++ ELF modules without __cxa_atexit. 2026-09-04 15:44:24 -03:00
ceva arch/atomic: remove up_testset in spinlock 2026-09-08 08:58:54 +08:00
dummy
hc
mips arch/mips/mips32: fix the L1 cache maintenance functions. 2026-10-04 17:16:09 -03:00
misoc arch, boards, cmake: Build C++ ELF modules without __cxa_atexit. 2026-09-04 15:44:24 -03:00
or1k arch, boards, cmake: Build C++ ELF modules without __cxa_atexit. 2026-09-04 15:44:24 -03:00
renesas
risc-v arch/risc-v: refuse reserved syscalls from user mode 2026-10-01 23:14:53 +08:00
sim arch/sim: buffer several mouse reports 2026-09-25 10:36:28 +02:00
sparc arch/atomic: remove up_testset in spinlock 2026-09-08 08:58:54 +08:00
tricore arch/atomic: remove up_testset in spinlock 2026-09-08 08:58:54 +08:00
x86 arch/x86: Add -P to CPP to suppress linemarkers. 2026-09-17 16:21:59 +08:00
x86_64 arch/x86_64: Implement up_addrenv_fork() and provide POSIX fork(). 2026-09-24 18:02:36 -03:00
xtensa espressif: stop leaking a Wi-Fi interrupt handle on every esp_wifi_start() 2026-09-30 13:25:42 -03:00
z16
z80
CMakeLists.txt
Kconfig arch/xtensa: Provide POSIX fork() on the ESP32-S3. 2026-09-26 11:13:57 -03:00