Revision 4dc28134 target-sparc/op_helper.c
b/target-sparc/op_helper.c | ||
---|---|---|
3301 | 3301 |
void helper_wrpstate(target_ulong new_state) |
3302 | 3302 |
{ |
3303 | 3303 |
change_pstate(new_state & 0xf3f); |
3304 |
|
|
3305 |
#if !defined(CONFIG_USER_ONLY) |
|
3306 |
if (cpu_interrupts_enabled(env)) { |
|
3307 |
cpu_check_irqs(env); |
|
3308 |
} |
|
3309 |
#endif |
|
3304 | 3310 |
} |
3305 | 3311 |
|
3306 | 3312 |
void helper_wrpil(target_ulong new_pil) |
... | ... | |
3328 | 3334 |
change_pstate((tsptr->tstate >> 8) & 0xf3f); |
3329 | 3335 |
PUT_CWP64(env, tsptr->tstate & 0xff); |
3330 | 3336 |
env->tl--; |
3337 |
|
|
3338 |
DPRINTF_PSTATE("... helper_done tl=%d\n", env->tl); |
|
3339 |
|
|
3340 |
#if !defined(CONFIG_USER_ONLY) |
|
3341 |
if (cpu_interrupts_enabled(env)) { |
|
3342 |
cpu_check_irqs(env); |
|
3343 |
} |
|
3344 |
#endif |
|
3331 | 3345 |
} |
3332 | 3346 |
|
3333 | 3347 |
void helper_retry(void) |
... | ... | |
3341 | 3355 |
change_pstate((tsptr->tstate >> 8) & 0xf3f); |
3342 | 3356 |
PUT_CWP64(env, tsptr->tstate & 0xff); |
3343 | 3357 |
env->tl--; |
3358 |
|
|
3359 |
DPRINTF_PSTATE("... helper_retry tl=%d\n", env->tl); |
|
3360 |
|
|
3361 |
#if !defined(CONFIG_USER_ONLY) |
|
3362 |
if (cpu_interrupts_enabled(env)) { |
|
3363 |
cpu_check_irqs(env); |
|
3364 |
} |
|
3365 |
#endif |
|
3366 |
} |
|
3367 |
|
|
3368 |
static void do_modify_softint(const char* operation, uint32_t value) |
|
3369 |
{ |
|
3370 |
if (env->softint != value) { |
|
3371 |
env->softint = value; |
|
3372 |
DPRINTF_PSTATE(": %s new %08x\n", operation, env->softint); |
|
3373 |
#if !defined(CONFIG_USER_ONLY) |
|
3374 |
if (cpu_interrupts_enabled(env)) { |
|
3375 |
cpu_check_irqs(env); |
|
3376 |
} |
|
3377 |
#endif |
|
3378 |
} |
|
3344 | 3379 |
} |
3345 | 3380 |
|
3346 | 3381 |
void helper_set_softint(uint64_t value) |
3347 | 3382 |
{ |
3348 |
env->softint |= (uint32_t)value;
|
|
3383 |
do_modify_softint("helper_set_softint", env->softint | (uint32_t)value);
|
|
3349 | 3384 |
} |
3350 | 3385 |
|
3351 | 3386 |
void helper_clear_softint(uint64_t value) |
3352 | 3387 |
{ |
3353 |
env->softint &= (uint32_t)~value;
|
|
3388 |
do_modify_softint("helper_clear_softint", env->softint & (uint32_t)~value);
|
|
3354 | 3389 |
} |
3355 | 3390 |
|
3356 | 3391 |
void helper_write_softint(uint64_t value) |
3357 | 3392 |
{ |
3358 |
env->softint = (uint32_t)value;
|
|
3393 |
do_modify_softint("helper_write_softint", (uint32_t)value);
|
|
3359 | 3394 |
} |
3360 | 3395 |
#endif |
3361 | 3396 |
|
Also available in: Unified diff