Revision 7c60cc4b target-sparc/op_helper.c
b/target-sparc/op_helper.c | ||
---|---|---|
2189 | 2189 |
#define ADDR(x) (x) |
2190 | 2190 |
#endif |
2191 | 2191 |
|
2192 |
#ifdef __i386__ |
|
2193 |
void helper_std_i386(target_ulong addr, int mem_idx) |
|
2194 |
{ |
|
2195 |
uint64_t tmp = ((uint64_t)env->t1 << 32) | (uint64_t)(env->t2 & 0xffffffff); |
|
2196 |
|
|
2197 |
#if !defined(CONFIG_USER_ONLY) |
|
2198 |
switch (mem_idx) { |
|
2199 |
case 0: |
|
2200 |
stq_user(ADDR(addr), tmp); |
|
2201 |
break; |
|
2202 |
case 1: |
|
2203 |
stq_kernel(ADDR(addr), tmp); |
|
2204 |
break; |
|
2205 |
#ifdef TARGET_SPARC64 |
|
2206 |
case 2: |
|
2207 |
stq_hypv(ADDR(addr), tmp); |
|
2208 |
break; |
|
2209 |
#endif |
|
2210 |
default: |
|
2211 |
break; |
|
2212 |
} |
|
2213 |
#else |
|
2214 |
stq_raw(ADDR(addr), tmp); |
|
2215 |
#endif |
|
2216 |
} |
|
2217 |
#endif /* __i386__ */ |
|
2218 |
|
|
2219 | 2192 |
void helper_stdf(target_ulong addr, int mem_idx) |
2220 | 2193 |
{ |
2221 | 2194 |
#if !defined(CONFIG_USER_ONLY) |
... | ... | |
2894 | 2867 |
if (tb) { |
2895 | 2868 |
/* the PC is inside the translated code. It means that we have |
2896 | 2869 |
a virtual CPU fault */ |
2897 |
cpu_restore_state(tb, env, pc, (void *)T2);
|
|
2870 |
cpu_restore_state(tb, env, pc, (void *)env->cond);
|
|
2898 | 2871 |
} |
2899 | 2872 |
} |
2900 | 2873 |
cpu_loop_exit(); |
Also available in: Unified diff