public inbox for newlib-cvs@sourceware.org help / color / mirror / Atom feed
From: Richard Earnshaw <rearnsha@sourceware.org> To: newlib-cvs@sourceware.org Subject: [newlib-cygwin] newlib: libc: memcpy M-profile PACBTI-enablement Date: Tue, 10 Jan 2023 16:49:40 +0000 (GMT) [thread overview] Message-ID: <20230110164940.14D0D3858426@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=60a50c2846f9ad259631598604a7410bee502c70 commit 60a50c2846f9ad259631598604a7410bee502c70 Author: Victor L. Do Nascimento <victor.donascimento@arm.com> Date: Wed Dec 21 11:25:36 2022 +0000 newlib: libc: memcpy M-profile PACBTI-enablement Add function prologue/epilogue to conditionally add BTI landing pads and/or PAC code generation & authentication instructions depending on compilation flags. Diff: --- newlib/libc/machine/arm/memcpy-armv7m.S | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/newlib/libc/machine/arm/memcpy-armv7m.S b/newlib/libc/machine/arm/memcpy-armv7m.S index c8bff36f6..ec1ad6485 100644 --- a/newlib/libc/machine/arm/memcpy-armv7m.S +++ b/newlib/libc/machine/arm/memcpy-armv7m.S @@ -46,6 +46,8 @@ __OPT_BIG_BLOCK_SIZE: Size of big block in words. Default to 64. __OPT_MID_BLOCK_SIZE: Size of big block in words. Default to 16. */ +#include "arm_asm.h" + #ifndef __OPT_BIG_BLOCK_SIZE #define __OPT_BIG_BLOCK_SIZE (4 * 16) #endif @@ -85,6 +87,8 @@ .global memcpy .thumb .thumb_func + .fnstart + .cfi_startproc .type memcpy, %function memcpy: @ r0: dst @@ -93,10 +97,11 @@ memcpy: #ifdef __ARM_FEATURE_UNALIGNED /* In case of UNALIGNED access supported, ip is not used in function body. */ + prologue push_ip=HAVE_PAC_LEAF mov ip, r0 #else - push {r0} -#endif + prologue 0 push_ip=HAVE_PAC_LEAF +#endif /* __ARM_FEATURE_UNALIGNED */ orr r3, r1, r0 ands r3, r3, #3 bne .Lmisaligned_copy @@ -178,15 +183,17 @@ memcpy: #endif /* __ARM_FEATURE_UNALIGNED */ .Ldone: + .cfi_remember_state #ifdef __ARM_FEATURE_UNALIGNED mov r0, ip + epilogue push_ip=HAVE_PAC_LEAF #else - pop {r0} -#endif - bx lr + epilogue 0 push_ip=HAVE_PAC_LEAF +#endif /* __ARM_FEATURE_UNALIGNED */ .align 2 .Lmisaligned_copy: + .cfi_restore_state #ifdef __ARM_FEATURE_UNALIGNED /* Define label DST_ALIGNED to BIG_BLOCK. It will go to aligned copy once destination is adjusted to aligned. */ @@ -247,6 +254,9 @@ memcpy: /* dst is aligned, but src isn't. Misaligned copy. */ push {r4, r5} + .cfi_adjust_cfa_offset 8 + .cfi_rel_offset 4, 0 + .cfi_rel_offset 5, 4 subs r2, #4 /* Backward r1 by misaligned bytes, to make r1 aligned. @@ -299,6 +309,9 @@ memcpy: adds r2, #4 subs r1, ip pop {r4, r5} + .cfi_restore 4 + .cfi_restore 5 + .cfi_adjust_cfa_offset -8 #endif /* __ARM_FEATURE_UNALIGNED */ @@ -321,9 +334,11 @@ memcpy: #ifdef __ARM_FEATURE_UNALIGNED mov r0, ip + epilogue push_ip=HAVE_PAC_LEAF #else - pop {r0} -#endif - bx lr - + epilogue 0 push_ip=HAVE_PAC_LEAF +#endif /* __ARM_FEATURE_UNALIGNED */ + .cfi_endproc + .cantunwind + .fnend .size memcpy, .-memcpy
reply other threads:[~2023-01-10 16:49 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230110164940.14D0D3858426@sourceware.org \ --to=rearnsha@sourceware.org \ --cc=newlib-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).