1;; SPDX-License-Identifier: GPL-2.0-or-later 2;; Copyright 2010 Free Software Foundation, Inc. 3;; Contributed by Bernd Schmidt <bernds@codesourcery.com>. 4;; 5 6#include <linux/linkage.h> 7 8 .text 9 10ENTRY(__c6xabi_strasgi) 11 ;; This is essentially memcpy, with alignment known to be at least 12 ;; 4, and the size a multiple of 4 greater than or equal to 28. 13 ldw .d2t1 *B4++, A0 14|| mvk .s2 16, B1 15 ldw .d2t1 *B4++, A1 16|| mvk .s2 20, B2 17|| sub .d1 A6, 24, A6 18 ldw .d2t1 *B4++, A5 19 ldw .d2t1 *B4++, A7 20|| mv .l2x A6, B7 21 ldw .d2t1 *B4++, A8 22 ldw .d2t1 *B4++, A9 23|| mv .s2x A0, B5 24|| cmpltu .l2 B2, B7, B0 25 26_strasgi_loop: 27 stw .d1t2 B5, *A4++ 28|| [B0] ldw .d2t1 *B4++, A0 29|| mv .s2x A1, B5 30|| mv .l2 B7, B6 31 32 [B0] sub .d2 B6, 24, B7 33|| [B0] b .s2 _strasgi_loop 34|| cmpltu .l2 B1, B6, B0 35 36 [B0] ldw .d2t1 *B4++, A1 37|| stw .d1t2 B5, *A4++ 38|| mv .s2x A5, B5 39|| cmpltu .l2 12, B6, B0 40 41 [B0] ldw .d2t1 *B4++, A5 42|| stw .d1t2 B5, *A4++ 43|| mv .s2x A7, B5 44|| cmpltu .l2 8, B6, B0 45 46 [B0] ldw .d2t1 *B4++, A7 47|| stw .d1t2 B5, *A4++ 48|| mv .s2x A8, B5 49|| cmpltu .l2 4, B6, B0 50 51 [B0] ldw .d2t1 *B4++, A8 52|| stw .d1t2 B5, *A4++ 53|| mv .s2x A9, B5 54|| cmpltu .l2 0, B6, B0 55 56 [B0] ldw .d2t1 *B4++, A9 57|| stw .d1t2 B5, *A4++ 58|| mv .s2x A0, B5 59|| cmpltu .l2 B2, B7, B0 60 61 ;; loop back branch happens here 62 63 cmpltu .l2 B1, B6, B0 64|| ret .s2 b3 65 66 [B0] stw .d1t1 A1, *A4++ 67|| cmpltu .l2 12, B6, B0 68 [B0] stw .d1t1 A5, *A4++ 69|| cmpltu .l2 8, B6, B0 70 [B0] stw .d1t1 A7, *A4++ 71|| cmpltu .l2 4, B6, B0 72 [B0] stw .d1t1 A8, *A4++ 73|| cmpltu .l2 0, B6, B0 74 [B0] stw .d1t1 A9, *A4++ 75 76 ;; return happens here 77ENDPROC(__c6xabi_strasgi) 78