mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00
target/sparc: Split psr and xcc into components
Step in removing CC_OP: change the representation of CC_OP_FLAGS. The 8 bits are distributed between 6 variables, which should make it easy to keep up to date. The code within cc_helper.c is quite ugly but is only temporary. Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
b1fa27fcc8
commit
2a1905c79e
7 changed files with 291 additions and 272 deletions
|
@ -197,10 +197,8 @@ static uint32_t do_getpsr(CPUSPARCState *env)
|
|||
/* Avoid ifdefs below for the abi32 and abi64 paths. */
|
||||
#ifdef TARGET_ABI32
|
||||
#define TARGET_TT_SYSCALL (TT_TRAP + 0x10) /* t_linux */
|
||||
#define syscall_cc psr
|
||||
#else
|
||||
#define TARGET_TT_SYSCALL (TT_TRAP + 0x6d) /* tl0_linux64 */
|
||||
#define syscall_cc xcc
|
||||
#endif
|
||||
|
||||
/* Avoid ifdefs below for the v9 and pre-v9 hw traps. */
|
||||
|
@ -240,10 +238,10 @@ void cpu_loop (CPUSPARCState *env)
|
|||
break;
|
||||
}
|
||||
if ((abi_ulong)ret >= (abi_ulong)(-515)) {
|
||||
env->syscall_cc |= PSR_CARRY;
|
||||
set_syscall_C(env, 1);
|
||||
ret = -ret;
|
||||
} else {
|
||||
env->syscall_cc &= ~PSR_CARRY;
|
||||
set_syscall_C(env, 0);
|
||||
}
|
||||
env->regwptr[0] = ret;
|
||||
/* next instruction */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue