blob: 0a4cf056e8d161d89b8bc81b275cf7ffd5237ff0 [file] [log] [blame]
/*
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-FileCopyrightText: Copyright TF-RMM Contributors.
*/
#include <arch.h>
#include <host_utils.h>
#include <spinlock.h>
#include <string.h>
bool host_memcpy_ns_read(void *dest, const void *ns_src, unsigned long size)
{
(void)memcpy(dest, ns_src, size);
return true;
}
bool host_memcpy_ns_write(void *ns_dest, const void *src, unsigned long size)
{
(void)memcpy(ns_dest, src, size);
return true;
}
unsigned long host_monitor_call(unsigned long id,
unsigned long arg0,
unsigned long arg1,
unsigned long arg2,
unsigned long arg3,
unsigned long arg4,
unsigned long arg5)
{
/* Avoid MISRA C:2102-2.7 warnings */
(void)id;
(void)arg0;
(void)arg1;
(void)arg2;
(void)arg3;
(void)arg4;
(void)arg5;
return 0UL;
}
void host_monitor_call_with_res(unsigned long id,
unsigned long arg0,
unsigned long arg1,
unsigned long arg2,
unsigned long arg3,
unsigned long arg4,
unsigned long arg5,
struct smc_result *res)
{
/* Avoid MISRA C:2102-2.7 warnings */
(void)id;
(void)arg0;
(void)arg1;
(void)arg2;
(void)arg3;
(void)arg4;
(void)arg5;
(void)res;
}
int host_run_realm(unsigned long *regs)
{
/* Return an arbitrary exception */
return ARM_EXCEPTION_SYNC_LEL;
}
void host_spinlock_acquire(spinlock_t *l)
{
l->val = 1;
}
void host_spinlock_release(spinlock_t *l)
{
l->val = 0;
}
u_register_t host_read_sysreg(char *reg_name)
{
struct sysreg_cb *callbacks = host_util_get_sysreg_cb(reg_name);
/*
* Return 0UL as default value for registers which do not have
* a read callback installed.
*/
if (callbacks == NULL) {
return 0UL;
}
if (callbacks->rd_cb == NULL) {
return 0UL;
}
return callbacks->rd_cb(&callbacks->value);
}
void host_write_sysreg(char *reg_name, u_register_t v)
{
struct sysreg_cb *callbacks = host_util_get_sysreg_cb(reg_name);
/*
* Ignore the write if the register does not have a write
* callback installed.
*/
if (callbacks != NULL) {
if (callbacks->wr_cb != NULL) {
callbacks->wr_cb(v, &callbacks->value);
}
}
}