[PATCH 13/13] arm/fvp: New BSP
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Dec 22 13:01:10 UTC 2020
This BSP supports the Arm Fixed Virtual Platform. Only the Cortex-R52
processor configuration is supported by the BSP. It should be easy to
add support for other variants if needed.
Update #4202.
---
bsps/arm/fvp/console/console.c | 83 +++++++++++++++
bsps/arm/fvp/console/printk-support.c | 47 ++++++++
bsps/arm/fvp/include/bsp.h | 70 ++++++++++++
bsps/arm/fvp/include/bsp/irq.h | 47 ++++++++
bsps/arm/fvp/include/bsp/semihosting.h | 130 +++++++++++++++++++++++
bsps/arm/fvp/include/tm27.h | 1 +
bsps/arm/fvp/start/bspreset.c | 48 +++++++++
bsps/arm/fvp/start/bspsmp.c | 49 +++++++++
bsps/arm/fvp/start/bspstart.c | 66 ++++++++++++
bsps/arm/fvp/start/bspstarthooks.c | 97 +++++++++++++++++
bsps/arm/fvp/start/pmsa-sections.c | 56 ++++++++++
spec/build/bsps/arm/fvp/abi.yml | 20 ++++
spec/build/bsps/arm/fvp/bspcortexr52.yml | 19 ++++
spec/build/bsps/arm/fvp/grp.yml | 58 ++++++++++
spec/build/bsps/arm/fvp/linkcmds.yml | 53 +++++++++
spec/build/bsps/arm/fvp/obj.yml | 44 ++++++++
spec/build/bsps/arm/fvp/objsmp.yml | 16 +++
spec/build/bsps/arm/fvp/optdevbegin.yml | 22 ++++
spec/build/bsps/arm/fvp/optdevsize.yml | 18 ++++
spec/build/bsps/arm/fvp/optdrambegin.yml | 22 ++++
spec/build/bsps/arm/fvp/optdramsize.yml | 23 ++++
spec/build/bsps/arm/fvp/optnullsize.yml | 21 ++++
spec/build/bsps/arm/optgiccpuif.yml | 19 ++++
spec/build/bsps/arm/optgicdist.yml | 19 ++++
spec/build/bsps/arm/optgicredist.yml | 19 ++++
spec/build/bsps/arm/optgicspicount.yml | 17 +++
spec/build/bsps/arm/optgtfreq.yml | 5 +-
spec/build/cpukit/optsmp.yml | 1 +
28 files changed, 1089 insertions(+), 1 deletion(-)
create mode 100644 bsps/arm/fvp/console/console.c
create mode 100644 bsps/arm/fvp/console/printk-support.c
create mode 100644 bsps/arm/fvp/include/bsp.h
create mode 100644 bsps/arm/fvp/include/bsp/irq.h
create mode 100644 bsps/arm/fvp/include/bsp/semihosting.h
create mode 100644 bsps/arm/fvp/include/tm27.h
create mode 100644 bsps/arm/fvp/start/bspreset.c
create mode 100644 bsps/arm/fvp/start/bspsmp.c
create mode 100644 bsps/arm/fvp/start/bspstart.c
create mode 100644 bsps/arm/fvp/start/bspstarthooks.c
create mode 100644 bsps/arm/fvp/start/pmsa-sections.c
create mode 100644 spec/build/bsps/arm/fvp/abi.yml
create mode 100644 spec/build/bsps/arm/fvp/bspcortexr52.yml
create mode 100644 spec/build/bsps/arm/fvp/grp.yml
create mode 100644 spec/build/bsps/arm/fvp/linkcmds.yml
create mode 100644 spec/build/bsps/arm/fvp/obj.yml
create mode 100644 spec/build/bsps/arm/fvp/objsmp.yml
create mode 100644 spec/build/bsps/arm/fvp/optdevbegin.yml
create mode 100644 spec/build/bsps/arm/fvp/optdevsize.yml
create mode 100644 spec/build/bsps/arm/fvp/optdrambegin.yml
create mode 100644 spec/build/bsps/arm/fvp/optdramsize.yml
create mode 100644 spec/build/bsps/arm/fvp/optnullsize.yml
create mode 100644 spec/build/bsps/arm/optgiccpuif.yml
create mode 100644 spec/build/bsps/arm/optgicdist.yml
create mode 100644 spec/build/bsps/arm/optgicredist.yml
create mode 100644 spec/build/bsps/arm/optgicspicount.yml
diff --git a/bsps/arm/fvp/console/console.c b/bsps/arm/fvp/console/console.c
new file mode 100644
index 0000000000..b8714c60c4
--- /dev/null
+++ b/bsps/arm/fvp/console/console.c
@@ -0,0 +1,83 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/*
+ * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * 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.
+ *
+ * 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 OWNER 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <bsp/semihosting.h>
+
+#include <rtems/console.h>
+#include <rtems/termiostypes.h>
+
+static rtems_termios_device_context arm_fvp_console_instance;
+
+static void arm_fvp_console_write(
+ rtems_termios_device_context *ctx,
+ const char *buf,
+ size_t len
+)
+{
+ size_t i;
+
+ (void) ctx;
+
+ for ( i = 0; i < len; ++i ) {
+ arm_fvp_console_output( buf[ i ] );
+ }
+}
+
+static int arm_fvp_console_read( rtems_termios_device_context *ctx )
+{
+ (void) ctx;
+
+ return arm_fvp_console_input();
+}
+
+static const rtems_termios_device_handler arm_fvp_console_handler = {
+ .write = arm_fvp_console_write,
+ .poll_read = arm_fvp_console_read,
+ .mode = TERMIOS_POLLED
+};
+
+rtems_status_code console_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+)
+{
+ rtems_termios_initialize();
+
+ (void) rtems_termios_device_install(
+ CONSOLE_DEVICE_NAME,
+ &arm_fvp_console_handler,
+ NULL,
+ &arm_fvp_console_instance
+ );
+
+ return RTEMS_SUCCESSFUL;
+}
diff --git a/bsps/arm/fvp/console/printk-support.c b/bsps/arm/fvp/console/printk-support.c
new file mode 100644
index 0000000000..59575ad4be
--- /dev/null
+++ b/bsps/arm/fvp/console/printk-support.c
@@ -0,0 +1,47 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/*
+ * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * 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.
+ *
+ * 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 OWNER 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <bsp/semihosting.h>
+#include <rtems/bspIo.h>
+
+void arm_fvp_console_output( char c )
+{
+ (void) arm_fvp_semihosting_call( SYS_WRITEC, (uintptr_t) &c );
+}
+
+int arm_fvp_console_input( void )
+{
+ return (unsigned char) arm_fvp_semihosting_call( SYS_READC, 0 );
+}
+
+BSP_output_char_function_type BSP_output_char = arm_fvp_console_output;
+
+BSP_polling_getchar_function_type BSP_poll_char = arm_fvp_console_input;
diff --git a/bsps/arm/fvp/include/bsp.h b/bsps/arm/fvp/include/bsp.h
new file mode 100644
index 0000000000..43c5c935fe
--- /dev/null
+++ b/bsps/arm/fvp/include/bsp.h
@@ -0,0 +1,70 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/*
+ * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * 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.
+ *
+ * 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 OWNER 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.
+ */
+
+#ifndef LIBBSP_ARM_FVP_BSP_H
+#define LIBBSP_ARM_FVP_BSP_H
+
+#include <bspopts.h>
+#include <bsp/default-initial-extension.h>
+
+#include <rtems.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup RTEMSBSPsARMFVP Arm Fixed Virtual Platform
+ *
+ * @ingroup RTEMSBSPsARM
+ *
+ * @brief This BSP supports the Arm Fixed Virtual Platform.
+ *
+ * @{
+ */
+
+#define BSP_FEATURE_IRQ_EXTENSION
+
+extern char arm_fvp_memory_null_begin[];
+extern char arm_fvp_memory_null_end[];
+extern char arm_fvp_memory_null_size[];
+
+extern char arm_fvp_memory_dram_begin[];
+extern char arm_fvp_memory_dram_end[];
+extern char arm_fvp_memory_dram_size[];
+
+extern char arm_fvp_memory_device_begin[];
+extern char arm_fvp_memory_device_end[];
+extern char arm_fvp_memory_device_size[];
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LIBBSP_ARM_FVP_BSP_H */
diff --git a/bsps/arm/fvp/include/bsp/irq.h b/bsps/arm/fvp/include/bsp/irq.h
new file mode 100644
index 0000000000..7b4450ffec
--- /dev/null
+++ b/bsps/arm/fvp/include/bsp/irq.h
@@ -0,0 +1,47 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/*
+ * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * 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.
+ *
+ * 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 OWNER 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.
+ */
+
+#ifndef LIBBSP_ARM_FVP_IRQ_H
+#define LIBBSP_ARM_FVP_IRQ_H
+
+#ifndef ASM
+
+#include <rtems.h>
+#include <rtems/irq.h>
+#include <rtems/irq-extension.h>
+
+#include <dev/irq/arm-gic-irq.h>
+
+#endif /* ASM */
+
+#include <bspopts.h>
+
+#define BSP_INTERRUPT_VECTOR_MIN 0
+
+#define BSP_INTERRUPT_VECTOR_MAX (32 + BSP_ARM_SHARED_PERIPHERAL_INTERRUPT_COUNT)
+
+#endif /* LIBBSP_ARM_FVP_IRQ_H */
diff --git a/bsps/arm/fvp/include/bsp/semihosting.h b/bsps/arm/fvp/include/bsp/semihosting.h
new file mode 100644
index 0000000000..4b88d4fdcf
--- /dev/null
+++ b/bsps/arm/fvp/include/bsp/semihosting.h
@@ -0,0 +1,130 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/**
+ * @file
+ *
+ * @ingroup RTEMSBSPsARMFVP
+ *
+ * @brief This header file provides the semihosting API.
+ */
+
+/*
+ * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * 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.
+ *
+ * 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 OWNER 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.
+ */
+
+#ifndef _BSPS_ARM_FVP_SEMIHOSTING_H
+#define _BSPS_ARM_FVP_SEMIHOSTING_H
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @addtogroup RTEMSBSPsARMFVP
+ *
+ * @{
+ */
+
+#define SYS_CLOCK 0x10
+#define SYS_CLOSE 0x02
+#define SYS_ELAPSED 0x30
+#define SYS_ERRNO 0x13
+#define SYS_EXIT 0x18
+#define SYS_EXIT_EXTENDED 0x20
+#define SYS_FLEN 0x0c
+#define SYS_GET_CMDLINE 0x15
+#define SYS_HEAPINFO 0x16
+#define SYS_ISERROR 0x08
+#define SYS_ISTTY 0x09
+#define SYS_OPEN 0x01
+#define SYS_READ 0x06
+#define SYS_READC 0x07
+#define SYS_REMOVE 0x0e
+#define SYS_RENAME 0x0f
+#define SYS_SEEK 0x0a
+#define SYS_SYSTEM 0x12
+#define SYS_TICKFREQ 0x31
+#define SYS_TIME 0x11
+#define SYS_TMPNAM 0x0d
+#define SYS_WRITE 0x05
+#define SYS_WRITEC 0x03
+#define SYS_WRITE0 0x04
+
+#define ADP_Stopped_BranchThroughZero 0x20000
+#define ADP_Stopped_UndefinedInstr 0x20001
+#define ADP_Stopped_SoftwareInterrupt 0x20002
+#define ADP_Stopped_PrefetchAbort 0x20003
+#define ADP_Stopped_DataAbort 0x20004
+#define ADP_Stopped_AddressException 0x20005
+#define ADP_Stopped_IRQ 0x20006
+#define ADP_Stopped_FIQ 0x20007
+#define ADP_Stopped_BreakPoint 0x20020
+#define ADP_Stopped_WatchPoint 0x20021
+#define ADP_Stopped_StepComplete 0x20022
+#define ADP_Stopped_RunTimeErrorUnknown 0x20023
+#define ADP_Stopped_InternalError 0x20024
+#define ADP_Stopped_UserInterruption 0x20025
+#define ADP_Stopped_ApplicationExit 0x20026
+#define ADP_Stopped_StackOverflow 0x20027
+#define ADP_Stopped_DivisionByZero 0x20028
+#define ADP_Stopped_OSSpecific 0x20029
+
+static inline uintptr_t arm_fvp_semihosting_call(
+ uintptr_t op,
+ uintptr_t params
+)
+{
+ register uintptr_t op_and_return_reg __asm__("r0");
+ register uintptr_t params_reg __asm__("r1");
+
+ op_and_return_reg = op;
+ params_reg = params;
+
+ __asm__ volatile (
+#ifdef __thumb__
+ "svc #0xab"
+#else
+ "svc #0x123456"
+#endif
+ : "=r" (op_and_return_reg)
+ : "0" (op_and_return_reg), "r" (params_reg)
+ : "memory"
+ );
+
+ return op_and_return_reg;
+}
+
+void arm_fvp_console_output( char c );
+
+int arm_fvp_console_input( void );
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BSPS_ARM_FVP_SEMIHOSTING_H */
diff --git a/bsps/arm/fvp/include/tm27.h b/bsps/arm/fvp/include/tm27.h
new file mode 100644
index 0000000000..a9cde9dffe
--- /dev/null
+++ b/bsps/arm/fvp/include/tm27.h
@@ -0,0 +1 @@
+#include <dev/irq/arm-gic-tm27.h>
diff --git a/bsps/arm/fvp/start/bspreset.c b/bsps/arm/fvp/start/bspreset.c
new file mode 100644
index 0000000000..ef625c1bdf
--- /dev/null
+++ b/bsps/arm/fvp/start/bspreset.c
@@ -0,0 +1,48 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/**
+ * @file
+ *
+ * @ingroup RTEMSBSPsARMFVP
+ *
+ * @brief This source file contains the implementation of bsp_reset().
+ */
+
+/*
+ * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * 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.
+ *
+ * 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 OWNER 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <bsp/bootcard.h>
+#include <bsp/semihosting.h>
+
+void bsp_reset( void )
+{
+ while ( true ) {
+ (void) arm_fvp_semihosting_call( SYS_EXIT, ADP_Stopped_ApplicationExit );
+ }
+}
diff --git a/bsps/arm/fvp/start/bspsmp.c b/bsps/arm/fvp/start/bspsmp.c
new file mode 100644
index 0000000000..98b59f54ef
--- /dev/null
+++ b/bsps/arm/fvp/start/bspsmp.c
@@ -0,0 +1,49 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/**
+ * @file
+ *
+ * @ingroup RTEMSBSPsARMFVP
+ *
+ * @brief This source file contains the implementation of
+ * _CPU_SMP_Start_processor().
+ */
+
+/*
+ * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * 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.
+ *
+ * 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 OWNER 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems/score/smpimpl.h>
+
+bool _CPU_SMP_Start_processor( uint32_t cpu_index )
+{
+ /* Nothing to do */
+ (void) cpu_index;
+
+ return true;
+}
diff --git a/bsps/arm/fvp/start/bspstart.c b/bsps/arm/fvp/start/bspstart.c
new file mode 100644
index 0000000000..1af09fb25e
--- /dev/null
+++ b/bsps/arm/fvp/start/bspstart.c
@@ -0,0 +1,66 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/**
+ * @file
+ *
+ * @ingroup RTEMSBSPsARMFVP
+ *
+ * @brief This source file contains the implementation of bsp_start().
+ */
+
+/*
+ * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * 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.
+ *
+ * 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 OWNER 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <bsp/bootcard.h>
+#include <bsp/irq-generic.h>
+
+#include <dev/clock/arm-generic-timer.h>
+
+#include <libcpu/arm-cp15.h>
+
+void arm_generic_timer_get_config( uint32_t *frequency, uint32_t *irq )
+{
+#ifdef ARM_GENERIC_TIMER_FREQ
+ *frequency = ARM_GENERIC_TIMER_FREQ;
+#else
+ *frequency = arm_cp15_get_counter_frequency();
+#endif
+
+#ifdef ARM_GENERIC_TIMER_USE_VIRTUAL
+ *irq = 27;
+#else
+ /* Non-secure physical timer interrupt */
+ *irq = 30;
+#endif
+}
+
+void bsp_start( void )
+{
+ bsp_interrupt_initialize();
+}
diff --git a/bsps/arm/fvp/start/bspstarthooks.c b/bsps/arm/fvp/start/bspstarthooks.c
new file mode 100644
index 0000000000..b990dde30e
--- /dev/null
+++ b/bsps/arm/fvp/start/bspstarthooks.c
@@ -0,0 +1,97 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/**
+ * @file
+ *
+ * @ingroup RTEMSBSPsARMFVP
+ *
+ * @brief This source file contains the implementation of bsp_start_hook_0()
+ * and bsp_start_hook_1().
+ */
+
+/*
+ * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * 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.
+ *
+ * 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 OWNER 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <bsp.h>
+#include <bsp/start.h>
+
+#include <rtems/score/aarch32-pmsa.h>
+#include <rtems/score/aarch32-system-registers.h>
+
+#ifdef RTEMS_SMP
+#include <rtems.h>
+#include <rtems/score/smpimpl.h>
+
+#include <bsp/irq-generic.h>
+
+#include <dev/irq/arm-gic-irq.h>
+#endif
+
+void bsp_start_hook_0( void )
+{
+#ifdef RTEMS_SMP
+ uint32_t cpu_index_self;
+
+ cpu_index_self = _SMP_Get_current_processor();
+
+ if ( cpu_index_self != 0 ) {
+ /*
+ * The FVP jumps to the entry point of the ELF file on all processors.
+ * Prevent the fatal errors SMP_FATAL_MULTITASKING_START_ON_INVALID_PROCESSOR
+ * and SMP_FATAL_MULTITASKING_START_ON_UNASSIGNED_PROCESSOR this way.
+ */
+ if (
+ cpu_index_self >= rtems_configuration_get_maximum_processors()
+ || !_SMP_Should_start_processor( cpu_index_self )
+ ) {
+ while ( true ) {
+ _ARM_Wait_for_event();
+ }
+ }
+
+ _AArch32_PMSA_Initialize_default();
+ arm_gic_irq_initialize_secondary_cpu();
+
+ /* Change the VBAR from the start to the normal vector table */
+ _AArch32_Write_vbar( bsp_vector_table_begin );
+
+ bsp_interrupt_vector_enable( ARM_GIC_IRQ_SGI_0 );
+ _SMP_Start_multitasking_on_secondary_processor(
+ _Per_CPU_Get_by_index( cpu_index_self )
+ );
+ }
+#endif
+}
+
+void bsp_start_hook_1( void )
+{
+ bsp_start_copy_sections();
+ _AArch32_PMSA_Initialize_default();
+ bsp_start_clear_bss();
+}
diff --git a/bsps/arm/fvp/start/pmsa-sections.c b/bsps/arm/fvp/start/pmsa-sections.c
new file mode 100644
index 0000000000..862e09a94b
--- /dev/null
+++ b/bsps/arm/fvp/start/pmsa-sections.c
@@ -0,0 +1,56 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+/**
+ * @file
+ *
+ * @ingroup RTEMSBSPsARMFVP
+ *
+ * @brief This source file contains the definition of ::_AArch32_PMSA_Sections
+ * and ::_AArch32_PMSA_Section_count.
+ */
+
+/*
+ * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ *
+ * 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.
+ *
+ * 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 OWNER 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <bsp.h>
+#include <bsp/linker-symbols.h>
+
+#include <rtems/score/aarch32-pmsa.h>
+
+const AArch32_PMSA_Section _AArch32_PMSA_Sections[] = {
+ AARCH32_PMSA_DEFAULT_SECTIONS,
+ {
+ .begin = (uint32_t) arm_fvp_memory_device_begin,
+ .end = (uint32_t) arm_fvp_memory_device_end,
+ .attributes = AARCH32_PMSA_DEVICE
+ }
+};
+
+const size_t _AArch32_PMSA_Section_count =
+ RTEMS_ARRAY_SIZE( _AArch32_PMSA_Sections );
diff --git a/spec/build/bsps/arm/fvp/abi.yml b/spec/build/bsps/arm/fvp/abi.yml
new file mode 100644
index 0000000000..8cfbb744be
--- /dev/null
+++ b/spec/build/bsps/arm/fvp/abi.yml
@@ -0,0 +1,20 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-string: null
+- split: null
+- env-append: null
+build-type: option
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+default:
+- -mcpu=cortex-r52
+- -mthumb
+- -mfloat-abi=hard
+- -mfpu=auto
+default-by-variant: []
+description: |
+ ABI flags
+enabled-by: true
+links: []
+name: ABI_FLAGS
+type: build
diff --git a/spec/build/bsps/arm/fvp/bspcortexr52.yml b/spec/build/bsps/arm/fvp/bspcortexr52.yml
new file mode 100644
index 0000000000..01a3d7c3bd
--- /dev/null
+++ b/spec/build/bsps/arm/fvp/bspcortexr52.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+arch: arm
+bsp: fvp_cortex_r52
+build-type: bsp
+cflags: []
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+cppflags: []
+enabled-by: true
+family: fvp
+includes: []
+install: []
+links:
+- role: build-dependency
+ uid: grp
+- role: build-dependency
+ uid: ../../opto2
+source: []
+type: build
diff --git a/spec/build/bsps/arm/fvp/grp.yml b/spec/build/bsps/arm/fvp/grp.yml
new file mode 100644
index 0000000000..4fc9018052
--- /dev/null
+++ b/spec/build/bsps/arm/fvp/grp.yml
@@ -0,0 +1,58 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+build-type: group
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+includes: []
+install: []
+ldflags: []
+links:
+- role: build-dependency
+ uid: ../grp
+- role: build-dependency
+ uid: ../start
+- role: build-dependency
+ uid: abi
+- role: build-dependency
+ uid: obj
+- role: build-dependency
+ uid: objsmp
+- role: build-dependency
+ uid: ../../obj
+- role: build-dependency
+ uid: ../../objirq
+- role: build-dependency
+ uid: ../optgicspicount
+- role: build-dependency
+ uid: ../optgiccpuif
+- role: build-dependency
+ uid: ../optgicdist
+- role: build-dependency
+ uid: ../optgicredist
+- role: build-dependency
+ uid: ../optgtfreq
+- role: build-dependency
+ uid: ../optgtsysbase
+- role: build-dependency
+ uid: ../optgtsyscntcr
+- role: build-dependency
+ uid: ../optgtusevirt
+- role: build-dependency
+ uid: ../optstarthyp
+- role: build-dependency
+ uid: optnullsize
+- role: build-dependency
+ uid: optdrambegin
+- role: build-dependency
+ uid: optdramsize
+- role: build-dependency
+ uid: optdevbegin
+- role: build-dependency
+ uid: optdevsize
+- role: build-dependency
+ uid: linkcmds
+- role: build-dependency
+ uid: ../../bspopts
+type: build
+use-after: []
+use-before: []
diff --git a/spec/build/bsps/arm/fvp/linkcmds.yml b/spec/build/bsps/arm/fvp/linkcmds.yml
new file mode 100644
index 0000000000..1812866d2d
--- /dev/null
+++ b/spec/build/bsps/arm/fvp/linkcmds.yml
@@ -0,0 +1,53 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+build-type: config-file
+content: |
+ MEMORY {
+ NULL : ORIGIN = 0x00000000, LENGTH = ${ARM_FVP_MEMORY_NULL_SIZE:#010x}
+ DRAM : ORIGIN = ${ARM_FVP_MEMORY_DRAM_BEGIN:#010x}, LENGTH = ${ARM_FVP_MEMORY_DRAM_SIZE:#010x}
+ DEVICE : ORIGIN = ${ARM_FVP_MEMORY_DEVICE_BEGIN:#010x}, LENGTH = ${ARM_FVP_MEMORY_DEVICE_SIZE:#010x}
+ }
+
+ arm_fvp_memory_null_begin = ORIGIN (NULL);
+ arm_fvp_memory_null_end = ORIGIN (NULL) + LENGTH (NULL);
+ arm_fvp_memory_null_size = LENGTH (NULL);
+
+ arm_fvp_memory_dram_begin = ORIGIN (DRAM);
+ arm_fvp_memory_dram_end = ORIGIN (DRAM) + LENGTH (DRAM);
+ arm_fvp_memory_dram_size = LENGTH (DRAM);
+
+ arm_fvp_memory_device_begin = ORIGIN (DEVICE);
+ arm_fvp_memory_device_end = ORIGIN (DEVICE) + LENGTH (DEVICE);
+ arm_fvp_memory_device_size = LENGTH (DEVICE);
+
+ REGION_ALIAS ("REGION_START", DRAM);
+ REGION_ALIAS ("REGION_VECTOR", DRAM);
+ REGION_ALIAS ("REGION_TEXT", DRAM);
+ REGION_ALIAS ("REGION_TEXT_LOAD", DRAM);
+ REGION_ALIAS ("REGION_RODATA", DRAM);
+ REGION_ALIAS ("REGION_RODATA_LOAD", DRAM);
+ REGION_ALIAS ("REGION_DATA", DRAM);
+ REGION_ALIAS ("REGION_DATA_LOAD", DRAM);
+ REGION_ALIAS ("REGION_FAST_TEXT", DRAM);
+ REGION_ALIAS ("REGION_FAST_TEXT_LOAD", DRAM);
+ REGION_ALIAS ("REGION_FAST_DATA", DRAM);
+ REGION_ALIAS ("REGION_FAST_DATA_LOAD", DRAM);
+ REGION_ALIAS ("REGION_BSS", DRAM);
+ REGION_ALIAS ("REGION_WORK", DRAM);
+ REGION_ALIAS ("REGION_STACK", DRAM);
+ REGION_ALIAS ("REGION_NOCACHE", DRAM);
+ REGION_ALIAS ("REGION_NOCACHE_LOAD", DRAM);
+
+ bsp_section_xbarrier_align = DEFINED (bsp_section_xbarrier_align) ? bsp_section_xbarrier_align : 64;
+ bsp_section_robarrier_align = DEFINED (bsp_section_robarrier_align) ? bsp_section_robarrier_align : 64;
+ bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ? bsp_section_rwbarrier_align : 64;
+
+ bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size : 1024;
+
+ INCLUDE linkcmds.armv4
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+install-path: ${BSP_LIBDIR}
+links: []
+target: linkcmds
+type: build
diff --git a/spec/build/bsps/arm/fvp/obj.yml b/spec/build/bsps/arm/fvp/obj.yml
new file mode 100644
index 0000000000..f07899beff
--- /dev/null
+++ b/spec/build/bsps/arm/fvp/obj.yml
@@ -0,0 +1,44 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+build-type: objects
+cflags: []
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+cppflags: []
+cxxflags: []
+enabled-by: true
+includes: []
+install:
+- destination: ${BSP_INCLUDEDIR}
+ source:
+ - bsps/arm/fvp/include/bsp.h
+ - bsps/arm/fvp/include/tm27.h
+- destination: ${BSP_INCLUDEDIR}/bsp
+ source:
+ - bsps/arm/fvp/include/bsp/irq.h
+- destination: ${BSP_INCLUDEDIR}/dev/clock
+ source:
+ - bsps/include/dev/clock/arm-generic-timer.h
+links: []
+source:
+- bsps/arm/fvp/console/console.c
+- bsps/arm/fvp/console/printk-support.c
+- bsps/arm/fvp/start/bspreset.c
+- bsps/arm/fvp/start/bspstart.c
+- bsps/arm/fvp/start/bspstarthooks.c
+- bsps/arm/fvp/start/pmsa-sections.c
+- bsps/arm/shared/cache/cache-cp15.c
+- bsps/arm/shared/cache/cache-v7ar-disable-data.S
+- bsps/arm/shared/clock/arm-generic-timer-aarch32.c
+- bsps/arm/shared/cp15/arm-cp15-set-exception-handler.c
+- bsps/arm/shared/start/bsp-start-memcpy.S
+- bsps/shared/dev/btimer/btimer-cpucounter.c
+- bsps/shared/dev/clock/arm-generic-timer.c
+- bsps/shared/dev/getentropy/getentropy-cpucounter.c
+- bsps/shared/dev/irq/arm-gicv3.c
+- bsps/shared/dev/serial/console-termios.c
+- bsps/shared/irq/irq-default-handler.c
+- bsps/shared/start/bspfatal-default.c
+- bsps/shared/start/bspgetworkarea-default.c
+- bsps/shared/start/sbrk.c
+- bsps/shared/start/stackalloc.c
+type: build
diff --git a/spec/build/bsps/arm/fvp/objsmp.yml b/spec/build/bsps/arm/fvp/objsmp.yml
new file mode 100644
index 0000000000..b0e58c64d5
--- /dev/null
+++ b/spec/build/bsps/arm/fvp/objsmp.yml
@@ -0,0 +1,16 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+build-type: objects
+cflags: []
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+cppflags: []
+cxxflags: []
+enabled-by:
+- RTEMS_SMP
+includes: []
+install: []
+links: []
+source:
+- bsps/arm/fvp/start/bspsmp.c
+- bsps/arm/shared/start/arm-a9mpcore-smp.c
+type: build
diff --git a/spec/build/bsps/arm/fvp/optdevbegin.yml b/spec/build/bsps/arm/fvp/optdevbegin.yml
new file mode 100644
index 0000000000..d7522d0fd7
--- /dev/null
+++ b/spec/build/bsps/arm/fvp/optdevbegin.yml
@@ -0,0 +1,22 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-integer: null
+- assert-uint32: null
+- assert-aligned: 1048576
+- env-assign: null
+- format-and-define: null
+build-type: option
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+default: 436207616
+default-by-variant:
+- value: 2583691264
+ variants:
+ - arm/fvp_cortex_r52
+description: |
+ Defines the begin address of the device area.
+enabled-by: true
+format: '{:#010x}'
+links: []
+name: ARM_FVP_MEMORY_DEVICE_BEGIN
+type: build
diff --git a/spec/build/bsps/arm/fvp/optdevsize.yml b/spec/build/bsps/arm/fvp/optdevsize.yml
new file mode 100644
index 0000000000..ca6468510c
--- /dev/null
+++ b/spec/build/bsps/arm/fvp/optdevsize.yml
@@ -0,0 +1,18 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-integer: null
+- assert-uint32: null
+- env-assign: null
+- format-and-define: null
+build-type: option
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+default: 354418688
+default-by-variant: []
+description: |
+ Defines the size in bytes of the device area.
+enabled-by: true
+format: '{:#010x}'
+links: []
+name: ARM_FVP_MEMORY_DEVICE_SIZE
+type: build
diff --git a/spec/build/bsps/arm/fvp/optdrambegin.yml b/spec/build/bsps/arm/fvp/optdrambegin.yml
new file mode 100644
index 0000000000..7a44b2086f
--- /dev/null
+++ b/spec/build/bsps/arm/fvp/optdrambegin.yml
@@ -0,0 +1,22 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-integer: null
+- assert-uint32: null
+- env-assign: null
+- format-and-define: null
+build-type: option
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+default: 2147483648
+default-by-variant:
+- value: 1024
+ variants:
+ - arm/fvp_cortex_r52
+description: |
+ Defines the begin address of the DRAM. The begin address must take the size
+ of the NULL pointer protection area into account (ARM_FVP_MEMORY_NULL_SIZE).
+enabled-by: true
+format: '{:#010x}'
+links: []
+name: ARM_FVP_MEMORY_DRAM_BEGIN
+type: build
diff --git a/spec/build/bsps/arm/fvp/optdramsize.yml b/spec/build/bsps/arm/fvp/optdramsize.yml
new file mode 100644
index 0000000000..9ae2a8afe8
--- /dev/null
+++ b/spec/build/bsps/arm/fvp/optdramsize.yml
@@ -0,0 +1,23 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-integer: null
+- assert-uint32: null
+- env-assign: null
+- format-and-define: null
+build-type: option
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+default: 33554432
+default-by-variant:
+- value: 33553408
+ variants:
+ - arm/fvp_cortex_r52
+description: |
+ Defines the size in bytes of the DRAM. Increasing the size may increase the
+ startup time of the FVP. The size must take the size of the NULL pointer
+ protection area into account (ARM_FVP_MEMORY_NULL_SIZE).
+enabled-by: true
+format: '{:#010x}'
+links: []
+name: ARM_FVP_MEMORY_DRAM_SIZE
+type: build
diff --git a/spec/build/bsps/arm/fvp/optnullsize.yml b/spec/build/bsps/arm/fvp/optnullsize.yml
new file mode 100644
index 0000000000..3d6b60b7eb
--- /dev/null
+++ b/spec/build/bsps/arm/fvp/optnullsize.yml
@@ -0,0 +1,21 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-integer: null
+- assert-uint32: null
+- env-assign: null
+- format-and-define: null
+build-type: option
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+default: 1048576
+default-by-variant:
+- value: 1024
+ variants:
+ - arm/fvp_cortex_r52
+description: |
+ Defines the size in bytes of the NULL pointer protection area.
+enabled-by: true
+format: '{:#010x}'
+links: []
+name: ARM_FVP_MEMORY_NULL_SIZE
+type: build
diff --git a/spec/build/bsps/arm/optgiccpuif.yml b/spec/build/bsps/arm/optgiccpuif.yml
new file mode 100644
index 0000000000..4929f1bcf5
--- /dev/null
+++ b/spec/build/bsps/arm/optgiccpuif.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-integer: null
+- format-and-define: null
+build-type: option
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+default: 0x2c000000
+default-by-variant:
+- value: 0xac000000
+ variants:
+ - arm/fvp_cortex_r52
+description: |
+ Defines the base address of the GIC CPU Interface.
+enabled-by: true
+format: '{:#010x}'
+links: []
+name: BSP_ARM_GIC_CPUIF_BASE
+type: build
diff --git a/spec/build/bsps/arm/optgicdist.yml b/spec/build/bsps/arm/optgicdist.yml
new file mode 100644
index 0000000000..710d3b13db
--- /dev/null
+++ b/spec/build/bsps/arm/optgicdist.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-integer: null
+- format-and-define: null
+build-type: option
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+default: 0x2f000000
+default-by-variant:
+- value: 0xaf000000
+ variants:
+ - arm/fvp_cortex_r52
+description: |
+ Defines the base address of the GIC Distributor.
+enabled-by: true
+format: '{:#010x}'
+links: []
+name: BSP_ARM_GIC_DIST_BASE
+type: build
diff --git a/spec/build/bsps/arm/optgicredist.yml b/spec/build/bsps/arm/optgicredist.yml
new file mode 100644
index 0000000000..8d15b1ace5
--- /dev/null
+++ b/spec/build/bsps/arm/optgicredist.yml
@@ -0,0 +1,19 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-integer: null
+- format-and-define: null
+build-type: option
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+default: 0x2f100000
+default-by-variant:
+- value: 0xaf100000
+ variants:
+ - arm/fvp_cortex_r52
+description: |
+ Defines the base address of the GIC Redistributor.
+enabled-by: true
+format: '{:#010x}'
+links: []
+name: BSP_ARM_GIC_REDIST_BASE
+type: build
diff --git a/spec/build/bsps/arm/optgicspicount.yml b/spec/build/bsps/arm/optgicspicount.yml
new file mode 100644
index 0000000000..cec05f36d7
--- /dev/null
+++ b/spec/build/bsps/arm/optgicspicount.yml
@@ -0,0 +1,17 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+actions:
+- get-integer: null
+- define: null
+build-type: option
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+default: 64
+default-by-variant: []
+description: |
+ Defines the count of Shared Peripheral Interrupts (SPIs) supported by the
+ interrupt controller.
+enabled-by: true
+format: '{}'
+links: []
+name: BSP_ARM_SHARED_PERIPHERAL_INTERRUPT_COUNT
+type: build
diff --git a/spec/build/bsps/arm/optgtfreq.yml b/spec/build/bsps/arm/optgtfreq.yml
index adfacfaed2..71d356428a 100644
--- a/spec/build/bsps/arm/optgtfreq.yml
+++ b/spec/build/bsps/arm/optgtfreq.yml
@@ -6,7 +6,10 @@ build-type: option
copyrights:
- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
default: null
-default-by-variant: []
+default-by-variant:
+- value: 100000000
+ variants:
+ - arm/fvp_cortex_r52
description: |
Defines the frequency in Hz of the ARM Generic Timer.
format: '{}'
diff --git a/spec/build/cpukit/optsmp.yml b/spec/build/cpukit/optsmp.yml
index b7fe3355ef..eefeef44aa 100644
--- a/spec/build/cpukit/optsmp.yml
+++ b/spec/build/cpukit/optsmp.yml
@@ -12,6 +12,7 @@ description: |
Enable the Symmetric Multiprocessing (SMP) support
enabled-by:
- arm/altcycv_devkit
+- arm/fvp_cortex_r52
- arm/imx7
- arm/raspberrypi2
- arm/realview_pbx_a9_qemu
--
2.26.2
More information about the devel
mailing list