Page MenuHomeFreeBSD

D23969.id69219.diff
No OneTemporary

D23969.id69219.diff

Index: lib/libc/powerpc64/string/memcpy.S
===================================================================
--- lib/libc/powerpc64/string/memcpy.S
+++ lib/libc/powerpc64/string/memcpy.S
@@ -39,6 +39,11 @@
#define BLOCK_BYTES (1 << BLOCK_BITS)
#define BLOCK_MASK (BLOCK_BYTES - 1)
+/* Minimum 8 byte alignment, to avoid cache-inhibited alignment faults. */
+#ifndef ALIGN_MASK
+#define ALIGN_MASK 0x7
+#endif
+
/*
* r3: dst
* r4: src
@@ -48,6 +53,12 @@
cmpdi %r5, 0 /* len == 0? nothing to do */
beqlr-
+ /* If src and dst are relatively misaligned, do byte copies. */
+ andi. %r8, %r3, ALIGN_MASK
+ andi. %r7, %r4, ALIGN_MASK
+ cmpd %r8, %r7
+ mr %r7, %r5
+ bne+ .Lcopy_remaining_fix_index_byte
mr %r8, %r3 /* save dst */
/* align src */
Index: lib/libc/powerpc64/string/memcpy_vsx.S
===================================================================
--- lib/libc/powerpc64/string/memcpy_vsx.S
+++ lib/libc/powerpc64/string/memcpy_vsx.S
@@ -30,6 +30,7 @@
#define FN_NAME __memcpy_vsx
#define BLOCK_BITS 6
+#define ALIGN_MASK 0xf
/*
* r5: bytes to copy (multiple of BLOCK_BYTES)

File Metadata

Mime Type
text/plain
Expires
Fri, Jul 24, 5:56 PM (22 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35449745
Default Alt Text
D23969.id69219.diff (1 KB)

Event Timeline