[U-Boot] memcpy/memset on arm64 platforms

Philipp Tomsich philipp.tomsich at theobroma-systems.com
Fri Jan 11 16:44:24 UTC 2019


> On 07.01.2019, at 10:13, Lokesh Vutla <lokeshvutla at ti.com> wrote:
> 
> Hi All,
> 	I am trying to enable CONFIG_USE_ARCH_MEMSET/MEMCPY on arm64 platforms and realized that there is no arm64 specific memcpy available in u-boot. So I tried porting arm64 specific memcpy from kernel[1]. Memcpy stopped working after that and observed that if destination address is unaligned then system hangs.
> 
> After doing a bit more research, understood  that unaligned access to device or strongly ordered memories will fail. And the memory system (even normal RAM) behaves like strongly ordered memory when the MMU is disabled[2]. In u-boot MMU is enabled very late after relocation and SPL doesn't enable MMU at all.

ARMv8 does not allow unaligned accesses in privileged (i.e. except in EL0) modes.

> Before I proceed any further wanted to hear from others if anyone have already tried and have any working solution. If not should we update the kernel memcpy to use unaligned destination address and use it in u-boot?
> 
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/lib/memcpy.S
> [2] https://community.arm.com/processors/f/discussions/7557/when-and-where-will-the-ldp-instruction-trigger-an-exception
> 
> Thanks and regards,
> Lokesh
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot



More information about the U-Boot mailing list