Commit 511cce4f authored by Dorel Coman's avatar Dorel Coman Committed by Oliver Horst
Browse files

memguard: CMake changed for MemGuard, restructured from library type to...

memguard: CMake changed for MemGuard, restructured from library type to subdirectory. Files for multi-core moved inside freertos/extra/memguard from runtimes/memguard
parent bb32c8dd
/*
* Copyright (c) 2014, Mentor Graphics Corporation
* All rights reserved.
* Copyright (c) 2017 Xilinx, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of Mentor Graphics Corporation nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/**************************************************************************
* FILE NAME
*
* platform_info.c
*
* DESCRIPTION
*
* This file define platform specific data and implements APIs to set
* platform specific information for OpenAMP.
*
* This platform info is used to implement APU to APU remoteproc and
* rpmsg.
*
**************************************************************************/
#include "openamp/hil.h"
#include "metal/atomic.h"
#include "platform_info.h"
#define IPI_BASE_ADDR XPAR_XIPIPSU_0_BASE_ADDRESS /* IPI base address*/
#define IPI_CHN_BITMASK 0x01000000 /* IPI channel bit mask for IPI from/to
APU */
#define APU_CPU_ID 1 /* APU remote CPU Index. We only talk to one CPU
* in the example. We set the CPU index to 0. */
#define SHM_BASE_ADDR 0xFFFC0100
#define SHM_SIZE 0x10000
/* IPI information used by remoteproc operations.
*/
struct ipi_info {
const char *name; /* IPI device name */
const char *bus_name; /* IPI bus name */
struct meta_device *dev; /* IPI metal device */
struct metal_io_region *io; /* IPI metal IO region */
metal_phys_addr_t paddr; /* IPI registers base address */
uint32_t ipi_chn_mask; /* IPI channel mask */
int registered; /* used internally by RPU to APU remoteproc to mark
* if the IPI interrup has been registered */
atomic_int sync; /* used internally by RPU to APU remoteproc to mark
* if there is kick from the remote */
};
/* processor operations for hil_proc from a53 to a53. It defines
* notification operation and remote processor managementi operations. */
extern struct hil_platform_ops zynqmp_a53_a53_proc_ops;
/* IPI information definition. It is used in the RPU to APU remoteproc
* operations. The fields name, bus_name, dev and io are NULL because they
* are set by remoteproc operations internally later. */
static struct ipi_info chn_ipi_info[] = {
{NULL, NULL, NULL, NULL, IPI_BASE_ADDR, IPI_CHN_BITMASK, 0, 0},
};
#if (MASTER_CORE == 1)
const struct firmware_info fw_table[] =
{
{"rpc",
(unsigned long)(void *)&_binary_amp_remote_elf_start,
(unsigned long)(void *)&_binary_amp_remote_elf_end
},
};
#else
const struct firmware_info fw_table[] =
{
{"rpc",
NULL,
NULL},
};
#endif
const int fw_table_size = sizeof(fw_table)/sizeof(struct firmware_info);
const metal_phys_addr_t shm_phy = SHM_BASE_ADDR;
struct metal_device shm_dev = {
.name = "shm",
.bus = NULL,
.num_regions = 1,
.regions = {
{
.virt = (void *) SHM_BASE_ADDR,
.physmap = &shm_phy,
.size = SHM_SIZE,
.page_shift = (-1UL),
.page_mask = (-1UL),
.mem_flags = 0UL,
.ops = {NULL},
}
},
.node = {NULL},
.irq_num = 0,
.irq_info = NULL,
};
struct hil_proc *platform_create_proc(int proc_index)
{
(void) proc_index;
/* structure to represent a remote processor. It encapsulates the
* shared memory and notification info required for inter processor
* communication. */
struct hil_proc *proc;
proc = hil_create_proc(&zynqmp_a53_a53_proc_ops, proc_index, NULL);
if (!proc)
return NULL;
/*************************************************************
* Set VirtIO device and vrings notification private data to
* hil_proc.
*************************************************************/
/* Set VirtIO device nofication private data. It will be used when it
* needs to notify the remote on the virtio device status change. */
hil_set_vdev_ipi(proc, 0,
IPI_IRQ_VECT_ID, (void *)&chn_ipi_info[0]);
/* Set vring 0 nofication private data. */
hil_set_vring_ipi(proc, 0,
IPI_IRQ_VECT_ID, (void *)&chn_ipi_info[0]);
/* Set vring 1 nofication private data. */
hil_set_vring_ipi(proc, 1,
IPI_IRQ_VECT_ID, (void *)&chn_ipi_info[0]);
/* Set name of RPMsg channel 0 */
hil_set_rpmsg_channel(proc, 0, RPMSG_CHAN_NAME);
metal_register_generic_device(&shm_dev);
hil_set_shm(proc, "generic", "shm", 0, SHM_SIZE);
return proc;
}
#ifndef PLATFORM_INFO_H_
#define PLATFORM_INFO_H_
#include "openamp/hil.h"
/* Interrupt vectors */
#define IPI_IRQ_VECT_ID XPAR_XIPIPSU_0_INT_ID
#define RPMSG_CHAN_NAME "rpmsg-openamp-demo-channel"
#if(MASTER_CORE == 1)
/* Firmware table and binary remoteproc firmware symbols.
*/
extern unsigned char _binary_amp_remote_elf_start;
extern unsigned char _binary_amp_remote_elf_end;
#endif
struct hil_proc *platform_create_proc(int proc_index);
#endif /* PLATFORM_INFO_H_ */
/*
* Copyright (c) 2014, Mentor Graphics Corporation
* All rights reserved.
* Copyright (c) 2015 Xilinx, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of Mentor Graphics Corporation nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/* This file populates resource table for BM remote
* for use by the Linux Master */
#include "openamp/open_amp.h"
#include "rsc_table.h"
/* Place resource table in special ELF section */
#define __section_t(S) __attribute__((__section__(#S)))
#define __resource __section_t(.resource_table)
#define RPMSG_IPU_C0_FEATURES 1
/* VirtIO rpmsg device id */
#define VIRTIO_ID_RPMSG_ 7
/* Remote supports Name Service announcement */
#define VIRTIO_RPMSG_F_NS 0
#define NUM_VRINGS 0x02
#define VRING_ALIGN 0x1000
#define RING_TX 0x3ED40000
#define RING_RX 0x3ED44000
#define VRING_SIZE 256
#define NUM_TABLE_ENTRIES 1
struct remote_resource_table __resource resources = {
/* Version */
1,
/* NUmber of table entries */
NUM_TABLE_ENTRIES,
/* reserved fields */
{0, 0,},
/* Offsets of rsc entries */
{
offsetof(struct remote_resource_table, rpmsg_vdev),
},
/* Virtio device entry */
{RSC_VDEV, VIRTIO_ID_RPMSG_, 0, RPMSG_IPU_C0_FEATURES, 0, 0, 0,
NUM_VRINGS, {0, 0},
},
/* Vring rsc entry - part of vdev rsc entry */
{RING_TX, VRING_ALIGN, VRING_SIZE, 1, 0},
{RING_RX, VRING_ALIGN, VRING_SIZE, 2, 0},
};
void *get_resource_table (int rsc_id, int *len)
{
(void) rsc_id;
*len = sizeof(resources);
return &resources;
}
/*
* Copyright (c) 2014, Mentor Graphics Corporation
* All rights reserved.
* Copyright (c) 2015 Xilinx, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of Mentor Graphics Corporation nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
/* This file populates resource table for BM remote
* for use by the Linux Master */
#ifndef RSC_TABLE_H_
#define RSC_TABLE_H_
#include <stddef.h>
#include "openamp/open_amp.h"
#define NO_RESOURCE_ENTRIES 1
/* Resource table for the given remote */
struct remote_resource_table {
unsigned int version;
unsigned int num;
unsigned int reserved[2];
unsigned int offset[NO_RESOURCE_ENTRIES];
/* rpmsg vdev entry */
struct fw_rsc_vdev rpmsg_vdev;
struct fw_rsc_vdev_vring rpmsg_vring0;
struct fw_rsc_vdev_vring rpmsg_vring1;
};
#endif /* RSC_TABLE_H_ */
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment