Revision e909ec2f target-sparc/op_helper.c
b/target-sparc/op_helper.c | ||
---|---|---|
170 | 170 |
void helper_ld_asi(int asi, int size, int sign) |
171 | 171 |
{ |
172 | 172 |
uint32_t ret = 0; |
173 |
uint64_t tmp; |
|
173 | 174 |
#ifdef DEBUG_MXCC |
174 | 175 |
uint32_t last_T0 = T0; |
175 | 176 |
#endif |
... | ... | |
244 | 245 |
ret = ldl_code(T0 & ~3); |
245 | 246 |
break; |
246 | 247 |
case 8: |
247 |
ret = ldl_code(T0 & ~3); |
|
248 |
T0 = ldl_code((T0 + 4) & ~3); |
|
248 |
tmp = ldq_code(T0 & ~7); |
|
249 |
ret = tmp >> 32; |
|
250 |
T0 = tmp & 0xffffffff; |
|
249 | 251 |
break; |
250 | 252 |
} |
251 | 253 |
break; |
... | ... | |
262 | 264 |
ret = ldl_user(T0 & ~3); |
263 | 265 |
break; |
264 | 266 |
case 8: |
265 |
ret = ldl_user(T0 & ~3); |
|
266 |
T0 = ldl_user((T0 + 4) & ~3); |
|
267 |
tmp = ldq_user(T0 & ~7); |
|
268 |
ret = tmp >> 32; |
|
269 |
T0 = tmp & 0xffffffff; |
|
267 | 270 |
break; |
268 | 271 |
} |
269 | 272 |
break; |
... | ... | |
280 | 283 |
ret = ldl_kernel(T0 & ~3); |
281 | 284 |
break; |
282 | 285 |
case 8: |
283 |
ret = ldl_kernel(T0 & ~3); |
|
284 |
T0 = ldl_kernel((T0 + 4) & ~3); |
|
286 |
tmp = ldq_kernel(T0 & ~7); |
|
287 |
ret = tmp >> 32; |
|
288 |
T0 = tmp & 0xffffffff; |
|
285 | 289 |
break; |
286 | 290 |
} |
287 | 291 |
break; |
... | ... | |
303 | 307 |
ret = ldl_phys(T0 & ~3); |
304 | 308 |
break; |
305 | 309 |
case 8: |
306 |
ret = ldl_phys(T0 & ~3); |
|
307 |
T0 = ldl_phys((T0 + 4) & ~3); |
|
310 |
tmp = ldq_phys(T0 & ~7); |
|
311 |
ret = tmp >> 32; |
|
312 |
T0 = tmp & 0xffffffff; |
|
308 | 313 |
break; |
309 | 314 |
} |
310 | 315 |
break; |
... | ... | |
325 | 330 |
| ((target_phys_addr_t)(asi & 0xf) << 32)); |
326 | 331 |
break; |
327 | 332 |
case 8: |
328 |
ret = ldl_phys((target_phys_addr_t)(T0 & ~3) |
|
329 |
| ((target_phys_addr_t)(asi & 0xf) << 32)); |
|
330 |
T0 = ldl_phys((target_phys_addr_t)((T0 + 4) & ~3) |
|
333 |
tmp = ldq_phys((target_phys_addr_t)(T0 & ~7) |
|
331 | 334 |
| ((target_phys_addr_t)(asi & 0xf) << 32)); |
335 |
ret = tmp >> 32; |
|
336 |
T0 = tmp & 0xffffffff; |
|
332 | 337 |
break; |
333 | 338 |
} |
334 | 339 |
break; |
... | ... | |
515 | 520 |
stl_user(T0 & ~3, T1); |
516 | 521 |
break; |
517 | 522 |
case 8: |
518 |
stl_user(T0 & ~3, T1); |
|
519 |
stl_user((T0 + 4) & ~3, T2); |
|
523 |
stq_user(T0 & ~7, ((uint64_t)T1 << 32) | T2); |
|
520 | 524 |
break; |
521 | 525 |
} |
522 | 526 |
break; |
... | ... | |
533 | 537 |
stl_kernel(T0 & ~3, T1); |
534 | 538 |
break; |
535 | 539 |
case 8: |
536 |
stl_kernel(T0 & ~3, T1); |
|
537 |
stl_kernel((T0 + 4) & ~3, T2); |
|
540 |
stq_kernel(T0 & ~7, ((uint64_t)T1 << 32) | T2); |
|
538 | 541 |
break; |
539 | 542 |
} |
540 | 543 |
break; |
... | ... | |
591 | 594 |
stl_phys(T0 & ~3, T1); |
592 | 595 |
break; |
593 | 596 |
case 8: |
594 |
stl_phys(T0 & ~3, T1); |
|
595 |
stl_phys((T0 + 4) & ~3, T2); |
|
597 |
stq_phys(T0 & ~7, ((uint64_t)T1 << 32) | T2); |
|
596 | 598 |
break; |
597 | 599 |
} |
598 | 600 |
} |
... | ... | |
615 | 617 |
| ((target_phys_addr_t)(asi & 0xf) << 32), T1); |
616 | 618 |
break; |
617 | 619 |
case 8: |
618 |
stl_phys((target_phys_addr_t)(T0 & ~3) |
|
619 |
| ((target_phys_addr_t)(asi & 0xf) << 32), T1); |
|
620 |
stl_phys((target_phys_addr_t)((T0 + 4) & ~3) |
|
621 |
| ((target_phys_addr_t)(asi & 0xf) << 32), T2); |
|
620 |
stq_phys((target_phys_addr_t)(T0 & ~7) |
|
621 |
| ((target_phys_addr_t)(asi & 0xf) << 32), |
|
622 |
((uint64_t)T1 << 32) | T2); |
|
622 | 623 |
break; |
623 | 624 |
} |
624 | 625 |
} |
Also available in: Unified diff