/* SPDX-License-Identifier: GPL-2.0-only */

#include <types.h>

#include <arch/cache.h>
#include <bootblock_common.h>
#include <symbols.h>

#define SRAM_START          ((uintptr_t)_sram / MiB)
#define SRAM_END            (DIV_ROUND_UP((uintptr_t)_esram, MiB))

#define DRAM_START          ((uintptr_t)_dram / MiB)
#define DRAM_SIZE           (CONFIG_DRAM_SIZE_MB)

void bootblock_soc_init(void)
{
	mmu_init();

	/* Map everything strongly ordered by default */
	mmu_config_range(0, 4096, DCACHE_OFF);

	mmu_config_range(SRAM_START, SRAM_END - SRAM_START,
		DCACHE_WRITEBACK);

	mmu_config_range(DRAM_START, DRAM_SIZE, DCACHE_WRITEBACK);

	dcache_mmu_enable();
}