|
9 | 9 | // except according to those terms.
|
10 | 10 |
|
11 | 11 | use std;
|
12 |
| -use std::mem; |
13 | 12 | use std::num::{One, Zero, CheckedAdd};
|
14 | 13 | use std::slice::bytes::{MutableByteVector, copy_memory};
|
15 | 14 |
|
@@ -126,62 +125,56 @@ pub fn read_u32_be(input: &[u8]) -> u32 {
|
126 | 125 | #[cfg(target_arch = "x86")]
|
127 | 126 | #[cfg(target_arch = "x86_64")]
|
128 | 127 | #[inline(never)]
|
129 |
| -#[allow(unused_variable)] |
130 | 128 | #[allow(dead_assignment)]
|
131 | 129 | unsafe fn fixed_time_eq_asm(mut lhsp: *u8, mut rhsp: *u8, mut count: uint) -> bool {
|
132 | 130 | let mut result: u8 = 0;
|
133 |
| - let mut tmp: u8 = mem::uninitialized(); |
134 | 131 |
|
135 | 132 | asm!(
|
136 | 133 | "
|
137 | 134 | fixed_time_eq_loop:
|
138 | 135 |
|
139 |
| - mov ($1), $4 |
140 |
| - xor ($2), $4 |
141 |
| - or $4, $0 |
| 136 | + mov ($1), %cl |
| 137 | + xor ($2), %cl |
| 138 | + or %cl, $0 |
142 | 139 |
|
143 | 140 | inc $1
|
144 | 141 | inc $2
|
145 | 142 | dec $3
|
146 | 143 | jnz fixed_time_eq_loop
|
147 | 144 | "
|
148 |
| - : "=&r" (result), "=&r" (lhsp), "=&r" (rhsp), "=&r" (count), "=&r" (tmp) // output |
149 |
| - : "0" (result), "1" (lhsp), "2" (rhsp), "3" (count) // input |
150 |
| - : "cc" // clobbers |
151 |
| - : // flags |
| 145 | + : "+r" (result), "+r" (lhsp), "+r" (rhsp), "+r" (count) // all input and output |
| 146 | + : // input |
| 147 | + : "cl", "cc" // clobbers |
| 148 | + : "volatile" // flags |
152 | 149 | );
|
153 | 150 |
|
154 | 151 | return result == 0;
|
155 | 152 | }
|
156 | 153 |
|
157 | 154 | #[cfg(target_arch = "arm")]
|
158 | 155 | #[inline(never)]
|
159 |
| -#[allow(unused_variable)] |
160 | 156 | #[allow(dead_assignment)]
|
161 | 157 | unsafe fn fixed_time_eq_asm(mut lhsp: *u8, mut rhsp: *u8, mut count: uint) -> bool {
|
162 | 158 | let mut result: u8 = 0;
|
163 |
| - let mut tmp1: u8 = mem::uninitialized(); |
164 |
| - let mut tmp2: u8 = mem::uninitialized(); |
165 | 159 |
|
166 | 160 | asm!(
|
167 | 161 | "
|
168 | 162 | fixed_time_eq_loop:
|
169 | 163 |
|
170 |
| - ldrb $4, [$1] |
171 |
| - ldrb $5, [$2] |
172 |
| - eor $4, $4, $5 |
173 |
| - orr $0, $0, $4 |
| 164 | + ldrb r4, [$1] |
| 165 | + ldrb r5, [$2] |
| 166 | + eor r4, r4, r5 |
| 167 | + orr $0, $0, r4 |
174 | 168 |
|
175 | 169 | add $1, $1, #1
|
176 | 170 | add $2, $2, #1
|
177 | 171 | subs $3, $3, #1
|
178 | 172 | bne fixed_time_eq_loop
|
179 | 173 | "
|
180 |
| - // output |
181 |
| - : "=&r" (result), "=&r" (lhsp), "=&r" (rhsp), "=&r" (count), "=&r" (tmp1), "=&r" (tmp2) |
182 |
| - : "0" (result), "1" (lhsp), "2" (rhsp), "3" (count) // input |
183 |
| - : "cc" // clobbers |
184 |
| - : // flags |
| 174 | + : "+r" (result), "+r" (lhsp), "+r" (rhsp), "+r" (count) // all input and output |
| 175 | + : // input |
| 176 | + : "r4", "r5", "cc" // clobbers |
| 177 | + : "volatile" // flags |
185 | 178 | );
|
186 | 179 |
|
187 | 180 | return result == 0;
|
|
0 commit comments