The inclusive comparison against st_size incorrectly rejects mappings
ending exactly at the file boundary.
This patch:
1.Changes >= to > to allow valid mappings up to the file size.
2.Uses subtraction-based logic to prevent potential integer overflow.
rtems_flashdev_register() cleared the region allocator bitmap with
memset( table->bit_allocator, 0, alloc_array_len ) where alloc_array_len
held the number of uint32_t words. Since bit_allocator is a uint32_t
array, only one byte per word was zeroed, leaving the rest of the bitmap
uninitialised. Stale bits can make
rtems_flashdev_find_unallocated_region() report region slots as
allocated and fail REGION_SET with ENOMEM while slots are actually free.
Rename RTEMS_FLASHDEV_BITALLOC_LENGTH to RTEMS_FLASHDEV_BITALLOC_WORD_LENGTH
to make the word count explicit, add RTEMS_FLASHDEV_BITALLOC_BYTE_LENGTH for
the size in bytes, and clear the whole bitmap using the byte length.
The 'in' field (bit 0) is missing from the DCAN TIOC macros. It looks
like the auto-gen did not pick it up as it's broken onto the next page
in both the 3137 and 4357 TRMS.
The generated LIN and SCI headers used a generic CLEARINTLVL_8 macro for
the TX interrupt level clear bit, and used CE names for bit 25, which is
the overrun-error interrupt.
Add the missing CLR_TX_INT_LVL names, use OE consistently for bit 25,
and remove the duplicate CLEARINTLVL definitions.
Only enter the if block to clear the channel when IOFFHR != 0. Then
subtract 1 inside there to get the correct channel (e.g. IOFFHR == 1
maps to channel 0).
Commit 3a0dcd5ee9 cleaned up the
TMS570_MMR_SELECT_GMII_SEL somewhat, creating the
TMS570_MMR_SELECT_MII_MODE and TMS570_MMR_SELECT_RMII_MODE
macros.
There remains one reference to the TMS570_MMR_SELECT_GMII_SEL macro
in the 3137 code. This commit replaces it with TMS570_MMR_SELECT_MII_MODE
which preserves the same encoding as the pinmux was at the time (and is
correct): TMS570_PIN_AND_FNC(TMS570_BALL_WITH_MMR(29, 3), 0)
LS31x variants have this ETO field in POMGLBCTRL but the LC43x
variants do not.
Guard the write so LC43x variants aren't trying to program a
non-existent field.
Error pin and interrupt channels are write-one-to-set so setting all
to zero does not have the desired effect to enable them. We need to
write FFs (all ones).
Status (error) returns 1 and 3 from tms570_efc_check are Class 1 and 2
i.e. very serious errors and should be dealt with explicitly in
tms570_system_hw_init.
These returns indicate that serious eFuse failures are either present
or cannot be ruled out and start-up should halt.
Tests using the bld.cc() and bld.cxx() rules do not profit from the
automatic compiler dependency generation provided by the gccdeps.py waf
plugin.
Add "cpukit/include/rtems/score/cpuopts.h" as a hard-coded dependency to
these tests to account for configuration changes. This fixes linker
errors, for example if the configuration changed the RTEMS_SMP option.
Close#5482.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
The rtems_fdt_subnode_offset and rtems_fdt_get_name try to binary
search the entries index by the DTB offset, but the index is sorted
by alphabetically by the name, so the search is broken. Replace these
searches by directly calling the libfdt functions. Since the DTB offset
is known, the performance hit for invoking the libfdt should not be too
much.
Closes#5606.
sp13 already constructs Q3 using rtems_message_queue_construct()
in init.c but task1.c never sends to, receives from, or deletes
the constructed queue.
Extend task1.c to send a message to Q3, receive it back, and
delete the queue after the variable-size loop completes. This
exercises the full lifecycle of a queue created with static
storage and storage_free set to NULL.
Verified on arm/realview_pbx_a9_qemu with QEMU 9.0.2,
RTEMS 7.0.0.a413333f2f04130e82e15addba402887222c345f, GCC 15.2.0.
RAM parity self-tests run on several RAM modules, which work fine for
the 3137 variants, but on 4357 variants some of those modules use
an ECC memory protection scheme.
This commit turns the relevent ones off for 4357 until proper ECC
self-tests are created.