Lines Matching refs:src

8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
115 * to how the src and dst is aligned and how much data needs to be moved.
127 * if( src is on long word boundary ) {
128 * medlong: src/dst aligned on 8 bytes
131 * } else { src/dst not aligned on 8 bytes
132 * if src is word aligned, ld/st words in 32-byte chunks
133 * if src is half word aligned, ld half, ld word, ld half; pack
135 * if src is byte aligned, ld byte,half,word parts; pack into long
137 * move final 0-31 bytes according to src alignment; go to short_exit
145 * if(src is on long word boundary) { src/dst aligned on 8 bytes
147 * src alignments relative to a 64 byte boundary to select the
155 * src alignments to nearest long word relative to 64 byte boundary to
158 * (only use block-init-store when src/dst on 8 byte boundaries.)
638 * Special case for handling when src and dest are both long word aligned
653 add %o0, 32, %o0 ! increase src ptr by 32
665 add %o0, 8, %o0 ! increase src ptr by 8
689 add %o0, 4, %o0 ! increase src ptr by 4
718 add %o0, 4, %o0 ! advance src by 4
741 .bc_al_d4: ! dest is word aligned; src is unknown
742 ldub [%o0], %o4 ! move a word (src align unknown)
753 add %o0, 4, %o0 ! adjust src by 4
756 andcc %o0, 7, %o3 ! check for src long word alignment
759 ! dst is 8-byte aligned, src is not
779 ldub [%o0], %o4 ! move a half-word (src align unknown)
792 * Handle all cases where src and dest are aligned on word
817 add %o0, 32, %o0 ! increase src ptr by 32
831 add %o0, 8, %o0 ! increase src ptr by 8
843 add %o0, 4, %o0 ! increase src ptr by 4
885 add %o0, 32, %o0 ! increase src ptr by 32
911 add %o0, 8, %o0 ! increase src ptr by 8
978 add %o0, 32, %o0 ! increase src ptr by 32
1011 add %o0, 8, %o0 ! increase src ptr by 16
1079 add %o0, 32, %o0 ! increase src ptr by 32
1113 add %o0, 8, %o0 ! increase src ptr by 8
1180 andcc %i0, 7, %o3 ! is src long word aligned
1196 add %i0, 8, %i0 ! increment src ptr
1199 ! Dest is aligned on 16 bytes, src 8 byte aligned
1209 add %i0, 16, %i0 ! increment src ptr
1214 ! Dest is aligned on 64 bytes, src 8 byte aligned
1536 add %i0, 32, %i0 ! increase src ptr by 32
1548 add %i0, 8, %i0 ! increase src ptr by 8
1560 add %i0, 4, %i0 ! increase src ptr by 4
1578 ldub [%i0], %o4 ! move a half-word (src align unknown)
1589 ldub [%i0], %o4 ! move a word (src align unknown)
1600 add %i0, 4, %i0 ! adjust src by 4
1606 ! Dst is on 8 byte boundary; src is not;
1625 add %i0, 8, %i0 ! increase src ptr by 8
1673 ! Destination is now block (64 byte aligned), src is not 8 byte aligned
1680 andn %i0, 0x3f, %o4 ! %o4 has block aligned src address
1943 sub %i3, 8, %i3 ! insure we don't load past end of src
1944 andn %i0, 0x7, %o4 ! %o4 has long word aligned src address
2001 add %i0, 4, %i0 ! advance src by 4
2092 * and (dest & ~63) - (src & ~63) can be 3 blocks even if
2093 * src = dest + (64 * 3) + 63.
2103 ! Swap src/dst since the code below is memcpy code
2119 ! Is dst & src 8B aligned
2125 ! Is dst & src 4B aligned
2130 ! Is dst & src 2B aligned
2146 ! dst & src 4B aligned
2158 ! dst & src 2B aligned
2170 ! dst & src 8B aligned
2186 andcc %i1, 0xf, %o2 ! is src quadword aligned
2187 bz,pn %xcc, .blkcpy ! src offset in %o2
2198 sub %i1, %o2, %i1 ! align the src at 16 bytes.
2227 add %i1, %o2, %i1 ! increment the source by src offset
2228 ! the src offset was stored in %o2
2231 sub %i1, %o2, %i1 ! align the src at 16 bytes.
2270 add %i1, %o2, %i1 ! increment the source by src offset
2271 ! the src offset was stored in %o2
2274 sub %i1, %o2, %i1 ! align the src at 16 bytes.
2316 add %i1, %o2, %i1 ! increment the source by src offset
2317 ! the src offset was stored in %o2
2457 ! i0 - src address, i1 - dest address, i2 - count
2489 srl %i3, %l0, %i5 ! upper src bits into lower dst bits
2502 cmp %l2, %l0 ! cmp # reqd to fill dst w old src left
2554 srl %i3, %l0, %i4 ! upper src bits into lower dst bits
2568 srl %i3, %l0, %i4 ! upper src byte into lower dst byte
2577 sub %i0, %i1, %i0 ! i0 gets the difference of src and dst
2607 sub %i0, %i1, %i0 ! i0 gets the difference of src and dst
2635 sub %i0, %i1, %i0 ! i0 gets the difference of src and dst
2642 sub %i0, %i1, %i0 ! i0 gets difference of src and dst
2738 ldub [%o0 + %o2], %o3 ! get byte at end of src
2758 hwblkpagecopy(const void *src, void *dst)
3021 ! 8 cases for src alignment; load parts, store long words
3027 * Special case for handling when src and dest are both long word aligned
3042 add %o0, 32, %o0 ! increase src ptr by 32
3054 add %o0, 8, %o0 ! increase src ptr by 8
3075 add %o0, 4, %o0 ! increase src ptr by 4
3102 add %o0, 4, %o0 ! advance src by 4
3124 .co_al_d4: ! dest is word aligned; src is unknown
3125 ldub [%o0], %o4 ! move a word (src align unknown)
3136 add %o0, 4, %o0 ! adjust src by 4
3139 andcc %o0, 7, %o3 ! check for src long word alignment
3142 ! dst is 8-byte aligned, src is not
3162 ldub [%o0], %o4 ! move a half-word (src align unknown)
3175 * Handle all cases where src and dest are aligned on word
3200 add %o0, 32, %o0 ! increase src ptr by 32
3214 add %o0, 8, %o0 ! increase src ptr by 8
3226 add %o0, 4, %o0 ! increase src ptr by 4
3270 add %o0, 32, %o0 ! increase src ptr by 32
3296 add %o0, 8, %o0 ! increase src ptr by 8
3365 add %o0, 32, %o0 ! increase src ptr by 32
3398 add %o0, 8, %o0 ! increase src ptr by 16
3468 add %o0, 32, %o0 ! increase src ptr by 32
3502 add %o0, 8, %o0 ! increase src ptr by 8
3549 andcc %i0, 7, %o3 ! is src long word aligned
3564 add %i0, 8, %i0 ! increment src ptr
3567 ! Dest is aligned on 16 bytes, src 8 byte aligned
3576 add %i0, 16, %i0 ! increment src ptr
3583 ! Dest is aligned on 64 bytes, src 8 byte aligned
3904 add %i0, 32, %i0 ! increase src ptr by 32
3916 add %i0, 8, %i0 ! increase src ptr by 8
3928 add %i0, 4, %i0 ! increase src ptr by 4
3946 ldub [%i0], %o4 ! move a half-word (src align unknown)
3958 ldub [%i0], %o4 ! move a word (src align unknown)
3969 add %i0, 4, %i0 ! adjust src by 4
3975 ! Dst is on 8 byte boundary; src is not;
3994 add %i0, 8, %i0 ! increase src ptr by 8
4042 ! Destination is now block (64 byte aligned), src is not 8 byte aligned
4049 andn %i0, 0x3f, %o4 ! %o4 has block aligned src address
4312 sub %i3, 8, %i3 ! insure we don't load past end of src
4313 andn %i0, 0x7, %o4 ! %o4 has long word aligned src address
4370 add %i0, 4, %i0 ! advance src by 4
4726 ! Swap src/dst since the code below is memcpy code
4742 ! Is dst & src 8B aligned
4748 ! Is dst & src 4B aligned
4753 ! Is dst & src 2B aligned
4769 ! dst & src 4B aligned
4781 ! dst & src 2B aligned
4793 ! dst & src 8B aligned
4809 andcc %i1, 0xf, %o2 ! is src quadword aligned
4810 bz,pn %xcc, .co_blkcpy ! src offset in %o2 (last 4-bits)
4822 sub %i1, %o2, %i1 ! align the src at 16 bytes.
4857 add %i1, %o2, %i1 ! increment the source by src offset
4858 ! the src offset was stored in %o2
4862 sub %i1, %o2, %i1 ! align the src at 16 bytes.
4910 add %i1, %o2, %i1 ! increment the source by src offset
4911 ! the src offset was stored in %o2
4915 sub %i1, %o2, %i1 ! align the src at 16 bytes.
4966 add %i1, %o2, %i1 ! increment the source by src offset
4967 ! the src offset was stored in %o2
5219 * Special case for handling when src and dest are both long word aligned
5234 add %o0, 32, %o0 ! increase src ptr by 32
5246 add %o0, 8, %o0 ! increase src ptr by 8
5267 add %o0, 4, %o0 ! increase src ptr by 4
5294 add %o0, 4, %o0 ! advance src by 4
5316 .ci_al_d4: ! dest is word aligned; src is unknown
5317 lduba [%o0]%asi, %o4 ! move a word (src align unknown)
5328 add %o0, 4, %o0 ! adjust src by 4
5331 andcc %o0, 7, %o3 ! check for src long word alignment
5334 ! dst is 8-byte aligned, src is not
5354 lduba [%o0]%asi, %o4 ! move a half-word (src align unknown)
5367 * Handle all cases where src and dest are aligned on word
5392 add %o0, 32, %o0 ! increase src ptr by 32
5406 add %o0, 8, %o0 ! increase src ptr by 8
5418 add %o0, 4, %o0 ! increase src ptr by 4
5462 add %o0, 32, %o0 ! increase src ptr by 32
5488 add %o0, 8, %o0 ! increase src ptr by 8
5557 add %o0, 32, %o0 ! increase src ptr by 32
5590 add %o0, 8, %o0 ! increase src ptr by 16
5660 add %o0, 32, %o0 ! increase src ptr by 32
5694 add %o0, 8, %o0 ! increase src ptr by 8
5744 andcc %i0, 7, %o3 ! is src long word aligned
5759 add %i0, 8, %i0 ! increment src ptr
5762 ! Dest is aligned on 16 bytes, src 8 byte aligned
5771 add %i0, 16, %i0 ! increment src ptr
5777 ! Dest is aligned on 64 bytes, src 8 byte aligned
6098 add %i0, 32, %i0 ! increase src ptr by 32
6110 add %i0, 8, %i0 ! increase src ptr by 8
6122 add %i0, 4, %i0 ! increase src ptr by 4
6140 lduba [%i0]%asi, %o4 ! move a half-word (src align unknown)
6152 lduba [%i0]%asi, %o4 ! move a word (src align unknown)
6163 add %i0, 4, %i0 ! adjust src by 4
6169 ! Dst is on 8 byte boundary; src is not;
6188 add %i0, 8, %i0 ! increase src ptr by 8
6236 ! Destination is now block (64 byte aligned), src is not 8 byte aligned
6243 andn %i0, 0x3f, %o4 ! %o4 has block aligned src address
6506 sub %i3, 8, %i3 ! insure we don't load past end of src
6507 andn %i0, 0x7, %o4 ! %o4 has long word aligned src address
6564 add %i0, 4, %i0 ! advance src by 4
6905 ! Swap src/dst since the code below is memcpy code
6921 ! Is dst & src 8B aligned
6927 ! Is dst & src 4B aligned
6932 ! Is dst & src 2B aligned
6948 ! dst & src 4B aligned
6960 ! dst & src 2B aligned
6972 ! dst & src 8B aligned
6987 andcc %i1, 0xf, %o2 ! is src quadword aligned
6988 bz,pn %xcc, .ci_blkcpy ! src offset in %o2 (last 4-bits)
7000 sub %i1, %o2, %i1 ! align the src at 16 bytes.
7037 add %i1, %o2, %i1 ! increment the source by src offset
7038 ! the src offset was stored in %o2
7042 sub %i1, %o2, %i1 ! align the src at 16 bytes.
7093 add %i1, %o2, %i1 ! increment the source by src offset
7094 ! the src offset was stored in %o2
7098 sub %i1, %o2, %i1 ! align the src at 16 bytes.
7150 add %i1, %o2, %i1 ! increment the source by src offset
7151 ! the src offset was stored in %o2
7551 /* Copy 32 bytes of data from src to dst using physical addresses */
7554 hw_pa_bcopy32(uint64_t src, uint64_t dst)
7559 * Copy 32 bytes of data from src (%o0) to dst (%o1)