/*
 * Copyright (c) 2019-2023 Intel Corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */
#ifndef ZEPHYR_SOC_INTEL_ADSP_COMMON_UTIL_H_
#define ZEPHYR_SOC_INTEL_ADSP_COMMON_UTIL_H_

#include <zephyr/cache.h>

/* memcopy used by boot loader */
static ALWAYS_INLINE void bmemcpy(void *dest, void *src, size_t bytes)
{
	volatile uint32_t *d = (uint32_t *)dest;
	volatile uint32_t *s = (uint32_t *)src;

	sys_cache_data_invd_range(src, bytes);
	for (size_t i = 0; i < (bytes >> 2); i++)
		d[i] = s[i];

	sys_cache_data_flush_range(dest, bytes);
}

/* bzero used by bootloader */
static ALWAYS_INLINE void bbzero(void *dest, size_t bytes)
{
	volatile uint32_t *d = (uint32_t *)dest;

	for (size_t i = 0; i < (bytes >> 2); i++)
		d[i] = 0;

	sys_cache_data_flush_range(dest, bytes);
}

#endif /* ZEPHYR_SOC_INTEL_ADSP_COMMON_UTIL_H_ */
