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