.. SPDX-License-Identifier: GPL-2.0+

MIPS
====

Notes for the MIPS architecture port of U-Boot

Toolchains
----------

  * `Buildroot <http://buildroot.uclibc.org/>`_
  * `kernel.org cross-development toolchains <https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/>`_

Known Issues
------------

  * Cache incoherency issue caused by do_bootelf_exec() at cmd_elf.c

    Cache will be disabled before entering the loaded ELF image without
    writing back and invalidating cache lines. This leads to cache
    incoherency in most cases, unless the code gets loaded after U-Boot
    re-initializes the cache. The more common uImage 'bootm' command does
    not suffer this problem.

    [workaround] To avoid this cache incoherency:
       - insert flush_cache(all) before calling dcache_disable(), or
       - fix dcache_disable() to do both flushing and disabling cache.

  * Note that Linux users need to kill dcache_disable() in do_bootelf_exec()
    or override do_bootelf_exec() not to disable I-/D-caches, because most
    Linux/MIPS ports don't re-enable caches after entering kernel_entry.

TODOs
-----

  * Probe CPU types, I-/D-cache and TLB size etc. automatically
  * Secondary cache support missing
  * Initialize TLB entries redardless of their use
  * R2000/R3000 class parts are not supported
  * Limited testing across different MIPS variants
  * Due to cache initialization issues, the DRAM on board must be
    initialized in board specific assembler language before the cache init
    code is run -- that is, initialize the DRAM in lowlevel_init().
  * centralize/share more CPU code of MIPS32, MIPS64 and XBurst
  * support Qemu Malta
