Revision b0109805 target-arm/op.c
b/target-arm/op.c | ||
---|---|---|
589 | 589 |
FORCE_RET(); |
590 | 590 |
} |
591 | 591 |
|
592 |
/* Access to user mode registers from privileged modes. */ |
|
593 |
void OPPROTO op_movl_T0_user(void) |
|
594 |
{ |
|
595 |
int regno = PARAM1; |
|
596 |
if (regno == 13) { |
|
597 |
T0 = env->banked_r13[0]; |
|
598 |
} else if (regno == 14) { |
|
599 |
T0 = env->banked_r14[0]; |
|
600 |
} else if ((env->uncached_cpsr & 0x1f) == ARM_CPU_MODE_FIQ) { |
|
601 |
T0 = env->usr_regs[regno - 8]; |
|
602 |
} else { |
|
603 |
T0 = env->regs[regno]; |
|
604 |
} |
|
605 |
FORCE_RET(); |
|
606 |
} |
|
607 |
|
|
608 |
|
|
609 |
void OPPROTO op_movl_user_T0(void) |
|
610 |
{ |
|
611 |
int regno = PARAM1; |
|
612 |
if (regno == 13) { |
|
613 |
env->banked_r13[0] = T0; |
|
614 |
} else if (regno == 14) { |
|
615 |
env->banked_r14[0] = T0; |
|
616 |
} else if ((env->uncached_cpsr & 0x1f) == ARM_CPU_MODE_FIQ) { |
|
617 |
env->usr_regs[regno - 8] = T0; |
|
618 |
} else { |
|
619 |
env->regs[regno] = T0; |
|
620 |
} |
|
621 |
FORCE_RET(); |
|
622 |
} |
|
623 |
|
|
624 |
void OPPROTO op_movl_T1_r13_banked(void) |
|
625 |
{ |
|
626 |
T1 = helper_get_r13_banked(env, PARAM1); |
|
627 |
} |
|
628 |
|
|
629 |
void OPPROTO op_movl_r13_T1_banked(void) |
|
630 |
{ |
|
631 |
helper_set_r13_banked(env, PARAM1, T1); |
|
632 |
} |
|
633 |
|
|
634 | 592 |
void OPPROTO op_v7m_mrs_T0(void) |
635 | 593 |
{ |
636 | 594 |
T0 = helper_v7m_mrs(env, PARAM1); |
Also available in: Unified diff