Lines Matching +full:address +full:- +full:aligned
4 #include <asm/asm-extable.h>
7 #include <asm/alternative-macros.h>
29 * Save the terminal address which will be used to compute the number
36 * a0 - start of uncopied dst
37 * a1 - start of uncopied src
38 * a2 - size
39 * t0 - end of uncopied dst
47 li a3, 9*SZREG-1 /* size must >= (word_copy stride + SZREG-1) */
51 * Copy first bytes until dst is aligned to word boundary.
52 * a0 - start of dst
53 * t1 - start of aligned dst
55 addi t1, a0, SZREG-1
56 andi t1, t1, ~(SZREG-1)
57 /* dst is already aligned, skip */
60 /* a5 - one byte for copying data */
65 bltu a0, t1, 1b /* t1 - start of aligned dst */
69 * Now dst is aligned.
70 * Use shift-copy if src is misaligned.
71 * Use word-copy if both src and dst are aligned because
72 * can not use shift-copy which do not require shifting
74 /* a1 - start of src */
75 andi a3, a1, SZREG-1
80 * Both src and dst are aligned, unrolled word copy
82 * a0 - start of aligned dst
83 * a1 - start of aligned src
84 * t0 - end of aligned dst
86 addi t0, t0, -(8*SZREG) /* not to over run */
115 * For misaligned copy we still perform aligned word copy, but
120 * a0 - start of aligned dst
121 * a1 - start of src
122 * a3 - a1 & mask:(SZREG-1)
123 * t0 - end of uncopied dst
124 * t1 - end of aligned dst
126 /* calculating aligned word boundary for dst */
127 andi t1, t0, ~(SZREG-1)
128 /* Converting unaligned src to aligned src */
129 andi a1, a1, ~(SZREG-1)
133 * t3 - prev shift
134 * t4 - current shift
146 * a0 - start of aligned dst
147 * a1 - start of aligned src
148 * t1 - end of aligned dst
168 * a0 - start of remaining dst
169 * a1 - start of remaining src
170 * t0 - end of remaining dst
178 bltu a0, t0, 4b /* t0 - end of dst */
206 addi t0, a0, SZREG-1
207 andi t1, a3, ~(SZREG-1)
208 andi t0, t0, ~(SZREG-1)
210 * a3: terminal address of target region
211 * t0: lowest doubleword-aligned address in target region
212 * t1: highest doubleword-aligned address in target region