diff options
| -rw-r--r-- | arch/mips/lib/csum_partial.S | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/mips/lib/csum_partial.S b/arch/mips/lib/csum_partial.S index 2e4825e48388..9901237563c5 100644 --- a/arch/mips/lib/csum_partial.S +++ b/arch/mips/lib/csum_partial.S | |||
| @@ -56,14 +56,20 @@ | |||
| 56 | #define UNIT(unit) ((unit)*NBYTES) | 56 | #define UNIT(unit) ((unit)*NBYTES) |
| 57 | 57 | ||
| 58 | #define ADDC(sum,reg) \ | 58 | #define ADDC(sum,reg) \ |
| 59 | .set push; \ | ||
| 60 | .set noat; \ | ||
| 59 | ADD sum, reg; \ | 61 | ADD sum, reg; \ |
| 60 | sltu v1, sum, reg; \ | 62 | sltu v1, sum, reg; \ |
| 61 | ADD sum, v1; \ | 63 | ADD sum, v1; \ |
| 64 | .set pop | ||
| 62 | 65 | ||
| 63 | #define ADDC32(sum,reg) \ | 66 | #define ADDC32(sum,reg) \ |
| 67 | .set push; \ | ||
| 68 | .set noat; \ | ||
| 64 | addu sum, reg; \ | 69 | addu sum, reg; \ |
| 65 | sltu v1, sum, reg; \ | 70 | sltu v1, sum, reg; \ |
| 66 | addu sum, v1; \ | 71 | addu sum, v1; \ |
| 72 | .set pop | ||
| 67 | 73 | ||
| 68 | #define CSUM_BIGCHUNK1(src, offset, sum, _t0, _t1, _t2, _t3) \ | 74 | #define CSUM_BIGCHUNK1(src, offset, sum, _t0, _t1, _t2, _t3) \ |
| 69 | LOAD _t0, (offset + UNIT(0))(src); \ | 75 | LOAD _t0, (offset + UNIT(0))(src); \ |
| @@ -710,6 +716,8 @@ LEAF(csum_partial) | |||
| 710 | ADDC(sum, t2) | 716 | ADDC(sum, t2) |
| 711 | .Ldone\@: | 717 | .Ldone\@: |
| 712 | /* fold checksum */ | 718 | /* fold checksum */ |
| 719 | .set push | ||
| 720 | .set noat | ||
| 713 | #ifdef USE_DOUBLE | 721 | #ifdef USE_DOUBLE |
| 714 | dsll32 v1, sum, 0 | 722 | dsll32 v1, sum, 0 |
| 715 | daddu sum, v1 | 723 | daddu sum, v1 |
| @@ -732,6 +740,7 @@ LEAF(csum_partial) | |||
| 732 | or sum, sum, t0 | 740 | or sum, sum, t0 |
| 733 | 1: | 741 | 1: |
| 734 | #endif | 742 | #endif |
| 743 | .set pop | ||
| 735 | .set reorder | 744 | .set reorder |
| 736 | ADDC32(sum, psum) | 745 | ADDC32(sum, psum) |
| 737 | jr ra | 746 | jr ra |
