blob: aeb58247943a4ab05983835dd9d7d150317f0e89 [file] [log] [blame]
Bin Meng2f4d6bd2019-07-18 00:34:03 -07001.. SPDX-License-Identifier: GPL-2.0+
2
3MIPS
4====
Shinya Kuribayashi880cc5a2008-04-22 22:47:27 +09005
6Notes for the MIPS architecture port of U-Boot
7
8Toolchains
9----------
10
Bin Meng2f4d6bd2019-07-18 00:34:03 -070011 * `Buildroot <http://buildroot.uclibc.org/>`_
Tom Rinif6a06292024-08-26 10:49:53 -060012 * `kernel.org cross-development toolchains <https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/>`_
Shinya Kuribayashi880cc5a2008-04-22 22:47:27 +090013
14Known Issues
15------------
16
Shinya Kuribayashi880cc5a2008-04-22 22:47:27 +090017 * Cache incoherency issue caused by do_bootelf_exec() at cmd_elf.c
18
19 Cache will be disabled before entering the loaded ELF image without
20 writing back and invalidating cache lines. This leads to cache
21 incoherency in most cases, unless the code gets loaded after U-Boot
22 re-initializes the cache. The more common uImage 'bootm' command does
23 not suffer this problem.
24
Bin Meng2f4d6bd2019-07-18 00:34:03 -070025 [workaround] To avoid this cache incoherency:
26 - insert flush_cache(all) before calling dcache_disable(), or
27 - fix dcache_disable() to do both flushing and disabling cache.
Shinya Kuribayashi880cc5a2008-04-22 22:47:27 +090028
29 * Note that Linux users need to kill dcache_disable() in do_bootelf_exec()
30 or override do_bootelf_exec() not to disable I-/D-caches, because most
31 Linux/MIPS ports don't re-enable caches after entering kernel_entry.
32
33TODOs
34-----
35
36 * Probe CPU types, I-/D-cache and TLB size etc. automatically
Shinya Kuribayashi880cc5a2008-04-22 22:47:27 +090037 * Secondary cache support missing
Shinya Kuribayashi880cc5a2008-04-22 22:47:27 +090038 * Initialize TLB entries redardless of their use
Shinya Kuribayashi880cc5a2008-04-22 22:47:27 +090039 * R2000/R3000 class parts are not supported
Shinya Kuribayashi880cc5a2008-04-22 22:47:27 +090040 * Limited testing across different MIPS variants
Shinya Kuribayashi880cc5a2008-04-22 22:47:27 +090041 * Due to cache initialization issues, the DRAM on board must be
42 initialized in board specific assembler language before the cache init
43 code is run -- that is, initialize the DRAM in lowlevel_init().
Daniel Schwierzeck855316e2013-01-12 19:09:11 +010044 * centralize/share more CPU code of MIPS32, MIPS64 and XBurst
Daniel Schwierzeck855316e2013-01-12 19:09:11 +010045 * support Qemu Malta