Add information about restricted use of device memory for ARM and AArch64. --- cpu-supplement/aarch64.rst | 5 +++++ cpu-supplement/arm.rst | 6 ++++++ 2 files changed, 11 insertions(+)
diff --git a/cpu-supplement/aarch64.rst b/cpu-supplement/aarch64.rst index 2b3d620..4576663 100644 --- a/cpu-supplement/aarch64.rst +++ b/cpu-supplement/aarch64.rst @@ -73,6 +73,11 @@ A flat 64-bit or 32-bit memory model is supported depending on the selected mult variant. All AArch64 CPU variants support a built-in MMU for which basic initialization for a flat memory model is handled. +Note that memcpy() and memset() must not be used on device memory as those +functions are hand-optimized and will take advantage of unaligned accesses. +"As per ARM"(https://developer.arm.com/documentation/ka004708/latest), unaligned +accesses are not permitted for device memory. + Interrupt Processing ==================== diff --git a/cpu-supplement/arm.rst b/cpu-supplement/arm.rst index ac9e8c6..03a2cd2 100644 --- a/cpu-supplement/arm.rst +++ b/cpu-supplement/arm.rst @@ -132,6 +132,12 @@ Memory Model A flat 32-bit memory model is supported. The board support package must take care of initializing the MMU if necessary. +Note that architecture variants which support unaligned accesses must not use +memcpy() or memset() on device memory as those functions are hand-optimized and +will take advantage of unaligned accesses where available. "As per ARM" +(https://developer.arm.com/documentation/ddi0406/c/Application-Level-Architecture/Application-Level-Memory-Model/Alignment-support/Unaligned-data-access-restrictions-in-ARMv7-and-ARMv6), +unaligned accesses are not permitted for device memory. + Interrupt Processing ==================== -- 2.30.2 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel