Revision 5e3f878a target-arm/op.c

b/target-arm/op.c
80 80

  
81 81
OPSUB(rsb, rsc, T0, T1, T0)
82 82

  
83
void OPPROTO op_addq_T0_T1(void)
84
{
85
    uint64_t res;
86
    res = ((uint64_t)T1 << 32) | T0;
87
    res += ((uint64_t)(env->regs[PARAM2]) << 32) | (env->regs[PARAM1]);
88
    T1 = res >> 32;
89
    T0 = res;
90
}
91

  
92
void OPPROTO op_addq_lo_T0_T1(void)
93
{
94
    uint64_t res;
95
    res = ((uint64_t)T1 << 32) | T0;
96
    res += (uint64_t)(env->regs[PARAM1]);
97
    T1 = res >> 32;
98
    T0 = res;
99
}
100

  
101
/* Dual 16-bit accumulate.  */
102
void OPPROTO op_addq_T0_T1_dual(void)
103
{
104
  uint64_t res;
105
  res = ((uint64_t)(env->regs[PARAM2]) << 32) | (env->regs[PARAM1]);
106
  res += (int32_t)T0;
107
  res += (int32_t)T1;
108
  env->regs[PARAM1] = (uint32_t)res;
109
  env->regs[PARAM2] = res >> 32;
110
}
111

  
112
/* Dual 16-bit subtract accumulate.  */
113
void OPPROTO op_subq_T0_T1_dual(void)
114
{
115
  uint64_t res;
116
  res = ((uint64_t)(env->regs[PARAM2]) << 32) | (env->regs[PARAM1]);
117
  res += (int32_t)T0;
118
  res -= (int32_t)T1;
119
  env->regs[PARAM1] = (uint32_t)res;
120
  env->regs[PARAM2] = res >> 32;
121
}
122

  
123
void OPPROTO op_logicq_cc(void)
124
{
125
    env->NZF = (T1 & 0x80000000) | ((T0 | T1) != 0);
126
}
127

  
128 83
/* memory access */
129 84

  
130 85
#define MEMSUFFIX _raw

Also available in: Unified diff