Revision 8d5f07fa target-sparc/op.c
b/target-sparc/op.c | ||
---|---|---|
474 | 474 |
T0 = ((int32_t) T0) >> T1; |
475 | 475 |
} |
476 | 476 |
|
477 |
#if 0 |
|
478 |
void OPPROTO op_st(void) |
|
479 |
{ |
|
480 |
stl((void *) T0, T1); |
|
481 |
} |
|
482 |
|
|
483 |
void OPPROTO op_stb(void) |
|
484 |
{ |
|
485 |
stb((void *) T0, T1); |
|
486 |
} |
|
487 |
|
|
488 |
void OPPROTO op_sth(void) |
|
489 |
{ |
|
490 |
stw((void *) T0, T1); |
|
491 |
} |
|
492 |
|
|
493 |
void OPPROTO op_std(void) |
|
494 |
{ |
|
495 |
stl((void *) T0, T1); |
|
496 |
stl((void *) (T0 + 4), T2); |
|
497 |
} |
|
498 |
|
|
499 |
void OPPROTO op_ld(void) |
|
500 |
{ |
|
501 |
T1 = ldl((void *) T0); |
|
502 |
} |
|
503 |
|
|
504 |
void OPPROTO op_ldub(void) |
|
505 |
{ |
|
506 |
T1 = ldub((void *) T0); |
|
507 |
} |
|
508 |
|
|
509 |
void OPPROTO op_lduh(void) |
|
510 |
{ |
|
511 |
T1 = lduw((void *) T0); |
|
512 |
} |
|
513 |
|
|
514 |
void OPPROTO op_ldsb(void) |
|
515 |
{ |
|
516 |
T1 = ldsb((void *) T0); |
|
517 |
} |
|
518 |
|
|
519 |
void OPPROTO op_ldsh(void) |
|
520 |
{ |
|
521 |
T1 = ldsw((void *) T0); |
|
522 |
} |
|
523 |
|
|
524 |
void OPPROTO op_ldstub(void) |
|
525 |
{ |
|
526 |
T1 = ldub((void *) T0); |
|
527 |
stb((void *) T0, 0xff); /* XXX: Should be Atomically */ |
|
528 |
} |
|
529 |
|
|
530 |
void OPPROTO op_swap(void) |
|
531 |
{ |
|
532 |
unsigned int tmp = ldl((void *) T0); |
|
533 |
stl((void *) T0, T1); /* XXX: Should be Atomically */ |
|
534 |
T1 = tmp; |
|
535 |
} |
|
536 |
|
|
537 |
void OPPROTO op_ldd(void) |
|
538 |
{ |
|
539 |
T1 = ldl((void *) T0); |
|
540 |
T0 = ldl((void *) (T0 + 4)); |
|
541 |
} |
|
542 |
|
|
543 |
void OPPROTO op_stf(void) |
|
544 |
{ |
|
545 |
stfl((void *) T0, FT0); |
|
546 |
} |
|
547 |
|
|
548 |
void OPPROTO op_stdf(void) |
|
549 |
{ |
|
550 |
stfq((void *) T0, DT0); |
|
551 |
} |
|
552 |
|
|
553 |
void OPPROTO op_ldf(void) |
|
554 |
{ |
|
555 |
FT0 = ldfl((void *) T0); |
|
556 |
} |
|
557 |
|
|
558 |
void OPPROTO op_lddf(void) |
|
559 |
{ |
|
560 |
DT0 = ldfq((void *) T0); |
|
561 |
} |
|
562 |
#else |
|
563 | 477 |
/* Load and store */ |
564 | 478 |
#define MEMSUFFIX _raw |
565 | 479 |
#include "op_mem.h" |
... | ... | |
570 | 484 |
#define MEMSUFFIX _kernel |
571 | 485 |
#include "op_mem.h" |
572 | 486 |
#endif |
573 |
#endif |
|
574 | 487 |
|
575 | 488 |
void OPPROTO op_ldfsr(void) |
576 | 489 |
{ |
577 | 490 |
env->fsr = *((uint32_t *) &FT0); |
578 |
FORCE_RET();
|
|
491 |
helper_ldfsr();
|
|
579 | 492 |
} |
580 | 493 |
|
581 | 494 |
void OPPROTO op_stfsr(void) |
582 | 495 |
{ |
583 | 496 |
*((uint32_t *) &FT0) = env->fsr; |
584 |
helper_stfsr(); |
|
585 |
FORCE_RET(); |
|
586 | 497 |
} |
587 | 498 |
|
588 | 499 |
void OPPROTO op_wry(void) |
... | ... | |
609 | 520 |
void OPPROTO op_rdpsr(void) |
610 | 521 |
{ |
611 | 522 |
T0 = GET_PSR(env); |
612 |
FORCE_RET(); |
|
613 | 523 |
} |
614 | 524 |
|
615 | 525 |
void OPPROTO op_wrpsr(void) |
616 | 526 |
{ |
527 |
int cwp; |
|
617 | 528 |
env->psr = T0 & ~PSR_ICC; |
618 | 529 |
env->psrs = (T0 & PSR_S)? 1 : 0; |
619 | 530 |
env->psrps = (T0 & PSR_PS)? 1 : 0; |
620 | 531 |
env->psret = (T0 & PSR_ET)? 1 : 0; |
621 |
env->cwp = (T0 & PSR_CWP); |
|
532 |
cwp = (T0 & PSR_CWP) & (NWINDOWS - 1); |
|
533 |
set_cwp(cwp); |
|
622 | 534 |
FORCE_RET(); |
623 | 535 |
} |
624 | 536 |
|
Also available in: Unified diff