blob: 2d09f78732cf18674bb9a72f99da299c83c9aa48 [file] [log] [blame]
/*
* Copyright (c) 2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <string.h>
#include <arch_helpers.h>
#include <assert.h>
#include <host_shared_data.h>
/**
* @brief - Returns the base address of the shared region
* @param - Void
* @return - Base address of the shared region
**/
static host_shared_data_t *guest_shared_data;
/*
* Set guest mapped shared buffer pointer
*/
void realm_set_shared_structure(host_shared_data_t *ptr)
{
guest_shared_data = ptr;
}
/*
* Get guest mapped shared buffer pointer
*/
host_shared_data_t *realm_get_my_shared_structure(void)
{
return &guest_shared_data[read_mpidr_el1() & MPID_MASK];
}
/*
* Return Host's data at index
*/
u_register_t realm_shared_data_get_my_host_val(uint8_t index)
{
assert(index < MAX_DATA_SIZE);
return guest_shared_data[read_mpidr_el1() & MPID_MASK].host_param_val[index];
}
/*
* Get command sent from Host to this rec
*/
uint8_t realm_shared_data_get_my_realm_cmd(void)
{
return guest_shared_data[read_mpidr_el1() & MPID_MASK].realm_cmd;
}
/*
* Set data to be shared from this rec to Host
*/
void realm_shared_data_set_my_realm_val(uint8_t index, u_register_t val)
{
assert(index < MAX_DATA_SIZE);
guest_shared_data[read_mpidr_el1() & MPID_MASK].realm_out_val[index] = val;
}