According to commentary on GCC bug
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99143, the alignment
behavior of linker sections on which RTEMS has relied was never
guaranteed to be consistent across platforms and any alignment
requirements for linker sections needs to be enforced explicitly.
This adds those explicit alignment requirements.
Add a System Level Control Register driver for the Xilinx Zynq
Ultrascale+ MPSoC with basic clock control functionality for use with
the Cadence GEM. This also removes the Zynq-7000 clock control weakref
from compilation depending on the BSP in use.
Similar to the UARTs, ZynqMP hardware platforms use the highest
memory-mapped CGEM peripheral as the primary instance of that
peripheral. This change allows operation on hardware as well as QEMU.
This is a port of the latest patch in FreeBSD that adds support for
64bit CGEMs as used in ZynqMP. This does not include the work necessary
for support on RISC-V systems.
Alignment on 64bit hardware is strict in comparison to running in an
emulator. This resolves an alignment exception when allocating memory on
real hardware.
With the previous fix, it could happen that the end of the packet hasn't
been flushed. For example assume the following addresses:
ds_addr: 0x81c804A
ds_len: 0x57
In that case the data ends at 0x81c80a1. But due to the rounding the
area from 0x81c8040 to 0x81c80a0 would have been flushed.
This fix now first calculates the start and end address, aligns these
addresses and then recalculates the len that has to be flushed.
Update #4180
Update the host frame interval after a device connection. Select also
the FS/LS PHY clock. It is not clear if this works on all platforms.
Update #3910.
- Do not build a test if a dependency is not enabled.
- Perform a dependency check and generate an error if an enabled module
depends on a disabled module.
Closes#4077
- Provide support for separate user and kernel include paths in
libbsd.py.
- Update all added files with a suitable context to build them
with. Supported contexts are `kernel` and `user`.
- Kernel source use the kernel, CPU, and build header paths in
this order.
- User source use the user, kernel, CPU and build header paths
in this order. The FreeBSD /usr/include tree has some kernel
header files installed as well as user land header files. This
complicates the separation as some kernel header files are not
visible to user land code while other are. This is handled by
appending the kernel header paths to the user header paths so
user land code will include a user header with the same name as
a kernel header over the kernel header but will find a kernel
header if there is no matching user header file.
Closes#4067
At least the powerpc C++ compiler defines currently _GNU_SOURCE due to a GCC
configuration error. This leads to conflicting qsort_r() definitions.
As a workaround undefine _GNU_SOURCE for this C++ compatibility test file.
Update #4078.
In serporidok use the same structures used to hand over to the XDR
encode/decode routines. We must not mix packed and unpacked structures.
Update #4025.
Some targets support only flushing or invalidating complete cache lines.
In this cases misaligned buffers might lead to unexpected results. This
patch adds a flag that allows drivers to signal to the bus dma driver
that it is OK to round a buffer to the next full cache line. That's for
example necessary if a driver wants to send out 14 byte via a USB DMA.
Only the driver knows whether these 14 bytes are located in an otherwise
unused cache line aligned buffer.
There is a bug in the #ifdef regarding FDT so this file hasn't been
compiled. If that bug is solved, the driver doesn't work for some other
reason.
With the FDT-bug the driver hasn't been used by anyone. So just remove
it again.