Commit Graph

34173 Commits

Author SHA1 Message Date
Sebastian Huber
d1c038c78e score: Fix internal error status number
The value of STATUS_CLASSIC_INTERNAL_ERROR must be equal to
RTEMS_INTERNAL_ERROR.  Add static assertions to ensure that the status
codes match.
2021-04-07 06:31:46 +02:00
Alex White
1af1c193bc cpukit/aarch64: Add ESR register decoding 2021-04-06 08:27:46 -05:00
Sebastian Huber
05cd707d28 arm/stm32h7: Add STM32H7_USART3_GPIO_* 2021-04-06 09:56:41 +02:00
Sebastian Huber
6bb6b69bb6 arm/stm32h7: Add STM32H7_HSE_FREQUENCY 2021-04-06 09:43:23 +02:00
Sebastian Huber
26307ef115 arm/nucleo-h743zi: New BSP variant 2021-04-06 09:42:53 +02:00
Sebastian Huber
3799375c5e build: Add group for arm/stm32h7 2021-04-06 09:41:44 +02:00
Christian Mauderer
8fd29cfbc5 stm32h7: Add init for sdmmc pins
Update #4372
2021-04-01 09:04:23 +02:00
Christian Mauderer
aa9e3c6211 stm32h7: Add SDMMC modules to clock
Update #4372
2021-04-01 09:04:21 +02:00
Jan Sommer
33fd9155a1 bsps/xilinx_zynq: Add Xilinx AXI SPI driver to autotools build
Closes #4321
2021-03-30 17:01:37 +02:00
Jan Sommer
7a1edf11a1 bsps/shared: Add Xilinx-AXI SPI driver to waf
Updates #4321
2021-03-30 17:01:36 +02:00
Jan Sommer
70667b5527 bsps/xilinx_zynq: Add SPI driver for xilinx-axi-spi
Updates #4321
2021-03-30 17:01:36 +02:00
Jiri Gaisler
4f12a1e365 Restore FDT in ofw01 to avoid test timeout on RISCV 2021-03-30 16:34:04 +02:00
Sebastian Huber
1e62e15f46 score: Add an assert to _Workspace_Free() 2021-03-27 18:08:13 +01:00
Sebastian Huber
e0aba8cb9e score: Fix task stack initialization
Do not adjust the stack area begin address since this may confuse the
stack allocator and result in failed stack frees.

Account for the alignment overhead in the stack space size estimate.

Check that the stack size is in the expected interval.
2021-03-27 18:05:05 +01:00
Joel Sherrill
d4d2f6487a pwdgrp.c: Change to simply ignore return value from mkdir(/etc)
At this point in time, /etc can be created in multiple ways. There
is a discussion (#4354) that would define a mechanism for
instantiating a base file system with some flexibility for the
set of directories included. For now, this particular mkdir()
call can fail because /etc could already have been created by
at least an initial filesystem image, the shell, or libbsd.

closes #4382.
2021-03-27 09:59:12 -05:00
Christian Mauderer
fd639b8abf dosfs: Use peek support
This speeds up reading fragmented files.

Fix #3689
2021-03-26 14:25:56 +01:00
Christian Mauderer
6ae79e6df6 libblock: Add rtems_bdbuf_peek()
Adds a peek function that allows (for example) a file system to suggest
the next blocks that should be used for read ahead. This can increase
the read speed of fragmented files.

Update #3689
2021-03-26 14:25:38 +01:00
Joel Sherrill
62bbb0cc46 gen_uuid.c: Revert previous patch (597e4f4765)
The patch was:
    gen_uuid.c: Fix two Unchecked return value from library errors

    CID 1049146: Unchecked return value from library in get_clock().
    CID 1049147: Unchecked return value from library in get_random_fd().

 Reopen #4280
2021-03-24 08:03:07 -05:00
Ryan Long
37fc6516d3 pwdgrp.c: Remove _Assert. /etc may already exist
Removed the _Assert_unused_variable_equals macro due to /etc
having already been created by the network stack initialization
or an initial filesystem image.

Closes #4282
2021-03-23 11:43:13 -05:00
Jan Sommer
1343fb5f01 bsps/riscv: Add per cpu clock interrupt
- Fixes failure of test smpclock01
2021-03-23 09:17:38 +01:00
Sebastian Huber
fec2b72472 validation: Use support functions 2021-03-23 07:57:13 +01:00
Sebastian Huber
8afe332348 validation: Add test case support functions 2021-03-23 07:57:13 +01:00
G S Niteesh Babu
bd9e45d91f rtems-fdt/rtems-fdt.c: Fix bug in loop termination
The while loop, loops infinitely in case of raw FDT data.
The loop condition (size) is not modified during iterations.
2021-03-21 12:33:08 +01:00
G S Niteesh Babu
56074644a7 bsp/beagle: Ported Beagle pinmux driver to RTEMS
The following files have been ported
1) ti_pinmux.c
2) ti_pinmux.h
3) am335x_scm_padconf.c
4) am335x_scm_padconf.h

Update #3784
2021-03-21 12:30:48 +01:00
G S Niteesh Babu
7589f1e01a bsps/beagle: Added SOC detection using FDT
Detects the SOC type using FDT and also replaces the ti_cpuid.h
header in FreeBSD with custom one.
2021-03-21 12:30:48 +01:00
G S Niteesh Babu
5c656ead88 bsp/beagle: Import Beagle pinmux from FreeBSD
This patch imports the beagle pinmux driver from FreeBSD into
RTEMS. Previously this driver was placed in RTEMS-libBSD but
this caused double initialization of few pins once during RTEMS
initialization and second time during libBSD initialization.
The following patches port the driver from FreeBSD to RTEMS and
will remove the driver from RTEMS-libBSD.

RTEMS Ticket Update: #3784

FreeBSD head: ca12b7e9534b10af022fed60c043984dbaf4003d

The following files have been imported from FreeBSD:
1) freebsd/sys/arm/ti/am335x/am335x_scm_padconf.h
2) freebsd/sys/arm/ti/am335x/am335x_scm_padconf.c
3) freebsd/sys/arm/ti/ti_pinmux.h
4) freebsd/sys/arm/ti/ti_pinmux.c
2021-03-21 12:30:48 +01:00
G S Niteesh Babu
fc7129067d bsps/shared/ofw: Add rtems_ofw_is_node_compatible
This patch extends the RTEMS OFW API by adding
rtems_ofw_find_device_by_compat

This function checks if a node has the expected compatible
property.
2021-03-21 12:30:47 +01:00
Christian Mauderer
65ab1cda10 bsps/arm/imxrt: Add FDT and FDT helper for QTMR
Makes it simpler to access the QTMR in an application via a FDT name or
link in an application specific FDT entry.
2021-03-21 12:30:29 +01:00
Sebastian Huber
53bd5e3246 rtems: Relax mode checks in rtems_signal_catch()
Check only for invalid modes if a valid handler is presented to
rtems_signal_catch().  When NULL is used for the handler, ASR processing
is disabled and the mode is not used.

Update #4244.
2021-03-19 16:55:48 +01:00
Sebastian Huber
fa1e7ea054 validation: Reduce source code/rodata size
Use a common wording for the tests.  Use the new templates for action
requirements described in the RTEMS Software Engineering manual.
2021-03-19 16:55:48 +01:00
Sebastian Huber
eb1cd404d0 build: Add test exclude for arm/lpc2362 2021-03-19 16:55:11 +01:00
Sebastian Huber
50abce31ef rtems: Fix rtems_task_mode()
Do the ASR and preemption mode change only if requested by the mode
mask.  The bug was introduced by
508f868237.
2021-03-18 10:38:53 +01:00
Sebastian Huber
b4eb937ecd rtems: Improve semaphore create error checks
Do not mix checks for different error indicators (RTEMS_NOT_DEFINED and
RTEMS_INVALID_NUMBER).  This simplifies the specification of
rtems_semaphore_create().
2021-03-16 14:57:41 +01:00
Sebastian Huber
4ebdbee815 rtems: Allow initially locked MrsP semaphores
Rejecting initially locked MrsP semaphores was due to a limitiation of
the early limitiation of the MrsP protocol.  This limitation no longer
exists.
2021-03-16 14:57:41 +01:00
Sebastian Huber
0965b7c8b7 rtems: Require RTEMS_PRIORITY for MrsP semaphores
MrsP semaphores are a generalization of the priority ceiling semaphores
for SMP configurations.  Priority ceiling semaphores are required to use
the priority task wait queue discipline.  Require this discipline also
for MrsP semaphores.

Close #4347.
2021-03-16 14:47:25 +01:00
Sebastian Huber
5d752e7b48 sp14: Fix for SMP or robust thread dispatch
Close #4343.
2021-03-16 14:01:08 +01:00
Sebastian Huber
c9a41b0043 score: Add Thread_Configuration::cpu_time_budget
Move the CPU time budget to the thread configuration.  This simplifies
_Thread_Initialize().
2021-03-16 12:48:37 +01:00
Sebastian Huber
5babc54d8d validation: Task create/construct
Run the task create/construct tests also on validation test suite 1
which has exactly one processor configured.
2021-03-16 12:47:52 +01:00
Sebastian Huber
586e06ec62 validation: Improve wording 2021-03-11 21:59:52 +01:00
Eshan dhawan
a26a326e55 Test suite for FTW.H methods
Signed-off-by: Eshan Dhawan <eshandhawan51@gmail.com>
2021-03-11 11:40:13 -06:00
Daniel Hellstrom
b2da982c87 leon,tn-0018: work around GRLIB-TN-0018 errata
Overview
========

The errata is worked around in the kernel without requiring toolchain
modifications. It is triggered the JMPL/RETT return from trap instruction
sequence never generated by the compiler and. There are also other
conditions that must must be true to trigger the errata, for example the
instruction that the trap returns to has to be a JMPL instruction. The
errata can only be triggered if certain data is corrected by ECC
(inflicted by radiation), thus it can not be triggered under normal
operation. For more information see:
	 www.gaisler.com/notes

Affected RTEMS target BSPs:
 * GR712RC
 * UT699
 * UT700/699E

The work around is enabled by defining __FIX_LEON3_TN0018 at build time.
After applying the following GCC patch, GCC will set the define when
compiling for an affected multilib:
  * GR712RC (-mcpu=leon3 -mfix-gr712rc)
  * UT700/UT699E (-mpcu=leon3 -mfix-ut700)
  * UT699 (-mcpu=leon -mfix-ut699)
When building for another multilib and TN0018 is still required, it
is possible to enable it on the RTEMS kernel configure line using the
TARGET_CFLAGS (-D__FIX_LEON3FT_TN0018) or other by other means.

The following GCC patch sets __FIX_LEON3FT_TN0018 for the affected RTEMS
multilibs:
---------
diff --git a/gcc/config/sparc/rtemself.h b/gcc/config/sparc/rtemself.h
index 6570590..ddec98c 100644
--- a/gcc/config/sparc/rtemself.h
+++ b/gcc/config/sparc/rtemself.h
@@ -33,6 +33,8 @@
        builtin_assert ("system=rtems");        \
        if (sparc_fix_b2bst)                    \
          builtin_define ("__FIX_LEON3FT_B2BST"); \
+       if (sparc_fix_gr712rc || sparc_fix_ut700 || sparc_fix_ut699) \
+         builtin_define ("__FIX_LEON3FT_TN0018"); \
     }                                          \
   while (0)
---------

Workaround Implementation
=========================

In general there are two approaches that the workaround uses:
 A) avoid ECC restarting the RETT instruction
 B) avoid returning from trap to a JMPL instruction

Where A) comes at a higher performance cost than B), so B) is used
where posssible. B) can be achived for certain returns from trap
handlers if trap entry is controlled by assembly, such as system calls.

A)
A special JMPL/RETT sequence where instruction cache is disabled
temporarily to avoid RETT containing ECC errors, and reading of RETT
source registers to "clean" them from incorrect ECC just before RETT
is executed.

B)
The work around prevents JMPL after system calls (TA instruction) and
modifies assembly code on return from traps jumping back to application
code. Note that for some traps the trapped instruction is always
re-executed and can therefore not trigger the errata, for example the
SAVE instruction causing window overflow or an float instruction causing
FPU disabled trap.

RTEMS SPARC traps workaround implementation:
   NAME                 NOTE   TRAP   COMMENT
 * window overflow         1 - 0x05   always returns to a SAVE
 * window underflow        1 - 0x06   always returns to a RESTORE
 * interrupt traps         2 - 0x10..1f special rett sequence workaround
 * syscall                 3 - 0x80   shutdown system - never returns
 * ABI flush windows       2 - 0x83   special rett sequence workaround
 * syscall_irqdis          4 - 0x89
 * syscall_irqen           4 - 0x8A
 * syscall_irqdis_fp       1 - 0x8B   always jumps back to FP instruction
 * syscall_lazy_fp_switch  5 - 0x04   A) jumps back to FP instruction, or to
                                      B) _Internal_error() starting with SAVE

 Notes:
 1) no workaround needed because trap always returns to non-JMPL instruction
 2) workaround implemented by special rett sequence
 3) no workaround needed because system call never returns
 4) workaround implemented by inserting NOP in system call generation. Thus
    fall into 1) when workaround is enabled and no trap handler fix needed.
 5) trap handler branches into both 1) and returning to _Internal_error()
    which starts with a SAVE and besides since it shuts down the system that
    RETT should never be in cache (only executed once) so fix not necessary
    in this case.

Any custom trap handlers may also have to be updated. To simplify that,
helper work around assembly code in macros are available in a separate
include file <libcpu/grlib-tn-0018.h>.

Close #4155.
2021-03-11 17:35:28 +01:00
Daniel Hellstrom
89d90c0019 sparc,leon: avoid triggering LEON3FT errata TN-0009
Close #4336.
2021-03-11 17:35:28 +01:00
Daniel Hellstrom
acad761b9c sparc,leon: avoid triggering TN-0009 bad sequence
Update #4336.
2021-03-11 17:35:28 +01:00
Daniel Hellstrom
6caff4d61d grlib,grspw_pkt: correct link state enum numbering
Not used by the driver itself, but shuold be correct if used by
application.
2021-03-11 17:35:28 +01:00
Martin Aberg
4e0735c650 leon, l2cache: prevent unused diagnostic access 2021-03-11 17:35:28 +01:00
Martin Aberg
51564f6383 leon, ahbstat: register definitions for AHBSTAT version 1 2021-03-11 17:35:27 +01:00
Martin Aberg
8660602ae2 leon, grspw_router: added router_port_link_div()
Allows user to set SpaceWire run clock divisor for an individual port.
2021-03-11 17:35:27 +01:00
Daniel Hellstrom
1d804cbcd4 sparc: fix bad register alignment for 64 bit store 2021-03-11 17:35:27 +01:00
Daniel Hellstrom
dfe7901c7f leon: restart and load timer counter at initialization
Without this smp05 and smpthreadlife01 tests may fail
depending on how the boot loader initialized the GPTIMER.
Before the time counter stopped counting when reaching
zero, but tests could work since it could take 2^32 us
before stopping.

The timer driver will potentially overwrite this, but it
happens later due to the initialization order having
RTEMS_SYSINIT_CPU_COUNTER very early.
2021-03-11 17:35:27 +01:00
Daniel Hellstrom
9c00cc1301 leon,ckinit: avoid assuming 1MHz timer pre-scaler clock 2021-03-11 17:35:27 +01:00