mips: add support for noncached_alloc()

This patch adds support for noncached_alloc() which was only supported by
ARM platform.

Unlike the ARM platform, MMU is not used in u-boot for MIPS. Instead, KSEG
is provided to access uncached memory. So most code of this patch is copied
from cache.c of ARM platform, with only two differences:
1. MMU is untouched in noncached_set_region()
2. Address returned by noncached_alloc() is converted using KSEG1ADDR()

Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
This commit is contained in:
Weijie Gao 2022-05-20 11:21:51 +08:00 committed by Daniel Schwierzeck
parent 9a3bbb0eba
commit 2948d9cf86
2 changed files with 63 additions and 0 deletions

View file

@ -282,4 +282,24 @@ static inline void instruction_hazard_barrier(void)
: "=&r"(tmp));
}
#ifdef CONFIG_SYS_NONCACHED_MEMORY
/* 1MB granularity */
#define MMU_SECTION_SHIFT 20
#define MMU_SECTION_SIZE (1 << MMU_SECTION_SHIFT)
/**
* noncached_init() - Initialize non-cached memory region
*
* Initialize non-cached memory area. This memory region will be typically
* located right below the malloc() area and be accessed from KSEG1.
*
* It is called during the generic post-relocation init sequence.
*
* Return: 0 if OK
*/
int noncached_init(void);
phys_addr_t noncached_alloc(size_t size, size_t align);
#endif /* CONFIG_SYS_NONCACHED_MEMORY */
#endif /* _ASM_SYSTEM_H */