(empty log message)
@@ -231,11 +231,9 @@ | ||
231 | 231 | * Find |
232 | 232 | * adrp Xd, #imm21 |
233 | 233 | * add Xd, Xn, #uimm12 |
234 | - * add Xd, Xn, #uimm12 | |
235 | 234 | * sequence. |
236 | - * But don't mandate the last one in case it was optimized. | |
237 | 235 | */ |
238 | - if ((*ip & 0x98000000) != 0x90000000 || | |
236 | + if ((*ip & 0x9F000000) != 0x90000000 || | |
239 | 237 | (*(ip + 1) & 0xFFC00000) != 0x91000000) |
240 | 238 | continue; |
241 | 239 | tmp = ((unsigned long) ip) & ~0xFFFUL; |
@@ -246,12 +244,20 @@ | ||
246 | 244 | tmp += offset; |
247 | 245 | offset = (*(ip + 1) >> 10) & 0xFFF; |
248 | 246 | tmp += offset; |
249 | - if ((*(ip + 2) & 0xFFC00000) == 0x91000000) { | |
250 | - offset = (*(ip + 2) >> 10) & 0xFFF; | |
247 | + /* | |
248 | + * Find | |
249 | + * ldr Xt, Xn, #uimm12 | |
250 | + * sequence. | |
251 | + */ | |
252 | + for (ip += 2; i < 32 - 2; ip++, i++) { | |
253 | + if ((*ip & 0xFFC00000) != 0xF9400000) | |
254 | + continue; | |
255 | + offset = ((*ip >> 10) & 0xFFF) << 3; | |
251 | 256 | tmp += offset; |
257 | + ip4ret = (unsigned int *) tmp; | |
258 | + return &ip4ret; | |
252 | 259 | } |
253 | - ip4ret = (unsigned int *) tmp; | |
254 | - return &ip4ret; | |
260 | + break; | |
255 | 261 | } |
256 | 262 | return NULL; |
257 | 263 | } |
@@ -231,11 +231,9 @@ | ||
231 | 231 | * Find |
232 | 232 | * adrp Xd, #imm21 |
233 | 233 | * add Xd, Xn, #uimm12 |
234 | - * add Xd, Xn, #uimm12 | |
235 | 234 | * sequence. |
236 | - * But don't mandate the last one in case it was optimized. | |
237 | 235 | */ |
238 | - if ((*ip & 0x98000000) != 0x90000000 || | |
236 | + if ((*ip & 0x9F000000) != 0x90000000 || | |
239 | 237 | (*(ip + 1) & 0xFFC00000) != 0x91000000) |
240 | 238 | continue; |
241 | 239 | tmp = ((unsigned long) ip) & ~0xFFFUL; |
@@ -246,12 +244,20 @@ | ||
246 | 244 | tmp += offset; |
247 | 245 | offset = (*(ip + 1) >> 10) & 0xFFF; |
248 | 246 | tmp += offset; |
249 | - if ((*(ip + 2) & 0xFFC00000) == 0x91000000) { | |
250 | - offset = (*(ip + 2) >> 10) & 0xFFF; | |
247 | + /* | |
248 | + * Find | |
249 | + * ldr Xt, Xn, #uimm12 | |
250 | + * sequence. | |
251 | + */ | |
252 | + for (ip += 2; i < 32 - 2; ip++, i++) { | |
253 | + if ((*ip & 0xFFC00000) != 0xF9400000) | |
254 | + continue; | |
255 | + offset = ((*ip >> 10) & 0xFFF) << 3; | |
251 | 256 | tmp += offset; |
257 | + ip4ret = (unsigned int *) tmp; | |
258 | + return &ip4ret; | |
252 | 259 | } |
253 | - ip4ret = (unsigned int *) tmp; | |
254 | - return &ip4ret; | |
260 | + break; | |
255 | 261 | } |
256 | 262 | return NULL; |
257 | 263 | } |
@@ -231,11 +231,9 @@ | ||
231 | 231 | * Find |
232 | 232 | * adrp Xd, #imm21 |
233 | 233 | * add Xd, Xn, #uimm12 |
234 | - * add Xd, Xn, #uimm12 | |
235 | 234 | * sequence. |
236 | - * But don't mandate the last one in case it was optimized. | |
237 | 235 | */ |
238 | - if ((*ip & 0x98000000) != 0x90000000 || | |
236 | + if ((*ip & 0x9F000000) != 0x90000000 || | |
239 | 237 | (*(ip + 1) & 0xFFC00000) != 0x91000000) |
240 | 238 | continue; |
241 | 239 | tmp = ((unsigned long) ip) & ~0xFFFUL; |
@@ -246,12 +244,20 @@ | ||
246 | 244 | tmp += offset; |
247 | 245 | offset = (*(ip + 1) >> 10) & 0xFFF; |
248 | 246 | tmp += offset; |
249 | - if ((*(ip + 2) & 0xFFC00000) == 0x91000000) { | |
250 | - offset = (*(ip + 2) >> 10) & 0xFFF; | |
247 | + /* | |
248 | + * Find | |
249 | + * ldr Xt, Xn, #uimm12 | |
250 | + * sequence. | |
251 | + */ | |
252 | + for (ip += 2; i < 32 - 2; ip++, i++) { | |
253 | + if ((*ip & 0xFFC00000) != 0xF9400000) | |
254 | + continue; | |
255 | + offset = ((*ip >> 10) & 0xFFF) << 3; | |
251 | 256 | tmp += offset; |
257 | + ip4ret = (unsigned int *) tmp; | |
258 | + return &ip4ret; | |
252 | 259 | } |
253 | - ip4ret = (unsigned int *) tmp; | |
254 | - return &ip4ret; | |
260 | + break; | |
255 | 261 | } |
256 | 262 | return NULL; |
257 | 263 | } |