| /* |
| * 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; |
| } |
| |