[U-Boot] memcpy/memset on arm64 platforms

Jagan Teki jagan at amarulasolutions.com
Fri Jan 11 16:38:47 UTC 2019


On Fri, Jan 11, 2019 at 9:43 PM Tom Rini <trini at konsulko.com> wrote:
>
> On Mon, Jan 07, 2019 at 02:43:05PM +0530, Lokesh Vutla 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.
> >
> > 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
>
> I suspect we should, yes.  Adding in some custodians of other arm64
> platforms for comment.

Right now we still use it from lib/string.c we don't enable
ARCH_MEMCPY for arm64, indeed there is no code for doing that, if I'm
not wrong.


More information about the U-Boot mailing list