Revision b4ff5987 target-sparc/cpu.h

b/target-sparc/cpu.h
29 29
#define PSR_PS    (1<<6)
30 30
#define PSR_ET    (1<<5)
31 31
#define PSR_CWP   0x1f
32
/* Fake impl 0, version 4 */
33
#define GET_PSR(env) ((0 << 28) | (4 << 24) | env->psr |		\
34
		      (env->psref? PSR_EF : 0) |			\
35
		      (env->psrpil << 8) |				\
36
		      (env->psrs? PSR_S : 0) |				\
37
		      (env->psrs? PSR_PS : 0) |				\
38
		      (env->psret? PSR_ET : 0) | env->cwp)
39

  
40
#define PUT_PSR(env, val) do { int _tmp = val;				\
41
	env->psr = _tmp & ~PSR_ICC;					\
42
	env->psref = (_tmp & PSR_EF)? 1 : 0;				\
43
	env->psrpil = (_tmp & PSR_PIL) >> 8;				\
44
	env->psrs = (_tmp & PSR_S)? 1 : 0;				\
45
	env->psrps = (_tmp & PSR_PS)? 1 : 0;				\
46
	env->psret = (_tmp & PSR_ET)? 1 : 0;				\
47
	set_cwp(_tmp & PSR_CWP & (NWINDOWS - 1));			\
48
    } while (0)
49 32

  
50 33
/* Trap base register */
51 34
#define TBR_BASE_MASK 0xfffff000
......
171 154
void cpu_get_fp64(uint64_t *pmant, uint16_t *pexp, double f);
172 155
double cpu_put_fp64(uint64_t mant, uint16_t exp);
173 156

  
157
/* Fake impl 0, version 4 */
158
#define GET_PSR(env) ((0 << 28) | (4 << 24) | env->psr |		\
159
		      (env->psref? PSR_EF : 0) |			\
160
		      (env->psrpil << 8) |				\
161
		      (env->psrs? PSR_S : 0) |				\
162
		      (env->psrs? PSR_PS : 0) |				\
163
		      (env->psret? PSR_ET : 0) | env->cwp)
164

  
165
#ifndef NO_CPU_IO_DEFS
166
void cpu_set_cwp(CPUSPARCState *env1, int new_cwp);
167
#endif
168

  
169
#define PUT_PSR(env, val) do { int _tmp = val;				\
170
	env->psr = _tmp & ~PSR_ICC;					\
171
	env->psref = (_tmp & PSR_EF)? 1 : 0;				\
172
	env->psrpil = (_tmp & PSR_PIL) >> 8;				\
173
	env->psrs = (_tmp & PSR_S)? 1 : 0;				\
174
	env->psrps = (_tmp & PSR_PS)? 1 : 0;				\
175
	env->psret = (_tmp & PSR_ET)? 1 : 0;				\
176
	cpu_set_cwp(env, _tmp & PSR_CWP & (NWINDOWS - 1));		\
177
    } while (0)
178

  
174 179
struct siginfo;
175 180
int cpu_sparc_signal_handler(int hostsignum, struct siginfo *info, void *puc);
176 181

  

Also available in: Unified diff