The recent FDT changes included some refactoring that missed the second
parameter in a rtems_fdt_valid_handle_unprotected() call. This adds the
missing parameter and fixes the build.
The change to avoid deadlock could introduce a race condition on the
blobs chain and the handle. Refactor the rtems_fdt_valid_handle() to
create an internal unprotected version, and call it with the global
rtems_fdt_lock() held.
Reading non-compressed dtb files was broken because of the initial
reading of the first two bytes to check for compression. Reset the
file pointer after making that first read regardless of whether a
gzip header is found or not.
Splits functionality so that reading from the dtb file is distinct from
loading it into memory. This allows directly loading a dtb from memory
instead of from a file.
The number of external interrupts can be configured through the FDT.
Read it during PLIC initialization and use that to determine the max
valid vector number.
The previous addition of s-mode support avoided touching the PLIC
registers and only allowed limited use of software interrupts for SMP
IPIs. This enables the PLIC in s-mode mapping the registers with the MMU
and unifying some aspects of the m-mode and s-mode implementations.
Updates #3337
Update to tms570-sci.c (commit af77d28) puts a gate to check
requests for non 8-bit bytes and CREAD not set, we therefore
must expclitily set them now.
- Changed the interrupt attributes so extended vectors
report can_raise as false.
- Changed the bsp_interrupt_raise to return
RTEMS_UNSATISFIED for extended vectors 16-31.
- BSP-specific validation for gr712rc and gr740
were added to exercised the extended vectors, and
check that the right interrupt handler is called.
Updates #4846.
Adds invalidation of cache (using
rtems_cache_invalidate_multiple_instruction_lines which is
included in the wrapper function
rtems_cache_instruction_sync_after_code_change.
This is to ensure full syncing of the I-cache after copying
instructions (in .fast_text into RAM with
bsp_start_copy_sections_compact in bspstarthooks.c
The smpclock01 test relies on tight synchronization between cores and it
checks cross-core Watchdog.ticks. On some targets the cores can become
de-synchronized so that the tick counts are not reliable. Slowing the
tick rate down seems to help this problem.
Add post-2100 validation checks in spclock_err02
without increasing runtime and remove excessive prints.
The test verifies century and leap-year rules via RTEMS
clock APIs and gmtime()/mktime() for future years.
Fixes#5507
_BM(x) produces 64-bit values which are implicitly converted to int
in reloc_target_bitmask. For x = 32, this causes truncation from
4294967295 to -1 on 32-bit targets, triggering -Woverflow.
Used uint32_t and cast the result to avoid implicit narrowing.
Fixes#5557
Fix parity handling in zynq_uart_set_attributes() by clearing existing
parity bits before setting a new mode instead of always ORing PAR_NONE,
which caused incorrect or ignored parity; also fix inverted PARODD logic
and add ZYNQ_UART_MODE_PAR_MASK to manage the parity field correctly.
Fixes#5554
The rtems_test_spin_for_ticks( x ) executes one partial tick and the
remaining x - 1 as complete ticks. Some tests assumed it executed x
complete ticks. Fix those tests.
Fixes#5575.
Fix incorrect comparison between fdt_getprop() length (bytes)
and address cells count.
The check now uses ac * sizeof(uint32_t) to avoid
reading invalid data.
Also change FDT pointer type from const char * to const void *
to match libfdt API.
No functional changes.
CAN controllers need a running worker task to function. Check if
the task is actually started and return NULL (and free already allocated
resources) if it fails.
Also assert if cleanup functions fail.
Signed-off-by: Michal Lenc <michallenc@seznam.cz>
- leon3 interrupt vector 15 is non-maskable and should
not be reported as disable-capable.
- added leon3_interrupt_is_maskable function, and
used it to set can_disable and maybe_disable in
bsp_interrupt_get_attributes().
- added verification for non-maskable vectors in
bsp_interrupt_vector_disable(), which is rejected
with error RTEMS_UNSATISFIED.
Updates #4830.
shared/vme/README.md had references to set_vector() for installing
isr during vme driver setup. They have been replaced by
rtems_interrupt_handler_install().
Updates #5215
This code was flagged as maybe-uninitialized when compiling at -Og.
The underlying problem was functional code in an assert(). If
compiled with asserts disabled, there would have been no mutex
lock/unlock. Changed the macros to obtain and release the mutex
independent of assert() being enabled or not and switched to using
the RTEMS assert _Assert() which lets this check follow the
RTEMS_DEBUG setting.
The variables start and size were used in the return statement
even if none of the if's set them. Defaulted them to zero which
results in returning NULL on error which was expected anyway.