Lines Matching +full:left +full:- +full:aligned
1 /* SPDX-License-Identifier: GPL-2.0 */
3 * arch/alpha/lib/ev6-clear_user.S
4 * 21264 version contributed by Rick Gorton <rick.gorton@alpha-processor.com>
8 * We have to make sure that $0 is always up-to-date and contains the
9 * right "bytes left to zero" value (and that it is updated only _after_
16 * ftp.digital.com/pub/Digital/info/semiconductor/literature/dsc-library.html
18 * E - either cluster
19 * U - upper subcluster; U0 - subcluster U0; U1 - subcluster U1
20 * L - lower subcluster; L0 - subcluster L0; L1 - subcluster L1
25 * it's going to be worth the effort to hand-unroll a big loop, and use wh64.
37 .long 99b - .; \
38 lda $31, $exception-99b($31); \
58 # Note - we never actually use $2, so this is a moot computation
64 * Head is not aligned. Write (8 - $4) bytes to head of destination
68 beq $1, $onebyte # .. .. U .. : sub-word store?
72 EX( stq_u $5, -8($16) ) # .. .. .. L :
74 addq $0, $4, $0 # .. E .. .. : bytes left -= 8 - misalignment
83 * $16 is known to be aligned 0mod8
94 * Figure out how many quads we need to clear before we are 0mod64 aligned
101 beq $3, $bigalign # U .. .. .. : U L U L : Aligned 0mod64
116 * $0 is the number of bytes left
117 * $1 is the number of quads left
118 * $16 is aligned 0mod64
122 * would be silly, because there will be cross-cluster dependencies
129 * through the loop, and if there are less than two trips left, the target
140 subq $1, 16, $4 # .. .. E .. : Forward calculation - repeat the loop?
152 subq $0, 168, $5 # E : U L L U : two trips through the loop left?
153 /* 168 = 192 - 24, since we've already completed some stores */
171 # zero to 16 quadwords left to store, plus any trailing bytes
172 # $1 is the number of quadwords left to go.
190 # We have an unknown number of bytes left to go.
197 # $0 contains the number of bytes left to copy (0..31)