|
|
@@ -56,14 +56,20 @@
|
|
|
#define UNIT(unit) ((unit)*NBYTES)
|
|
|
|
|
|
#define ADDC(sum,reg) \
|
|
|
+ .set push; \
|
|
|
+ .set noat; \
|
|
|
ADD sum, reg; \
|
|
|
sltu v1, sum, reg; \
|
|
|
ADD sum, v1; \
|
|
|
+ .set pop
|
|
|
|
|
|
#define ADDC32(sum,reg) \
|
|
|
+ .set push; \
|
|
|
+ .set noat; \
|
|
|
addu sum, reg; \
|
|
|
sltu v1, sum, reg; \
|
|
|
addu sum, v1; \
|
|
|
+ .set pop
|
|
|
|
|
|
#define CSUM_BIGCHUNK1(src, offset, sum, _t0, _t1, _t2, _t3) \
|
|
|
LOAD _t0, (offset + UNIT(0))(src); \
|
|
|
@@ -710,6 +716,8 @@ LEAF(csum_partial)
|
|
|
ADDC(sum, t2)
|
|
|
.Ldone\@:
|
|
|
/* fold checksum */
|
|
|
+ .set push
|
|
|
+ .set noat
|
|
|
#ifdef USE_DOUBLE
|
|
|
dsll32 v1, sum, 0
|
|
|
daddu sum, v1
|
|
|
@@ -732,6 +740,7 @@ LEAF(csum_partial)
|
|
|
or sum, sum, t0
|
|
|
1:
|
|
|
#endif
|
|
|
+ .set pop
|
|
|
.set reorder
|
|
|
ADDC32(sum, psum)
|
|
|
jr ra
|