Commit 0f8a249a0ba252d7ff61410791712ae9b3449063

Authored by blueswir1
1 parent 2e03286b

Detabify


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3195 c046a42c-6fe2-441c-8c8c-71466251a162
target-sparc/cpu.h
@@ -22,9 +22,9 @@ @@ -22,9 +22,9 @@
22 #define TARGET_HAS_ICE 1 22 #define TARGET_HAS_ICE 1
23 23
24 #if !defined(TARGET_SPARC64) 24 #if !defined(TARGET_SPARC64)
25 -#define ELF_MACHINE EM_SPARC 25 +#define ELF_MACHINE EM_SPARC
26 #else 26 #else
27 -#define ELF_MACHINE EM_SPARCV9 27 +#define ELF_MACHINE EM_SPARCV9
28 #endif 28 #endif
29 29
30 /*#define EXCP_INTERRUPT 0x100*/ 30 /*#define EXCP_INTERRUPT 0x100*/
@@ -143,8 +143,8 @@ @@ -143,8 +143,8 @@
143 #define FSR_FCC0 (1<<10) 143 #define FSR_FCC0 (1<<10)
144 144
145 /* MMU */ 145 /* MMU */
146 -#define MMU_E (1<<0)  
147 -#define MMU_NF (1<<1) 146 +#define MMU_E (1<<0)
  147 +#define MMU_NF (1<<1)
148 148
149 #define PTE_ENTRYTYPE_MASK 3 149 #define PTE_ENTRYTYPE_MASK 3
150 #define PTE_ACCESS_MASK 0x1c 150 #define PTE_ACCESS_MASK 0x1c
@@ -152,8 +152,8 @@ @@ -152,8 +152,8 @@
152 #define PTE_PPN_SHIFT 7 152 #define PTE_PPN_SHIFT 7
153 #define PTE_ADDR_MASK 0xffffff00 153 #define PTE_ADDR_MASK 0xffffff00
154 154
155 -#define PG_ACCESSED_BIT 5  
156 -#define PG_MODIFIED_BIT 6 155 +#define PG_ACCESSED_BIT 5
  156 +#define PG_MODIFIED_BIT 6
157 #define PG_CACHE_BIT 7 157 #define PG_CACHE_BIT 7
158 158
159 #define PG_ACCESSED_MASK (1 << PG_ACCESSED_BIT) 159 #define PG_ACCESSED_MASK (1 << PG_ACCESSED_BIT)
@@ -221,7 +221,7 @@ typedef struct CPUSPARCState { @@ -221,7 +221,7 @@ typedef struct CPUSPARCState {
221 uint64_t tnpc[MAXTL]; 221 uint64_t tnpc[MAXTL];
222 uint64_t tstate[MAXTL]; 222 uint64_t tstate[MAXTL];
223 uint32_t tt[MAXTL]; 223 uint32_t tt[MAXTL];
224 - uint32_t xcc; /* Extended integer condition codes */ 224 + uint32_t xcc; /* Extended integer condition codes */
225 uint32_t asi; 225 uint32_t asi;
226 uint32_t pstate; 226 uint32_t pstate;
227 uint32_t tl; 227 uint32_t tl;
@@ -245,12 +245,12 @@ typedef struct CPUSPARCState { @@ -245,12 +245,12 @@ typedef struct CPUSPARCState {
245 } CPUSPARCState; 245 } CPUSPARCState;
246 #if defined(TARGET_SPARC64) 246 #if defined(TARGET_SPARC64)
247 #define GET_FSR32(env) (env->fsr & 0xcfc1ffff) 247 #define GET_FSR32(env) (env->fsr & 0xcfc1ffff)
248 -#define PUT_FSR32(env, val) do { uint32_t _tmp = val; \  
249 - env->fsr = (_tmp & 0xcfc1c3ff) | (env->fsr & 0x3f00000000ULL); \ 248 +#define PUT_FSR32(env, val) do { uint32_t _tmp = val; \
  249 + env->fsr = (_tmp & 0xcfc1c3ff) | (env->fsr & 0x3f00000000ULL); \
250 } while (0) 250 } while (0)
251 #define GET_FSR64(env) (env->fsr & 0x3fcfc1ffffULL) 251 #define GET_FSR64(env) (env->fsr & 0x3fcfc1ffffULL)
252 -#define PUT_FSR64(env, val) do { uint64_t _tmp = val; \  
253 - env->fsr = _tmp & 0x3fcfc1c3ffULL; \ 252 +#define PUT_FSR64(env, val) do { uint64_t _tmp = val; \
  253 + env->fsr = _tmp & 0x3fcfc1c3ffULL; \
254 } while (0) 254 } while (0)
255 #else 255 #else
256 #define GET_FSR32(env) (env->fsr) 256 #define GET_FSR32(env) (env->fsr)
@@ -268,31 +268,31 @@ void sparc_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, @@ -268,31 +268,31 @@ void sparc_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt,
268 int cpu_sparc_register (CPUSPARCState *env, const sparc_def_t *def); 268 int cpu_sparc_register (CPUSPARCState *env, const sparc_def_t *def);
269 269
270 #define GET_PSR(env) (env->version | (env->psr & PSR_ICC) | \ 270 #define GET_PSR(env) (env->version | (env->psr & PSR_ICC) | \
271 - (env->psref? PSR_EF : 0) | \  
272 - (env->psrpil << 8) | \  
273 - (env->psrs? PSR_S : 0) | \  
274 - (env->psrps? PSR_PS : 0) | \  
275 - (env->psret? PSR_ET : 0) | env->cwp) 271 + (env->psref? PSR_EF : 0) | \
  272 + (env->psrpil << 8) | \
  273 + (env->psrs? PSR_S : 0) | \
  274 + (env->psrps? PSR_PS : 0) | \
  275 + (env->psret? PSR_ET : 0) | env->cwp)
276 276
277 #ifndef NO_CPU_IO_DEFS 277 #ifndef NO_CPU_IO_DEFS
278 void cpu_set_cwp(CPUSPARCState *env1, int new_cwp); 278 void cpu_set_cwp(CPUSPARCState *env1, int new_cwp);
279 #endif 279 #endif
280 280
281 -#define PUT_PSR(env, val) do { int _tmp = val; \  
282 - env->psr = _tmp & PSR_ICC; \  
283 - env->psref = (_tmp & PSR_EF)? 1 : 0; \  
284 - env->psrpil = (_tmp & PSR_PIL) >> 8; \  
285 - env->psrs = (_tmp & PSR_S)? 1 : 0; \  
286 - env->psrps = (_tmp & PSR_PS)? 1 : 0; \  
287 - env->psret = (_tmp & PSR_ET)? 1 : 0; \ 281 +#define PUT_PSR(env, val) do { int _tmp = val; \
  282 + env->psr = _tmp & PSR_ICC; \
  283 + env->psref = (_tmp & PSR_EF)? 1 : 0; \
  284 + env->psrpil = (_tmp & PSR_PIL) >> 8; \
  285 + env->psrs = (_tmp & PSR_S)? 1 : 0; \
  286 + env->psrps = (_tmp & PSR_PS)? 1 : 0; \
  287 + env->psret = (_tmp & PSR_ET)? 1 : 0; \
288 cpu_set_cwp(env, _tmp & PSR_CWP); \ 288 cpu_set_cwp(env, _tmp & PSR_CWP); \
289 } while (0) 289 } while (0)
290 290
291 #ifdef TARGET_SPARC64 291 #ifdef TARGET_SPARC64
292 #define GET_CCR(env) (((env->xcc >> 20) << 4) | ((env->psr & PSR_ICC) >> 20)) 292 #define GET_CCR(env) (((env->xcc >> 20) << 4) | ((env->psr & PSR_ICC) >> 20))
293 -#define PUT_CCR(env, val) do { int _tmp = val; \  
294 - env->xcc = (_tmp >> 4) << 20; \  
295 - env->psr = (_tmp & 0xf) << 20; \ 293 +#define PUT_CCR(env, val) do { int _tmp = val; \
  294 + env->xcc = (_tmp >> 4) << 20; \
  295 + env->psr = (_tmp & 0xf) << 20; \
296 } while (0) 296 } while (0)
297 #define GET_CWP64(env) (NWINDOWS - 1 - (env)->cwp) 297 #define GET_CWP64(env) (NWINDOWS - 1 - (env)->cwp)
298 #define PUT_CWP64(env, val) \ 298 #define PUT_CWP64(env, val) \
target-sparc/helper.c
@@ -99,8 +99,8 @@ static const int perm_table[2][8] = { @@ -99,8 +99,8 @@ static const int perm_table[2][8] = {
99 }; 99 };
100 100
101 int get_physical_address (CPUState *env, target_phys_addr_t *physical, int *prot, 101 int get_physical_address (CPUState *env, target_phys_addr_t *physical, int *prot,
102 - int *access_index, target_ulong address, int rw,  
103 - int is_user) 102 + int *access_index, target_ulong address, int rw,
  103 + int is_user)
104 { 104 {
105 int access_perms = 0; 105 int access_perms = 0;
106 target_phys_addr_t pde_ptr; 106 target_phys_addr_t pde_ptr;
@@ -111,7 +111,7 @@ int get_physical_address (CPUState *env, target_phys_addr_t *physical, int *prot @@ -111,7 +111,7 @@ int get_physical_address (CPUState *env, target_phys_addr_t *physical, int *prot
111 111
112 virt_addr = address & TARGET_PAGE_MASK; 112 virt_addr = address & TARGET_PAGE_MASK;
113 if ((env->mmuregs[0] & MMU_E) == 0) { /* MMU disabled */ 113 if ((env->mmuregs[0] & MMU_E) == 0) { /* MMU disabled */
114 - *physical = address; 114 + *physical = address;
115 *prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC; 115 *prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
116 return 0; 116 return 0;
117 } 117 }
@@ -128,70 +128,70 @@ int get_physical_address (CPUState *env, target_phys_addr_t *physical, int *prot @@ -128,70 +128,70 @@ int get_physical_address (CPUState *env, target_phys_addr_t *physical, int *prot
128 switch (pde & PTE_ENTRYTYPE_MASK) { 128 switch (pde & PTE_ENTRYTYPE_MASK) {
129 default: 129 default:
130 case 0: /* Invalid */ 130 case 0: /* Invalid */
131 - return 1 << 2; 131 + return 1 << 2;
132 case 2: /* L0 PTE, maybe should not happen? */ 132 case 2: /* L0 PTE, maybe should not happen? */
133 case 3: /* Reserved */ 133 case 3: /* Reserved */
134 return 4 << 2; 134 return 4 << 2;
135 case 1: /* L0 PDE */ 135 case 1: /* L0 PDE */
136 - pde_ptr = ((address >> 22) & ~3) + ((pde & ~3) << 4); 136 + pde_ptr = ((address >> 22) & ~3) + ((pde & ~3) << 4);
137 pde = ldl_phys(pde_ptr); 137 pde = ldl_phys(pde_ptr);
138 138
139 - switch (pde & PTE_ENTRYTYPE_MASK) {  
140 - default:  
141 - case 0: /* Invalid */  
142 - return (1 << 8) | (1 << 2);  
143 - case 3: /* Reserved */  
144 - return (1 << 8) | (4 << 2);  
145 - case 1: /* L1 PDE */  
146 - pde_ptr = ((address & 0xfc0000) >> 16) + ((pde & ~3) << 4); 139 + switch (pde & PTE_ENTRYTYPE_MASK) {
  140 + default:
  141 + case 0: /* Invalid */
  142 + return (1 << 8) | (1 << 2);
  143 + case 3: /* Reserved */
  144 + return (1 << 8) | (4 << 2);
  145 + case 1: /* L1 PDE */
  146 + pde_ptr = ((address & 0xfc0000) >> 16) + ((pde & ~3) << 4);
147 pde = ldl_phys(pde_ptr); 147 pde = ldl_phys(pde_ptr);
148 148
149 - switch (pde & PTE_ENTRYTYPE_MASK) {  
150 - default:  
151 - case 0: /* Invalid */  
152 - return (2 << 8) | (1 << 2);  
153 - case 3: /* Reserved */  
154 - return (2 << 8) | (4 << 2);  
155 - case 1: /* L2 PDE */  
156 - pde_ptr = ((address & 0x3f000) >> 10) + ((pde & ~3) << 4); 149 + switch (pde & PTE_ENTRYTYPE_MASK) {
  150 + default:
  151 + case 0: /* Invalid */
  152 + return (2 << 8) | (1 << 2);
  153 + case 3: /* Reserved */
  154 + return (2 << 8) | (4 << 2);
  155 + case 1: /* L2 PDE */
  156 + pde_ptr = ((address & 0x3f000) >> 10) + ((pde & ~3) << 4);
157 pde = ldl_phys(pde_ptr); 157 pde = ldl_phys(pde_ptr);
158 158
159 - switch (pde & PTE_ENTRYTYPE_MASK) {  
160 - default:  
161 - case 0: /* Invalid */  
162 - return (3 << 8) | (1 << 2);  
163 - case 1: /* PDE, should not happen */  
164 - case 3: /* Reserved */  
165 - return (3 << 8) | (4 << 2);  
166 - case 2: /* L3 PTE */  
167 - virt_addr = address & TARGET_PAGE_MASK;  
168 - page_offset = (address & TARGET_PAGE_MASK) & (TARGET_PAGE_SIZE - 1);  
169 - }  
170 - break;  
171 - case 2: /* L2 PTE */  
172 - virt_addr = address & ~0x3ffff;  
173 - page_offset = address & 0x3ffff;  
174 - }  
175 - break;  
176 - case 2: /* L1 PTE */  
177 - virt_addr = address & ~0xffffff;  
178 - page_offset = address & 0xffffff;  
179 - } 159 + switch (pde & PTE_ENTRYTYPE_MASK) {
  160 + default:
  161 + case 0: /* Invalid */
  162 + return (3 << 8) | (1 << 2);
  163 + case 1: /* PDE, should not happen */
  164 + case 3: /* Reserved */
  165 + return (3 << 8) | (4 << 2);
  166 + case 2: /* L3 PTE */
  167 + virt_addr = address & TARGET_PAGE_MASK;
  168 + page_offset = (address & TARGET_PAGE_MASK) & (TARGET_PAGE_SIZE - 1);
  169 + }
  170 + break;
  171 + case 2: /* L2 PTE */
  172 + virt_addr = address & ~0x3ffff;
  173 + page_offset = address & 0x3ffff;
  174 + }
  175 + break;
  176 + case 2: /* L1 PTE */
  177 + virt_addr = address & ~0xffffff;
  178 + page_offset = address & 0xffffff;
  179 + }
180 } 180 }
181 181
182 /* update page modified and dirty bits */ 182 /* update page modified and dirty bits */
183 is_dirty = (rw & 1) && !(pde & PG_MODIFIED_MASK); 183 is_dirty = (rw & 1) && !(pde & PG_MODIFIED_MASK);
184 if (!(pde & PG_ACCESSED_MASK) || is_dirty) { 184 if (!(pde & PG_ACCESSED_MASK) || is_dirty) {
185 - pde |= PG_ACCESSED_MASK;  
186 - if (is_dirty)  
187 - pde |= PG_MODIFIED_MASK; 185 + pde |= PG_ACCESSED_MASK;
  186 + if (is_dirty)
  187 + pde |= PG_MODIFIED_MASK;
188 stl_phys_notdirty(pde_ptr, pde); 188 stl_phys_notdirty(pde_ptr, pde);
189 } 189 }
190 /* check access */ 190 /* check access */
191 access_perms = (pde & PTE_ACCESS_MASK) >> PTE_ACCESS_SHIFT; 191 access_perms = (pde & PTE_ACCESS_MASK) >> PTE_ACCESS_SHIFT;
192 error_code = access_table[*access_index][access_perms]; 192 error_code = access_table[*access_index][access_perms];
193 if (error_code && !((env->mmuregs[0] & MMU_NF) && is_user)) 193 if (error_code && !((env->mmuregs[0] & MMU_NF) && is_user))
194 - return error_code; 194 + return error_code;
195 195
196 /* the page can be put in the TLB */ 196 /* the page can be put in the TLB */
197 *prot = perm_table[is_user][access_perms]; 197 *prot = perm_table[is_user][access_perms];
@@ -217,18 +217,18 @@ int cpu_sparc_handle_mmu_fault (CPUState *env, target_ulong address, int rw, @@ -217,18 +217,18 @@ int cpu_sparc_handle_mmu_fault (CPUState *env, target_ulong address, int rw,
217 217
218 error_code = get_physical_address(env, &paddr, &prot, &access_index, address, rw, is_user); 218 error_code = get_physical_address(env, &paddr, &prot, &access_index, address, rw, is_user);
219 if (error_code == 0) { 219 if (error_code == 0) {
220 - vaddr = address & TARGET_PAGE_MASK;  
221 - paddr &= TARGET_PAGE_MASK; 220 + vaddr = address & TARGET_PAGE_MASK;
  221 + paddr &= TARGET_PAGE_MASK;
222 #ifdef DEBUG_MMU 222 #ifdef DEBUG_MMU
223 - printf("Translate at " TARGET_FMT_lx " -> " TARGET_FMT_plx ", vaddr " 223 + printf("Translate at " TARGET_FMT_lx " -> " TARGET_FMT_plx ", vaddr "
224 TARGET_FMT_lx "\n", address, paddr, vaddr); 224 TARGET_FMT_lx "\n", address, paddr, vaddr);
225 #endif 225 #endif
226 - ret = tlb_set_page_exec(env, vaddr, paddr, prot, is_user, is_softmmu);  
227 - return ret; 226 + ret = tlb_set_page_exec(env, vaddr, paddr, prot, is_user, is_softmmu);
  227 + return ret;
228 } 228 }
229 229
230 if (env->mmuregs[3]) /* Fault status register */ 230 if (env->mmuregs[3]) /* Fault status register */
231 - env->mmuregs[3] = 1; /* overflow (not read before another fault) */ 231 + env->mmuregs[3] = 1; /* overflow (not read before another fault) */
232 env->mmuregs[3] |= (access_index << 5) | error_code | 2; 232 env->mmuregs[3] |= (access_index << 5) | error_code | 2;
233 env->mmuregs[4] = address; /* Fault address register */ 233 env->mmuregs[4] = address; /* Fault address register */
234 234
@@ -237,10 +237,10 @@ int cpu_sparc_handle_mmu_fault (CPUState *env, target_ulong address, int rw, @@ -237,10 +237,10 @@ int cpu_sparc_handle_mmu_fault (CPUState *env, target_ulong address, int rw,
237 // permissions. If no mapping is available, redirect accesses to 237 // permissions. If no mapping is available, redirect accesses to
238 // neverland. Fake/overridden mappings will be flushed when 238 // neverland. Fake/overridden mappings will be flushed when
239 // switching to normal mode. 239 // switching to normal mode.
240 - vaddr = address & TARGET_PAGE_MASK; 240 + vaddr = address & TARGET_PAGE_MASK;
241 prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC; 241 prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
242 ret = tlb_set_page_exec(env, vaddr, paddr, prot, is_user, is_softmmu); 242 ret = tlb_set_page_exec(env, vaddr, paddr, prot, is_user, is_softmmu);
243 - return ret; 243 + return ret;
244 } else { 244 } else {
245 if (rw & 2) 245 if (rw & 2)
246 env->exception_index = TT_TFAULT; 246 env->exception_index = TT_TFAULT;
@@ -265,50 +265,50 @@ target_ulong mmu_probe(CPUState *env, target_ulong address, int mmulev) @@ -265,50 +265,50 @@ target_ulong mmu_probe(CPUState *env, target_ulong address, int mmulev)
265 case 0: /* Invalid */ 265 case 0: /* Invalid */
266 case 2: /* PTE, maybe should not happen? */ 266 case 2: /* PTE, maybe should not happen? */
267 case 3: /* Reserved */ 267 case 3: /* Reserved */
268 - return 0; 268 + return 0;
269 case 1: /* L1 PDE */ 269 case 1: /* L1 PDE */
270 - if (mmulev == 3)  
271 - return pde;  
272 - pde_ptr = ((address >> 22) & ~3) + ((pde & ~3) << 4); 270 + if (mmulev == 3)
  271 + return pde;
  272 + pde_ptr = ((address >> 22) & ~3) + ((pde & ~3) << 4);
273 pde = ldl_phys(pde_ptr); 273 pde = ldl_phys(pde_ptr);
274 274
275 - switch (pde & PTE_ENTRYTYPE_MASK) {  
276 - default:  
277 - case 0: /* Invalid */  
278 - case 3: /* Reserved */  
279 - return 0;  
280 - case 2: /* L1 PTE */  
281 - return pde;  
282 - case 1: /* L2 PDE */  
283 - if (mmulev == 2)  
284 - return pde;  
285 - pde_ptr = ((address & 0xfc0000) >> 16) + ((pde & ~3) << 4); 275 + switch (pde & PTE_ENTRYTYPE_MASK) {
  276 + default:
  277 + case 0: /* Invalid */
  278 + case 3: /* Reserved */
  279 + return 0;
  280 + case 2: /* L1 PTE */
  281 + return pde;
  282 + case 1: /* L2 PDE */
  283 + if (mmulev == 2)
  284 + return pde;
  285 + pde_ptr = ((address & 0xfc0000) >> 16) + ((pde & ~3) << 4);
286 pde = ldl_phys(pde_ptr); 286 pde = ldl_phys(pde_ptr);
287 287
288 - switch (pde & PTE_ENTRYTYPE_MASK) {  
289 - default:  
290 - case 0: /* Invalid */  
291 - case 3: /* Reserved */  
292 - return 0;  
293 - case 2: /* L2 PTE */  
294 - return pde;  
295 - case 1: /* L3 PDE */  
296 - if (mmulev == 1)  
297 - return pde;  
298 - pde_ptr = ((address & 0x3f000) >> 10) + ((pde & ~3) << 4); 288 + switch (pde & PTE_ENTRYTYPE_MASK) {
  289 + default:
  290 + case 0: /* Invalid */
  291 + case 3: /* Reserved */
  292 + return 0;
  293 + case 2: /* L2 PTE */
  294 + return pde;
  295 + case 1: /* L3 PDE */
  296 + if (mmulev == 1)
  297 + return pde;
  298 + pde_ptr = ((address & 0x3f000) >> 10) + ((pde & ~3) << 4);
299 pde = ldl_phys(pde_ptr); 299 pde = ldl_phys(pde_ptr);
300 300
301 - switch (pde & PTE_ENTRYTYPE_MASK) {  
302 - default:  
303 - case 0: /* Invalid */  
304 - case 1: /* PDE, should not happen */  
305 - case 3: /* Reserved */  
306 - return 0;  
307 - case 2: /* L3 PTE */  
308 - return pde;  
309 - }  
310 - }  
311 - } 301 + switch (pde & PTE_ENTRYTYPE_MASK) {
  302 + default:
  303 + case 0: /* Invalid */
  304 + case 1: /* PDE, should not happen */
  305 + case 3: /* Reserved */
  306 + return 0;
  307 + case 2: /* L3 PTE */
  308 + return pde;
  309 + }
  310 + }
  311 + }
312 } 312 }
313 return 0; 313 return 0;
314 } 314 }
@@ -327,29 +327,29 @@ void dump_mmu(CPUState *env) @@ -327,29 +327,29 @@ void dump_mmu(CPUState *env)
327 printf("Root ptr: " TARGET_FMT_plx ", ctx: %d\n", 327 printf("Root ptr: " TARGET_FMT_plx ", ctx: %d\n",
328 (target_phys_addr_t)env->mmuregs[1] << 4, env->mmuregs[2]); 328 (target_phys_addr_t)env->mmuregs[1] << 4, env->mmuregs[2]);
329 for (n = 0, va = 0; n < 256; n++, va += 16 * 1024 * 1024) { 329 for (n = 0, va = 0; n < 256; n++, va += 16 * 1024 * 1024) {
330 - pde = mmu_probe(env, va, 2);  
331 - if (pde) {  
332 - pa = cpu_get_phys_page_debug(env, va);  
333 - printf("VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_plx 330 + pde = mmu_probe(env, va, 2);
  331 + if (pde) {
  332 + pa = cpu_get_phys_page_debug(env, va);
  333 + printf("VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_plx
334 " PDE: " TARGET_FMT_lx "\n", va, pa, pde); 334 " PDE: " TARGET_FMT_lx "\n", va, pa, pde);
335 - for (m = 0, va1 = va; m < 64; m++, va1 += 256 * 1024) {  
336 - pde = mmu_probe(env, va1, 1);  
337 - if (pde) {  
338 - pa = cpu_get_phys_page_debug(env, va1);  
339 - printf(" VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_plx 335 + for (m = 0, va1 = va; m < 64; m++, va1 += 256 * 1024) {
  336 + pde = mmu_probe(env, va1, 1);
  337 + if (pde) {
  338 + pa = cpu_get_phys_page_debug(env, va1);
  339 + printf(" VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_plx
340 " PDE: " TARGET_FMT_lx "\n", va1, pa, pde); 340 " PDE: " TARGET_FMT_lx "\n", va1, pa, pde);
341 - for (o = 0, va2 = va1; o < 64; o++, va2 += 4 * 1024) {  
342 - pde = mmu_probe(env, va2, 0);  
343 - if (pde) {  
344 - pa = cpu_get_phys_page_debug(env, va2);  
345 - printf(" VA: " TARGET_FMT_lx ", PA: " 341 + for (o = 0, va2 = va1; o < 64; o++, va2 += 4 * 1024) {
  342 + pde = mmu_probe(env, va2, 0);
  343 + if (pde) {
  344 + pa = cpu_get_phys_page_debug(env, va2);
  345 + printf(" VA: " TARGET_FMT_lx ", PA: "
346 TARGET_FMT_plx " PTE: " TARGET_FMT_lx "\n", 346 TARGET_FMT_plx " PTE: " TARGET_FMT_lx "\n",
347 va2, pa, pde); 347 va2, pa, pde);
348 - }  
349 - }  
350 - }  
351 - }  
352 - } 348 + }
  349 + }
  350 + }
  351 + }
  352 + }
353 } 353 }
354 printf("MMU dump ends\n"); 354 printf("MMU dump ends\n");
355 } 355 }
@@ -360,57 +360,57 @@ void dump_mmu(CPUState *env) @@ -360,57 +360,57 @@ void dump_mmu(CPUState *env)
360 * UltraSparc IIi I/DMMUs 360 * UltraSparc IIi I/DMMUs
361 */ 361 */
362 static int get_physical_address_data(CPUState *env, target_phys_addr_t *physical, int *prot, 362 static int get_physical_address_data(CPUState *env, target_phys_addr_t *physical, int *prot,
363 - int *access_index, target_ulong address, int rw,  
364 - int is_user) 363 + int *access_index, target_ulong address, int rw,
  364 + int is_user)
365 { 365 {
366 target_ulong mask; 366 target_ulong mask;
367 unsigned int i; 367 unsigned int i;
368 368
369 if ((env->lsu & DMMU_E) == 0) { /* DMMU disabled */ 369 if ((env->lsu & DMMU_E) == 0) { /* DMMU disabled */
370 - *physical = address;  
371 - *prot = PAGE_READ | PAGE_WRITE; 370 + *physical = address;
  371 + *prot = PAGE_READ | PAGE_WRITE;
372 return 0; 372 return 0;
373 } 373 }
374 374
375 for (i = 0; i < 64; i++) { 375 for (i = 0; i < 64; i++) {
376 - switch ((env->dtlb_tte[i] >> 61) & 3) {  
377 - default:  
378 - case 0x0: // 8k  
379 - mask = 0xffffffffffffe000ULL;  
380 - break;  
381 - case 0x1: // 64k  
382 - mask = 0xffffffffffff0000ULL;  
383 - break;  
384 - case 0x2: // 512k  
385 - mask = 0xfffffffffff80000ULL;  
386 - break;  
387 - case 0x3: // 4M  
388 - mask = 0xffffffffffc00000ULL;  
389 - break;  
390 - }  
391 - // ctx match, vaddr match?  
392 - if (env->dmmuregs[1] == (env->dtlb_tag[i] & 0x1fff) &&  
393 - (address & mask) == (env->dtlb_tag[i] & ~0x1fffULL)) {  
394 - // valid, access ok?  
395 - if ((env->dtlb_tte[i] & 0x8000000000000000ULL) == 0 ||  
396 - ((env->dtlb_tte[i] & 0x4) && is_user) ||  
397 - (!(env->dtlb_tte[i] & 0x2) && (rw == 1))) {  
398 - if (env->dmmuregs[3]) /* Fault status register */  
399 - env->dmmuregs[3] = 2; /* overflow (not read before another fault) */  
400 - env->dmmuregs[3] |= (is_user << 3) | ((rw == 1) << 2) | 1;  
401 - env->dmmuregs[4] = address; /* Fault address register */  
402 - env->exception_index = TT_DFAULT; 376 + switch ((env->dtlb_tte[i] >> 61) & 3) {
  377 + default:
  378 + case 0x0: // 8k
  379 + mask = 0xffffffffffffe000ULL;
  380 + break;
  381 + case 0x1: // 64k
  382 + mask = 0xffffffffffff0000ULL;
  383 + break;
  384 + case 0x2: // 512k
  385 + mask = 0xfffffffffff80000ULL;
  386 + break;
  387 + case 0x3: // 4M
  388 + mask = 0xffffffffffc00000ULL;
  389 + break;
  390 + }
  391 + // ctx match, vaddr match?
  392 + if (env->dmmuregs[1] == (env->dtlb_tag[i] & 0x1fff) &&
  393 + (address & mask) == (env->dtlb_tag[i] & ~0x1fffULL)) {
  394 + // valid, access ok?
  395 + if ((env->dtlb_tte[i] & 0x8000000000000000ULL) == 0 ||
  396 + ((env->dtlb_tte[i] & 0x4) && is_user) ||
  397 + (!(env->dtlb_tte[i] & 0x2) && (rw == 1))) {
  398 + if (env->dmmuregs[3]) /* Fault status register */
  399 + env->dmmuregs[3] = 2; /* overflow (not read before another fault) */
  400 + env->dmmuregs[3] |= (is_user << 3) | ((rw == 1) << 2) | 1;
  401 + env->dmmuregs[4] = address; /* Fault address register */
  402 + env->exception_index = TT_DFAULT;
403 #ifdef DEBUG_MMU 403 #ifdef DEBUG_MMU
404 - printf("DFAULT at 0x%" PRIx64 "\n", address); 404 + printf("DFAULT at 0x%" PRIx64 "\n", address);
405 #endif 405 #endif
406 - return 1;  
407 - }  
408 - *physical = (env->dtlb_tte[i] & mask & 0x1fffffff000ULL) + (address & ~mask & 0x1fffffff000ULL);  
409 - *prot = PAGE_READ;  
410 - if (env->dtlb_tte[i] & 0x2)  
411 - *prot |= PAGE_WRITE;  
412 - return 0;  
413 - } 406 + return 1;
  407 + }
  408 + *physical = (env->dtlb_tte[i] & mask & 0x1fffffff000ULL) + (address & ~mask & 0x1fffffff000ULL);
  409 + *prot = PAGE_READ;
  410 + if (env->dtlb_tte[i] & 0x2)
  411 + *prot |= PAGE_WRITE;
  412 + return 0;
  413 + }
414 } 414 }
415 #ifdef DEBUG_MMU 415 #ifdef DEBUG_MMU
416 printf("DMISS at 0x%" PRIx64 "\n", address); 416 printf("DMISS at 0x%" PRIx64 "\n", address);
@@ -420,53 +420,53 @@ static int get_physical_address_data(CPUState *env, target_phys_addr_t *physical @@ -420,53 +420,53 @@ static int get_physical_address_data(CPUState *env, target_phys_addr_t *physical
420 } 420 }
421 421
422 static int get_physical_address_code(CPUState *env, target_phys_addr_t *physical, int *prot, 422 static int get_physical_address_code(CPUState *env, target_phys_addr_t *physical, int *prot,
423 - int *access_index, target_ulong address, int rw,  
424 - int is_user) 423 + int *access_index, target_ulong address, int rw,
  424 + int is_user)
425 { 425 {
426 target_ulong mask; 426 target_ulong mask;
427 unsigned int i; 427 unsigned int i;
428 428
429 if ((env->lsu & IMMU_E) == 0) { /* IMMU disabled */ 429 if ((env->lsu & IMMU_E) == 0) { /* IMMU disabled */
430 - *physical = address;  
431 - *prot = PAGE_EXEC; 430 + *physical = address;
  431 + *prot = PAGE_EXEC;
432 return 0; 432 return 0;
433 } 433 }
434 434
435 for (i = 0; i < 64; i++) { 435 for (i = 0; i < 64; i++) {
436 - switch ((env->itlb_tte[i] >> 61) & 3) {  
437 - default:  
438 - case 0x0: // 8k  
439 - mask = 0xffffffffffffe000ULL;  
440 - break;  
441 - case 0x1: // 64k  
442 - mask = 0xffffffffffff0000ULL;  
443 - break;  
444 - case 0x2: // 512k  
445 - mask = 0xfffffffffff80000ULL;  
446 - break;  
447 - case 0x3: // 4M  
448 - mask = 0xffffffffffc00000ULL;  
449 - break;  
450 - }  
451 - // ctx match, vaddr match?  
452 - if (env->dmmuregs[1] == (env->itlb_tag[i] & 0x1fff) &&  
453 - (address & mask) == (env->itlb_tag[i] & ~0x1fffULL)) {  
454 - // valid, access ok?  
455 - if ((env->itlb_tte[i] & 0x8000000000000000ULL) == 0 ||  
456 - ((env->itlb_tte[i] & 0x4) && is_user)) {  
457 - if (env->immuregs[3]) /* Fault status register */  
458 - env->immuregs[3] = 2; /* overflow (not read before another fault) */  
459 - env->immuregs[3] |= (is_user << 3) | 1;  
460 - env->exception_index = TT_TFAULT; 436 + switch ((env->itlb_tte[i] >> 61) & 3) {
  437 + default:
  438 + case 0x0: // 8k
  439 + mask = 0xffffffffffffe000ULL;
  440 + break;
  441 + case 0x1: // 64k
  442 + mask = 0xffffffffffff0000ULL;
  443 + break;
  444 + case 0x2: // 512k
  445 + mask = 0xfffffffffff80000ULL;
  446 + break;
  447 + case 0x3: // 4M
  448 + mask = 0xffffffffffc00000ULL;
  449 + break;
  450 + }
  451 + // ctx match, vaddr match?
  452 + if (env->dmmuregs[1] == (env->itlb_tag[i] & 0x1fff) &&
  453 + (address & mask) == (env->itlb_tag[i] & ~0x1fffULL)) {
  454 + // valid, access ok?
  455 + if ((env->itlb_tte[i] & 0x8000000000000000ULL) == 0 ||
  456 + ((env->itlb_tte[i] & 0x4) && is_user)) {
  457 + if (env->immuregs[3]) /* Fault status register */
  458 + env->immuregs[3] = 2; /* overflow (not read before another fault) */
  459 + env->immuregs[3] |= (is_user << 3) | 1;
  460 + env->exception_index = TT_TFAULT;
461 #ifdef DEBUG_MMU 461 #ifdef DEBUG_MMU
462 - printf("TFAULT at 0x%" PRIx64 "\n", address); 462 + printf("TFAULT at 0x%" PRIx64 "\n", address);
463 #endif 463 #endif
464 - return 1;  
465 - }  
466 - *physical = (env->itlb_tte[i] & mask & 0x1fffffff000ULL) + (address & ~mask & 0x1fffffff000ULL);  
467 - *prot = PAGE_EXEC;  
468 - return 0;  
469 - } 464 + return 1;
  465 + }
  466 + *physical = (env->itlb_tte[i] & mask & 0x1fffffff000ULL) + (address & ~mask & 0x1fffffff000ULL);
  467 + *prot = PAGE_EXEC;
  468 + return 0;
  469 + }
470 } 470 }
471 #ifdef DEBUG_MMU 471 #ifdef DEBUG_MMU
472 printf("TMISS at 0x%" PRIx64 "\n", address); 472 printf("TMISS at 0x%" PRIx64 "\n", address);
@@ -476,13 +476,13 @@ static int get_physical_address_code(CPUState *env, target_phys_addr_t *physical @@ -476,13 +476,13 @@ static int get_physical_address_code(CPUState *env, target_phys_addr_t *physical
476 } 476 }
477 477
478 int get_physical_address(CPUState *env, target_phys_addr_t *physical, int *prot, 478 int get_physical_address(CPUState *env, target_phys_addr_t *physical, int *prot,
479 - int *access_index, target_ulong address, int rw,  
480 - int is_user) 479 + int *access_index, target_ulong address, int rw,
  480 + int is_user)
481 { 481 {
482 if (rw == 2) 482 if (rw == 2)
483 - return get_physical_address_code(env, physical, prot, access_index, address, rw, is_user); 483 + return get_physical_address_code(env, physical, prot, access_index, address, rw, is_user);
484 else 484 else
485 - return get_physical_address_data(env, physical, prot, access_index, address, rw, is_user); 485 + return get_physical_address_data(env, physical, prot, access_index, address, rw, is_user);
486 } 486 }
487 487
488 /* Perform address translation */ 488 /* Perform address translation */
@@ -495,13 +495,13 @@ int cpu_sparc_handle_mmu_fault (CPUState *env, target_ulong address, int rw, @@ -495,13 +495,13 @@ int cpu_sparc_handle_mmu_fault (CPUState *env, target_ulong address, int rw,
495 495
496 error_code = get_physical_address(env, &paddr, &prot, &access_index, address, rw, is_user); 496 error_code = get_physical_address(env, &paddr, &prot, &access_index, address, rw, is_user);
497 if (error_code == 0) { 497 if (error_code == 0) {
498 - virt_addr = address & TARGET_PAGE_MASK;  
499 - vaddr = virt_addr + ((address & TARGET_PAGE_MASK) & (TARGET_PAGE_SIZE - 1)); 498 + virt_addr = address & TARGET_PAGE_MASK;
  499 + vaddr = virt_addr + ((address & TARGET_PAGE_MASK) & (TARGET_PAGE_SIZE - 1));
500 #ifdef DEBUG_MMU 500 #ifdef DEBUG_MMU
501 - printf("Translate at 0x%" PRIx64 " -> 0x%" PRIx64 ", vaddr 0x%" PRIx64 "\n", address, paddr, vaddr); 501 + printf("Translate at 0x%" PRIx64 " -> 0x%" PRIx64 ", vaddr 0x%" PRIx64 "\n", address, paddr, vaddr);
502 #endif 502 #endif
503 - ret = tlb_set_page_exec(env, vaddr, paddr, prot, is_user, is_softmmu);  
504 - return ret; 503 + ret = tlb_set_page_exec(env, vaddr, paddr, prot, is_user, is_softmmu);
  504 + return ret;
505 } 505 }
506 // XXX 506 // XXX
507 return 1; 507 return 1;
@@ -515,67 +515,67 @@ void dump_mmu(CPUState *env) @@ -515,67 +515,67 @@ void dump_mmu(CPUState *env)
515 515
516 printf("MMU contexts: Primary: %" PRId64 ", Secondary: %" PRId64 "\n", env->dmmuregs[1], env->dmmuregs[2]); 516 printf("MMU contexts: Primary: %" PRId64 ", Secondary: %" PRId64 "\n", env->dmmuregs[1], env->dmmuregs[2]);
517 if ((env->lsu & DMMU_E) == 0) { 517 if ((env->lsu & DMMU_E) == 0) {
518 - printf("DMMU disabled\n"); 518 + printf("DMMU disabled\n");
519 } else { 519 } else {
520 - printf("DMMU dump:\n");  
521 - for (i = 0; i < 64; i++) {  
522 - switch ((env->dtlb_tte[i] >> 61) & 3) {  
523 - default:  
524 - case 0x0:  
525 - mask = " 8k";  
526 - break;  
527 - case 0x1:  
528 - mask = " 64k";  
529 - break;  
530 - case 0x2:  
531 - mask = "512k";  
532 - break;  
533 - case 0x3:  
534 - mask = " 4M";  
535 - break;  
536 - }  
537 - if ((env->dtlb_tte[i] & 0x8000000000000000ULL) != 0) {  
538 - printf("VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_lx ", %s, %s, %s, %s, ctx %" PRId64 "\n",  
539 - env->dtlb_tag[i] & ~0x1fffULL,  
540 - env->dtlb_tte[i] & 0x1ffffffe000ULL,  
541 - mask,  
542 - env->dtlb_tte[i] & 0x4? "priv": "user",  
543 - env->dtlb_tte[i] & 0x2? "RW": "RO",  
544 - env->dtlb_tte[i] & 0x40? "locked": "unlocked",  
545 - env->dtlb_tag[i] & 0x1fffULL);  
546 - }  
547 - } 520 + printf("DMMU dump:\n");
  521 + for (i = 0; i < 64; i++) {
  522 + switch ((env->dtlb_tte[i] >> 61) & 3) {
  523 + default:
  524 + case 0x0:
  525 + mask = " 8k";
  526 + break;
  527 + case 0x1:
  528 + mask = " 64k";
  529 + break;
  530 + case 0x2:
  531 + mask = "512k";
  532 + break;
  533 + case 0x3:
  534 + mask = " 4M";
  535 + break;
  536 + }
  537 + if ((env->dtlb_tte[i] & 0x8000000000000000ULL) != 0) {
  538 + printf("VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_lx ", %s, %s, %s, %s, ctx %" PRId64 "\n",
  539 + env->dtlb_tag[i] & ~0x1fffULL,
  540 + env->dtlb_tte[i] & 0x1ffffffe000ULL,
  541 + mask,
  542 + env->dtlb_tte[i] & 0x4? "priv": "user",
  543 + env->dtlb_tte[i] & 0x2? "RW": "RO",
  544 + env->dtlb_tte[i] & 0x40? "locked": "unlocked",
  545 + env->dtlb_tag[i] & 0x1fffULL);
  546 + }
  547 + }
548 } 548 }
549 if ((env->lsu & IMMU_E) == 0) { 549 if ((env->lsu & IMMU_E) == 0) {
550 - printf("IMMU disabled\n"); 550 + printf("IMMU disabled\n");
551 } else { 551 } else {
552 - printf("IMMU dump:\n");  
553 - for (i = 0; i < 64; i++) {  
554 - switch ((env->itlb_tte[i] >> 61) & 3) {  
555 - default:  
556 - case 0x0:  
557 - mask = " 8k";  
558 - break;  
559 - case 0x1:  
560 - mask = " 64k";  
561 - break;  
562 - case 0x2:  
563 - mask = "512k";  
564 - break;  
565 - case 0x3:  
566 - mask = " 4M";  
567 - break;  
568 - }  
569 - if ((env->itlb_tte[i] & 0x8000000000000000ULL) != 0) {  
570 - printf("VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_lx ", %s, %s, %s, ctx %" PRId64 "\n",  
571 - env->itlb_tag[i] & ~0x1fffULL,  
572 - env->itlb_tte[i] & 0x1ffffffe000ULL,  
573 - mask,  
574 - env->itlb_tte[i] & 0x4? "priv": "user",  
575 - env->itlb_tte[i] & 0x40? "locked": "unlocked",  
576 - env->itlb_tag[i] & 0x1fffULL);  
577 - }  
578 - } 552 + printf("IMMU dump:\n");
  553 + for (i = 0; i < 64; i++) {
  554 + switch ((env->itlb_tte[i] >> 61) & 3) {
  555 + default:
  556 + case 0x0:
  557 + mask = " 8k";
  558 + break;
  559 + case 0x1:
  560 + mask = " 64k";
  561 + break;
  562 + case 0x2:
  563 + mask = "512k";
  564 + break;
  565 + case 0x3:
  566 + mask = " 4M";
  567 + break;
  568 + }
  569 + if ((env->itlb_tte[i] & 0x8000000000000000ULL) != 0) {
  570 + printf("VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_lx ", %s, %s, %s, ctx %" PRId64 "\n",
  571 + env->itlb_tag[i] & ~0x1fffULL,
  572 + env->itlb_tte[i] & 0x1ffffffe000ULL,
  573 + mask,
  574 + env->itlb_tte[i] & 0x4? "priv": "user",
  575 + env->itlb_tte[i] & 0x40? "locked": "unlocked",
  576 + env->itlb_tag[i] & 0x1fffULL);
  577 + }
  578 + }
579 } 579 }
580 } 580 }
581 #endif /* DEBUG_MMU */ 581 #endif /* DEBUG_MMU */
target-sparc/op.c
@@ -376,33 +376,33 @@ void OPPROTO op_add_T1_T0_cc(void) @@ -376,33 +376,33 @@ void OPPROTO op_add_T1_T0_cc(void)
376 env->psr = 0; 376 env->psr = 0;
377 #ifdef TARGET_SPARC64 377 #ifdef TARGET_SPARC64
378 if (!(T0 & 0xffffffff)) 378 if (!(T0 & 0xffffffff))
379 - env->psr |= PSR_ZERO; 379 + env->psr |= PSR_ZERO;
380 if ((int32_t) T0 < 0) 380 if ((int32_t) T0 < 0)
381 - env->psr |= PSR_NEG; 381 + env->psr |= PSR_NEG;
382 if ((T0 & 0xffffffff) < (src1 & 0xffffffff)) 382 if ((T0 & 0xffffffff) < (src1 & 0xffffffff))
383 - env->psr |= PSR_CARRY; 383 + env->psr |= PSR_CARRY;
384 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff) ^ -1) & 384 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff) ^ -1) &
385 - ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))  
386 - env->psr |= PSR_OVF; 385 + ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))
  386 + env->psr |= PSR_OVF;
387 387
388 env->xcc = 0; 388 env->xcc = 0;
389 if (!T0) 389 if (!T0)
390 - env->xcc |= PSR_ZERO; 390 + env->xcc |= PSR_ZERO;
391 if ((int64_t) T0 < 0) 391 if ((int64_t) T0 < 0)
392 - env->xcc |= PSR_NEG; 392 + env->xcc |= PSR_NEG;
393 if (T0 < src1) 393 if (T0 < src1)
394 - env->xcc |= PSR_CARRY; 394 + env->xcc |= PSR_CARRY;
395 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1ULL << 63)) 395 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1ULL << 63))
396 - env->xcc |= PSR_OVF; 396 + env->xcc |= PSR_OVF;
397 #else 397 #else
398 if (!T0) 398 if (!T0)
399 - env->psr |= PSR_ZERO; 399 + env->psr |= PSR_ZERO;
400 if ((int32_t) T0 < 0) 400 if ((int32_t) T0 < 0)
401 - env->psr |= PSR_NEG; 401 + env->psr |= PSR_NEG;
402 if (T0 < src1) 402 if (T0 < src1)
403 - env->psr |= PSR_CARRY; 403 + env->psr |= PSR_CARRY;
404 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1 << 31)) 404 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1 << 31))
405 - env->psr |= PSR_OVF; 405 + env->psr |= PSR_OVF;
406 #endif 406 #endif
407 FORCE_RET(); 407 FORCE_RET();
408 } 408 }
@@ -448,26 +448,26 @@ void OPPROTO op_addx_T1_T0_cc(void) @@ -448,26 +448,26 @@ void OPPROTO op_addx_T1_T0_cc(void)
448 } 448 }
449 #ifdef TARGET_SPARC64 449 #ifdef TARGET_SPARC64
450 if (!(T0 & 0xffffffff)) 450 if (!(T0 & 0xffffffff))
451 - env->psr |= PSR_ZERO; 451 + env->psr |= PSR_ZERO;
452 if ((int32_t) T0 < 0) 452 if ((int32_t) T0 < 0)
453 - env->psr |= PSR_NEG; 453 + env->psr |= PSR_NEG;
454 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff) ^ -1) & 454 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff) ^ -1) &
455 - ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))  
456 - env->psr |= PSR_OVF; 455 + ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))
  456 + env->psr |= PSR_OVF;
457 457
458 if (!T0) 458 if (!T0)
459 - env->xcc |= PSR_ZERO; 459 + env->xcc |= PSR_ZERO;
460 if ((int64_t) T0 < 0) 460 if ((int64_t) T0 < 0)
461 - env->xcc |= PSR_NEG; 461 + env->xcc |= PSR_NEG;
462 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1ULL << 63)) 462 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1ULL << 63))
463 - env->xcc |= PSR_OVF; 463 + env->xcc |= PSR_OVF;
464 #else 464 #else
465 if (!T0) 465 if (!T0)
466 - env->psr |= PSR_ZERO; 466 + env->psr |= PSR_ZERO;
467 if ((int32_t) T0 < 0) 467 if ((int32_t) T0 < 0)
468 - env->psr |= PSR_NEG; 468 + env->psr |= PSR_NEG;
469 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1 << 31)) 469 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1 << 31))
470 - env->psr |= PSR_OVF; 470 + env->psr |= PSR_OVF;
471 #endif 471 #endif
472 FORCE_RET(); 472 FORCE_RET();
473 } 473 }
@@ -481,37 +481,37 @@ void OPPROTO op_tadd_T1_T0_cc(void) @@ -481,37 +481,37 @@ void OPPROTO op_tadd_T1_T0_cc(void)
481 env->psr = 0; 481 env->psr = 0;
482 #ifdef TARGET_SPARC64 482 #ifdef TARGET_SPARC64
483 if (!(T0 & 0xffffffff)) 483 if (!(T0 & 0xffffffff))
484 - env->psr |= PSR_ZERO; 484 + env->psr |= PSR_ZERO;
485 if ((int32_t) T0 < 0) 485 if ((int32_t) T0 < 0)
486 - env->psr |= PSR_NEG; 486 + env->psr |= PSR_NEG;
487 if ((T0 & 0xffffffff) < (src1 & 0xffffffff)) 487 if ((T0 & 0xffffffff) < (src1 & 0xffffffff))
488 - env->psr |= PSR_CARRY; 488 + env->psr |= PSR_CARRY;
489 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff) ^ -1) & 489 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff) ^ -1) &
490 - ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))  
491 - env->psr |= PSR_OVF; 490 + ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))
  491 + env->psr |= PSR_OVF;
492 if ((src1 & 0x03) || (T1 & 0x03)) 492 if ((src1 & 0x03) || (T1 & 0x03))
493 - env->psr |= PSR_OVF; 493 + env->psr |= PSR_OVF;
494 494
495 env->xcc = 0; 495 env->xcc = 0;
496 if (!T0) 496 if (!T0)
497 - env->xcc |= PSR_ZERO; 497 + env->xcc |= PSR_ZERO;
498 if ((int64_t) T0 < 0) 498 if ((int64_t) T0 < 0)
499 - env->xcc |= PSR_NEG; 499 + env->xcc |= PSR_NEG;
500 if (T0 < src1) 500 if (T0 < src1)
501 - env->xcc |= PSR_CARRY; 501 + env->xcc |= PSR_CARRY;
502 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1ULL << 63)) 502 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1ULL << 63))
503 - env->xcc |= PSR_OVF; 503 + env->xcc |= PSR_OVF;
504 #else 504 #else
505 if (!T0) 505 if (!T0)
506 - env->psr |= PSR_ZERO; 506 + env->psr |= PSR_ZERO;
507 if ((int32_t) T0 < 0) 507 if ((int32_t) T0 < 0)
508 - env->psr |= PSR_NEG; 508 + env->psr |= PSR_NEG;
509 if (T0 < src1) 509 if (T0 < src1)
510 - env->psr |= PSR_CARRY; 510 + env->psr |= PSR_CARRY;
511 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1 << 31)) 511 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1 << 31))
512 - env->psr |= PSR_OVF; 512 + env->psr |= PSR_OVF;
513 if ((src1 & 0x03) || (T1 & 0x03)) 513 if ((src1 & 0x03) || (T1 & 0x03))
514 - env->psr |= PSR_OVF; 514 + env->psr |= PSR_OVF;
515 #endif 515 #endif
516 FORCE_RET(); 516 FORCE_RET();
517 } 517 }
@@ -528,7 +528,7 @@ void OPPROTO op_tadd_T1_T0_ccTV(void) @@ -528,7 +528,7 @@ void OPPROTO op_tadd_T1_T0_ccTV(void)
528 528
529 #ifdef TARGET_SPARC64 529 #ifdef TARGET_SPARC64
530 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff) ^ -1) & 530 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff) ^ -1) &
531 - ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31)) 531 + ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))
532 raise_exception(TT_TOVF); 532 raise_exception(TT_TOVF);
533 #else 533 #else
534 if ((src1 & 0x03) || (T1 & 0x03)) 534 if ((src1 & 0x03) || (T1 & 0x03))
@@ -538,26 +538,26 @@ void OPPROTO op_tadd_T1_T0_ccTV(void) @@ -538,26 +538,26 @@ void OPPROTO op_tadd_T1_T0_ccTV(void)
538 env->psr = 0; 538 env->psr = 0;
539 #ifdef TARGET_SPARC64 539 #ifdef TARGET_SPARC64
540 if (!(T0 & 0xffffffff)) 540 if (!(T0 & 0xffffffff))
541 - env->psr |= PSR_ZERO; 541 + env->psr |= PSR_ZERO;
542 if ((int32_t) T0 < 0) 542 if ((int32_t) T0 < 0)
543 - env->psr |= PSR_NEG; 543 + env->psr |= PSR_NEG;
544 if ((T0 & 0xffffffff) < (src1 & 0xffffffff)) 544 if ((T0 & 0xffffffff) < (src1 & 0xffffffff))
545 - env->psr |= PSR_CARRY; 545 + env->psr |= PSR_CARRY;
546 546
547 env->xcc = 0; 547 env->xcc = 0;
548 if (!T0) 548 if (!T0)
549 - env->xcc |= PSR_ZERO; 549 + env->xcc |= PSR_ZERO;
550 if ((int64_t) T0 < 0) 550 if ((int64_t) T0 < 0)
551 - env->xcc |= PSR_NEG; 551 + env->xcc |= PSR_NEG;
552 if (T0 < src1) 552 if (T0 < src1)
553 - env->xcc |= PSR_CARRY; 553 + env->xcc |= PSR_CARRY;
554 #else 554 #else
555 if (!T0) 555 if (!T0)
556 - env->psr |= PSR_ZERO; 556 + env->psr |= PSR_ZERO;
557 if ((int32_t) T0 < 0) 557 if ((int32_t) T0 < 0)
558 - env->psr |= PSR_NEG; 558 + env->psr |= PSR_NEG;
559 if (T0 < src1) 559 if (T0 < src1)
560 - env->psr |= PSR_CARRY; 560 + env->psr |= PSR_CARRY;
561 #endif 561 #endif
562 FORCE_RET(); 562 FORCE_RET();
563 } 563 }
@@ -576,33 +576,33 @@ void OPPROTO op_sub_T1_T0_cc(void) @@ -576,33 +576,33 @@ void OPPROTO op_sub_T1_T0_cc(void)
576 env->psr = 0; 576 env->psr = 0;
577 #ifdef TARGET_SPARC64 577 #ifdef TARGET_SPARC64
578 if (!(T0 & 0xffffffff)) 578 if (!(T0 & 0xffffffff))
579 - env->psr |= PSR_ZERO; 579 + env->psr |= PSR_ZERO;
580 if ((int32_t) T0 < 0) 580 if ((int32_t) T0 < 0)
581 - env->psr |= PSR_NEG; 581 + env->psr |= PSR_NEG;
582 if ((src1 & 0xffffffff) < (T1 & 0xffffffff)) 582 if ((src1 & 0xffffffff) < (T1 & 0xffffffff))
583 - env->psr |= PSR_CARRY; 583 + env->psr |= PSR_CARRY;
584 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff)) & 584 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff)) &
585 - ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))  
586 - env->psr |= PSR_OVF; 585 + ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))
  586 + env->psr |= PSR_OVF;
587 587
588 env->xcc = 0; 588 env->xcc = 0;
589 if (!T0) 589 if (!T0)
590 - env->xcc |= PSR_ZERO; 590 + env->xcc |= PSR_ZERO;
591 if ((int64_t) T0 < 0) 591 if ((int64_t) T0 < 0)
592 - env->xcc |= PSR_NEG; 592 + env->xcc |= PSR_NEG;
593 if (src1 < T1) 593 if (src1 < T1)
594 - env->xcc |= PSR_CARRY; 594 + env->xcc |= PSR_CARRY;
595 if (((src1 ^ T1) & (src1 ^ T0)) & (1ULL << 63)) 595 if (((src1 ^ T1) & (src1 ^ T0)) & (1ULL << 63))
596 - env->xcc |= PSR_OVF; 596 + env->xcc |= PSR_OVF;
597 #else 597 #else
598 if (!T0) 598 if (!T0)
599 - env->psr |= PSR_ZERO; 599 + env->psr |= PSR_ZERO;
600 if ((int32_t) T0 < 0) 600 if ((int32_t) T0 < 0)
601 - env->psr |= PSR_NEG; 601 + env->psr |= PSR_NEG;
602 if (src1 < T1) 602 if (src1 < T1)
603 - env->psr |= PSR_CARRY; 603 + env->psr |= PSR_CARRY;
604 if (((src1 ^ T1) & (src1 ^ T0)) & (1 << 31)) 604 if (((src1 ^ T1) & (src1 ^ T0)) & (1 << 31))
605 - env->psr |= PSR_OVF; 605 + env->psr |= PSR_OVF;
606 #endif 606 #endif
607 FORCE_RET(); 607 FORCE_RET();
608 } 608 }
@@ -648,26 +648,26 @@ void OPPROTO op_subx_T1_T0_cc(void) @@ -648,26 +648,26 @@ void OPPROTO op_subx_T1_T0_cc(void)
648 } 648 }
649 #ifdef TARGET_SPARC64 649 #ifdef TARGET_SPARC64
650 if (!(T0 & 0xffffffff)) 650 if (!(T0 & 0xffffffff))
651 - env->psr |= PSR_ZERO; 651 + env->psr |= PSR_ZERO;
652 if ((int32_t) T0 < 0) 652 if ((int32_t) T0 < 0)
653 - env->psr |= PSR_NEG; 653 + env->psr |= PSR_NEG;
654 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff)) & 654 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff)) &
655 - ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))  
656 - env->psr |= PSR_OVF; 655 + ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))
  656 + env->psr |= PSR_OVF;
657 657
658 if (!T0) 658 if (!T0)
659 - env->xcc |= PSR_ZERO; 659 + env->xcc |= PSR_ZERO;
660 if ((int64_t) T0 < 0) 660 if ((int64_t) T0 < 0)
661 - env->xcc |= PSR_NEG; 661 + env->xcc |= PSR_NEG;
662 if (((src1 ^ T1) & (src1 ^ T0)) & (1ULL << 63)) 662 if (((src1 ^ T1) & (src1 ^ T0)) & (1ULL << 63))
663 - env->xcc |= PSR_OVF; 663 + env->xcc |= PSR_OVF;
664 #else 664 #else
665 if (!T0) 665 if (!T0)
666 - env->psr |= PSR_ZERO; 666 + env->psr |= PSR_ZERO;
667 if ((int32_t) T0 < 0) 667 if ((int32_t) T0 < 0)
668 - env->psr |= PSR_NEG; 668 + env->psr |= PSR_NEG;
669 if (((src1 ^ T1) & (src1 ^ T0)) & (1 << 31)) 669 if (((src1 ^ T1) & (src1 ^ T0)) & (1 << 31))
670 - env->psr |= PSR_OVF; 670 + env->psr |= PSR_OVF;
671 #endif 671 #endif
672 FORCE_RET(); 672 FORCE_RET();
673 } 673 }
@@ -681,37 +681,37 @@ void OPPROTO op_tsub_T1_T0_cc(void) @@ -681,37 +681,37 @@ void OPPROTO op_tsub_T1_T0_cc(void)
681 env->psr = 0; 681 env->psr = 0;
682 #ifdef TARGET_SPARC64 682 #ifdef TARGET_SPARC64
683 if (!(T0 & 0xffffffff)) 683 if (!(T0 & 0xffffffff))
684 - env->psr |= PSR_ZERO; 684 + env->psr |= PSR_ZERO;
685 if ((int32_t) T0 < 0) 685 if ((int32_t) T0 < 0)
686 - env->psr |= PSR_NEG; 686 + env->psr |= PSR_NEG;
687 if ((src1 & 0xffffffff) < (T1 & 0xffffffff)) 687 if ((src1 & 0xffffffff) < (T1 & 0xffffffff))
688 - env->psr |= PSR_CARRY; 688 + env->psr |= PSR_CARRY;
689 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff)) & 689 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff)) &
690 - ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))  
691 - env->psr |= PSR_OVF; 690 + ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))
  691 + env->psr |= PSR_OVF;
692 if ((src1 & 0x03) || (T1 & 0x03)) 692 if ((src1 & 0x03) || (T1 & 0x03))
693 - env->psr |= PSR_OVF; 693 + env->psr |= PSR_OVF;
694 694
695 env->xcc = 0; 695 env->xcc = 0;
696 if (!T0) 696 if (!T0)
697 - env->xcc |= PSR_ZERO; 697 + env->xcc |= PSR_ZERO;
698 if ((int64_t) T0 < 0) 698 if ((int64_t) T0 < 0)
699 - env->xcc |= PSR_NEG; 699 + env->xcc |= PSR_NEG;
700 if (src1 < T1) 700 if (src1 < T1)
701 - env->xcc |= PSR_CARRY; 701 + env->xcc |= PSR_CARRY;
702 if (((src1 ^ T1) & (src1 ^ T0)) & (1ULL << 63)) 702 if (((src1 ^ T1) & (src1 ^ T0)) & (1ULL << 63))
703 - env->xcc |= PSR_OVF; 703 + env->xcc |= PSR_OVF;
704 #else 704 #else
705 if (!T0) 705 if (!T0)
706 - env->psr |= PSR_ZERO; 706 + env->psr |= PSR_ZERO;
707 if ((int32_t) T0 < 0) 707 if ((int32_t) T0 < 0)
708 - env->psr |= PSR_NEG; 708 + env->psr |= PSR_NEG;
709 if (src1 < T1) 709 if (src1 < T1)
710 - env->psr |= PSR_CARRY; 710 + env->psr |= PSR_CARRY;
711 if (((src1 ^ T1) & (src1 ^ T0)) & (1 << 31)) 711 if (((src1 ^ T1) & (src1 ^ T0)) & (1 << 31))
712 - env->psr |= PSR_OVF; 712 + env->psr |= PSR_OVF;
713 if ((src1 & 0x03) || (T1 & 0x03)) 713 if ((src1 & 0x03) || (T1 & 0x03))
714 - env->psr |= PSR_OVF; 714 + env->psr |= PSR_OVF;
715 #endif 715 #endif
716 FORCE_RET(); 716 FORCE_RET();
717 } 717 }
@@ -728,7 +728,7 @@ void OPPROTO op_tsub_T1_T0_ccTV(void) @@ -728,7 +728,7 @@ void OPPROTO op_tsub_T1_T0_ccTV(void)
728 728
729 #ifdef TARGET_SPARC64 729 #ifdef TARGET_SPARC64
730 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff)) & 730 if ((((src1 & 0xffffffff) ^ (T1 & 0xffffffff)) &
731 - ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31)) 731 + ((src1 & 0xffffffff) ^ (T0 & 0xffffffff))) & (1 << 31))
732 raise_exception(TT_TOVF); 732 raise_exception(TT_TOVF);
733 #else 733 #else
734 if (((src1 ^ T1) & (src1 ^ T0)) & (1 << 31)) 734 if (((src1 ^ T1) & (src1 ^ T0)) & (1 << 31))
@@ -738,26 +738,26 @@ void OPPROTO op_tsub_T1_T0_ccTV(void) @@ -738,26 +738,26 @@ void OPPROTO op_tsub_T1_T0_ccTV(void)
738 env->psr = 0; 738 env->psr = 0;
739 #ifdef TARGET_SPARC64 739 #ifdef TARGET_SPARC64
740 if (!(T0 & 0xffffffff)) 740 if (!(T0 & 0xffffffff))
741 - env->psr |= PSR_ZERO; 741 + env->psr |= PSR_ZERO;
742 if ((int32_t) T0 < 0) 742 if ((int32_t) T0 < 0)
743 - env->psr |= PSR_NEG; 743 + env->psr |= PSR_NEG;
744 if ((src1 & 0xffffffff) < (T1 & 0xffffffff)) 744 if ((src1 & 0xffffffff) < (T1 & 0xffffffff))
745 - env->psr |= PSR_CARRY; 745 + env->psr |= PSR_CARRY;
746 746
747 env->xcc = 0; 747 env->xcc = 0;
748 if (!T0) 748 if (!T0)
749 - env->xcc |= PSR_ZERO; 749 + env->xcc |= PSR_ZERO;
750 if ((int64_t) T0 < 0) 750 if ((int64_t) T0 < 0)
751 - env->xcc |= PSR_NEG; 751 + env->xcc |= PSR_NEG;
752 if (src1 < T1) 752 if (src1 < T1)
753 - env->xcc |= PSR_CARRY; 753 + env->xcc |= PSR_CARRY;
754 #else 754 #else
755 if (!T0) 755 if (!T0)
756 - env->psr |= PSR_ZERO; 756 + env->psr |= PSR_ZERO;
757 if ((int32_t) T0 < 0) 757 if ((int32_t) T0 < 0)
758 - env->psr |= PSR_NEG; 758 + env->psr |= PSR_NEG;
759 if (src1 < T1) 759 if (src1 < T1)
760 - env->psr |= PSR_CARRY; 760 + env->psr |= PSR_CARRY;
761 #endif 761 #endif
762 FORCE_RET(); 762 FORCE_RET();
763 } 763 }
@@ -833,13 +833,13 @@ void OPPROTO op_mulscc_T1_T0(void) @@ -833,13 +833,13 @@ void OPPROTO op_mulscc_T1_T0(void)
833 T0 += T1; 833 T0 += T1;
834 env->psr = 0; 834 env->psr = 0;
835 if (!T0) 835 if (!T0)
836 - env->psr |= PSR_ZERO; 836 + env->psr |= PSR_ZERO;
837 if ((int32_t) T0 < 0) 837 if ((int32_t) T0 < 0)
838 - env->psr |= PSR_NEG; 838 + env->psr |= PSR_NEG;
839 if (T0 < src1) 839 if (T0 < src1)
840 - env->psr |= PSR_CARRY; 840 + env->psr |= PSR_CARRY;
841 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1 << 31)) 841 if (((src1 ^ T1 ^ -1) & (src1 ^ T0)) & (1 << 31))
842 - env->psr |= PSR_OVF; 842 + env->psr |= PSR_OVF;
843 env->y = (b2 << 31) | (env->y >> 1); 843 env->y = (b2 << 31) | (env->y >> 1);
844 FORCE_RET(); 844 FORCE_RET();
845 } 845 }
@@ -858,11 +858,11 @@ void OPPROTO op_udiv_T1_T0(void) @@ -858,11 +858,11 @@ void OPPROTO op_udiv_T1_T0(void)
858 858
859 x0 = x0 / x1; 859 x0 = x0 / x1;
860 if (x0 > 0xffffffff) { 860 if (x0 > 0xffffffff) {
861 - T0 = 0xffffffff;  
862 - T1 = 1; 861 + T0 = 0xffffffff;
  862 + T1 = 1;
863 } else { 863 } else {
864 - T0 = x0;  
865 - T1 = 0; 864 + T0 = x0;
  865 + T1 = 0;
866 } 866 }
867 FORCE_RET(); 867 FORCE_RET();
868 } 868 }
@@ -881,11 +881,11 @@ void OPPROTO op_sdiv_T1_T0(void) @@ -881,11 +881,11 @@ void OPPROTO op_sdiv_T1_T0(void)
881 881
882 x0 = x0 / x1; 882 x0 = x0 / x1;
883 if ((int32_t) x0 != x0) { 883 if ((int32_t) x0 != x0) {
884 - T0 = x0 < 0? 0x80000000: 0x7fffffff;  
885 - T1 = 1; 884 + T0 = x0 < 0? 0x80000000: 0x7fffffff;
  885 + T1 = 1;
886 } else { 886 } else {
887 - T0 = x0;  
888 - T1 = 0; 887 + T0 = x0;
  888 + T1 = 0;
889 } 889 }
890 FORCE_RET(); 890 FORCE_RET();
891 } 891 }
@@ -895,24 +895,24 @@ void OPPROTO op_div_cc(void) @@ -895,24 +895,24 @@ void OPPROTO op_div_cc(void)
895 env->psr = 0; 895 env->psr = 0;
896 #ifdef TARGET_SPARC64 896 #ifdef TARGET_SPARC64
897 if (!T0) 897 if (!T0)
898 - env->psr |= PSR_ZERO; 898 + env->psr |= PSR_ZERO;
899 if ((int32_t) T0 < 0) 899 if ((int32_t) T0 < 0)
900 - env->psr |= PSR_NEG; 900 + env->psr |= PSR_NEG;
901 if (T1) 901 if (T1)
902 - env->psr |= PSR_OVF; 902 + env->psr |= PSR_OVF;
903 903
904 env->xcc = 0; 904 env->xcc = 0;
905 if (!T0) 905 if (!T0)
906 - env->xcc |= PSR_ZERO; 906 + env->xcc |= PSR_ZERO;
907 if ((int64_t) T0 < 0) 907 if ((int64_t) T0 < 0)
908 - env->xcc |= PSR_NEG; 908 + env->xcc |= PSR_NEG;
909 #else 909 #else
910 if (!T0) 910 if (!T0)
911 - env->psr |= PSR_ZERO; 911 + env->psr |= PSR_ZERO;
912 if ((int32_t) T0 < 0) 912 if ((int32_t) T0 < 0)
913 - env->psr |= PSR_NEG; 913 + env->psr |= PSR_NEG;
914 if (T1) 914 if (T1)
915 - env->psr |= PSR_OVF; 915 + env->psr |= PSR_OVF;
916 #endif 916 #endif
917 FORCE_RET(); 917 FORCE_RET();
918 } 918 }
@@ -939,9 +939,9 @@ void OPPROTO op_sdivx_T1_T0(void) @@ -939,9 +939,9 @@ void OPPROTO op_sdivx_T1_T0(void)
939 raise_exception(TT_DIV_ZERO); 939 raise_exception(TT_DIV_ZERO);
940 } 940 }
941 if (T0 == INT64_MIN && T1 == -1) 941 if (T0 == INT64_MIN && T1 == -1)
942 - T0 = INT64_MIN; 942 + T0 = INT64_MIN;
943 else 943 else
944 - T0 /= (target_long) T1; 944 + T0 /= (target_long) T1;
945 FORCE_RET(); 945 FORCE_RET();
946 } 946 }
947 #endif 947 #endif
@@ -951,20 +951,20 @@ void OPPROTO op_logic_T0_cc(void) @@ -951,20 +951,20 @@ void OPPROTO op_logic_T0_cc(void)
951 env->psr = 0; 951 env->psr = 0;
952 #ifdef TARGET_SPARC64 952 #ifdef TARGET_SPARC64
953 if (!(T0 & 0xffffffff)) 953 if (!(T0 & 0xffffffff))
954 - env->psr |= PSR_ZERO; 954 + env->psr |= PSR_ZERO;
955 if ((int32_t) T0 < 0) 955 if ((int32_t) T0 < 0)
956 - env->psr |= PSR_NEG; 956 + env->psr |= PSR_NEG;
957 957
958 env->xcc = 0; 958 env->xcc = 0;
959 if (!T0) 959 if (!T0)
960 - env->xcc |= PSR_ZERO; 960 + env->xcc |= PSR_ZERO;
961 if ((int64_t) T0 < 0) 961 if ((int64_t) T0 < 0)
962 - env->xcc |= PSR_NEG; 962 + env->xcc |= PSR_NEG;
963 #else 963 #else
964 if (!T0) 964 if (!T0)
965 - env->psr |= PSR_ZERO; 965 + env->psr |= PSR_ZERO;
966 if ((int32_t) T0 < 0) 966 if ((int32_t) T0 < 0)
967 - env->psr |= PSR_NEG; 967 + env->psr |= PSR_NEG;
968 #endif 968 #endif
969 FORCE_RET(); 969 FORCE_RET();
970 } 970 }
@@ -1200,17 +1200,17 @@ void OPPROTO op_save(void) @@ -1200,17 +1200,17 @@ void OPPROTO op_save(void)
1200 cwp = (env->cwp - 1) & (NWINDOWS - 1); 1200 cwp = (env->cwp - 1) & (NWINDOWS - 1);
1201 if (env->cansave == 0) { 1201 if (env->cansave == 0) {
1202 raise_exception(TT_SPILL | (env->otherwin != 0 ? 1202 raise_exception(TT_SPILL | (env->otherwin != 0 ?
1203 - (TT_WOTHER | ((env->wstate & 0x38) >> 1)):  
1204 - ((env->wstate & 0x7) << 2))); 1203 + (TT_WOTHER | ((env->wstate & 0x38) >> 1)):
  1204 + ((env->wstate & 0x7) << 2)));
1205 } else { 1205 } else {
1206 - if (env->cleanwin - env->canrestore == 0) {  
1207 - // XXX Clean windows without trap  
1208 - raise_exception(TT_CLRWIN);  
1209 - } else {  
1210 - env->cansave--;  
1211 - env->canrestore++;  
1212 - set_cwp(cwp);  
1213 - } 1206 + if (env->cleanwin - env->canrestore == 0) {
  1207 + // XXX Clean windows without trap
  1208 + raise_exception(TT_CLRWIN);
  1209 + } else {
  1210 + env->cansave--;
  1211 + env->canrestore++;
  1212 + set_cwp(cwp);
  1213 + }
1214 } 1214 }
1215 FORCE_RET(); 1215 FORCE_RET();
1216 } 1216 }
@@ -1221,12 +1221,12 @@ void OPPROTO op_restore(void) @@ -1221,12 +1221,12 @@ void OPPROTO op_restore(void)
1221 cwp = (env->cwp + 1) & (NWINDOWS - 1); 1221 cwp = (env->cwp + 1) & (NWINDOWS - 1);
1222 if (env->canrestore == 0) { 1222 if (env->canrestore == 0) {
1223 raise_exception(TT_FILL | (env->otherwin != 0 ? 1223 raise_exception(TT_FILL | (env->otherwin != 0 ?
1224 - (TT_WOTHER | ((env->wstate & 0x38) >> 1)):  
1225 - ((env->wstate & 0x7) << 2))); 1224 + (TT_WOTHER | ((env->wstate & 0x38) >> 1)):
  1225 + ((env->wstate & 0x7) << 2)));
1226 } else { 1226 } else {
1227 - env->cansave++;  
1228 - env->canrestore--;  
1229 - set_cwp(cwp); 1227 + env->cansave++;
  1228 + env->canrestore--;
  1229 + set_cwp(cwp);
1230 } 1230 }
1231 FORCE_RET(); 1231 FORCE_RET();
1232 } 1232 }
@@ -1576,15 +1576,15 @@ void OPPROTO op_clear_ieee_excp_and_FTT(void) @@ -1576,15 +1576,15 @@ void OPPROTO op_clear_ieee_excp_and_FTT(void)
1576 #define F_BINOP(name) \ 1576 #define F_BINOP(name) \
1577 F_OP(name, s) \ 1577 F_OP(name, s) \
1578 { \ 1578 { \
1579 - set_float_exception_flags(0, &env->fp_status); \ 1579 + set_float_exception_flags(0, &env->fp_status); \
1580 FT0 = float32_ ## name (FT0, FT1, &env->fp_status); \ 1580 FT0 = float32_ ## name (FT0, FT1, &env->fp_status); \
1581 - check_ieee_exceptions(); \ 1581 + check_ieee_exceptions(); \
1582 } \ 1582 } \
1583 F_OP(name, d) \ 1583 F_OP(name, d) \
1584 { \ 1584 { \
1585 - set_float_exception_flags(0, &env->fp_status); \ 1585 + set_float_exception_flags(0, &env->fp_status); \
1586 DT0 = float64_ ## name (DT0, DT1, &env->fp_status); \ 1586 DT0 = float64_ ## name (DT0, DT1, &env->fp_status); \
1587 - check_ieee_exceptions(); \ 1587 + check_ieee_exceptions(); \
1588 } 1588 }
1589 1589
1590 F_BINOP(add); 1590 F_BINOP(add);
@@ -1784,27 +1784,27 @@ void OPPROTO op_fdtox(void) @@ -1784,27 +1784,27 @@ void OPPROTO op_fdtox(void)
1784 void OPPROTO op_fmovs_cc(void) 1784 void OPPROTO op_fmovs_cc(void)
1785 { 1785 {
1786 if (T2) 1786 if (T2)
1787 - FT0 = FT1; 1787 + FT0 = FT1;
1788 } 1788 }
1789 1789
1790 void OPPROTO op_fmovd_cc(void) 1790 void OPPROTO op_fmovd_cc(void)
1791 { 1791 {
1792 if (T2) 1792 if (T2)
1793 - DT0 = DT1; 1793 + DT0 = DT1;
1794 } 1794 }
1795 1795
1796 void OPPROTO op_mov_cc(void) 1796 void OPPROTO op_mov_cc(void)
1797 { 1797 {
1798 if (T2) 1798 if (T2)
1799 - T0 = T1; 1799 + T0 = T1;
1800 } 1800 }
1801 1801
1802 void OPPROTO op_flushw(void) 1802 void OPPROTO op_flushw(void)
1803 { 1803 {
1804 if (env->cansave != NWINDOWS - 2) { 1804 if (env->cansave != NWINDOWS - 2) {
1805 raise_exception(TT_SPILL | (env->otherwin != 0 ? 1805 raise_exception(TT_SPILL | (env->otherwin != 0 ?
1806 - (TT_WOTHER | ((env->wstate & 0x38) >> 1)):  
1807 - ((env->wstate & 0x7) << 2))); 1806 + (TT_WOTHER | ((env->wstate & 0x38) >> 1)):
  1807 + ((env->wstate & 0x7) << 2)));
1808 } 1808 }
1809 } 1809 }
1810 1810
@@ -1812,9 +1812,9 @@ void OPPROTO op_saved(void) @@ -1812,9 +1812,9 @@ void OPPROTO op_saved(void)
1812 { 1812 {
1813 env->cansave++; 1813 env->cansave++;
1814 if (env->otherwin == 0) 1814 if (env->otherwin == 0)
1815 - env->canrestore--; 1815 + env->canrestore--;
1816 else 1816 else
1817 - env->otherwin--; 1817 + env->otherwin--;
1818 FORCE_RET(); 1818 FORCE_RET();
1819 } 1819 }
1820 1820
@@ -1822,11 +1822,11 @@ void OPPROTO op_restored(void) @@ -1822,11 +1822,11 @@ void OPPROTO op_restored(void)
1822 { 1822 {
1823 env->canrestore++; 1823 env->canrestore++;
1824 if (env->cleanwin < NWINDOWS - 1) 1824 if (env->cleanwin < NWINDOWS - 1)
1825 - env->cleanwin++; 1825 + env->cleanwin++;
1826 if (env->otherwin == 0) 1826 if (env->otherwin == 0)
1827 - env->cansave--; 1827 + env->cansave--;
1828 else 1828 else
1829 - env->otherwin--; 1829 + env->otherwin--;
1830 FORCE_RET(); 1830 FORCE_RET();
1831 } 1831 }
1832 1832
target-sparc/op_helper.c
@@ -16,29 +16,29 @@ void check_ieee_exceptions() @@ -16,29 +16,29 @@ void check_ieee_exceptions()
16 T0 = get_float_exception_flags(&env->fp_status); 16 T0 = get_float_exception_flags(&env->fp_status);
17 if (T0) 17 if (T0)
18 { 18 {
19 - /* Copy IEEE 754 flags into FSR */  
20 - if (T0 & float_flag_invalid)  
21 - env->fsr |= FSR_NVC;  
22 - if (T0 & float_flag_overflow)  
23 - env->fsr |= FSR_OFC;  
24 - if (T0 & float_flag_underflow)  
25 - env->fsr |= FSR_UFC;  
26 - if (T0 & float_flag_divbyzero)  
27 - env->fsr |= FSR_DZC;  
28 - if (T0 & float_flag_inexact)  
29 - env->fsr |= FSR_NXC;  
30 -  
31 - if ((env->fsr & FSR_CEXC_MASK) & ((env->fsr & FSR_TEM_MASK) >> 23))  
32 - {  
33 - /* Unmasked exception, generate a trap */  
34 - env->fsr |= FSR_FTT_IEEE_EXCP;  
35 - raise_exception(TT_FP_EXCP);  
36 - }  
37 - else  
38 - {  
39 - /* Accumulate exceptions */  
40 - env->fsr |= (env->fsr & FSR_CEXC_MASK) << 5;  
41 - } 19 + /* Copy IEEE 754 flags into FSR */
  20 + if (T0 & float_flag_invalid)
  21 + env->fsr |= FSR_NVC;
  22 + if (T0 & float_flag_overflow)
  23 + env->fsr |= FSR_OFC;
  24 + if (T0 & float_flag_underflow)
  25 + env->fsr |= FSR_UFC;
  26 + if (T0 & float_flag_divbyzero)
  27 + env->fsr |= FSR_DZC;
  28 + if (T0 & float_flag_inexact)
  29 + env->fsr |= FSR_NXC;
  30 +
  31 + if ((env->fsr & FSR_CEXC_MASK) & ((env->fsr & FSR_TEM_MASK) >> 23))
  32 + {
  33 + /* Unmasked exception, generate a trap */
  34 + env->fsr |= FSR_FTT_IEEE_EXCP;
  35 + raise_exception(TT_FP_EXCP);
  36 + }
  37 + else
  38 + {
  39 + /* Accumulate exceptions */
  40 + env->fsr |= (env->fsr & FSR_CEXC_MASK) << 5;
  41 + }
42 } 42 }
43 } 43 }
44 44
@@ -155,33 +155,33 @@ void helper_ld_asi(int asi, int size, int sign) @@ -155,33 +155,33 @@ void helper_ld_asi(int asi, int size, int sign)
155 case 2: /* SuperSparc MXCC registers */ 155 case 2: /* SuperSparc MXCC registers */
156 break; 156 break;
157 case 3: /* MMU probe */ 157 case 3: /* MMU probe */
158 - {  
159 - int mmulev;  
160 -  
161 - mmulev = (T0 >> 8) & 15;  
162 - if (mmulev > 4)  
163 - ret = 0;  
164 - else {  
165 - ret = mmu_probe(env, T0, mmulev);  
166 - //bswap32s(&ret);  
167 - } 158 + {
  159 + int mmulev;
  160 +
  161 + mmulev = (T0 >> 8) & 15;
  162 + if (mmulev > 4)
  163 + ret = 0;
  164 + else {
  165 + ret = mmu_probe(env, T0, mmulev);
  166 + //bswap32s(&ret);
  167 + }
168 #ifdef DEBUG_MMU 168 #ifdef DEBUG_MMU
169 - printf("mmu_probe: 0x%08x (lev %d) -> 0x%08x\n", T0, mmulev, ret); 169 + printf("mmu_probe: 0x%08x (lev %d) -> 0x%08x\n", T0, mmulev, ret);
170 #endif 170 #endif
171 - }  
172 - break; 171 + }
  172 + break;
173 case 4: /* read MMU regs */ 173 case 4: /* read MMU regs */
174 - {  
175 - int reg = (T0 >> 8) & 0xf; 174 + {
  175 + int reg = (T0 >> 8) & 0xf;
176 176
177 - ret = env->mmuregs[reg];  
178 - if (reg == 3) /* Fault status cleared on read */  
179 - env->mmuregs[reg] = 0; 177 + ret = env->mmuregs[reg];
  178 + if (reg == 3) /* Fault status cleared on read */
  179 + env->mmuregs[reg] = 0;
180 #ifdef DEBUG_MMU 180 #ifdef DEBUG_MMU
181 - printf("mmu_read: reg[%d] = 0x%08x\n", reg, ret); 181 + printf("mmu_read: reg[%d] = 0x%08x\n", reg, ret);
182 #endif 182 #endif
183 - }  
184 - break; 183 + }
  184 + break;
185 case 9: /* Supervisor code access */ 185 case 9: /* Supervisor code access */
186 switch(size) { 186 switch(size) {
187 case 1: 187 case 1:
@@ -218,11 +218,11 @@ void helper_ld_asi(int asi, int size, int sign) @@ -218,11 +218,11 @@ void helper_ld_asi(int asi, int size, int sign)
218 ret = ldl_phys(T0 & ~3); 218 ret = ldl_phys(T0 & ~3);
219 break; 219 break;
220 case 8: 220 case 8:
221 - ret = ldl_phys(T0 & ~3);  
222 - T0 = ldl_phys((T0 + 4) & ~3);  
223 - break; 221 + ret = ldl_phys(T0 & ~3);
  222 + T0 = ldl_phys((T0 + 4) & ~3);
  223 + break;
224 } 224 }
225 - break; 225 + break;
226 case 0x2e: /* MMU passthrough, 0xexxxxxxxx */ 226 case 0x2e: /* MMU passthrough, 0xexxxxxxxx */
227 case 0x2f: /* MMU passthrough, 0xfxxxxxxxx */ 227 case 0x2f: /* MMU passthrough, 0xfxxxxxxxx */
228 switch(size) { 228 switch(size) {
@@ -244,14 +244,14 @@ void helper_ld_asi(int asi, int size, int sign) @@ -244,14 +244,14 @@ void helper_ld_asi(int asi, int size, int sign)
244 | ((target_phys_addr_t)(asi & 0xf) << 32)); 244 | ((target_phys_addr_t)(asi & 0xf) << 32));
245 T0 = ldl_phys((target_phys_addr_t)((T0 + 4) & ~3) 245 T0 = ldl_phys((target_phys_addr_t)((T0 + 4) & ~3)
246 | ((target_phys_addr_t)(asi & 0xf) << 32)); 246 | ((target_phys_addr_t)(asi & 0xf) << 32));
247 - break; 247 + break;
248 } 248 }
249 - break; 249 + break;
250 case 0x21 ... 0x2d: /* MMU passthrough, unassigned */ 250 case 0x21 ... 0x2d: /* MMU passthrough, unassigned */
251 default: 251 default:
252 do_unassigned_access(T0, 0, 0, 1); 252 do_unassigned_access(T0, 0, 0, 1);
253 - ret = 0;  
254 - break; 253 + ret = 0;
  254 + break;
255 } 255 }
256 T1 = ret; 256 T1 = ret;
257 } 257 }
@@ -262,48 +262,48 @@ void helper_st_asi(int asi, int size, int sign) @@ -262,48 +262,48 @@ void helper_st_asi(int asi, int size, int sign)
262 case 2: /* SuperSparc MXCC registers */ 262 case 2: /* SuperSparc MXCC registers */
263 break; 263 break;
264 case 3: /* MMU flush */ 264 case 3: /* MMU flush */
265 - {  
266 - int mmulev; 265 + {
  266 + int mmulev;
267 267
268 - mmulev = (T0 >> 8) & 15; 268 + mmulev = (T0 >> 8) & 15;
269 #ifdef DEBUG_MMU 269 #ifdef DEBUG_MMU
270 - printf("mmu flush level %d\n", mmulev); 270 + printf("mmu flush level %d\n", mmulev);
271 #endif 271 #endif
272 - switch (mmulev) {  
273 - case 0: // flush page  
274 - tlb_flush_page(env, T0 & 0xfffff000);  
275 - break;  
276 - case 1: // flush segment (256k)  
277 - case 2: // flush region (16M)  
278 - case 3: // flush context (4G)  
279 - case 4: // flush entire  
280 - tlb_flush(env, 1);  
281 - break;  
282 - default:  
283 - break;  
284 - } 272 + switch (mmulev) {
  273 + case 0: // flush page
  274 + tlb_flush_page(env, T0 & 0xfffff000);
  275 + break;
  276 + case 1: // flush segment (256k)
  277 + case 2: // flush region (16M)
  278 + case 3: // flush context (4G)
  279 + case 4: // flush entire
  280 + tlb_flush(env, 1);
  281 + break;
  282 + default:
  283 + break;
  284 + }
285 #ifdef DEBUG_MMU 285 #ifdef DEBUG_MMU
286 - dump_mmu(env); 286 + dump_mmu(env);
287 #endif 287 #endif
288 - return;  
289 - } 288 + return;
  289 + }
290 case 4: /* write MMU regs */ 290 case 4: /* write MMU regs */
291 - {  
292 - int reg = (T0 >> 8) & 0xf;  
293 - uint32_t oldreg; 291 + {
  292 + int reg = (T0 >> 8) & 0xf;
  293 + uint32_t oldreg;
294 294
295 - oldreg = env->mmuregs[reg]; 295 + oldreg = env->mmuregs[reg];
296 switch(reg) { 296 switch(reg) {
297 case 0: 297 case 0:
298 - env->mmuregs[reg] &= ~(MMU_E | MMU_NF);  
299 - env->mmuregs[reg] |= T1 & (MMU_E | MMU_NF);  
300 - // Mappings generated during no-fault mode or MMU  
301 - // disabled mode are invalid in normal mode 298 + env->mmuregs[reg] &= ~(MMU_E | MMU_NF);
  299 + env->mmuregs[reg] |= T1 & (MMU_E | MMU_NF);
  300 + // Mappings generated during no-fault mode or MMU
  301 + // disabled mode are invalid in normal mode
302 if (oldreg != env->mmuregs[reg]) 302 if (oldreg != env->mmuregs[reg])
303 tlb_flush(env, 1); 303 tlb_flush(env, 1);
304 break; 304 break;
305 case 2: 305 case 2:
306 - env->mmuregs[reg] = T1; 306 + env->mmuregs[reg] = T1;
307 if (oldreg != env->mmuregs[reg]) { 307 if (oldreg != env->mmuregs[reg]) {
308 /* we flush when the MMU context changes because 308 /* we flush when the MMU context changes because
309 QEMU has no MMU context support */ 309 QEMU has no MMU context support */
@@ -314,17 +314,17 @@ void helper_st_asi(int asi, int size, int sign) @@ -314,17 +314,17 @@ void helper_st_asi(int asi, int size, int sign)
314 case 4: 314 case 4:
315 break; 315 break;
316 default: 316 default:
317 - env->mmuregs[reg] = T1; 317 + env->mmuregs[reg] = T1;
318 break; 318 break;
319 } 319 }
320 #ifdef DEBUG_MMU 320 #ifdef DEBUG_MMU
321 if (oldreg != env->mmuregs[reg]) { 321 if (oldreg != env->mmuregs[reg]) {
322 printf("mmu change reg[%d]: 0x%08x -> 0x%08x\n", reg, oldreg, env->mmuregs[reg]); 322 printf("mmu change reg[%d]: 0x%08x -> 0x%08x\n", reg, oldreg, env->mmuregs[reg]);
323 } 323 }
324 - dump_mmu(env); 324 + dump_mmu(env);
325 #endif 325 #endif
326 - return;  
327 - } 326 + return;
  327 + }
328 case 0xc: /* I-cache tag */ 328 case 0xc: /* I-cache tag */
329 case 0xd: /* I-cache data */ 329 case 0xd: /* I-cache data */
330 case 0xe: /* D-cache tag */ 330 case 0xe: /* D-cache tag */
@@ -336,10 +336,10 @@ void helper_st_asi(int asi, int size, int sign) @@ -336,10 +336,10 @@ void helper_st_asi(int asi, int size, int sign)
336 case 0x14: /* I/D-cache flush user */ 336 case 0x14: /* I/D-cache flush user */
337 break; 337 break;
338 case 0x17: /* Block copy, sta access */ 338 case 0x17: /* Block copy, sta access */
339 - {  
340 - // value (T1) = src  
341 - // address (T0) = dst  
342 - // copy 32 bytes 339 + {
  340 + // value (T1) = src
  341 + // address (T0) = dst
  342 + // copy 32 bytes
343 unsigned int i; 343 unsigned int i;
344 uint32_t src = T1 & ~3, dst = T0 & ~3, temp; 344 uint32_t src = T1 & ~3, dst = T0 & ~3, temp;
345 345
@@ -347,13 +347,13 @@ void helper_st_asi(int asi, int size, int sign) @@ -347,13 +347,13 @@ void helper_st_asi(int asi, int size, int sign)
347 temp = ldl_kernel(src); 347 temp = ldl_kernel(src);
348 stl_kernel(dst, temp); 348 stl_kernel(dst, temp);
349 } 349 }
350 - }  
351 - return; 350 + }
  351 + return;
352 case 0x1f: /* Block fill, stda access */ 352 case 0x1f: /* Block fill, stda access */
353 - {  
354 - // value (T1, T2)  
355 - // address (T0) = dst  
356 - // fill 32 bytes 353 + {
  354 + // value (T1, T2)
  355 + // address (T0) = dst
  356 + // fill 32 bytes
357 unsigned int i; 357 unsigned int i;
358 uint32_t dst = T0 & 7; 358 uint32_t dst = T0 & 7;
359 uint64_t val; 359 uint64_t val;
@@ -362,10 +362,10 @@ void helper_st_asi(int asi, int size, int sign) @@ -362,10 +362,10 @@ void helper_st_asi(int asi, int size, int sign)
362 362
363 for (i = 0; i < 32; i += 8, dst += 8) 363 for (i = 0; i < 32; i += 8, dst += 8)
364 stq_kernel(dst, val); 364 stq_kernel(dst, val);
365 - }  
366 - return; 365 + }
  366 + return;
367 case 0x20: /* MMU passthrough */ 367 case 0x20: /* MMU passthrough */
368 - { 368 + {
369 switch(size) { 369 switch(size) {
370 case 1: 370 case 1:
371 stb_phys(T0, T1); 371 stb_phys(T0, T1);
@@ -382,11 +382,11 @@ void helper_st_asi(int asi, int size, int sign) @@ -382,11 +382,11 @@ void helper_st_asi(int asi, int size, int sign)
382 stl_phys((T0 + 4) & ~3, T2); 382 stl_phys((T0 + 4) & ~3, T2);
383 break; 383 break;
384 } 384 }
385 - }  
386 - return; 385 + }
  386 + return;
387 case 0x2e: /* MMU passthrough, 0xexxxxxxxx */ 387 case 0x2e: /* MMU passthrough, 0xexxxxxxxx */
388 case 0x2f: /* MMU passthrough, 0xfxxxxxxxx */ 388 case 0x2f: /* MMU passthrough, 0xfxxxxxxxx */
389 - { 389 + {
390 switch(size) { 390 switch(size) {
391 case 1: 391 case 1:
392 stb_phys((target_phys_addr_t)T0 392 stb_phys((target_phys_addr_t)T0
@@ -408,8 +408,8 @@ void helper_st_asi(int asi, int size, int sign) @@ -408,8 +408,8 @@ void helper_st_asi(int asi, int size, int sign)
408 | ((target_phys_addr_t)(asi & 0xf) << 32), T1); 408 | ((target_phys_addr_t)(asi & 0xf) << 32), T1);
409 break; 409 break;
410 } 410 }
411 - }  
412 - return; 411 + }
  412 + return;
413 case 0x31: /* Ross RT620 I-cache flush */ 413 case 0x31: /* Ross RT620 I-cache flush */
414 case 0x36: /* I-cache flash clear */ 414 case 0x36: /* I-cache flash clear */
415 case 0x37: /* D-cache flash clear */ 415 case 0x37: /* D-cache flash clear */
@@ -418,7 +418,7 @@ void helper_st_asi(int asi, int size, int sign) @@ -418,7 +418,7 @@ void helper_st_asi(int asi, int size, int sign)
418 case 0x21 ... 0x2d: /* MMU passthrough, unassigned */ 418 case 0x21 ... 0x2d: /* MMU passthrough, unassigned */
419 default: 419 default:
420 do_unassigned_access(T0, 1, 0, 1); 420 do_unassigned_access(T0, 1, 0, 1);
421 - return; 421 + return;
422 } 422 }
423 } 423 }
424 424
@@ -429,12 +429,12 @@ void helper_ld_asi(int asi, int size, int sign) @@ -429,12 +429,12 @@ void helper_ld_asi(int asi, int size, int sign)
429 uint64_t ret = 0; 429 uint64_t ret = 0;
430 430
431 if (asi < 0x80 && (env->pstate & PS_PRIV) == 0) 431 if (asi < 0x80 && (env->pstate & PS_PRIV) == 0)
432 - raise_exception(TT_PRIV_ACT); 432 + raise_exception(TT_PRIV_ACT);
433 433
434 switch (asi) { 434 switch (asi) {
435 case 0x14: // Bypass 435 case 0x14: // Bypass
436 case 0x15: // Bypass, non-cacheable 436 case 0x15: // Bypass, non-cacheable
437 - { 437 + {
438 switch(size) { 438 switch(size) {
439 case 1: 439 case 1:
440 ret = ldub_phys(T0); 440 ret = ldub_phys(T0);
@@ -450,8 +450,8 @@ void helper_ld_asi(int asi, int size, int sign) @@ -450,8 +450,8 @@ void helper_ld_asi(int asi, int size, int sign)
450 ret = ldq_phys(T0 & ~7); 450 ret = ldq_phys(T0 & ~7);
451 break; 451 break;
452 } 452 }
453 - break;  
454 - } 453 + break;
  454 + }
455 case 0x04: // Nucleus 455 case 0x04: // Nucleus
456 case 0x0c: // Nucleus Little Endian (LE) 456 case 0x0c: // Nucleus Little Endian (LE)
457 case 0x10: // As if user primary 457 case 0x10: // As if user primary
@@ -469,58 +469,58 @@ void helper_ld_asi(int asi, int size, int sign) @@ -469,58 +469,58 @@ void helper_ld_asi(int asi, int size, int sign)
469 case 0x89: // Secondary LE 469 case 0x89: // Secondary LE
470 case 0x8a: // Primary no-fault LE 470 case 0x8a: // Primary no-fault LE
471 case 0x8b: // Secondary no-fault LE 471 case 0x8b: // Secondary no-fault LE
472 - // XXX  
473 - break; 472 + // XXX
  473 + break;
474 case 0x45: // LSU 474 case 0x45: // LSU
475 - ret = env->lsu;  
476 - break; 475 + ret = env->lsu;
  476 + break;
477 case 0x50: // I-MMU regs 477 case 0x50: // I-MMU regs
478 - {  
479 - int reg = (T0 >> 3) & 0xf; 478 + {
  479 + int reg = (T0 >> 3) & 0xf;
480 480
481 - ret = env->immuregs[reg];  
482 - break;  
483 - } 481 + ret = env->immuregs[reg];
  482 + break;
  483 + }
484 case 0x51: // I-MMU 8k TSB pointer 484 case 0x51: // I-MMU 8k TSB pointer
485 case 0x52: // I-MMU 64k TSB pointer 485 case 0x52: // I-MMU 64k TSB pointer
486 case 0x55: // I-MMU data access 486 case 0x55: // I-MMU data access
487 - // XXX  
488 - break; 487 + // XXX
  488 + break;
489 case 0x56: // I-MMU tag read 489 case 0x56: // I-MMU tag read
490 - {  
491 - unsigned int i;  
492 -  
493 - for (i = 0; i < 64; i++) {  
494 - // Valid, ctx match, vaddr match  
495 - if ((env->itlb_tte[i] & 0x8000000000000000ULL) != 0 &&  
496 - env->itlb_tag[i] == T0) {  
497 - ret = env->itlb_tag[i];  
498 - break;  
499 - }  
500 - }  
501 - break;  
502 - } 490 + {
  491 + unsigned int i;
  492 +
  493 + for (i = 0; i < 64; i++) {
  494 + // Valid, ctx match, vaddr match
  495 + if ((env->itlb_tte[i] & 0x8000000000000000ULL) != 0 &&
  496 + env->itlb_tag[i] == T0) {
  497 + ret = env->itlb_tag[i];
  498 + break;
  499 + }
  500 + }
  501 + break;
  502 + }
503 case 0x58: // D-MMU regs 503 case 0x58: // D-MMU regs
504 - {  
505 - int reg = (T0 >> 3) & 0xf; 504 + {
  505 + int reg = (T0 >> 3) & 0xf;
506 506
507 - ret = env->dmmuregs[reg];  
508 - break;  
509 - } 507 + ret = env->dmmuregs[reg];
  508 + break;
  509 + }
510 case 0x5e: // D-MMU tag read 510 case 0x5e: // D-MMU tag read
511 - {  
512 - unsigned int i;  
513 -  
514 - for (i = 0; i < 64; i++) {  
515 - // Valid, ctx match, vaddr match  
516 - if ((env->dtlb_tte[i] & 0x8000000000000000ULL) != 0 &&  
517 - env->dtlb_tag[i] == T0) {  
518 - ret = env->dtlb_tag[i];  
519 - break;  
520 - }  
521 - }  
522 - break;  
523 - } 511 + {
  512 + unsigned int i;
  513 +
  514 + for (i = 0; i < 64; i++) {
  515 + // Valid, ctx match, vaddr match
  516 + if ((env->dtlb_tte[i] & 0x8000000000000000ULL) != 0 &&
  517 + env->dtlb_tag[i] == T0) {
  518 + ret = env->dtlb_tag[i];
  519 + break;
  520 + }
  521 + }
  522 + break;
  523 + }
524 case 0x59: // D-MMU 8k TSB pointer 524 case 0x59: // D-MMU 8k TSB pointer
525 case 0x5a: // D-MMU 64k TSB pointer 525 case 0x5a: // D-MMU 64k TSB pointer
526 case 0x5b: // D-MMU data pointer 526 case 0x5b: // D-MMU data pointer
@@ -528,8 +528,8 @@ void helper_ld_asi(int asi, int size, int sign) @@ -528,8 +528,8 @@ void helper_ld_asi(int asi, int size, int sign)
528 case 0x48: // Interrupt dispatch, RO 528 case 0x48: // Interrupt dispatch, RO
529 case 0x49: // Interrupt data receive 529 case 0x49: // Interrupt data receive
530 case 0x7f: // Incoming interrupt vector, RO 530 case 0x7f: // Incoming interrupt vector, RO
531 - // XXX  
532 - break; 531 + // XXX
  532 + break;
533 case 0x54: // I-MMU data in, WO 533 case 0x54: // I-MMU data in, WO
534 case 0x57: // I-MMU demap, WO 534 case 0x57: // I-MMU demap, WO
535 case 0x5c: // D-MMU data in, WO 535 case 0x5c: // D-MMU data in, WO
@@ -537,8 +537,8 @@ void helper_ld_asi(int asi, int size, int sign) @@ -537,8 +537,8 @@ void helper_ld_asi(int asi, int size, int sign)
537 case 0x77: // Interrupt vector, WO 537 case 0x77: // Interrupt vector, WO
538 default: 538 default:
539 do_unassigned_access(T0, 0, 0, 1); 539 do_unassigned_access(T0, 0, 0, 1);
540 - ret = 0;  
541 - break; 540 + ret = 0;
  541 + break;
542 } 542 }
543 T1 = ret; 543 T1 = ret;
544 } 544 }
@@ -546,12 +546,12 @@ void helper_ld_asi(int asi, int size, int sign) @@ -546,12 +546,12 @@ void helper_ld_asi(int asi, int size, int sign)
546 void helper_st_asi(int asi, int size, int sign) 546 void helper_st_asi(int asi, int size, int sign)
547 { 547 {
548 if (asi < 0x80 && (env->pstate & PS_PRIV) == 0) 548 if (asi < 0x80 && (env->pstate & PS_PRIV) == 0)
549 - raise_exception(TT_PRIV_ACT); 549 + raise_exception(TT_PRIV_ACT);
550 550
551 switch(asi) { 551 switch(asi) {
552 case 0x14: // Bypass 552 case 0x14: // Bypass
553 case 0x15: // Bypass, non-cacheable 553 case 0x15: // Bypass, non-cacheable
554 - { 554 + {
555 switch(size) { 555 switch(size) {
556 case 1: 556 case 1:
557 stb_phys(T0, T1); 557 stb_phys(T0, T1);
@@ -567,8 +567,8 @@ void helper_st_asi(int asi, int size, int sign) @@ -567,8 +567,8 @@ void helper_st_asi(int asi, int size, int sign)
567 stq_phys(T0 & ~7, T1); 567 stq_phys(T0 & ~7, T1);
568 break; 568 break;
569 } 569 }
570 - }  
571 - return; 570 + }
  571 + return;
572 case 0x04: // Nucleus 572 case 0x04: // Nucleus
573 case 0x0c: // Nucleus Little Endian (LE) 573 case 0x0c: // Nucleus Little Endian (LE)
574 case 0x10: // As if user primary 574 case 0x10: // As if user primary
@@ -582,31 +582,31 @@ void helper_st_asi(int asi, int size, int sign) @@ -582,31 +582,31 @@ void helper_st_asi(int asi, int size, int sign)
582 case 0x4a: // UPA config 582 case 0x4a: // UPA config
583 case 0x88: // Primary LE 583 case 0x88: // Primary LE
584 case 0x89: // Secondary LE 584 case 0x89: // Secondary LE
585 - // XXX  
586 - return; 585 + // XXX
  586 + return;
587 case 0x45: // LSU 587 case 0x45: // LSU
588 - {  
589 - uint64_t oldreg;  
590 -  
591 - oldreg = env->lsu;  
592 - env->lsu = T1 & (DMMU_E | IMMU_E);  
593 - // Mappings generated during D/I MMU disabled mode are  
594 - // invalid in normal mode  
595 - if (oldreg != env->lsu) { 588 + {
  589 + uint64_t oldreg;
  590 +
  591 + oldreg = env->lsu;
  592 + env->lsu = T1 & (DMMU_E | IMMU_E);
  593 + // Mappings generated during D/I MMU disabled mode are
  594 + // invalid in normal mode
  595 + if (oldreg != env->lsu) {
596 #ifdef DEBUG_MMU 596 #ifdef DEBUG_MMU
597 printf("LSU change: 0x%" PRIx64 " -> 0x%" PRIx64 "\n", oldreg, env->lsu); 597 printf("LSU change: 0x%" PRIx64 " -> 0x%" PRIx64 "\n", oldreg, env->lsu);
598 - dump_mmu(env); 598 + dump_mmu(env);
599 #endif 599 #endif
600 - tlb_flush(env, 1);  
601 - }  
602 - return;  
603 - } 600 + tlb_flush(env, 1);
  601 + }
  602 + return;
  603 + }
604 case 0x50: // I-MMU regs 604 case 0x50: // I-MMU regs
605 - {  
606 - int reg = (T0 >> 3) & 0xf;  
607 - uint64_t oldreg; 605 + {
  606 + int reg = (T0 >> 3) & 0xf;
  607 + uint64_t oldreg;
608 608
609 - oldreg = env->immuregs[reg]; 609 + oldreg = env->immuregs[reg];
610 switch(reg) { 610 switch(reg) {
611 case 0: // RO 611 case 0: // RO
612 case 4: 612 case 4:
@@ -617,73 +617,73 @@ void helper_st_asi(int asi, int size, int sign) @@ -617,73 +617,73 @@ void helper_st_asi(int asi, int size, int sign)
617 case 8: 617 case 8:
618 return; 618 return;
619 case 3: // SFSR 619 case 3: // SFSR
620 - if ((T1 & 1) == 0)  
621 - T1 = 0; // Clear SFSR 620 + if ((T1 & 1) == 0)
  621 + T1 = 0; // Clear SFSR
622 break; 622 break;
623 case 5: // TSB access 623 case 5: // TSB access
624 case 6: // Tag access 624 case 6: // Tag access
625 default: 625 default:
626 break; 626 break;
627 } 627 }
628 - env->immuregs[reg] = T1; 628 + env->immuregs[reg] = T1;
629 #ifdef DEBUG_MMU 629 #ifdef DEBUG_MMU
630 if (oldreg != env->immuregs[reg]) { 630 if (oldreg != env->immuregs[reg]) {
631 printf("mmu change reg[%d]: 0x%08" PRIx64 " -> 0x%08" PRIx64 "\n", reg, oldreg, env->immuregs[reg]); 631 printf("mmu change reg[%d]: 0x%08" PRIx64 " -> 0x%08" PRIx64 "\n", reg, oldreg, env->immuregs[reg]);
632 } 632 }
633 - dump_mmu(env); 633 + dump_mmu(env);
634 #endif 634 #endif
635 - return;  
636 - } 635 + return;
  636 + }
637 case 0x54: // I-MMU data in 637 case 0x54: // I-MMU data in
638 - {  
639 - unsigned int i;  
640 -  
641 - // Try finding an invalid entry  
642 - for (i = 0; i < 64; i++) {  
643 - if ((env->itlb_tte[i] & 0x8000000000000000ULL) == 0) {  
644 - env->itlb_tag[i] = env->immuregs[6];  
645 - env->itlb_tte[i] = T1;  
646 - return;  
647 - }  
648 - }  
649 - // Try finding an unlocked entry  
650 - for (i = 0; i < 64; i++) {  
651 - if ((env->itlb_tte[i] & 0x40) == 0) {  
652 - env->itlb_tag[i] = env->immuregs[6];  
653 - env->itlb_tte[i] = T1;  
654 - return;  
655 - }  
656 - }  
657 - // error state?  
658 - return;  
659 - } 638 + {
  639 + unsigned int i;
  640 +
  641 + // Try finding an invalid entry
  642 + for (i = 0; i < 64; i++) {
  643 + if ((env->itlb_tte[i] & 0x8000000000000000ULL) == 0) {
  644 + env->itlb_tag[i] = env->immuregs[6];
  645 + env->itlb_tte[i] = T1;
  646 + return;
  647 + }
  648 + }
  649 + // Try finding an unlocked entry
  650 + for (i = 0; i < 64; i++) {
  651 + if ((env->itlb_tte[i] & 0x40) == 0) {
  652 + env->itlb_tag[i] = env->immuregs[6];
  653 + env->itlb_tte[i] = T1;
  654 + return;
  655 + }
  656 + }
  657 + // error state?
  658 + return;
  659 + }
660 case 0x55: // I-MMU data access 660 case 0x55: // I-MMU data access
661 - {  
662 - unsigned int i = (T0 >> 3) & 0x3f; 661 + {
  662 + unsigned int i = (T0 >> 3) & 0x3f;
663 663
664 - env->itlb_tag[i] = env->immuregs[6];  
665 - env->itlb_tte[i] = T1;  
666 - return;  
667 - } 664 + env->itlb_tag[i] = env->immuregs[6];
  665 + env->itlb_tte[i] = T1;
  666 + return;
  667 + }
668 case 0x57: // I-MMU demap 668 case 0x57: // I-MMU demap
669 - // XXX  
670 - return; 669 + // XXX
  670 + return;
671 case 0x58: // D-MMU regs 671 case 0x58: // D-MMU regs
672 - {  
673 - int reg = (T0 >> 3) & 0xf;  
674 - uint64_t oldreg; 672 + {
  673 + int reg = (T0 >> 3) & 0xf;
  674 + uint64_t oldreg;
675 675
676 - oldreg = env->dmmuregs[reg]; 676 + oldreg = env->dmmuregs[reg];
677 switch(reg) { 677 switch(reg) {
678 case 0: // RO 678 case 0: // RO
679 case 4: 679 case 4:
680 return; 680 return;
681 case 3: // SFSR 681 case 3: // SFSR
682 - if ((T1 & 1) == 0) {  
683 - T1 = 0; // Clear SFSR, Fault address  
684 - env->dmmuregs[4] = 0;  
685 - }  
686 - env->dmmuregs[reg] = T1; 682 + if ((T1 & 1) == 0) {
  683 + T1 = 0; // Clear SFSR, Fault address
  684 + env->dmmuregs[4] = 0;
  685 + }
  686 + env->dmmuregs[reg] = T1;
687 break; 687 break;
688 case 1: // Primary context 688 case 1: // Primary context
689 case 2: // Secondary context 689 case 2: // Secondary context
@@ -694,50 +694,50 @@ void helper_st_asi(int asi, int size, int sign) @@ -694,50 +694,50 @@ void helper_st_asi(int asi, int size, int sign)
694 default: 694 default:
695 break; 695 break;
696 } 696 }
697 - env->dmmuregs[reg] = T1; 697 + env->dmmuregs[reg] = T1;
698 #ifdef DEBUG_MMU 698 #ifdef DEBUG_MMU
699 if (oldreg != env->dmmuregs[reg]) { 699 if (oldreg != env->dmmuregs[reg]) {
700 printf("mmu change reg[%d]: 0x%08" PRIx64 " -> 0x%08" PRIx64 "\n", reg, oldreg, env->dmmuregs[reg]); 700 printf("mmu change reg[%d]: 0x%08" PRIx64 " -> 0x%08" PRIx64 "\n", reg, oldreg, env->dmmuregs[reg]);
701 } 701 }
702 - dump_mmu(env); 702 + dump_mmu(env);
703 #endif 703 #endif
704 - return;  
705 - } 704 + return;
  705 + }
706 case 0x5c: // D-MMU data in 706 case 0x5c: // D-MMU data in
707 - {  
708 - unsigned int i;  
709 -  
710 - // Try finding an invalid entry  
711 - for (i = 0; i < 64; i++) {  
712 - if ((env->dtlb_tte[i] & 0x8000000000000000ULL) == 0) {  
713 - env->dtlb_tag[i] = env->dmmuregs[6];  
714 - env->dtlb_tte[i] = T1;  
715 - return;  
716 - }  
717 - }  
718 - // Try finding an unlocked entry  
719 - for (i = 0; i < 64; i++) {  
720 - if ((env->dtlb_tte[i] & 0x40) == 0) {  
721 - env->dtlb_tag[i] = env->dmmuregs[6];  
722 - env->dtlb_tte[i] = T1;  
723 - return;  
724 - }  
725 - }  
726 - // error state?  
727 - return;  
728 - } 707 + {
  708 + unsigned int i;
  709 +
  710 + // Try finding an invalid entry
  711 + for (i = 0; i < 64; i++) {
  712 + if ((env->dtlb_tte[i] & 0x8000000000000000ULL) == 0) {
  713 + env->dtlb_tag[i] = env->dmmuregs[6];
  714 + env->dtlb_tte[i] = T1;
  715 + return;
  716 + }
  717 + }
  718 + // Try finding an unlocked entry
  719 + for (i = 0; i < 64; i++) {
  720 + if ((env->dtlb_tte[i] & 0x40) == 0) {
  721 + env->dtlb_tag[i] = env->dmmuregs[6];
  722 + env->dtlb_tte[i] = T1;
  723 + return;
  724 + }
  725 + }
  726 + // error state?
  727 + return;
  728 + }
729 case 0x5d: // D-MMU data access 729 case 0x5d: // D-MMU data access
730 - {  
731 - unsigned int i = (T0 >> 3) & 0x3f; 730 + {
  731 + unsigned int i = (T0 >> 3) & 0x3f;
732 732
733 - env->dtlb_tag[i] = env->dmmuregs[6];  
734 - env->dtlb_tte[i] = T1;  
735 - return;  
736 - } 733 + env->dtlb_tag[i] = env->dmmuregs[6];
  734 + env->dtlb_tte[i] = T1;
  735 + return;
  736 + }
737 case 0x5f: // D-MMU demap 737 case 0x5f: // D-MMU demap
738 case 0x49: // Interrupt data receive 738 case 0x49: // Interrupt data receive
739 - // XXX  
740 - return; 739 + // XXX
  740 + return;
741 case 0x51: // I-MMU 8k TSB pointer, RO 741 case 0x51: // I-MMU 8k TSB pointer, RO
742 case 0x52: // I-MMU 64k TSB pointer, RO 742 case 0x52: // I-MMU 64k TSB pointer, RO
743 case 0x56: // I-MMU tag read, RO 743 case 0x56: // I-MMU tag read, RO
@@ -753,7 +753,7 @@ void helper_st_asi(int asi, int size, int sign) @@ -753,7 +753,7 @@ void helper_st_asi(int asi, int size, int sign)
753 case 0x8b: // Secondary no-fault LE, RO 753 case 0x8b: // Secondary no-fault LE, RO
754 default: 754 default:
755 do_unassigned_access(T0, 1, 0, 1); 755 do_unassigned_access(T0, 1, 0, 1);
756 - return; 756 + return;
757 } 757 }
758 } 758 }
759 #endif 759 #endif
@@ -783,17 +783,17 @@ void helper_ldfsr(void) @@ -783,17 +783,17 @@ void helper_ldfsr(void)
783 switch (env->fsr & FSR_RD_MASK) { 783 switch (env->fsr & FSR_RD_MASK) {
784 case FSR_RD_NEAREST: 784 case FSR_RD_NEAREST:
785 rnd_mode = float_round_nearest_even; 785 rnd_mode = float_round_nearest_even;
786 - break; 786 + break;
787 default: 787 default:
788 case FSR_RD_ZERO: 788 case FSR_RD_ZERO:
789 rnd_mode = float_round_to_zero; 789 rnd_mode = float_round_to_zero;
790 - break; 790 + break;
791 case FSR_RD_POS: 791 case FSR_RD_POS:
792 rnd_mode = float_round_up; 792 rnd_mode = float_round_up;
793 - break; 793 + break;
794 case FSR_RD_NEG: 794 case FSR_RD_NEG:
795 rnd_mode = float_round_down; 795 rnd_mode = float_round_down;
796 - break; 796 + break;
797 } 797 }
798 set_float_rounding_mode(rnd_mode, &env->fp_status); 798 set_float_rounding_mode(rnd_mode, &env->fp_status);
799 } 799 }
@@ -835,13 +835,13 @@ static inline uint64_t *get_gregset(uint64_t pstate) @@ -835,13 +835,13 @@ static inline uint64_t *get_gregset(uint64_t pstate)
835 switch (pstate) { 835 switch (pstate) {
836 default: 836 default:
837 case 0: 837 case 0:
838 - return env->bgregs; 838 + return env->bgregs;
839 case PS_AG: 839 case PS_AG:
840 - return env->agregs; 840 + return env->agregs;
841 case PS_MG: 841 case PS_MG:
842 - return env->mgregs; 842 + return env->mgregs;
843 case PS_IG: 843 case PS_IG:
844 - return env->igregs; 844 + return env->igregs;
845 } 845 }
846 } 846 }
847 847
@@ -853,11 +853,11 @@ static inline void change_pstate(uint64_t new_pstate) @@ -853,11 +853,11 @@ static inline void change_pstate(uint64_t new_pstate)
853 pstate_regs = env->pstate & 0xc01; 853 pstate_regs = env->pstate & 0xc01;
854 new_pstate_regs = new_pstate & 0xc01; 854 new_pstate_regs = new_pstate & 0xc01;
855 if (new_pstate_regs != pstate_regs) { 855 if (new_pstate_regs != pstate_regs) {
856 - // Switch global register bank  
857 - src = get_gregset(new_pstate_regs);  
858 - dst = get_gregset(pstate_regs);  
859 - memcpy32(dst, env->gregs);  
860 - memcpy32(env->gregs, src); 856 + // Switch global register bank
  857 + src = get_gregset(new_pstate_regs);
  858 + dst = get_gregset(pstate_regs);
  859 + memcpy32(dst, env->gregs);
  860 + memcpy32(env->gregs, src);
861 } 861 }
862 env->pstate = new_pstate; 862 env->pstate = new_pstate;
863 } 863 }
@@ -927,36 +927,36 @@ void do_interrupt(int intno) @@ -927,36 +927,36 @@ void do_interrupt(int intno)
927 { 927 {
928 #ifdef DEBUG_PCALL 928 #ifdef DEBUG_PCALL
929 if (loglevel & CPU_LOG_INT) { 929 if (loglevel & CPU_LOG_INT) {
930 - static int count;  
931 - fprintf(logfile, "%6d: v=%04x pc=%016" PRIx64 " npc=%016" PRIx64 " SP=%016" PRIx64 "\n", 930 + static int count;
  931 + fprintf(logfile, "%6d: v=%04x pc=%016" PRIx64 " npc=%016" PRIx64 " SP=%016" PRIx64 "\n",
932 count, intno, 932 count, intno,
933 env->pc, 933 env->pc,
934 env->npc, env->regwptr[6]); 934 env->npc, env->regwptr[6]);
935 - cpu_dump_state(env, logfile, fprintf, 0); 935 + cpu_dump_state(env, logfile, fprintf, 0);
936 #if 0 936 #if 0
937 - {  
938 - int i;  
939 - uint8_t *ptr;  
940 -  
941 - fprintf(logfile, " code=");  
942 - ptr = (uint8_t *)env->pc;  
943 - for(i = 0; i < 16; i++) {  
944 - fprintf(logfile, " %02x", ldub(ptr + i));  
945 - }  
946 - fprintf(logfile, "\n");  
947 - } 937 + {
  938 + int i;
  939 + uint8_t *ptr;
  940 +
  941 + fprintf(logfile, " code=");
  942 + ptr = (uint8_t *)env->pc;
  943 + for(i = 0; i < 16; i++) {
  944 + fprintf(logfile, " %02x", ldub(ptr + i));
  945 + }
  946 + fprintf(logfile, "\n");
  947 + }
948 #endif 948 #endif
949 - count++; 949 + count++;
950 } 950 }
951 #endif 951 #endif
952 #if !defined(CONFIG_USER_ONLY) 952 #if !defined(CONFIG_USER_ONLY)
953 if (env->tl == MAXTL) { 953 if (env->tl == MAXTL) {
954 cpu_abort(env, "Trap 0x%04x while trap level is MAXTL, Error state", env->exception_index); 954 cpu_abort(env, "Trap 0x%04x while trap level is MAXTL, Error state", env->exception_index);
955 - return; 955 + return;
956 } 956 }
957 #endif 957 #endif
958 env->tstate[env->tl] = ((uint64_t)GET_CCR(env) << 32) | ((env->asi & 0xff) << 24) | 958 env->tstate[env->tl] = ((uint64_t)GET_CCR(env) << 32) | ((env->asi & 0xff) << 24) |
959 - ((env->pstate & 0xf3f) << 8) | GET_CWP64(env); 959 + ((env->pstate & 0xf3f) << 8) | GET_CWP64(env);
960 env->tpc[env->tl] = env->pc; 960 env->tpc[env->tl] = env->pc;
961 env->tnpc[env->tl] = env->npc; 961 env->tnpc[env->tl] = env->npc;
962 env->tt[env->tl] = intno; 962 env->tt[env->tl] = intno;
@@ -971,11 +971,11 @@ void do_interrupt(int intno) @@ -971,11 +971,11 @@ void do_interrupt(int intno)
971 env->tbr &= ~0x7fffULL; 971 env->tbr &= ~0x7fffULL;
972 env->tbr |= ((env->tl > 1) ? 1 << 14 : 0) | (intno << 5); 972 env->tbr |= ((env->tl > 1) ? 1 << 14 : 0) | (intno << 5);
973 if (env->tl < MAXTL - 1) { 973 if (env->tl < MAXTL - 1) {
974 - env->tl++; 974 + env->tl++;
975 } else { 975 } else {
976 - env->pstate |= PS_RED;  
977 - if (env->tl != MAXTL)  
978 - env->tl++; 976 + env->pstate |= PS_RED;
  977 + if (env->tl != MAXTL)
  978 + env->tl++;
979 } 979 }
980 env->pc = env->tbr; 980 env->pc = env->tbr;
981 env->npc = env->pc + 4; 981 env->npc = env->pc + 4;
@@ -988,32 +988,32 @@ void do_interrupt(int intno) @@ -988,32 +988,32 @@ void do_interrupt(int intno)
988 988
989 #ifdef DEBUG_PCALL 989 #ifdef DEBUG_PCALL
990 if (loglevel & CPU_LOG_INT) { 990 if (loglevel & CPU_LOG_INT) {
991 - static int count;  
992 - fprintf(logfile, "%6d: v=%02x pc=%08x npc=%08x SP=%08x\n", 991 + static int count;
  992 + fprintf(logfile, "%6d: v=%02x pc=%08x npc=%08x SP=%08x\n",
993 count, intno, 993 count, intno,
994 env->pc, 994 env->pc,
995 env->npc, env->regwptr[6]); 995 env->npc, env->regwptr[6]);
996 - cpu_dump_state(env, logfile, fprintf, 0); 996 + cpu_dump_state(env, logfile, fprintf, 0);
997 #if 0 997 #if 0
998 - {  
999 - int i;  
1000 - uint8_t *ptr;  
1001 -  
1002 - fprintf(logfile, " code=");  
1003 - ptr = (uint8_t *)env->pc;  
1004 - for(i = 0; i < 16; i++) {  
1005 - fprintf(logfile, " %02x", ldub(ptr + i));  
1006 - }  
1007 - fprintf(logfile, "\n");  
1008 - } 998 + {
  999 + int i;
  1000 + uint8_t *ptr;
  1001 +
  1002 + fprintf(logfile, " code=");
  1003 + ptr = (uint8_t *)env->pc;
  1004 + for(i = 0; i < 16; i++) {
  1005 + fprintf(logfile, " %02x", ldub(ptr + i));
  1006 + }
  1007 + fprintf(logfile, "\n");
  1008 + }
1009 #endif 1009 #endif
1010 - count++; 1010 + count++;
1011 } 1011 }
1012 #endif 1012 #endif
1013 #if !defined(CONFIG_USER_ONLY) 1013 #if !defined(CONFIG_USER_ONLY)
1014 if (env->psret == 0) { 1014 if (env->psret == 0) {
1015 cpu_abort(env, "Trap 0x%02x while interrupts disabled, Error state", env->exception_index); 1015 cpu_abort(env, "Trap 0x%02x while interrupts disabled, Error state", env->exception_index);
1016 - return; 1016 + return;
1017 } 1017 }
1018 #endif 1018 #endif
1019 env->psret = 0; 1019 env->psret = 0;
@@ -1106,7 +1106,7 @@ void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec, @@ -1106,7 +1106,7 @@ void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec,
1106 saved_env = env; 1106 saved_env = env;
1107 env = cpu_single_env; 1107 env = cpu_single_env;
1108 if (env->mmuregs[3]) /* Fault status register */ 1108 if (env->mmuregs[3]) /* Fault status register */
1109 - env->mmuregs[3] = 1; /* overflow (not read before another fault) */ 1109 + env->mmuregs[3] = 1; /* overflow (not read before another fault) */
1110 if (is_asi) 1110 if (is_asi)
1111 env->mmuregs[3] |= 1 << 16; 1111 env->mmuregs[3] |= 1 << 16;
1112 if (env->psrs) 1112 if (env->psrs)
target-sparc/op_mem.h
@@ -2,13 +2,13 @@ @@ -2,13 +2,13 @@
2 #define SPARC_LD_OP(name, qp) \ 2 #define SPARC_LD_OP(name, qp) \
3 void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \ 3 void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \
4 { \ 4 { \
5 - T1 = (target_ulong)glue(qp, MEMSUFFIX)(T0); \ 5 + T1 = (target_ulong)glue(qp, MEMSUFFIX)(T0); \
6 } 6 }
7 7
8 -#define SPARC_LD_OP_S(name, qp) \  
9 - void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \  
10 - { \  
11 - T1 = (target_long)glue(qp, MEMSUFFIX)(T0); \ 8 +#define SPARC_LD_OP_S(name, qp) \
  9 + void OPPROTO glue(glue(op_, name), MEMSUFFIX)(void) \
  10 + { \
  11 + T1 = (target_long)glue(qp, MEMSUFFIX)(T0); \
12 } 12 }
13 13
14 #define SPARC_ST_OP(name, op) \ 14 #define SPARC_ST_OP(name, op) \
@@ -85,7 +85,7 @@ void OPPROTO glue(op_cas, MEMSUFFIX)(void) @@ -85,7 +85,7 @@ void OPPROTO glue(op_cas, MEMSUFFIX)(void)
85 tmp = glue(ldl, MEMSUFFIX)(T0); 85 tmp = glue(ldl, MEMSUFFIX)(T0);
86 T2 &= 0xffffffffULL; 86 T2 &= 0xffffffffULL;
87 if (tmp == (T1 & 0xffffffffULL)) { 87 if (tmp == (T1 & 0xffffffffULL)) {
88 - glue(stl, MEMSUFFIX)(T0, T2); 88 + glue(stl, MEMSUFFIX)(T0, T2);
89 } 89 }
90 T2 = tmp; 90 T2 = tmp;
91 } 91 }
@@ -98,7 +98,7 @@ void OPPROTO glue(op_casx, MEMSUFFIX)(void) @@ -98,7 +98,7 @@ void OPPROTO glue(op_casx, MEMSUFFIX)(void)
98 tmp = (uint64_t)glue(ldl, MEMSUFFIX)(T0) << 32; 98 tmp = (uint64_t)glue(ldl, MEMSUFFIX)(T0) << 32;
99 tmp |= glue(ldl, MEMSUFFIX)(T0); 99 tmp |= glue(ldl, MEMSUFFIX)(T0);
100 if (tmp == T1) { 100 if (tmp == T1) {
101 - glue(stq, MEMSUFFIX)(T0, T2); 101 + glue(stq, MEMSUFFIX)(T0, T2);
102 } 102 }
103 T2 = tmp; 103 T2 = tmp;
104 } 104 }
target-sparc/translate.c
@@ -45,8 +45,8 @@ @@ -45,8 +45,8 @@
45 according to jump_pc[T2] */ 45 according to jump_pc[T2] */
46 46
47 typedef struct DisasContext { 47 typedef struct DisasContext {
48 - target_ulong pc; /* current Program Counter: integer or DYNAMIC_PC */  
49 - target_ulong npc; /* next PC: integer or DYNAMIC_PC or JUMP_PC */ 48 + target_ulong pc; /* current Program Counter: integer or DYNAMIC_PC */
  49 + target_ulong npc; /* next PC: integer or DYNAMIC_PC or JUMP_PC */
50 target_ulong jump_pc[2]; /* used when JUMP_PC pc value is used */ 50 target_ulong jump_pc[2]; /* used when JUMP_PC pc value is used */
51 int is_br; 51 int is_br;
52 int mem_idx; 52 int mem_idx;
@@ -359,57 +359,57 @@ GEN32(gen_op_store_DT1_fpr, gen_op_store_DT1_fpr_fprf); @@ -359,57 +359,57 @@ GEN32(gen_op_store_DT1_fpr, gen_op_store_DT1_fpr_fprf);
359 #define supervisor(dc) 0 359 #define supervisor(dc) 0
360 #define hypervisor(dc) 0 360 #define hypervisor(dc) 0
361 #define gen_op_ldst(name) gen_op_##name##_raw() 361 #define gen_op_ldst(name) gen_op_##name##_raw()
362 -#define OP_LD_TABLE(width) \ 362 +#define OP_LD_TABLE(width) \
363 static void gen_op_##width##a(int insn, int is_ld, int size, int sign) \ 363 static void gen_op_##width##a(int insn, int is_ld, int size, int sign) \
364 - { \  
365 - int asi, offset; \  
366 - \  
367 - if (IS_IMM) { \  
368 - offset = GET_FIELD(insn, 25, 31); \  
369 - if (is_ld) \  
370 - gen_op_ld_asi_reg(offset, size, sign); \  
371 - else \  
372 - gen_op_st_asi_reg(offset, size, sign); \  
373 - return; \  
374 - } \  
375 - asi = GET_FIELD(insn, 19, 26); \  
376 - switch (asi) { \  
377 - case 0x80: /* Primary address space */ \  
378 - gen_op_##width##_raw(); \  
379 - break; \  
380 - case 0x82: /* Primary address space, non-faulting load */ \  
381 - gen_op_##width##_raw(); \  
382 - break; \  
383 - default: \  
384 - break; \  
385 - } \ 364 + { \
  365 + int asi, offset; \
  366 + \
  367 + if (IS_IMM) { \
  368 + offset = GET_FIELD(insn, 25, 31); \
  369 + if (is_ld) \
  370 + gen_op_ld_asi_reg(offset, size, sign); \
  371 + else \
  372 + gen_op_st_asi_reg(offset, size, sign); \
  373 + return; \
  374 + } \
  375 + asi = GET_FIELD(insn, 19, 26); \
  376 + switch (asi) { \
  377 + case 0x80: /* Primary address space */ \
  378 + gen_op_##width##_raw(); \
  379 + break; \
  380 + case 0x82: /* Primary address space, non-faulting load */ \
  381 + gen_op_##width##_raw(); \
  382 + break; \
  383 + default: \
  384 + break; \
  385 + } \
386 } 386 }
387 387
388 #else 388 #else
389 #define gen_op_ldst(name) (*gen_op_##name[dc->mem_idx])() 389 #define gen_op_ldst(name) (*gen_op_##name[dc->mem_idx])()
390 -#define OP_LD_TABLE(width) \ 390 +#define OP_LD_TABLE(width) \
391 static GenOpFunc * const gen_op_##width[] = { \ 391 static GenOpFunc * const gen_op_##width[] = { \
392 - &gen_op_##width##_user, \  
393 - &gen_op_##width##_kernel, \  
394 - }; \  
395 - \ 392 + &gen_op_##width##_user, \
  393 + &gen_op_##width##_kernel, \
  394 + }; \
  395 + \
396 static void gen_op_##width##a(int insn, int is_ld, int size, int sign) \ 396 static void gen_op_##width##a(int insn, int is_ld, int size, int sign) \
397 - { \  
398 - int asi, offset; \  
399 - \  
400 - if (IS_IMM) { \  
401 - offset = GET_FIELD(insn, 25, 31); \  
402 - if (is_ld) \  
403 - gen_op_ld_asi_reg(offset, size, sign); \  
404 - else \  
405 - gen_op_st_asi_reg(offset, size, sign); \  
406 - return; \  
407 - } \  
408 - asi = GET_FIELD(insn, 19, 26); \  
409 - if (is_ld) \  
410 - gen_op_ld_asi(asi, size, sign); \  
411 - else \  
412 - gen_op_st_asi(asi, size, sign); \ 397 + { \
  398 + int asi, offset; \
  399 + \
  400 + if (IS_IMM) { \
  401 + offset = GET_FIELD(insn, 25, 31); \
  402 + if (is_ld) \
  403 + gen_op_ld_asi_reg(offset, size, sign); \
  404 + else \
  405 + gen_op_st_asi_reg(offset, size, sign); \
  406 + return; \
  407 + } \
  408 + asi = GET_FIELD(insn, 19, 26); \
  409 + if (is_ld) \
  410 + gen_op_ld_asi(asi, size, sign); \
  411 + else \
  412 + gen_op_st_asi(asi, size, sign); \
413 } 413 }
414 414
415 #define supervisor(dc) (dc->mem_idx == 1) 415 #define supervisor(dc) (dc->mem_idx == 1)
@@ -422,7 +422,7 @@ GEN32(gen_op_store_DT1_fpr, gen_op_store_DT1_fpr_fprf); @@ -422,7 +422,7 @@ GEN32(gen_op_store_DT1_fpr, gen_op_store_DT1_fpr_fprf);
422 #define supervisor(dc) 0 422 #define supervisor(dc) 0
423 #else 423 #else
424 #define gen_op_ldst(name) (*gen_op_##name[dc->mem_idx])() 424 #define gen_op_ldst(name) (*gen_op_##name[dc->mem_idx])()
425 -#define OP_LD_TABLE(width) \ 425 +#define OP_LD_TABLE(width) \
426 static GenOpFunc * const gen_op_##width[] = { \ 426 static GenOpFunc * const gen_op_##width[] = { \
427 &gen_op_##width##_user, \ 427 &gen_op_##width##_user, \
428 &gen_op_##width##_kernel, \ 428 &gen_op_##width##_kernel, \
@@ -434,23 +434,23 @@ static void gen_op_##width##a(int insn, int is_ld, int size, int sign) \ @@ -434,23 +434,23 @@ static void gen_op_##width##a(int insn, int is_ld, int size, int sign) \
434 \ 434 \
435 asi = GET_FIELD(insn, 19, 26); \ 435 asi = GET_FIELD(insn, 19, 26); \
436 switch (asi) { \ 436 switch (asi) { \
437 - case 10: /* User data access */ \  
438 - gen_op_##width##_user(); \  
439 - break; \  
440 - case 11: /* Supervisor data access */ \  
441 - gen_op_##width##_kernel(); \  
442 - break; \  
443 - case 0x20 ... 0x2f: /* MMU passthrough */ \  
444 - if (is_ld) \  
445 - gen_op_ld_asi(asi, size, sign); \  
446 - else \  
447 - gen_op_st_asi(asi, size, sign); \  
448 - break; \  
449 - default: \  
450 - if (is_ld) \  
451 - gen_op_ld_asi(asi, size, sign); \  
452 - else \  
453 - gen_op_st_asi(asi, size, sign); \ 437 + case 10: /* User data access */ \
  438 + gen_op_##width##_user(); \
  439 + break; \
  440 + case 11: /* Supervisor data access */ \
  441 + gen_op_##width##_kernel(); \
  442 + break; \
  443 + case 0x20 ... 0x2f: /* MMU passthrough */ \
  444 + if (is_ld) \
  445 + gen_op_ld_asi(asi, size, sign); \
  446 + else \
  447 + gen_op_st_asi(asi, size, sign); \
  448 + break; \
  449 + default: \
  450 + if (is_ld) \
  451 + gen_op_ld_asi(asi, size, sign); \
  452 + else \
  453 + gen_op_st_asi(asi, size, sign); \
454 break; \ 454 break; \
455 } \ 455 } \
456 } 456 }
@@ -518,9 +518,9 @@ static inline void gen_movl_simm_T0(int32_t val) @@ -518,9 +518,9 @@ static inline void gen_movl_simm_T0(int32_t val)
518 static inline void gen_movl_reg_TN(int reg, int t) 518 static inline void gen_movl_reg_TN(int reg, int t)
519 { 519 {
520 if (reg) 520 if (reg)
521 - gen_op_movl_reg_TN[t][reg] (); 521 + gen_op_movl_reg_TN[t][reg] ();
522 else 522 else
523 - gen_movl_imm_TN(t, 0); 523 + gen_movl_imm_TN(t, 0);
524 } 524 }
525 525
526 static inline void gen_movl_reg_T0(int reg) 526 static inline void gen_movl_reg_T0(int reg)
@@ -541,7 +541,7 @@ static inline void gen_movl_reg_T2(int reg) @@ -541,7 +541,7 @@ static inline void gen_movl_reg_T2(int reg)
541 static inline void gen_movl_TN_reg(int reg, int t) 541 static inline void gen_movl_TN_reg(int reg, int t)
542 { 542 {
543 if (reg) 543 if (reg)
544 - gen_op_movl_TN_reg[t][reg] (); 544 + gen_op_movl_TN_reg[t][reg] ();
545 } 545 }
546 546
547 static inline void gen_movl_T0_reg(int reg) 547 static inline void gen_movl_T0_reg(int reg)
@@ -699,118 +699,118 @@ static inline void gen_mov_pc_npc(DisasContext * dc) @@ -699,118 +699,118 @@ static inline void gen_mov_pc_npc(DisasContext * dc)
699 699
700 static GenOpFunc * const gen_cond[2][16] = { 700 static GenOpFunc * const gen_cond[2][16] = {
701 { 701 {
702 - gen_op_eval_bn,  
703 - gen_op_eval_be,  
704 - gen_op_eval_ble,  
705 - gen_op_eval_bl,  
706 - gen_op_eval_bleu,  
707 - gen_op_eval_bcs,  
708 - gen_op_eval_bneg,  
709 - gen_op_eval_bvs,  
710 - gen_op_eval_ba,  
711 - gen_op_eval_bne,  
712 - gen_op_eval_bg,  
713 - gen_op_eval_bge,  
714 - gen_op_eval_bgu,  
715 - gen_op_eval_bcc,  
716 - gen_op_eval_bpos,  
717 - gen_op_eval_bvc, 702 + gen_op_eval_bn,
  703 + gen_op_eval_be,
  704 + gen_op_eval_ble,
  705 + gen_op_eval_bl,
  706 + gen_op_eval_bleu,
  707 + gen_op_eval_bcs,
  708 + gen_op_eval_bneg,
  709 + gen_op_eval_bvs,
  710 + gen_op_eval_ba,
  711 + gen_op_eval_bne,
  712 + gen_op_eval_bg,
  713 + gen_op_eval_bge,
  714 + gen_op_eval_bgu,
  715 + gen_op_eval_bcc,
  716 + gen_op_eval_bpos,
  717 + gen_op_eval_bvc,
718 }, 718 },
719 { 719 {
720 #ifdef TARGET_SPARC64 720 #ifdef TARGET_SPARC64
721 - gen_op_eval_bn,  
722 - gen_op_eval_xbe,  
723 - gen_op_eval_xble,  
724 - gen_op_eval_xbl,  
725 - gen_op_eval_xbleu,  
726 - gen_op_eval_xbcs,  
727 - gen_op_eval_xbneg,  
728 - gen_op_eval_xbvs,  
729 - gen_op_eval_ba,  
730 - gen_op_eval_xbne,  
731 - gen_op_eval_xbg,  
732 - gen_op_eval_xbge,  
733 - gen_op_eval_xbgu,  
734 - gen_op_eval_xbcc,  
735 - gen_op_eval_xbpos,  
736 - gen_op_eval_xbvc, 721 + gen_op_eval_bn,
  722 + gen_op_eval_xbe,
  723 + gen_op_eval_xble,
  724 + gen_op_eval_xbl,
  725 + gen_op_eval_xbleu,
  726 + gen_op_eval_xbcs,
  727 + gen_op_eval_xbneg,
  728 + gen_op_eval_xbvs,
  729 + gen_op_eval_ba,
  730 + gen_op_eval_xbne,
  731 + gen_op_eval_xbg,
  732 + gen_op_eval_xbge,
  733 + gen_op_eval_xbgu,
  734 + gen_op_eval_xbcc,
  735 + gen_op_eval_xbpos,
  736 + gen_op_eval_xbvc,
737 #endif 737 #endif
738 }, 738 },
739 }; 739 };
740 740
741 static GenOpFunc * const gen_fcond[4][16] = { 741 static GenOpFunc * const gen_fcond[4][16] = {
742 { 742 {
743 - gen_op_eval_bn,  
744 - gen_op_eval_fbne,  
745 - gen_op_eval_fblg,  
746 - gen_op_eval_fbul,  
747 - gen_op_eval_fbl,  
748 - gen_op_eval_fbug,  
749 - gen_op_eval_fbg,  
750 - gen_op_eval_fbu,  
751 - gen_op_eval_ba,  
752 - gen_op_eval_fbe,  
753 - gen_op_eval_fbue,  
754 - gen_op_eval_fbge,  
755 - gen_op_eval_fbuge,  
756 - gen_op_eval_fble,  
757 - gen_op_eval_fbule,  
758 - gen_op_eval_fbo, 743 + gen_op_eval_bn,
  744 + gen_op_eval_fbne,
  745 + gen_op_eval_fblg,
  746 + gen_op_eval_fbul,
  747 + gen_op_eval_fbl,
  748 + gen_op_eval_fbug,
  749 + gen_op_eval_fbg,
  750 + gen_op_eval_fbu,
  751 + gen_op_eval_ba,
  752 + gen_op_eval_fbe,
  753 + gen_op_eval_fbue,
  754 + gen_op_eval_fbge,
  755 + gen_op_eval_fbuge,
  756 + gen_op_eval_fble,
  757 + gen_op_eval_fbule,
  758 + gen_op_eval_fbo,
759 }, 759 },
760 #ifdef TARGET_SPARC64 760 #ifdef TARGET_SPARC64
761 { 761 {
762 - gen_op_eval_bn,  
763 - gen_op_eval_fbne_fcc1,  
764 - gen_op_eval_fblg_fcc1,  
765 - gen_op_eval_fbul_fcc1,  
766 - gen_op_eval_fbl_fcc1,  
767 - gen_op_eval_fbug_fcc1,  
768 - gen_op_eval_fbg_fcc1,  
769 - gen_op_eval_fbu_fcc1,  
770 - gen_op_eval_ba,  
771 - gen_op_eval_fbe_fcc1,  
772 - gen_op_eval_fbue_fcc1,  
773 - gen_op_eval_fbge_fcc1,  
774 - gen_op_eval_fbuge_fcc1,  
775 - gen_op_eval_fble_fcc1,  
776 - gen_op_eval_fbule_fcc1,  
777 - gen_op_eval_fbo_fcc1, 762 + gen_op_eval_bn,
  763 + gen_op_eval_fbne_fcc1,
  764 + gen_op_eval_fblg_fcc1,
  765 + gen_op_eval_fbul_fcc1,
  766 + gen_op_eval_fbl_fcc1,
  767 + gen_op_eval_fbug_fcc1,
  768 + gen_op_eval_fbg_fcc1,
  769 + gen_op_eval_fbu_fcc1,
  770 + gen_op_eval_ba,
  771 + gen_op_eval_fbe_fcc1,
  772 + gen_op_eval_fbue_fcc1,
  773 + gen_op_eval_fbge_fcc1,
  774 + gen_op_eval_fbuge_fcc1,
  775 + gen_op_eval_fble_fcc1,
  776 + gen_op_eval_fbule_fcc1,
  777 + gen_op_eval_fbo_fcc1,
778 }, 778 },
779 { 779 {
780 - gen_op_eval_bn,  
781 - gen_op_eval_fbne_fcc2,  
782 - gen_op_eval_fblg_fcc2,  
783 - gen_op_eval_fbul_fcc2,  
784 - gen_op_eval_fbl_fcc2,  
785 - gen_op_eval_fbug_fcc2,  
786 - gen_op_eval_fbg_fcc2,  
787 - gen_op_eval_fbu_fcc2,  
788 - gen_op_eval_ba,  
789 - gen_op_eval_fbe_fcc2,  
790 - gen_op_eval_fbue_fcc2,  
791 - gen_op_eval_fbge_fcc2,  
792 - gen_op_eval_fbuge_fcc2,  
793 - gen_op_eval_fble_fcc2,  
794 - gen_op_eval_fbule_fcc2,  
795 - gen_op_eval_fbo_fcc2, 780 + gen_op_eval_bn,
  781 + gen_op_eval_fbne_fcc2,
  782 + gen_op_eval_fblg_fcc2,
  783 + gen_op_eval_fbul_fcc2,
  784 + gen_op_eval_fbl_fcc2,
  785 + gen_op_eval_fbug_fcc2,
  786 + gen_op_eval_fbg_fcc2,
  787 + gen_op_eval_fbu_fcc2,
  788 + gen_op_eval_ba,
  789 + gen_op_eval_fbe_fcc2,
  790 + gen_op_eval_fbue_fcc2,
  791 + gen_op_eval_fbge_fcc2,
  792 + gen_op_eval_fbuge_fcc2,
  793 + gen_op_eval_fble_fcc2,
  794 + gen_op_eval_fbule_fcc2,
  795 + gen_op_eval_fbo_fcc2,
796 }, 796 },
797 { 797 {
798 - gen_op_eval_bn,  
799 - gen_op_eval_fbne_fcc3,  
800 - gen_op_eval_fblg_fcc3,  
801 - gen_op_eval_fbul_fcc3,  
802 - gen_op_eval_fbl_fcc3,  
803 - gen_op_eval_fbug_fcc3,  
804 - gen_op_eval_fbg_fcc3,  
805 - gen_op_eval_fbu_fcc3,  
806 - gen_op_eval_ba,  
807 - gen_op_eval_fbe_fcc3,  
808 - gen_op_eval_fbue_fcc3,  
809 - gen_op_eval_fbge_fcc3,  
810 - gen_op_eval_fbuge_fcc3,  
811 - gen_op_eval_fble_fcc3,  
812 - gen_op_eval_fbule_fcc3,  
813 - gen_op_eval_fbo_fcc3, 798 + gen_op_eval_bn,
  799 + gen_op_eval_fbne_fcc3,
  800 + gen_op_eval_fblg_fcc3,
  801 + gen_op_eval_fbul_fcc3,
  802 + gen_op_eval_fbl_fcc3,
  803 + gen_op_eval_fbug_fcc3,
  804 + gen_op_eval_fbg_fcc3,
  805 + gen_op_eval_fbu_fcc3,
  806 + gen_op_eval_ba,
  807 + gen_op_eval_fbe_fcc3,
  808 + gen_op_eval_fbue_fcc3,
  809 + gen_op_eval_fbge_fcc3,
  810 + gen_op_eval_fbuge_fcc3,
  811 + gen_op_eval_fble_fcc3,
  812 + gen_op_eval_fbule_fcc3,
  813 + gen_op_eval_fbo_fcc3,
814 }, 814 },
815 #else 815 #else
816 {}, {}, {}, 816 {}, {}, {},
@@ -820,27 +820,27 @@ static GenOpFunc * const gen_fcond[4][16] = { @@ -820,27 +820,27 @@ static GenOpFunc * const gen_fcond[4][16] = {
820 #ifdef TARGET_SPARC64 820 #ifdef TARGET_SPARC64
821 static void gen_cond_reg(int cond) 821 static void gen_cond_reg(int cond)
822 { 822 {
823 - switch (cond) {  
824 - case 0x1:  
825 - gen_op_eval_brz();  
826 - break;  
827 - case 0x2:  
828 - gen_op_eval_brlez();  
829 - break;  
830 - case 0x3:  
831 - gen_op_eval_brlz();  
832 - break;  
833 - case 0x5:  
834 - gen_op_eval_brnz();  
835 - break;  
836 - case 0x6:  
837 - gen_op_eval_brgz();  
838 - break; 823 + switch (cond) {
  824 + case 0x1:
  825 + gen_op_eval_brz();
  826 + break;
  827 + case 0x2:
  828 + gen_op_eval_brlez();
  829 + break;
  830 + case 0x3:
  831 + gen_op_eval_brlz();
  832 + break;
  833 + case 0x5:
  834 + gen_op_eval_brnz();
  835 + break;
  836 + case 0x6:
  837 + gen_op_eval_brgz();
  838 + break;
839 default: 839 default:
840 - case 0x7:  
841 - gen_op_eval_brgez();  
842 - break;  
843 - } 840 + case 0x7:
  841 + gen_op_eval_brgez();
  842 + break;
  843 + }
844 } 844 }
845 #endif 845 #endif
846 846
@@ -851,35 +851,35 @@ static void do_branch(DisasContext * dc, int32_t offset, uint32_t insn, int cc) @@ -851,35 +851,35 @@ static void do_branch(DisasContext * dc, int32_t offset, uint32_t insn, int cc)
851 target_ulong target = dc->pc + offset; 851 target_ulong target = dc->pc + offset;
852 852
853 if (cond == 0x0) { 853 if (cond == 0x0) {
854 - /* unconditional not taken */  
855 - if (a) {  
856 - dc->pc = dc->npc + 4;  
857 - dc->npc = dc->pc + 4;  
858 - } else {  
859 - dc->pc = dc->npc;  
860 - dc->npc = dc->pc + 4;  
861 - } 854 + /* unconditional not taken */
  855 + if (a) {
  856 + dc->pc = dc->npc + 4;
  857 + dc->npc = dc->pc + 4;
  858 + } else {
  859 + dc->pc = dc->npc;
  860 + dc->npc = dc->pc + 4;
  861 + }
862 } else if (cond == 0x8) { 862 } else if (cond == 0x8) {
863 - /* unconditional taken */  
864 - if (a) {  
865 - dc->pc = target;  
866 - dc->npc = dc->pc + 4;  
867 - } else {  
868 - dc->pc = dc->npc;  
869 - dc->npc = target;  
870 - } 863 + /* unconditional taken */
  864 + if (a) {
  865 + dc->pc = target;
  866 + dc->npc = dc->pc + 4;
  867 + } else {
  868 + dc->pc = dc->npc;
  869 + dc->npc = target;
  870 + }
871 } else { 871 } else {
872 flush_T2(dc); 872 flush_T2(dc);
873 gen_cond[cc][cond](); 873 gen_cond[cc][cond]();
874 - if (a) {  
875 - gen_branch_a(dc, target, dc->npc); 874 + if (a) {
  875 + gen_branch_a(dc, target, dc->npc);
876 dc->is_br = 1; 876 dc->is_br = 1;
877 - } else { 877 + } else {
878 dc->pc = dc->npc; 878 dc->pc = dc->npc;
879 dc->jump_pc[0] = target; 879 dc->jump_pc[0] = target;
880 dc->jump_pc[1] = dc->npc + 4; 880 dc->jump_pc[1] = dc->npc + 4;
881 dc->npc = JUMP_PC; 881 dc->npc = JUMP_PC;
882 - } 882 + }
883 } 883 }
884 } 884 }
885 885
@@ -890,35 +890,35 @@ static void do_fbranch(DisasContext * dc, int32_t offset, uint32_t insn, int cc) @@ -890,35 +890,35 @@ static void do_fbranch(DisasContext * dc, int32_t offset, uint32_t insn, int cc)
890 target_ulong target = dc->pc + offset; 890 target_ulong target = dc->pc + offset;
891 891
892 if (cond == 0x0) { 892 if (cond == 0x0) {
893 - /* unconditional not taken */  
894 - if (a) {  
895 - dc->pc = dc->npc + 4;  
896 - dc->npc = dc->pc + 4;  
897 - } else {  
898 - dc->pc = dc->npc;  
899 - dc->npc = dc->pc + 4;  
900 - } 893 + /* unconditional not taken */
  894 + if (a) {
  895 + dc->pc = dc->npc + 4;
  896 + dc->npc = dc->pc + 4;
  897 + } else {
  898 + dc->pc = dc->npc;
  899 + dc->npc = dc->pc + 4;
  900 + }
901 } else if (cond == 0x8) { 901 } else if (cond == 0x8) {
902 - /* unconditional taken */  
903 - if (a) {  
904 - dc->pc = target;  
905 - dc->npc = dc->pc + 4;  
906 - } else {  
907 - dc->pc = dc->npc;  
908 - dc->npc = target;  
909 - } 902 + /* unconditional taken */
  903 + if (a) {
  904 + dc->pc = target;
  905 + dc->npc = dc->pc + 4;
  906 + } else {
  907 + dc->pc = dc->npc;
  908 + dc->npc = target;
  909 + }
910 } else { 910 } else {
911 flush_T2(dc); 911 flush_T2(dc);
912 gen_fcond[cc][cond](); 912 gen_fcond[cc][cond]();
913 - if (a) {  
914 - gen_branch_a(dc, target, dc->npc); 913 + if (a) {
  914 + gen_branch_a(dc, target, dc->npc);
915 dc->is_br = 1; 915 dc->is_br = 1;
916 - } else { 916 + } else {
917 dc->pc = dc->npc; 917 dc->pc = dc->npc;
918 dc->jump_pc[0] = target; 918 dc->jump_pc[0] = target;
919 dc->jump_pc[1] = dc->npc + 4; 919 dc->jump_pc[1] = dc->npc + 4;
920 dc->npc = JUMP_PC; 920 dc->npc = JUMP_PC;
921 - } 921 + }
922 } 922 }
923 } 923 }
924 924
@@ -932,13 +932,13 @@ static void do_branch_reg(DisasContext * dc, int32_t offset, uint32_t insn) @@ -932,13 +932,13 @@ static void do_branch_reg(DisasContext * dc, int32_t offset, uint32_t insn)
932 flush_T2(dc); 932 flush_T2(dc);
933 gen_cond_reg(cond); 933 gen_cond_reg(cond);
934 if (a) { 934 if (a) {
935 - gen_branch_a(dc, target, dc->npc);  
936 - dc->is_br = 1; 935 + gen_branch_a(dc, target, dc->npc);
  936 + dc->is_br = 1;
937 } else { 937 } else {
938 - dc->pc = dc->npc;  
939 - dc->jump_pc[0] = target;  
940 - dc->jump_pc[1] = dc->npc + 4;  
941 - dc->npc = JUMP_PC; 938 + dc->pc = dc->npc;
  939 + dc->jump_pc[0] = target;
  940 + dc->jump_pc[1] = dc->npc + 4;
  941 + dc->npc = JUMP_PC;
942 } 942 }
943 } 943 }
944 944
@@ -995,139 +995,139 @@ static void disas_sparc_insn(DisasContext * dc) @@ -995,139 +995,139 @@ static void disas_sparc_insn(DisasContext * dc)
995 995
996 rd = GET_FIELD(insn, 2, 6); 996 rd = GET_FIELD(insn, 2, 6);
997 switch (opc) { 997 switch (opc) {
998 - case 0: /* branches/sethi */  
999 - {  
1000 - unsigned int xop = GET_FIELD(insn, 7, 9);  
1001 - int32_t target;  
1002 - switch (xop) { 998 + case 0: /* branches/sethi */
  999 + {
  1000 + unsigned int xop = GET_FIELD(insn, 7, 9);
  1001 + int32_t target;
  1002 + switch (xop) {
1003 #ifdef TARGET_SPARC64 1003 #ifdef TARGET_SPARC64
1004 - case 0x1: /* V9 BPcc */  
1005 - {  
1006 - int cc;  
1007 -  
1008 - target = GET_FIELD_SP(insn, 0, 18);  
1009 - target = sign_extend(target, 18);  
1010 - target <<= 2;  
1011 - cc = GET_FIELD_SP(insn, 20, 21);  
1012 - if (cc == 0)  
1013 - do_branch(dc, target, insn, 0);  
1014 - else if (cc == 2)  
1015 - do_branch(dc, target, insn, 1);  
1016 - else  
1017 - goto illegal_insn;  
1018 - goto jmp_insn;  
1019 - }  
1020 - case 0x3: /* V9 BPr */  
1021 - {  
1022 - target = GET_FIELD_SP(insn, 0, 13) | 1004 + case 0x1: /* V9 BPcc */
  1005 + {
  1006 + int cc;
  1007 +
  1008 + target = GET_FIELD_SP(insn, 0, 18);
  1009 + target = sign_extend(target, 18);
  1010 + target <<= 2;
  1011 + cc = GET_FIELD_SP(insn, 20, 21);
  1012 + if (cc == 0)
  1013 + do_branch(dc, target, insn, 0);
  1014 + else if (cc == 2)
  1015 + do_branch(dc, target, insn, 1);
  1016 + else
  1017 + goto illegal_insn;
  1018 + goto jmp_insn;
  1019 + }
  1020 + case 0x3: /* V9 BPr */
  1021 + {
  1022 + target = GET_FIELD_SP(insn, 0, 13) |
1023 (GET_FIELD_SP(insn, 20, 21) << 14); 1023 (GET_FIELD_SP(insn, 20, 21) << 14);
1024 - target = sign_extend(target, 16);  
1025 - target <<= 2;  
1026 - rs1 = GET_FIELD(insn, 13, 17);  
1027 - gen_movl_reg_T0(rs1);  
1028 - do_branch_reg(dc, target, insn);  
1029 - goto jmp_insn;  
1030 - }  
1031 - case 0x5: /* V9 FBPcc */  
1032 - {  
1033 - int cc = GET_FIELD_SP(insn, 20, 21); 1024 + target = sign_extend(target, 16);
  1025 + target <<= 2;
  1026 + rs1 = GET_FIELD(insn, 13, 17);
  1027 + gen_movl_reg_T0(rs1);
  1028 + do_branch_reg(dc, target, insn);
  1029 + goto jmp_insn;
  1030 + }
  1031 + case 0x5: /* V9 FBPcc */
  1032 + {
  1033 + int cc = GET_FIELD_SP(insn, 20, 21);
1034 if (gen_trap_ifnofpu(dc)) 1034 if (gen_trap_ifnofpu(dc))
1035 goto jmp_insn; 1035 goto jmp_insn;
1036 - target = GET_FIELD_SP(insn, 0, 18);  
1037 - target = sign_extend(target, 19);  
1038 - target <<= 2;  
1039 - do_fbranch(dc, target, insn, cc);  
1040 - goto jmp_insn;  
1041 - } 1036 + target = GET_FIELD_SP(insn, 0, 18);
  1037 + target = sign_extend(target, 19);
  1038 + target <<= 2;
  1039 + do_fbranch(dc, target, insn, cc);
  1040 + goto jmp_insn;
  1041 + }
1042 #else 1042 #else
1043 - case 0x7: /* CBN+x */  
1044 - {  
1045 - goto ncp_insn;  
1046 - }  
1047 -#endif  
1048 - case 0x2: /* BN+x */  
1049 - {  
1050 - target = GET_FIELD(insn, 10, 31);  
1051 - target = sign_extend(target, 22);  
1052 - target <<= 2;  
1053 - do_branch(dc, target, insn, 0);  
1054 - goto jmp_insn;  
1055 - }  
1056 - case 0x6: /* FBN+x */  
1057 - { 1043 + case 0x7: /* CBN+x */
  1044 + {
  1045 + goto ncp_insn;
  1046 + }
  1047 +#endif
  1048 + case 0x2: /* BN+x */
  1049 + {
  1050 + target = GET_FIELD(insn, 10, 31);
  1051 + target = sign_extend(target, 22);
  1052 + target <<= 2;
  1053 + do_branch(dc, target, insn, 0);
  1054 + goto jmp_insn;
  1055 + }
  1056 + case 0x6: /* FBN+x */
  1057 + {
1058 if (gen_trap_ifnofpu(dc)) 1058 if (gen_trap_ifnofpu(dc))
1059 goto jmp_insn; 1059 goto jmp_insn;
1060 - target = GET_FIELD(insn, 10, 31);  
1061 - target = sign_extend(target, 22);  
1062 - target <<= 2;  
1063 - do_fbranch(dc, target, insn, 0);  
1064 - goto jmp_insn;  
1065 - }  
1066 - case 0x4: /* SETHI */ 1060 + target = GET_FIELD(insn, 10, 31);
  1061 + target = sign_extend(target, 22);
  1062 + target <<= 2;
  1063 + do_fbranch(dc, target, insn, 0);
  1064 + goto jmp_insn;
  1065 + }
  1066 + case 0x4: /* SETHI */
1067 #define OPTIM 1067 #define OPTIM
1068 #if defined(OPTIM) 1068 #if defined(OPTIM)
1069 - if (rd) { // nop 1069 + if (rd) { // nop
1070 #endif 1070 #endif
1071 - uint32_t value = GET_FIELD(insn, 10, 31);  
1072 - gen_movl_imm_T0(value << 10);  
1073 - gen_movl_T0_reg(rd); 1071 + uint32_t value = GET_FIELD(insn, 10, 31);
  1072 + gen_movl_imm_T0(value << 10);
  1073 + gen_movl_T0_reg(rd);
1074 #if defined(OPTIM) 1074 #if defined(OPTIM)
1075 - } 1075 + }
1076 #endif 1076 #endif
1077 - break;  
1078 - case 0x0: /* UNIMPL */  
1079 - default: 1077 + break;
  1078 + case 0x0: /* UNIMPL */
  1079 + default:
1080 goto illegal_insn; 1080 goto illegal_insn;
1081 - }  
1082 - break;  
1083 - }  
1084 - break; 1081 + }
  1082 + break;
  1083 + }
  1084 + break;
1085 case 1: 1085 case 1:
1086 - /*CALL*/ {  
1087 - target_long target = GET_FIELDs(insn, 2, 31) << 2; 1086 + /*CALL*/ {
  1087 + target_long target = GET_FIELDs(insn, 2, 31) << 2;
1088 1088
1089 #ifdef TARGET_SPARC64 1089 #ifdef TARGET_SPARC64
1090 - if (dc->pc == (uint32_t)dc->pc) {  
1091 - gen_op_movl_T0_im(dc->pc);  
1092 - } else {  
1093 - gen_op_movq_T0_im64(dc->pc >> 32, dc->pc);  
1094 - } 1090 + if (dc->pc == (uint32_t)dc->pc) {
  1091 + gen_op_movl_T0_im(dc->pc);
  1092 + } else {
  1093 + gen_op_movq_T0_im64(dc->pc >> 32, dc->pc);
  1094 + }
1095 #else 1095 #else
1096 - gen_op_movl_T0_im(dc->pc); 1096 + gen_op_movl_T0_im(dc->pc);
1097 #endif 1097 #endif
1098 - gen_movl_T0_reg(15);  
1099 - target += dc->pc; 1098 + gen_movl_T0_reg(15);
  1099 + target += dc->pc;
1100 gen_mov_pc_npc(dc); 1100 gen_mov_pc_npc(dc);
1101 - dc->npc = target;  
1102 - }  
1103 - goto jmp_insn;  
1104 - case 2: /* FPU & Logical Operations */  
1105 - {  
1106 - unsigned int xop = GET_FIELD(insn, 7, 12);  
1107 - if (xop == 0x3a) { /* generate trap */ 1101 + dc->npc = target;
  1102 + }
  1103 + goto jmp_insn;
  1104 + case 2: /* FPU & Logical Operations */
  1105 + {
  1106 + unsigned int xop = GET_FIELD(insn, 7, 12);
  1107 + if (xop == 0x3a) { /* generate trap */
1108 int cond; 1108 int cond;
1109 1109
1110 rs1 = GET_FIELD(insn, 13, 17); 1110 rs1 = GET_FIELD(insn, 13, 17);
1111 gen_movl_reg_T0(rs1); 1111 gen_movl_reg_T0(rs1);
1112 - if (IS_IMM) {  
1113 - rs2 = GET_FIELD(insn, 25, 31); 1112 + if (IS_IMM) {
  1113 + rs2 = GET_FIELD(insn, 25, 31);
1114 #if defined(OPTIM) 1114 #if defined(OPTIM)
1115 - if (rs2 != 0) { 1115 + if (rs2 != 0) {
1116 #endif 1116 #endif
1117 - gen_movl_simm_T1(rs2);  
1118 - gen_op_add_T1_T0(); 1117 + gen_movl_simm_T1(rs2);
  1118 + gen_op_add_T1_T0();
1119 #if defined(OPTIM) 1119 #if defined(OPTIM)
1120 - } 1120 + }
1121 #endif 1121 #endif
1122 } else { 1122 } else {
1123 rs2 = GET_FIELD(insn, 27, 31); 1123 rs2 = GET_FIELD(insn, 27, 31);
1124 #if defined(OPTIM) 1124 #if defined(OPTIM)
1125 - if (rs2 != 0) { 1125 + if (rs2 != 0) {
1126 #endif 1126 #endif
1127 - gen_movl_reg_T1(rs2);  
1128 - gen_op_add_T1_T0(); 1127 + gen_movl_reg_T1(rs2);
  1128 + gen_op_add_T1_T0();
1129 #if defined(OPTIM) 1129 #if defined(OPTIM)
1130 - } 1130 + }
1131 #endif 1131 #endif
1132 } 1132 }
1133 cond = GET_FIELD(insn, 3, 6); 1133 cond = GET_FIELD(insn, 3, 6);
@@ -1136,20 +1136,20 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1136,20 +1136,20 @@ static void disas_sparc_insn(DisasContext * dc)
1136 gen_op_trap_T0(); 1136 gen_op_trap_T0();
1137 } else if (cond != 0) { 1137 } else if (cond != 0) {
1138 #ifdef TARGET_SPARC64 1138 #ifdef TARGET_SPARC64
1139 - /* V9 icc/xcc */  
1140 - int cc = GET_FIELD_SP(insn, 11, 12);  
1141 - flush_T2(dc); 1139 + /* V9 icc/xcc */
  1140 + int cc = GET_FIELD_SP(insn, 11, 12);
  1141 + flush_T2(dc);
1142 save_state(dc); 1142 save_state(dc);
1143 - if (cc == 0)  
1144 - gen_cond[0][cond]();  
1145 - else if (cc == 2)  
1146 - gen_cond[1][cond]();  
1147 - else  
1148 - goto illegal_insn; 1143 + if (cc == 0)
  1144 + gen_cond[0][cond]();
  1145 + else if (cc == 2)
  1146 + gen_cond[1][cond]();
  1147 + else
  1148 + goto illegal_insn;
1149 #else 1149 #else
1150 - flush_T2(dc); 1150 + flush_T2(dc);
1151 save_state(dc); 1151 save_state(dc);
1152 - gen_cond[0][cond](); 1152 + gen_cond[0][cond]();
1153 #endif 1153 #endif
1154 gen_op_trapcc_T0(); 1154 gen_op_trapcc_T0();
1155 } 1155 }
@@ -1176,56 +1176,56 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1176,56 +1176,56 @@ static void disas_sparc_insn(DisasContext * dc)
1176 gen_movl_T0_reg(rd); 1176 gen_movl_T0_reg(rd);
1177 break; 1177 break;
1178 #ifdef TARGET_SPARC64 1178 #ifdef TARGET_SPARC64
1179 - case 0x2: /* V9 rdccr */ 1179 + case 0x2: /* V9 rdccr */
1180 gen_op_rdccr(); 1180 gen_op_rdccr();
1181 gen_movl_T0_reg(rd); 1181 gen_movl_T0_reg(rd);
1182 break; 1182 break;
1183 - case 0x3: /* V9 rdasi */  
1184 - gen_op_movl_T0_env(offsetof(CPUSPARCState, asi)); 1183 + case 0x3: /* V9 rdasi */
  1184 + gen_op_movl_T0_env(offsetof(CPUSPARCState, asi));
1185 gen_movl_T0_reg(rd); 1185 gen_movl_T0_reg(rd);
1186 break; 1186 break;
1187 - case 0x4: /* V9 rdtick */ 1187 + case 0x4: /* V9 rdtick */
1188 gen_op_rdtick(); 1188 gen_op_rdtick();
1189 gen_movl_T0_reg(rd); 1189 gen_movl_T0_reg(rd);
1190 break; 1190 break;
1191 - case 0x5: /* V9 rdpc */  
1192 - if (dc->pc == (uint32_t)dc->pc) {  
1193 - gen_op_movl_T0_im(dc->pc);  
1194 - } else {  
1195 - gen_op_movq_T0_im64(dc->pc >> 32, dc->pc);  
1196 - }  
1197 - gen_movl_T0_reg(rd);  
1198 - break;  
1199 - case 0x6: /* V9 rdfprs */  
1200 - gen_op_movl_T0_env(offsetof(CPUSPARCState, fprs)); 1191 + case 0x5: /* V9 rdpc */
  1192 + if (dc->pc == (uint32_t)dc->pc) {
  1193 + gen_op_movl_T0_im(dc->pc);
  1194 + } else {
  1195 + gen_op_movq_T0_im64(dc->pc >> 32, dc->pc);
  1196 + }
  1197 + gen_movl_T0_reg(rd);
  1198 + break;
  1199 + case 0x6: /* V9 rdfprs */
  1200 + gen_op_movl_T0_env(offsetof(CPUSPARCState, fprs));
1201 gen_movl_T0_reg(rd); 1201 gen_movl_T0_reg(rd);
1202 break; 1202 break;
1203 case 0xf: /* V9 membar */ 1203 case 0xf: /* V9 membar */
1204 break; /* no effect */ 1204 break; /* no effect */
1205 - case 0x13: /* Graphics Status */ 1205 + case 0x13: /* Graphics Status */
1206 if (gen_trap_ifnofpu(dc)) 1206 if (gen_trap_ifnofpu(dc))
1207 goto jmp_insn; 1207 goto jmp_insn;
1208 - gen_op_movtl_T0_env(offsetof(CPUSPARCState, gsr)); 1208 + gen_op_movtl_T0_env(offsetof(CPUSPARCState, gsr));
1209 gen_movl_T0_reg(rd); 1209 gen_movl_T0_reg(rd);
1210 break; 1210 break;
1211 - case 0x17: /* Tick compare */  
1212 - gen_op_movtl_T0_env(offsetof(CPUSPARCState, tick_cmpr)); 1211 + case 0x17: /* Tick compare */
  1212 + gen_op_movtl_T0_env(offsetof(CPUSPARCState, tick_cmpr));
1213 gen_movl_T0_reg(rd); 1213 gen_movl_T0_reg(rd);
1214 break; 1214 break;
1215 - case 0x18: /* System tick */ 1215 + case 0x18: /* System tick */
1216 gen_op_rdstick(); 1216 gen_op_rdstick();
1217 gen_movl_T0_reg(rd); 1217 gen_movl_T0_reg(rd);
1218 break; 1218 break;
1219 - case 0x19: /* System tick compare */  
1220 - gen_op_movtl_T0_env(offsetof(CPUSPARCState, stick_cmpr)); 1219 + case 0x19: /* System tick compare */
  1220 + gen_op_movtl_T0_env(offsetof(CPUSPARCState, stick_cmpr));
1221 gen_movl_T0_reg(rd); 1221 gen_movl_T0_reg(rd);
1222 break; 1222 break;
1223 - case 0x10: /* Performance Control */  
1224 - case 0x11: /* Performance Instrumentation Counter */  
1225 - case 0x12: /* Dispatch Control */  
1226 - case 0x14: /* Softint set, WO */  
1227 - case 0x15: /* Softint clear, WO */  
1228 - case 0x16: /* Softint write */ 1223 + case 0x10: /* Performance Control */
  1224 + case 0x11: /* Performance Instrumentation Counter */
  1225 + case 0x12: /* Dispatch Control */
  1226 + case 0x14: /* Softint set, WO */
  1227 + case 0x15: /* Softint clear, WO */
  1228 + case 0x16: /* Softint write */
1229 #endif 1229 #endif
1230 default: 1230 default:
1231 goto illegal_insn; 1231 goto illegal_insn;
@@ -1233,8 +1233,8 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1233,8 +1233,8 @@ static void disas_sparc_insn(DisasContext * dc)
1233 #if !defined(CONFIG_USER_ONLY) 1233 #if !defined(CONFIG_USER_ONLY)
1234 } else if (xop == 0x29) { /* rdpsr / UA2005 rdhpr */ 1234 } else if (xop == 0x29) { /* rdpsr / UA2005 rdhpr */
1235 #ifndef TARGET_SPARC64 1235 #ifndef TARGET_SPARC64
1236 - if (!supervisor(dc))  
1237 - goto priv_insn; 1236 + if (!supervisor(dc))
  1237 + goto priv_insn;
1238 gen_op_rdpsr(); 1238 gen_op_rdpsr();
1239 #else 1239 #else
1240 if (!hypervisor(dc)) 1240 if (!hypervisor(dc))
@@ -1266,56 +1266,56 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1266,56 +1266,56 @@ static void disas_sparc_insn(DisasContext * dc)
1266 gen_movl_T0_reg(rd); 1266 gen_movl_T0_reg(rd);
1267 break; 1267 break;
1268 } else if (xop == 0x2a) { /* rdwim / V9 rdpr */ 1268 } else if (xop == 0x2a) { /* rdwim / V9 rdpr */
1269 - if (!supervisor(dc))  
1270 - goto priv_insn; 1269 + if (!supervisor(dc))
  1270 + goto priv_insn;
1271 #ifdef TARGET_SPARC64 1271 #ifdef TARGET_SPARC64
1272 rs1 = GET_FIELD(insn, 13, 17); 1272 rs1 = GET_FIELD(insn, 13, 17);
1273 - switch (rs1) {  
1274 - case 0: // tpc  
1275 - gen_op_rdtpc();  
1276 - break;  
1277 - case 1: // tnpc  
1278 - gen_op_rdtnpc();  
1279 - break;  
1280 - case 2: // tstate  
1281 - gen_op_rdtstate();  
1282 - break;  
1283 - case 3: // tt  
1284 - gen_op_rdtt();  
1285 - break;  
1286 - case 4: // tick  
1287 - gen_op_rdtick();  
1288 - break;  
1289 - case 5: // tba  
1290 - gen_op_movtl_T0_env(offsetof(CPUSPARCState, tbr));  
1291 - break;  
1292 - case 6: // pstate  
1293 - gen_op_rdpstate();  
1294 - break;  
1295 - case 7: // tl  
1296 - gen_op_movl_T0_env(offsetof(CPUSPARCState, tl));  
1297 - break;  
1298 - case 8: // pil  
1299 - gen_op_movl_T0_env(offsetof(CPUSPARCState, psrpil));  
1300 - break;  
1301 - case 9: // cwp  
1302 - gen_op_rdcwp();  
1303 - break;  
1304 - case 10: // cansave  
1305 - gen_op_movl_T0_env(offsetof(CPUSPARCState, cansave));  
1306 - break;  
1307 - case 11: // canrestore  
1308 - gen_op_movl_T0_env(offsetof(CPUSPARCState, canrestore));  
1309 - break;  
1310 - case 12: // cleanwin  
1311 - gen_op_movl_T0_env(offsetof(CPUSPARCState, cleanwin));  
1312 - break;  
1313 - case 13: // otherwin  
1314 - gen_op_movl_T0_env(offsetof(CPUSPARCState, otherwin));  
1315 - break;  
1316 - case 14: // wstate  
1317 - gen_op_movl_T0_env(offsetof(CPUSPARCState, wstate));  
1318 - break; 1273 + switch (rs1) {
  1274 + case 0: // tpc
  1275 + gen_op_rdtpc();
  1276 + break;
  1277 + case 1: // tnpc
  1278 + gen_op_rdtnpc();
  1279 + break;
  1280 + case 2: // tstate
  1281 + gen_op_rdtstate();
  1282 + break;
  1283 + case 3: // tt
  1284 + gen_op_rdtt();
  1285 + break;
  1286 + case 4: // tick
  1287 + gen_op_rdtick();
  1288 + break;
  1289 + case 5: // tba
  1290 + gen_op_movtl_T0_env(offsetof(CPUSPARCState, tbr));
  1291 + break;
  1292 + case 6: // pstate
  1293 + gen_op_rdpstate();
  1294 + break;
  1295 + case 7: // tl
  1296 + gen_op_movl_T0_env(offsetof(CPUSPARCState, tl));
  1297 + break;
  1298 + case 8: // pil
  1299 + gen_op_movl_T0_env(offsetof(CPUSPARCState, psrpil));
  1300 + break;
  1301 + case 9: // cwp
  1302 + gen_op_rdcwp();
  1303 + break;
  1304 + case 10: // cansave
  1305 + gen_op_movl_T0_env(offsetof(CPUSPARCState, cansave));
  1306 + break;
  1307 + case 11: // canrestore
  1308 + gen_op_movl_T0_env(offsetof(CPUSPARCState, canrestore));
  1309 + break;
  1310 + case 12: // cleanwin
  1311 + gen_op_movl_T0_env(offsetof(CPUSPARCState, cleanwin));
  1312 + break;
  1313 + case 13: // otherwin
  1314 + gen_op_movl_T0_env(offsetof(CPUSPARCState, otherwin));
  1315 + break;
  1316 + case 14: // wstate
  1317 + gen_op_movl_T0_env(offsetof(CPUSPARCState, wstate));
  1318 + break;
1319 case 16: // UA2005 gl 1319 case 16: // UA2005 gl
1320 gen_op_movl_T0_env(offsetof(CPUSPARCState, gl)); 1320 gen_op_movl_T0_env(offsetof(CPUSPARCState, gl));
1321 break; 1321 break;
@@ -1324,506 +1324,506 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1324,506 +1324,506 @@ static void disas_sparc_insn(DisasContext * dc)
1324 goto priv_insn; 1324 goto priv_insn;
1325 gen_op_movl_T0_env(offsetof(CPUSPARCState, ssr)); 1325 gen_op_movl_T0_env(offsetof(CPUSPARCState, ssr));
1326 break; 1326 break;
1327 - case 31: // ver  
1328 - gen_op_movtl_T0_env(offsetof(CPUSPARCState, version));  
1329 - break;  
1330 - case 15: // fq  
1331 - default:  
1332 - goto illegal_insn;  
1333 - } 1327 + case 31: // ver
  1328 + gen_op_movtl_T0_env(offsetof(CPUSPARCState, version));
  1329 + break;
  1330 + case 15: // fq
  1331 + default:
  1332 + goto illegal_insn;
  1333 + }
1334 #else 1334 #else
1335 - gen_op_movl_T0_env(offsetof(CPUSPARCState, wim)); 1335 + gen_op_movl_T0_env(offsetof(CPUSPARCState, wim));
1336 #endif 1336 #endif
1337 gen_movl_T0_reg(rd); 1337 gen_movl_T0_reg(rd);
1338 break; 1338 break;
1339 } else if (xop == 0x2b) { /* rdtbr / V9 flushw */ 1339 } else if (xop == 0x2b) { /* rdtbr / V9 flushw */
1340 #ifdef TARGET_SPARC64 1340 #ifdef TARGET_SPARC64
1341 - gen_op_flushw(); 1341 + gen_op_flushw();
1342 #else 1342 #else
1343 - if (!supervisor(dc))  
1344 - goto priv_insn;  
1345 - gen_op_movtl_T0_env(offsetof(CPUSPARCState, tbr)); 1343 + if (!supervisor(dc))
  1344 + goto priv_insn;
  1345 + gen_op_movtl_T0_env(offsetof(CPUSPARCState, tbr));
1346 gen_movl_T0_reg(rd); 1346 gen_movl_T0_reg(rd);
1347 #endif 1347 #endif
1348 break; 1348 break;
1349 #endif 1349 #endif
1350 - } else if (xop == 0x34) { /* FPU Operations */ 1350 + } else if (xop == 0x34) { /* FPU Operations */
1351 if (gen_trap_ifnofpu(dc)) 1351 if (gen_trap_ifnofpu(dc))
1352 goto jmp_insn; 1352 goto jmp_insn;
1353 - gen_op_clear_ieee_excp_and_FTT(); 1353 + gen_op_clear_ieee_excp_and_FTT();
1354 rs1 = GET_FIELD(insn, 13, 17); 1354 rs1 = GET_FIELD(insn, 13, 17);
1355 - rs2 = GET_FIELD(insn, 27, 31);  
1356 - xop = GET_FIELD(insn, 18, 26);  
1357 - switch (xop) {  
1358 - case 0x1: /* fmovs */  
1359 - gen_op_load_fpr_FT0(rs2);  
1360 - gen_op_store_FT0_fpr(rd);  
1361 - break;  
1362 - case 0x5: /* fnegs */  
1363 - gen_op_load_fpr_FT1(rs2);  
1364 - gen_op_fnegs();  
1365 - gen_op_store_FT0_fpr(rd);  
1366 - break;  
1367 - case 0x9: /* fabss */  
1368 - gen_op_load_fpr_FT1(rs2);  
1369 - gen_op_fabss();  
1370 - gen_op_store_FT0_fpr(rd);  
1371 - break;  
1372 - case 0x29: /* fsqrts */  
1373 - gen_op_load_fpr_FT1(rs2);  
1374 - gen_op_fsqrts();  
1375 - gen_op_store_FT0_fpr(rd);  
1376 - break;  
1377 - case 0x2a: /* fsqrtd */  
1378 - gen_op_load_fpr_DT1(DFPREG(rs2));  
1379 - gen_op_fsqrtd();  
1380 - gen_op_store_DT0_fpr(DFPREG(rd));  
1381 - break;  
1382 - case 0x2b: /* fsqrtq */  
1383 - goto nfpu_insn;  
1384 - case 0x41:  
1385 - gen_op_load_fpr_FT0(rs1);  
1386 - gen_op_load_fpr_FT1(rs2);  
1387 - gen_op_fadds();  
1388 - gen_op_store_FT0_fpr(rd);  
1389 - break;  
1390 - case 0x42:  
1391 - gen_op_load_fpr_DT0(DFPREG(rs1));  
1392 - gen_op_load_fpr_DT1(DFPREG(rs2));  
1393 - gen_op_faddd();  
1394 - gen_op_store_DT0_fpr(DFPREG(rd));  
1395 - break;  
1396 - case 0x43: /* faddq */  
1397 - goto nfpu_insn;  
1398 - case 0x45:  
1399 - gen_op_load_fpr_FT0(rs1);  
1400 - gen_op_load_fpr_FT1(rs2);  
1401 - gen_op_fsubs();  
1402 - gen_op_store_FT0_fpr(rd);  
1403 - break;  
1404 - case 0x46:  
1405 - gen_op_load_fpr_DT0(DFPREG(rs1));  
1406 - gen_op_load_fpr_DT1(DFPREG(rs2));  
1407 - gen_op_fsubd();  
1408 - gen_op_store_DT0_fpr(DFPREG(rd));  
1409 - break;  
1410 - case 0x47: /* fsubq */  
1411 - goto nfpu_insn;  
1412 - case 0x49:  
1413 - gen_op_load_fpr_FT0(rs1);  
1414 - gen_op_load_fpr_FT1(rs2);  
1415 - gen_op_fmuls();  
1416 - gen_op_store_FT0_fpr(rd);  
1417 - break;  
1418 - case 0x4a:  
1419 - gen_op_load_fpr_DT0(DFPREG(rs1));  
1420 - gen_op_load_fpr_DT1(DFPREG(rs2));  
1421 - gen_op_fmuld();  
1422 - gen_op_store_DT0_fpr(rd);  
1423 - break;  
1424 - case 0x4b: /* fmulq */  
1425 - goto nfpu_insn;  
1426 - case 0x4d:  
1427 - gen_op_load_fpr_FT0(rs1);  
1428 - gen_op_load_fpr_FT1(rs2);  
1429 - gen_op_fdivs();  
1430 - gen_op_store_FT0_fpr(rd);  
1431 - break;  
1432 - case 0x4e:  
1433 - gen_op_load_fpr_DT0(DFPREG(rs1));  
1434 - gen_op_load_fpr_DT1(DFPREG(rs2));  
1435 - gen_op_fdivd();  
1436 - gen_op_store_DT0_fpr(DFPREG(rd));  
1437 - break;  
1438 - case 0x4f: /* fdivq */  
1439 - goto nfpu_insn;  
1440 - case 0x69:  
1441 - gen_op_load_fpr_FT0(rs1);  
1442 - gen_op_load_fpr_FT1(rs2);  
1443 - gen_op_fsmuld();  
1444 - gen_op_store_DT0_fpr(DFPREG(rd));  
1445 - break;  
1446 - case 0x6e: /* fdmulq */  
1447 - goto nfpu_insn;  
1448 - case 0xc4:  
1449 - gen_op_load_fpr_FT1(rs2);  
1450 - gen_op_fitos();  
1451 - gen_op_store_FT0_fpr(rd);  
1452 - break;  
1453 - case 0xc6:  
1454 - gen_op_load_fpr_DT1(DFPREG(rs2));  
1455 - gen_op_fdtos();  
1456 - gen_op_store_FT0_fpr(rd);  
1457 - break;  
1458 - case 0xc7: /* fqtos */  
1459 - goto nfpu_insn;  
1460 - case 0xc8:  
1461 - gen_op_load_fpr_FT1(rs2);  
1462 - gen_op_fitod();  
1463 - gen_op_store_DT0_fpr(DFPREG(rd));  
1464 - break;  
1465 - case 0xc9:  
1466 - gen_op_load_fpr_FT1(rs2);  
1467 - gen_op_fstod();  
1468 - gen_op_store_DT0_fpr(DFPREG(rd));  
1469 - break;  
1470 - case 0xcb: /* fqtod */  
1471 - goto nfpu_insn;  
1472 - case 0xcc: /* fitoq */  
1473 - goto nfpu_insn;  
1474 - case 0xcd: /* fstoq */  
1475 - goto nfpu_insn;  
1476 - case 0xce: /* fdtoq */  
1477 - goto nfpu_insn;  
1478 - case 0xd1:  
1479 - gen_op_load_fpr_FT1(rs2);  
1480 - gen_op_fstoi();  
1481 - gen_op_store_FT0_fpr(rd);  
1482 - break;  
1483 - case 0xd2:  
1484 - gen_op_load_fpr_DT1(rs2);  
1485 - gen_op_fdtoi();  
1486 - gen_op_store_FT0_fpr(rd);  
1487 - break;  
1488 - case 0xd3: /* fqtoi */  
1489 - goto nfpu_insn; 1355 + rs2 = GET_FIELD(insn, 27, 31);
  1356 + xop = GET_FIELD(insn, 18, 26);
  1357 + switch (xop) {
  1358 + case 0x1: /* fmovs */
  1359 + gen_op_load_fpr_FT0(rs2);
  1360 + gen_op_store_FT0_fpr(rd);
  1361 + break;
  1362 + case 0x5: /* fnegs */
  1363 + gen_op_load_fpr_FT1(rs2);
  1364 + gen_op_fnegs();
  1365 + gen_op_store_FT0_fpr(rd);
  1366 + break;
  1367 + case 0x9: /* fabss */
  1368 + gen_op_load_fpr_FT1(rs2);
  1369 + gen_op_fabss();
  1370 + gen_op_store_FT0_fpr(rd);
  1371 + break;
  1372 + case 0x29: /* fsqrts */
  1373 + gen_op_load_fpr_FT1(rs2);
  1374 + gen_op_fsqrts();
  1375 + gen_op_store_FT0_fpr(rd);
  1376 + break;
  1377 + case 0x2a: /* fsqrtd */
  1378 + gen_op_load_fpr_DT1(DFPREG(rs2));
  1379 + gen_op_fsqrtd();
  1380 + gen_op_store_DT0_fpr(DFPREG(rd));
  1381 + break;
  1382 + case 0x2b: /* fsqrtq */
  1383 + goto nfpu_insn;
  1384 + case 0x41:
  1385 + gen_op_load_fpr_FT0(rs1);
  1386 + gen_op_load_fpr_FT1(rs2);
  1387 + gen_op_fadds();
  1388 + gen_op_store_FT0_fpr(rd);
  1389 + break;
  1390 + case 0x42:
  1391 + gen_op_load_fpr_DT0(DFPREG(rs1));
  1392 + gen_op_load_fpr_DT1(DFPREG(rs2));
  1393 + gen_op_faddd();
  1394 + gen_op_store_DT0_fpr(DFPREG(rd));
  1395 + break;
  1396 + case 0x43: /* faddq */
  1397 + goto nfpu_insn;
  1398 + case 0x45:
  1399 + gen_op_load_fpr_FT0(rs1);
  1400 + gen_op_load_fpr_FT1(rs2);
  1401 + gen_op_fsubs();
  1402 + gen_op_store_FT0_fpr(rd);
  1403 + break;
  1404 + case 0x46:
  1405 + gen_op_load_fpr_DT0(DFPREG(rs1));
  1406 + gen_op_load_fpr_DT1(DFPREG(rs2));
  1407 + gen_op_fsubd();
  1408 + gen_op_store_DT0_fpr(DFPREG(rd));
  1409 + break;
  1410 + case 0x47: /* fsubq */
  1411 + goto nfpu_insn;
  1412 + case 0x49:
  1413 + gen_op_load_fpr_FT0(rs1);
  1414 + gen_op_load_fpr_FT1(rs2);
  1415 + gen_op_fmuls();
  1416 + gen_op_store_FT0_fpr(rd);
  1417 + break;
  1418 + case 0x4a:
  1419 + gen_op_load_fpr_DT0(DFPREG(rs1));
  1420 + gen_op_load_fpr_DT1(DFPREG(rs2));
  1421 + gen_op_fmuld();
  1422 + gen_op_store_DT0_fpr(rd);
  1423 + break;
  1424 + case 0x4b: /* fmulq */
  1425 + goto nfpu_insn;
  1426 + case 0x4d:
  1427 + gen_op_load_fpr_FT0(rs1);
  1428 + gen_op_load_fpr_FT1(rs2);
  1429 + gen_op_fdivs();
  1430 + gen_op_store_FT0_fpr(rd);
  1431 + break;
  1432 + case 0x4e:
  1433 + gen_op_load_fpr_DT0(DFPREG(rs1));
  1434 + gen_op_load_fpr_DT1(DFPREG(rs2));
  1435 + gen_op_fdivd();
  1436 + gen_op_store_DT0_fpr(DFPREG(rd));
  1437 + break;
  1438 + case 0x4f: /* fdivq */
  1439 + goto nfpu_insn;
  1440 + case 0x69:
  1441 + gen_op_load_fpr_FT0(rs1);
  1442 + gen_op_load_fpr_FT1(rs2);
  1443 + gen_op_fsmuld();
  1444 + gen_op_store_DT0_fpr(DFPREG(rd));
  1445 + break;
  1446 + case 0x6e: /* fdmulq */
  1447 + goto nfpu_insn;
  1448 + case 0xc4:
  1449 + gen_op_load_fpr_FT1(rs2);
  1450 + gen_op_fitos();
  1451 + gen_op_store_FT0_fpr(rd);
  1452 + break;
  1453 + case 0xc6:
  1454 + gen_op_load_fpr_DT1(DFPREG(rs2));
  1455 + gen_op_fdtos();
  1456 + gen_op_store_FT0_fpr(rd);
  1457 + break;
  1458 + case 0xc7: /* fqtos */
  1459 + goto nfpu_insn;
  1460 + case 0xc8:
  1461 + gen_op_load_fpr_FT1(rs2);
  1462 + gen_op_fitod();
  1463 + gen_op_store_DT0_fpr(DFPREG(rd));
  1464 + break;
  1465 + case 0xc9:
  1466 + gen_op_load_fpr_FT1(rs2);
  1467 + gen_op_fstod();
  1468 + gen_op_store_DT0_fpr(DFPREG(rd));
  1469 + break;
  1470 + case 0xcb: /* fqtod */
  1471 + goto nfpu_insn;
  1472 + case 0xcc: /* fitoq */
  1473 + goto nfpu_insn;
  1474 + case 0xcd: /* fstoq */
  1475 + goto nfpu_insn;
  1476 + case 0xce: /* fdtoq */
  1477 + goto nfpu_insn;
  1478 + case 0xd1:
  1479 + gen_op_load_fpr_FT1(rs2);
  1480 + gen_op_fstoi();
  1481 + gen_op_store_FT0_fpr(rd);
  1482 + break;
  1483 + case 0xd2:
  1484 + gen_op_load_fpr_DT1(rs2);
  1485 + gen_op_fdtoi();
  1486 + gen_op_store_FT0_fpr(rd);
  1487 + break;
  1488 + case 0xd3: /* fqtoi */
  1489 + goto nfpu_insn;
1490 #ifdef TARGET_SPARC64 1490 #ifdef TARGET_SPARC64
1491 - case 0x2: /* V9 fmovd */  
1492 - gen_op_load_fpr_DT0(DFPREG(rs2));  
1493 - gen_op_store_DT0_fpr(DFPREG(rd));  
1494 - break;  
1495 - case 0x6: /* V9 fnegd */  
1496 - gen_op_load_fpr_DT1(DFPREG(rs2));  
1497 - gen_op_fnegd();  
1498 - gen_op_store_DT0_fpr(DFPREG(rd));  
1499 - break;  
1500 - case 0xa: /* V9 fabsd */  
1501 - gen_op_load_fpr_DT1(DFPREG(rs2));  
1502 - gen_op_fabsd();  
1503 - gen_op_store_DT0_fpr(DFPREG(rd));  
1504 - break;  
1505 - case 0x81: /* V9 fstox */  
1506 - gen_op_load_fpr_FT1(rs2);  
1507 - gen_op_fstox();  
1508 - gen_op_store_DT0_fpr(DFPREG(rd));  
1509 - break;  
1510 - case 0x82: /* V9 fdtox */  
1511 - gen_op_load_fpr_DT1(DFPREG(rs2));  
1512 - gen_op_fdtox();  
1513 - gen_op_store_DT0_fpr(DFPREG(rd));  
1514 - break;  
1515 - case 0x84: /* V9 fxtos */  
1516 - gen_op_load_fpr_DT1(DFPREG(rs2));  
1517 - gen_op_fxtos();  
1518 - gen_op_store_FT0_fpr(rd);  
1519 - break;  
1520 - case 0x88: /* V9 fxtod */  
1521 - gen_op_load_fpr_DT1(DFPREG(rs2));  
1522 - gen_op_fxtod();  
1523 - gen_op_store_DT0_fpr(DFPREG(rd));  
1524 - break;  
1525 - case 0x3: /* V9 fmovq */  
1526 - case 0x7: /* V9 fnegq */  
1527 - case 0xb: /* V9 fabsq */  
1528 - case 0x83: /* V9 fqtox */  
1529 - case 0x8c: /* V9 fxtoq */  
1530 - goto nfpu_insn;  
1531 -#endif  
1532 - default:  
1533 - goto illegal_insn;  
1534 - }  
1535 - } else if (xop == 0x35) { /* FPU Operations */ 1491 + case 0x2: /* V9 fmovd */
  1492 + gen_op_load_fpr_DT0(DFPREG(rs2));
  1493 + gen_op_store_DT0_fpr(DFPREG(rd));
  1494 + break;
  1495 + case 0x6: /* V9 fnegd */
  1496 + gen_op_load_fpr_DT1(DFPREG(rs2));
  1497 + gen_op_fnegd();
  1498 + gen_op_store_DT0_fpr(DFPREG(rd));
  1499 + break;
  1500 + case 0xa: /* V9 fabsd */
  1501 + gen_op_load_fpr_DT1(DFPREG(rs2));
  1502 + gen_op_fabsd();
  1503 + gen_op_store_DT0_fpr(DFPREG(rd));
  1504 + break;
  1505 + case 0x81: /* V9 fstox */
  1506 + gen_op_load_fpr_FT1(rs2);
  1507 + gen_op_fstox();
  1508 + gen_op_store_DT0_fpr(DFPREG(rd));
  1509 + break;
  1510 + case 0x82: /* V9 fdtox */
  1511 + gen_op_load_fpr_DT1(DFPREG(rs2));
  1512 + gen_op_fdtox();
  1513 + gen_op_store_DT0_fpr(DFPREG(rd));
  1514 + break;
  1515 + case 0x84: /* V9 fxtos */
  1516 + gen_op_load_fpr_DT1(DFPREG(rs2));
  1517 + gen_op_fxtos();
  1518 + gen_op_store_FT0_fpr(rd);
  1519 + break;
  1520 + case 0x88: /* V9 fxtod */
  1521 + gen_op_load_fpr_DT1(DFPREG(rs2));
  1522 + gen_op_fxtod();
  1523 + gen_op_store_DT0_fpr(DFPREG(rd));
  1524 + break;
  1525 + case 0x3: /* V9 fmovq */
  1526 + case 0x7: /* V9 fnegq */
  1527 + case 0xb: /* V9 fabsq */
  1528 + case 0x83: /* V9 fqtox */
  1529 + case 0x8c: /* V9 fxtoq */
  1530 + goto nfpu_insn;
  1531 +#endif
  1532 + default:
  1533 + goto illegal_insn;
  1534 + }
  1535 + } else if (xop == 0x35) { /* FPU Operations */
1536 #ifdef TARGET_SPARC64 1536 #ifdef TARGET_SPARC64
1537 - int cond; 1537 + int cond;
1538 #endif 1538 #endif
1539 if (gen_trap_ifnofpu(dc)) 1539 if (gen_trap_ifnofpu(dc))
1540 goto jmp_insn; 1540 goto jmp_insn;
1541 - gen_op_clear_ieee_excp_and_FTT(); 1541 + gen_op_clear_ieee_excp_and_FTT();
1542 rs1 = GET_FIELD(insn, 13, 17); 1542 rs1 = GET_FIELD(insn, 13, 17);
1543 - rs2 = GET_FIELD(insn, 27, 31);  
1544 - xop = GET_FIELD(insn, 18, 26); 1543 + rs2 = GET_FIELD(insn, 27, 31);
  1544 + xop = GET_FIELD(insn, 18, 26);
1545 #ifdef TARGET_SPARC64 1545 #ifdef TARGET_SPARC64
1546 - if ((xop & 0x11f) == 0x005) { // V9 fmovsr  
1547 - cond = GET_FIELD_SP(insn, 14, 17);  
1548 - gen_op_load_fpr_FT0(rd);  
1549 - gen_op_load_fpr_FT1(rs2);  
1550 - rs1 = GET_FIELD(insn, 13, 17);  
1551 - gen_movl_reg_T0(rs1);  
1552 - flush_T2(dc);  
1553 - gen_cond_reg(cond);  
1554 - gen_op_fmovs_cc();  
1555 - gen_op_store_FT0_fpr(rd);  
1556 - break;  
1557 - } else if ((xop & 0x11f) == 0x006) { // V9 fmovdr  
1558 - cond = GET_FIELD_SP(insn, 14, 17);  
1559 - gen_op_load_fpr_DT0(rd);  
1560 - gen_op_load_fpr_DT1(rs2);  
1561 - flush_T2(dc);  
1562 - rs1 = GET_FIELD(insn, 13, 17);  
1563 - gen_movl_reg_T0(rs1);  
1564 - gen_cond_reg(cond);  
1565 - gen_op_fmovs_cc();  
1566 - gen_op_store_DT0_fpr(rd);  
1567 - break;  
1568 - } else if ((xop & 0x11f) == 0x007) { // V9 fmovqr  
1569 - goto nfpu_insn;  
1570 - }  
1571 -#endif  
1572 - switch (xop) { 1546 + if ((xop & 0x11f) == 0x005) { // V9 fmovsr
  1547 + cond = GET_FIELD_SP(insn, 14, 17);
  1548 + gen_op_load_fpr_FT0(rd);
  1549 + gen_op_load_fpr_FT1(rs2);
  1550 + rs1 = GET_FIELD(insn, 13, 17);
  1551 + gen_movl_reg_T0(rs1);
  1552 + flush_T2(dc);
  1553 + gen_cond_reg(cond);
  1554 + gen_op_fmovs_cc();
  1555 + gen_op_store_FT0_fpr(rd);
  1556 + break;
  1557 + } else if ((xop & 0x11f) == 0x006) { // V9 fmovdr
  1558 + cond = GET_FIELD_SP(insn, 14, 17);
  1559 + gen_op_load_fpr_DT0(rd);
  1560 + gen_op_load_fpr_DT1(rs2);
  1561 + flush_T2(dc);
  1562 + rs1 = GET_FIELD(insn, 13, 17);
  1563 + gen_movl_reg_T0(rs1);
  1564 + gen_cond_reg(cond);
  1565 + gen_op_fmovs_cc();
  1566 + gen_op_store_DT0_fpr(rd);
  1567 + break;
  1568 + } else if ((xop & 0x11f) == 0x007) { // V9 fmovqr
  1569 + goto nfpu_insn;
  1570 + }
  1571 +#endif
  1572 + switch (xop) {
1573 #ifdef TARGET_SPARC64 1573 #ifdef TARGET_SPARC64
1574 - case 0x001: /* V9 fmovscc %fcc0 */  
1575 - cond = GET_FIELD_SP(insn, 14, 17);  
1576 - gen_op_load_fpr_FT0(rd);  
1577 - gen_op_load_fpr_FT1(rs2);  
1578 - flush_T2(dc);  
1579 - gen_fcond[0][cond]();  
1580 - gen_op_fmovs_cc();  
1581 - gen_op_store_FT0_fpr(rd);  
1582 - break;  
1583 - case 0x002: /* V9 fmovdcc %fcc0 */  
1584 - cond = GET_FIELD_SP(insn, 14, 17);  
1585 - gen_op_load_fpr_DT0(rd);  
1586 - gen_op_load_fpr_DT1(rs2);  
1587 - flush_T2(dc);  
1588 - gen_fcond[0][cond]();  
1589 - gen_op_fmovd_cc();  
1590 - gen_op_store_DT0_fpr(rd);  
1591 - break;  
1592 - case 0x003: /* V9 fmovqcc %fcc0 */  
1593 - goto nfpu_insn;  
1594 - case 0x041: /* V9 fmovscc %fcc1 */  
1595 - cond = GET_FIELD_SP(insn, 14, 17);  
1596 - gen_op_load_fpr_FT0(rd);  
1597 - gen_op_load_fpr_FT1(rs2);  
1598 - flush_T2(dc);  
1599 - gen_fcond[1][cond]();  
1600 - gen_op_fmovs_cc();  
1601 - gen_op_store_FT0_fpr(rd);  
1602 - break;  
1603 - case 0x042: /* V9 fmovdcc %fcc1 */  
1604 - cond = GET_FIELD_SP(insn, 14, 17);  
1605 - gen_op_load_fpr_DT0(rd);  
1606 - gen_op_load_fpr_DT1(rs2);  
1607 - flush_T2(dc);  
1608 - gen_fcond[1][cond]();  
1609 - gen_op_fmovd_cc();  
1610 - gen_op_store_DT0_fpr(rd);  
1611 - break;  
1612 - case 0x043: /* V9 fmovqcc %fcc1 */  
1613 - goto nfpu_insn;  
1614 - case 0x081: /* V9 fmovscc %fcc2 */  
1615 - cond = GET_FIELD_SP(insn, 14, 17);  
1616 - gen_op_load_fpr_FT0(rd);  
1617 - gen_op_load_fpr_FT1(rs2);  
1618 - flush_T2(dc);  
1619 - gen_fcond[2][cond]();  
1620 - gen_op_fmovs_cc();  
1621 - gen_op_store_FT0_fpr(rd);  
1622 - break;  
1623 - case 0x082: /* V9 fmovdcc %fcc2 */  
1624 - cond = GET_FIELD_SP(insn, 14, 17);  
1625 - gen_op_load_fpr_DT0(rd);  
1626 - gen_op_load_fpr_DT1(rs2);  
1627 - flush_T2(dc);  
1628 - gen_fcond[2][cond]();  
1629 - gen_op_fmovd_cc();  
1630 - gen_op_store_DT0_fpr(rd);  
1631 - break;  
1632 - case 0x083: /* V9 fmovqcc %fcc2 */  
1633 - goto nfpu_insn;  
1634 - case 0x0c1: /* V9 fmovscc %fcc3 */  
1635 - cond = GET_FIELD_SP(insn, 14, 17);  
1636 - gen_op_load_fpr_FT0(rd);  
1637 - gen_op_load_fpr_FT1(rs2);  
1638 - flush_T2(dc);  
1639 - gen_fcond[3][cond]();  
1640 - gen_op_fmovs_cc();  
1641 - gen_op_store_FT0_fpr(rd);  
1642 - break;  
1643 - case 0x0c2: /* V9 fmovdcc %fcc3 */  
1644 - cond = GET_FIELD_SP(insn, 14, 17);  
1645 - gen_op_load_fpr_DT0(rd);  
1646 - gen_op_load_fpr_DT1(rs2);  
1647 - flush_T2(dc);  
1648 - gen_fcond[3][cond]();  
1649 - gen_op_fmovd_cc();  
1650 - gen_op_store_DT0_fpr(rd);  
1651 - break;  
1652 - case 0x0c3: /* V9 fmovqcc %fcc3 */  
1653 - goto nfpu_insn;  
1654 - case 0x101: /* V9 fmovscc %icc */  
1655 - cond = GET_FIELD_SP(insn, 14, 17);  
1656 - gen_op_load_fpr_FT0(rd);  
1657 - gen_op_load_fpr_FT1(rs2);  
1658 - flush_T2(dc);  
1659 - gen_cond[0][cond]();  
1660 - gen_op_fmovs_cc();  
1661 - gen_op_store_FT0_fpr(rd);  
1662 - break;  
1663 - case 0x102: /* V9 fmovdcc %icc */  
1664 - cond = GET_FIELD_SP(insn, 14, 17);  
1665 - gen_op_load_fpr_DT0(rd);  
1666 - gen_op_load_fpr_DT1(rs2);  
1667 - flush_T2(dc);  
1668 - gen_cond[0][cond]();  
1669 - gen_op_fmovd_cc();  
1670 - gen_op_store_DT0_fpr(rd);  
1671 - break;  
1672 - case 0x103: /* V9 fmovqcc %icc */  
1673 - goto nfpu_insn;  
1674 - case 0x181: /* V9 fmovscc %xcc */  
1675 - cond = GET_FIELD_SP(insn, 14, 17);  
1676 - gen_op_load_fpr_FT0(rd);  
1677 - gen_op_load_fpr_FT1(rs2);  
1678 - flush_T2(dc);  
1679 - gen_cond[1][cond]();  
1680 - gen_op_fmovs_cc();  
1681 - gen_op_store_FT0_fpr(rd);  
1682 - break;  
1683 - case 0x182: /* V9 fmovdcc %xcc */  
1684 - cond = GET_FIELD_SP(insn, 14, 17);  
1685 - gen_op_load_fpr_DT0(rd);  
1686 - gen_op_load_fpr_DT1(rs2);  
1687 - flush_T2(dc);  
1688 - gen_cond[1][cond]();  
1689 - gen_op_fmovd_cc();  
1690 - gen_op_store_DT0_fpr(rd);  
1691 - break;  
1692 - case 0x183: /* V9 fmovqcc %xcc */  
1693 - goto nfpu_insn;  
1694 -#endif  
1695 - case 0x51: /* V9 %fcc */  
1696 - gen_op_load_fpr_FT0(rs1);  
1697 - gen_op_load_fpr_FT1(rs2); 1574 + case 0x001: /* V9 fmovscc %fcc0 */
  1575 + cond = GET_FIELD_SP(insn, 14, 17);
  1576 + gen_op_load_fpr_FT0(rd);
  1577 + gen_op_load_fpr_FT1(rs2);
  1578 + flush_T2(dc);
  1579 + gen_fcond[0][cond]();
  1580 + gen_op_fmovs_cc();
  1581 + gen_op_store_FT0_fpr(rd);
  1582 + break;
  1583 + case 0x002: /* V9 fmovdcc %fcc0 */
  1584 + cond = GET_FIELD_SP(insn, 14, 17);
  1585 + gen_op_load_fpr_DT0(rd);
  1586 + gen_op_load_fpr_DT1(rs2);
  1587 + flush_T2(dc);
  1588 + gen_fcond[0][cond]();
  1589 + gen_op_fmovd_cc();
  1590 + gen_op_store_DT0_fpr(rd);
  1591 + break;
  1592 + case 0x003: /* V9 fmovqcc %fcc0 */
  1593 + goto nfpu_insn;
  1594 + case 0x041: /* V9 fmovscc %fcc1 */
  1595 + cond = GET_FIELD_SP(insn, 14, 17);
  1596 + gen_op_load_fpr_FT0(rd);
  1597 + gen_op_load_fpr_FT1(rs2);
  1598 + flush_T2(dc);
  1599 + gen_fcond[1][cond]();
  1600 + gen_op_fmovs_cc();
  1601 + gen_op_store_FT0_fpr(rd);
  1602 + break;
  1603 + case 0x042: /* V9 fmovdcc %fcc1 */
  1604 + cond = GET_FIELD_SP(insn, 14, 17);
  1605 + gen_op_load_fpr_DT0(rd);
  1606 + gen_op_load_fpr_DT1(rs2);
  1607 + flush_T2(dc);
  1608 + gen_fcond[1][cond]();
  1609 + gen_op_fmovd_cc();
  1610 + gen_op_store_DT0_fpr(rd);
  1611 + break;
  1612 + case 0x043: /* V9 fmovqcc %fcc1 */
  1613 + goto nfpu_insn;
  1614 + case 0x081: /* V9 fmovscc %fcc2 */
  1615 + cond = GET_FIELD_SP(insn, 14, 17);
  1616 + gen_op_load_fpr_FT0(rd);
  1617 + gen_op_load_fpr_FT1(rs2);
  1618 + flush_T2(dc);
  1619 + gen_fcond[2][cond]();
  1620 + gen_op_fmovs_cc();
  1621 + gen_op_store_FT0_fpr(rd);
  1622 + break;
  1623 + case 0x082: /* V9 fmovdcc %fcc2 */
  1624 + cond = GET_FIELD_SP(insn, 14, 17);
  1625 + gen_op_load_fpr_DT0(rd);
  1626 + gen_op_load_fpr_DT1(rs2);
  1627 + flush_T2(dc);
  1628 + gen_fcond[2][cond]();
  1629 + gen_op_fmovd_cc();
  1630 + gen_op_store_DT0_fpr(rd);
  1631 + break;
  1632 + case 0x083: /* V9 fmovqcc %fcc2 */
  1633 + goto nfpu_insn;
  1634 + case 0x0c1: /* V9 fmovscc %fcc3 */
  1635 + cond = GET_FIELD_SP(insn, 14, 17);
  1636 + gen_op_load_fpr_FT0(rd);
  1637 + gen_op_load_fpr_FT1(rs2);
  1638 + flush_T2(dc);
  1639 + gen_fcond[3][cond]();
  1640 + gen_op_fmovs_cc();
  1641 + gen_op_store_FT0_fpr(rd);
  1642 + break;
  1643 + case 0x0c2: /* V9 fmovdcc %fcc3 */
  1644 + cond = GET_FIELD_SP(insn, 14, 17);
  1645 + gen_op_load_fpr_DT0(rd);
  1646 + gen_op_load_fpr_DT1(rs2);
  1647 + flush_T2(dc);
  1648 + gen_fcond[3][cond]();
  1649 + gen_op_fmovd_cc();
  1650 + gen_op_store_DT0_fpr(rd);
  1651 + break;
  1652 + case 0x0c3: /* V9 fmovqcc %fcc3 */
  1653 + goto nfpu_insn;
  1654 + case 0x101: /* V9 fmovscc %icc */
  1655 + cond = GET_FIELD_SP(insn, 14, 17);
  1656 + gen_op_load_fpr_FT0(rd);
  1657 + gen_op_load_fpr_FT1(rs2);
  1658 + flush_T2(dc);
  1659 + gen_cond[0][cond]();
  1660 + gen_op_fmovs_cc();
  1661 + gen_op_store_FT0_fpr(rd);
  1662 + break;
  1663 + case 0x102: /* V9 fmovdcc %icc */
  1664 + cond = GET_FIELD_SP(insn, 14, 17);
  1665 + gen_op_load_fpr_DT0(rd);
  1666 + gen_op_load_fpr_DT1(rs2);
  1667 + flush_T2(dc);
  1668 + gen_cond[0][cond]();
  1669 + gen_op_fmovd_cc();
  1670 + gen_op_store_DT0_fpr(rd);
  1671 + break;
  1672 + case 0x103: /* V9 fmovqcc %icc */
  1673 + goto nfpu_insn;
  1674 + case 0x181: /* V9 fmovscc %xcc */
  1675 + cond = GET_FIELD_SP(insn, 14, 17);
  1676 + gen_op_load_fpr_FT0(rd);
  1677 + gen_op_load_fpr_FT1(rs2);
  1678 + flush_T2(dc);
  1679 + gen_cond[1][cond]();
  1680 + gen_op_fmovs_cc();
  1681 + gen_op_store_FT0_fpr(rd);
  1682 + break;
  1683 + case 0x182: /* V9 fmovdcc %xcc */
  1684 + cond = GET_FIELD_SP(insn, 14, 17);
  1685 + gen_op_load_fpr_DT0(rd);
  1686 + gen_op_load_fpr_DT1(rs2);
  1687 + flush_T2(dc);
  1688 + gen_cond[1][cond]();
  1689 + gen_op_fmovd_cc();
  1690 + gen_op_store_DT0_fpr(rd);
  1691 + break;
  1692 + case 0x183: /* V9 fmovqcc %xcc */
  1693 + goto nfpu_insn;
  1694 +#endif
  1695 + case 0x51: /* V9 %fcc */
  1696 + gen_op_load_fpr_FT0(rs1);
  1697 + gen_op_load_fpr_FT1(rs2);
1698 #ifdef TARGET_SPARC64 1698 #ifdef TARGET_SPARC64
1699 - gen_fcmps[rd & 3](); 1699 + gen_fcmps[rd & 3]();
1700 #else 1700 #else
1701 - gen_op_fcmps(); 1701 + gen_op_fcmps();
1702 #endif 1702 #endif
1703 - break;  
1704 - case 0x52: /* V9 %fcc */  
1705 - gen_op_load_fpr_DT0(DFPREG(rs1));  
1706 - gen_op_load_fpr_DT1(DFPREG(rs2)); 1703 + break;
  1704 + case 0x52: /* V9 %fcc */
  1705 + gen_op_load_fpr_DT0(DFPREG(rs1));
  1706 + gen_op_load_fpr_DT1(DFPREG(rs2));
1707 #ifdef TARGET_SPARC64 1707 #ifdef TARGET_SPARC64
1708 - gen_fcmpd[rd & 3](); 1708 + gen_fcmpd[rd & 3]();
1709 #else 1709 #else
1710 - gen_op_fcmpd();  
1711 -#endif  
1712 - break;  
1713 - case 0x53: /* fcmpq */  
1714 - goto nfpu_insn;  
1715 - case 0x55: /* fcmpes, V9 %fcc */  
1716 - gen_op_load_fpr_FT0(rs1);  
1717 - gen_op_load_fpr_FT1(rs2); 1710 + gen_op_fcmpd();
  1711 +#endif
  1712 + break;
  1713 + case 0x53: /* fcmpq */
  1714 + goto nfpu_insn;
  1715 + case 0x55: /* fcmpes, V9 %fcc */
  1716 + gen_op_load_fpr_FT0(rs1);
  1717 + gen_op_load_fpr_FT1(rs2);
1718 #ifdef TARGET_SPARC64 1718 #ifdef TARGET_SPARC64
1719 - gen_fcmpes[rd & 3](); 1719 + gen_fcmpes[rd & 3]();
1720 #else 1720 #else
1721 - gen_op_fcmpes(); 1721 + gen_op_fcmpes();
1722 #endif 1722 #endif
1723 - break;  
1724 - case 0x56: /* fcmped, V9 %fcc */  
1725 - gen_op_load_fpr_DT0(DFPREG(rs1));  
1726 - gen_op_load_fpr_DT1(DFPREG(rs2)); 1723 + break;
  1724 + case 0x56: /* fcmped, V9 %fcc */
  1725 + gen_op_load_fpr_DT0(DFPREG(rs1));
  1726 + gen_op_load_fpr_DT1(DFPREG(rs2));
1727 #ifdef TARGET_SPARC64 1727 #ifdef TARGET_SPARC64
1728 - gen_fcmped[rd & 3](); 1728 + gen_fcmped[rd & 3]();
1729 #else 1729 #else
1730 - gen_op_fcmped();  
1731 -#endif  
1732 - break;  
1733 - case 0x57: /* fcmpeq */  
1734 - goto nfpu_insn;  
1735 - default:  
1736 - goto illegal_insn;  
1737 - } 1730 + gen_op_fcmped();
  1731 +#endif
  1732 + break;
  1733 + case 0x57: /* fcmpeq */
  1734 + goto nfpu_insn;
  1735 + default:
  1736 + goto illegal_insn;
  1737 + }
1738 #if defined(OPTIM) 1738 #if defined(OPTIM)
1739 - } else if (xop == 0x2) {  
1740 - // clr/mov shortcut 1739 + } else if (xop == 0x2) {
  1740 + // clr/mov shortcut
1741 1741
1742 rs1 = GET_FIELD(insn, 13, 17); 1742 rs1 = GET_FIELD(insn, 13, 17);
1743 - if (rs1 == 0) {  
1744 - // or %g0, x, y -> mov T1, x; mov y, T1  
1745 - if (IS_IMM) { /* immediate */  
1746 - rs2 = GET_FIELDs(insn, 19, 31);  
1747 - gen_movl_simm_T1(rs2);  
1748 - } else { /* register */  
1749 - rs2 = GET_FIELD(insn, 27, 31);  
1750 - gen_movl_reg_T1(rs2);  
1751 - }  
1752 - gen_movl_T1_reg(rd);  
1753 - } else {  
1754 - gen_movl_reg_T0(rs1);  
1755 - if (IS_IMM) { /* immediate */  
1756 - // or x, #0, y -> mov T1, x; mov y, T1  
1757 - rs2 = GET_FIELDs(insn, 19, 31);  
1758 - if (rs2 != 0) {  
1759 - gen_movl_simm_T1(rs2);  
1760 - gen_op_or_T1_T0();  
1761 - }  
1762 - } else { /* register */  
1763 - // or x, %g0, y -> mov T1, x; mov y, T1  
1764 - rs2 = GET_FIELD(insn, 27, 31);  
1765 - if (rs2 != 0) {  
1766 - gen_movl_reg_T1(rs2);  
1767 - gen_op_or_T1_T0();  
1768 - }  
1769 - }  
1770 - gen_movl_T0_reg(rd);  
1771 - } 1743 + if (rs1 == 0) {
  1744 + // or %g0, x, y -> mov T1, x; mov y, T1
  1745 + if (IS_IMM) { /* immediate */
  1746 + rs2 = GET_FIELDs(insn, 19, 31);
  1747 + gen_movl_simm_T1(rs2);
  1748 + } else { /* register */
  1749 + rs2 = GET_FIELD(insn, 27, 31);
  1750 + gen_movl_reg_T1(rs2);
  1751 + }
  1752 + gen_movl_T1_reg(rd);
  1753 + } else {
  1754 + gen_movl_reg_T0(rs1);
  1755 + if (IS_IMM) { /* immediate */
  1756 + // or x, #0, y -> mov T1, x; mov y, T1
  1757 + rs2 = GET_FIELDs(insn, 19, 31);
  1758 + if (rs2 != 0) {
  1759 + gen_movl_simm_T1(rs2);
  1760 + gen_op_or_T1_T0();
  1761 + }
  1762 + } else { /* register */
  1763 + // or x, %g0, y -> mov T1, x; mov y, T1
  1764 + rs2 = GET_FIELD(insn, 27, 31);
  1765 + if (rs2 != 0) {
  1766 + gen_movl_reg_T1(rs2);
  1767 + gen_op_or_T1_T0();
  1768 + }
  1769 + }
  1770 + gen_movl_T0_reg(rd);
  1771 + }
1772 #endif 1772 #endif
1773 #ifdef TARGET_SPARC64 1773 #ifdef TARGET_SPARC64
1774 - } else if (xop == 0x25) { /* sll, V9 sllx */ 1774 + } else if (xop == 0x25) { /* sll, V9 sllx */
1775 rs1 = GET_FIELD(insn, 13, 17); 1775 rs1 = GET_FIELD(insn, 13, 17);
1776 - gen_movl_reg_T0(rs1);  
1777 - if (IS_IMM) { /* immediate */ 1776 + gen_movl_reg_T0(rs1);
  1777 + if (IS_IMM) { /* immediate */
1778 rs2 = GET_FIELDs(insn, 20, 31); 1778 rs2 = GET_FIELDs(insn, 20, 31);
1779 gen_movl_simm_T1(rs2); 1779 gen_movl_simm_T1(rs2);
1780 - } else { /* register */ 1780 + } else { /* register */
1781 rs2 = GET_FIELD(insn, 27, 31); 1781 rs2 = GET_FIELD(insn, 27, 31);
1782 gen_movl_reg_T1(rs2); 1782 gen_movl_reg_T1(rs2);
1783 } 1783 }
1784 - if (insn & (1 << 12))  
1785 - gen_op_sllx();  
1786 - else  
1787 - gen_op_sll();  
1788 - gen_movl_T0_reg(rd);  
1789 - } else if (xop == 0x26) { /* srl, V9 srlx */ 1784 + if (insn & (1 << 12))
  1785 + gen_op_sllx();
  1786 + else
  1787 + gen_op_sll();
  1788 + gen_movl_T0_reg(rd);
  1789 + } else if (xop == 0x26) { /* srl, V9 srlx */
1790 rs1 = GET_FIELD(insn, 13, 17); 1790 rs1 = GET_FIELD(insn, 13, 17);
1791 - gen_movl_reg_T0(rs1);  
1792 - if (IS_IMM) { /* immediate */ 1791 + gen_movl_reg_T0(rs1);
  1792 + if (IS_IMM) { /* immediate */
1793 rs2 = GET_FIELDs(insn, 20, 31); 1793 rs2 = GET_FIELDs(insn, 20, 31);
1794 gen_movl_simm_T1(rs2); 1794 gen_movl_simm_T1(rs2);
1795 - } else { /* register */ 1795 + } else { /* register */
1796 rs2 = GET_FIELD(insn, 27, 31); 1796 rs2 = GET_FIELD(insn, 27, 31);
1797 gen_movl_reg_T1(rs2); 1797 gen_movl_reg_T1(rs2);
1798 } 1798 }
1799 - if (insn & (1 << 12))  
1800 - gen_op_srlx();  
1801 - else  
1802 - gen_op_srl();  
1803 - gen_movl_T0_reg(rd);  
1804 - } else if (xop == 0x27) { /* sra, V9 srax */ 1799 + if (insn & (1 << 12))
  1800 + gen_op_srlx();
  1801 + else
  1802 + gen_op_srl();
  1803 + gen_movl_T0_reg(rd);
  1804 + } else if (xop == 0x27) { /* sra, V9 srax */
1805 rs1 = GET_FIELD(insn, 13, 17); 1805 rs1 = GET_FIELD(insn, 13, 17);
1806 - gen_movl_reg_T0(rs1);  
1807 - if (IS_IMM) { /* immediate */ 1806 + gen_movl_reg_T0(rs1);
  1807 + if (IS_IMM) { /* immediate */
1808 rs2 = GET_FIELDs(insn, 20, 31); 1808 rs2 = GET_FIELDs(insn, 20, 31);
1809 gen_movl_simm_T1(rs2); 1809 gen_movl_simm_T1(rs2);
1810 - } else { /* register */ 1810 + } else { /* register */
1811 rs2 = GET_FIELD(insn, 27, 31); 1811 rs2 = GET_FIELD(insn, 27, 31);
1812 gen_movl_reg_T1(rs2); 1812 gen_movl_reg_T1(rs2);
1813 } 1813 }
1814 - if (insn & (1 << 12))  
1815 - gen_op_srax();  
1816 - else  
1817 - gen_op_sra();  
1818 - gen_movl_T0_reg(rd); 1814 + if (insn & (1 << 12))
  1815 + gen_op_srax();
  1816 + else
  1817 + gen_op_sra();
  1818 + gen_movl_T0_reg(rd);
1819 #endif 1819 #endif
1820 } else if (xop < 0x36) { 1820 } else if (xop < 0x36) {
1821 rs1 = GET_FIELD(insn, 13, 17); 1821 rs1 = GET_FIELD(insn, 13, 17);
1822 - gen_movl_reg_T0(rs1);  
1823 - if (IS_IMM) { /* immediate */ 1822 + gen_movl_reg_T0(rs1);
  1823 + if (IS_IMM) { /* immediate */
1824 rs2 = GET_FIELDs(insn, 19, 31); 1824 rs2 = GET_FIELDs(insn, 19, 31);
1825 gen_movl_simm_T1(rs2); 1825 gen_movl_simm_T1(rs2);
1826 - } else { /* register */ 1826 + } else { /* register */
1827 rs2 = GET_FIELD(insn, 27, 31); 1827 rs2 = GET_FIELD(insn, 27, 31);
1828 gen_movl_reg_T1(rs2); 1828 gen_movl_reg_T1(rs2);
1829 } 1829 }
@@ -1841,10 +1841,10 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1841,10 +1841,10 @@ static void disas_sparc_insn(DisasContext * dc)
1841 gen_op_logic_T0_cc(); 1841 gen_op_logic_T0_cc();
1842 break; 1842 break;
1843 case 0x2: 1843 case 0x2:
1844 - gen_op_or_T1_T0();  
1845 - if (xop & 0x10)  
1846 - gen_op_logic_T0_cc();  
1847 - break; 1844 + gen_op_or_T1_T0();
  1845 + if (xop & 0x10)
  1846 + gen_op_logic_T0_cc();
  1847 + break;
1848 case 0x3: 1848 case 0x3:
1849 gen_op_xor_T1_T0(); 1849 gen_op_xor_T1_T0();
1850 if (xop & 0x10) 1850 if (xop & 0x10)
@@ -1878,7 +1878,7 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1878,7 +1878,7 @@ static void disas_sparc_insn(DisasContext * dc)
1878 gen_op_addx_T1_T0(); 1878 gen_op_addx_T1_T0();
1879 break; 1879 break;
1880 #ifdef TARGET_SPARC64 1880 #ifdef TARGET_SPARC64
1881 - case 0x9: /* V9 mulx */ 1881 + case 0x9: /* V9 mulx */
1882 gen_op_mulx_T1_T0(); 1882 gen_op_mulx_T1_T0();
1883 break; 1883 break;
1884 #endif 1884 #endif
@@ -1899,7 +1899,7 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1899,7 +1899,7 @@ static void disas_sparc_insn(DisasContext * dc)
1899 gen_op_subx_T1_T0(); 1899 gen_op_subx_T1_T0();
1900 break; 1900 break;
1901 #ifdef TARGET_SPARC64 1901 #ifdef TARGET_SPARC64
1902 - case 0xd: /* V9 udivx */ 1902 + case 0xd: /* V9 udivx */
1903 gen_op_udivx_T1_T0(); 1903 gen_op_udivx_T1_T0();
1904 break; 1904 break;
1905 #endif 1905 #endif
@@ -1916,40 +1916,40 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1916,40 +1916,40 @@ static void disas_sparc_insn(DisasContext * dc)
1916 default: 1916 default:
1917 goto illegal_insn; 1917 goto illegal_insn;
1918 } 1918 }
1919 - gen_movl_T0_reg(rd); 1919 + gen_movl_T0_reg(rd);
1920 } else { 1920 } else {
1921 switch (xop) { 1921 switch (xop) {
1922 - case 0x20: /* taddcc */  
1923 - gen_op_tadd_T1_T0_cc();  
1924 - gen_movl_T0_reg(rd);  
1925 - break;  
1926 - case 0x21: /* tsubcc */  
1927 - gen_op_tsub_T1_T0_cc();  
1928 - gen_movl_T0_reg(rd);  
1929 - break;  
1930 - case 0x22: /* taddcctv */  
1931 - gen_op_tadd_T1_T0_ccTV();  
1932 - gen_movl_T0_reg(rd);  
1933 - break;  
1934 - case 0x23: /* tsubcctv */  
1935 - gen_op_tsub_T1_T0_ccTV();  
1936 - gen_movl_T0_reg(rd);  
1937 - break; 1922 + case 0x20: /* taddcc */
  1923 + gen_op_tadd_T1_T0_cc();
  1924 + gen_movl_T0_reg(rd);
  1925 + break;
  1926 + case 0x21: /* tsubcc */
  1927 + gen_op_tsub_T1_T0_cc();
  1928 + gen_movl_T0_reg(rd);
  1929 + break;
  1930 + case 0x22: /* taddcctv */
  1931 + gen_op_tadd_T1_T0_ccTV();
  1932 + gen_movl_T0_reg(rd);
  1933 + break;
  1934 + case 0x23: /* tsubcctv */
  1935 + gen_op_tsub_T1_T0_ccTV();
  1936 + gen_movl_T0_reg(rd);
  1937 + break;
1938 case 0x24: /* mulscc */ 1938 case 0x24: /* mulscc */
1939 gen_op_mulscc_T1_T0(); 1939 gen_op_mulscc_T1_T0();
1940 gen_movl_T0_reg(rd); 1940 gen_movl_T0_reg(rd);
1941 break; 1941 break;
1942 #ifndef TARGET_SPARC64 1942 #ifndef TARGET_SPARC64
1943 - case 0x25: /* sll */  
1944 - gen_op_sll(); 1943 + case 0x25: /* sll */
  1944 + gen_op_sll();
1945 gen_movl_T0_reg(rd); 1945 gen_movl_T0_reg(rd);
1946 break; 1946 break;
1947 case 0x26: /* srl */ 1947 case 0x26: /* srl */
1948 - gen_op_srl(); 1948 + gen_op_srl();
1949 gen_movl_T0_reg(rd); 1949 gen_movl_T0_reg(rd);
1950 break; 1950 break;
1951 case 0x27: /* sra */ 1951 case 0x27: /* sra */
1952 - gen_op_sra(); 1952 + gen_op_sra();
1953 gen_movl_T0_reg(rd); 1953 gen_movl_T0_reg(rd);
1954 break; 1954 break;
1955 #endif 1955 #endif
@@ -1957,8 +1957,8 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1957,8 +1957,8 @@ static void disas_sparc_insn(DisasContext * dc)
1957 { 1957 {
1958 switch(rd) { 1958 switch(rd) {
1959 case 0: /* wry */ 1959 case 0: /* wry */
1960 - gen_op_xor_T1_T0();  
1961 - gen_op_movtl_env_T0(offsetof(CPUSPARCState, y)); 1960 + gen_op_xor_T1_T0();
  1961 + gen_op_movtl_env_T0(offsetof(CPUSPARCState, y));
1962 break; 1962 break;
1963 #ifndef TARGET_SPARC64 1963 #ifndef TARGET_SPARC64
1964 case 0x01 ... 0x0f: /* undefined in the 1964 case 0x01 ... 0x0f: /* undefined in the
@@ -1971,62 +1971,62 @@ static void disas_sparc_insn(DisasContext * dc) @@ -1971,62 +1971,62 @@ static void disas_sparc_insn(DisasContext * dc)
1971 microSPARC II */ 1971 microSPARC II */
1972 break; 1972 break;
1973 #else 1973 #else
1974 - case 0x2: /* V9 wrccr */ 1974 + case 0x2: /* V9 wrccr */
1975 gen_op_wrccr(); 1975 gen_op_wrccr();
1976 - break;  
1977 - case 0x3: /* V9 wrasi */  
1978 - gen_op_movl_env_T0(offsetof(CPUSPARCState, asi));  
1979 - break;  
1980 - case 0x6: /* V9 wrfprs */  
1981 - gen_op_xor_T1_T0();  
1982 - gen_op_movl_env_T0(offsetof(CPUSPARCState, fprs)); 1976 + break;
  1977 + case 0x3: /* V9 wrasi */
  1978 + gen_op_movl_env_T0(offsetof(CPUSPARCState, asi));
  1979 + break;
  1980 + case 0x6: /* V9 wrfprs */
  1981 + gen_op_xor_T1_T0();
  1982 + gen_op_movl_env_T0(offsetof(CPUSPARCState, fprs));
1983 save_state(dc); 1983 save_state(dc);
1984 gen_op_next_insn(); 1984 gen_op_next_insn();
1985 gen_op_movl_T0_0(); 1985 gen_op_movl_T0_0();
1986 gen_op_exit_tb(); 1986 gen_op_exit_tb();
1987 dc->is_br = 1; 1987 dc->is_br = 1;
1988 - break;  
1989 - case 0xf: /* V9 sir, nop if user */ 1988 + break;
  1989 + case 0xf: /* V9 sir, nop if user */
1990 #if !defined(CONFIG_USER_ONLY) 1990 #if !defined(CONFIG_USER_ONLY)
1991 - if (supervisor(dc))  
1992 - gen_op_sir(); 1991 + if (supervisor(dc))
  1992 + gen_op_sir();
1993 #endif 1993 #endif
1994 - break;  
1995 - case 0x13: /* Graphics Status */ 1994 + break;
  1995 + case 0x13: /* Graphics Status */
1996 if (gen_trap_ifnofpu(dc)) 1996 if (gen_trap_ifnofpu(dc))
1997 goto jmp_insn; 1997 goto jmp_insn;
1998 - gen_op_movtl_env_T0(offsetof(CPUSPARCState, gsr));  
1999 - break;  
2000 - case 0x17: /* Tick compare */ 1998 + gen_op_movtl_env_T0(offsetof(CPUSPARCState, gsr));
  1999 + break;
  2000 + case 0x17: /* Tick compare */
2001 #if !defined(CONFIG_USER_ONLY) 2001 #if !defined(CONFIG_USER_ONLY)
2002 - if (!supervisor(dc))  
2003 - goto illegal_insn; 2002 + if (!supervisor(dc))
  2003 + goto illegal_insn;
2004 #endif 2004 #endif
2005 gen_op_movtl_env_T0(offsetof(CPUSPARCState, tick_cmpr)); 2005 gen_op_movtl_env_T0(offsetof(CPUSPARCState, tick_cmpr));
2006 gen_op_wrtick_cmpr(); 2006 gen_op_wrtick_cmpr();
2007 - break;  
2008 - case 0x18: /* System tick */ 2007 + break;
  2008 + case 0x18: /* System tick */
2009 #if !defined(CONFIG_USER_ONLY) 2009 #if !defined(CONFIG_USER_ONLY)
2010 - if (!supervisor(dc))  
2011 - goto illegal_insn; 2010 + if (!supervisor(dc))
  2011 + goto illegal_insn;
2012 #endif 2012 #endif
2013 gen_op_wrstick(); 2013 gen_op_wrstick();
2014 - break;  
2015 - case 0x19: /* System tick compare */ 2014 + break;
  2015 + case 0x19: /* System tick compare */
2016 #if !defined(CONFIG_USER_ONLY) 2016 #if !defined(CONFIG_USER_ONLY)
2017 - if (!supervisor(dc))  
2018 - goto illegal_insn; 2017 + if (!supervisor(dc))
  2018 + goto illegal_insn;
2019 #endif 2019 #endif
2020 gen_op_movtl_env_T0(offsetof(CPUSPARCState, stick_cmpr)); 2020 gen_op_movtl_env_T0(offsetof(CPUSPARCState, stick_cmpr));
2021 gen_op_wrstick_cmpr(); 2021 gen_op_wrstick_cmpr();
2022 - break; 2022 + break;
2023 2023
2024 - case 0x10: /* Performance Control */  
2025 - case 0x11: /* Performance Instrumentation Counter */  
2026 - case 0x12: /* Dispatch Control */  
2027 - case 0x14: /* Softint set */  
2028 - case 0x15: /* Softint clear */  
2029 - case 0x16: /* Softint write */ 2024 + case 0x10: /* Performance Control */
  2025 + case 0x11: /* Performance Instrumentation Counter */
  2026 + case 0x12: /* Dispatch Control */
  2027 + case 0x14: /* Softint set */
  2028 + case 0x15: /* Softint clear */
  2029 + case 0x16: /* Softint write */
2030 #endif 2030 #endif
2031 default: 2031 default:
2032 goto illegal_insn; 2032 goto illegal_insn;
@@ -2036,22 +2036,22 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2036,22 +2036,22 @@ static void disas_sparc_insn(DisasContext * dc)
2036 #if !defined(CONFIG_USER_ONLY) 2036 #if !defined(CONFIG_USER_ONLY)
2037 case 0x31: /* wrpsr, V9 saved, restored */ 2037 case 0x31: /* wrpsr, V9 saved, restored */
2038 { 2038 {
2039 - if (!supervisor(dc))  
2040 - goto priv_insn; 2039 + if (!supervisor(dc))
  2040 + goto priv_insn;
2041 #ifdef TARGET_SPARC64 2041 #ifdef TARGET_SPARC64
2042 - switch (rd) {  
2043 - case 0:  
2044 - gen_op_saved();  
2045 - break;  
2046 - case 1:  
2047 - gen_op_restored();  
2048 - break; 2042 + switch (rd) {
  2043 + case 0:
  2044 + gen_op_saved();
  2045 + break;
  2046 + case 1:
  2047 + gen_op_restored();
  2048 + break;
2049 case 2: /* UA2005 allclean */ 2049 case 2: /* UA2005 allclean */
2050 case 3: /* UA2005 otherw */ 2050 case 3: /* UA2005 otherw */
2051 case 4: /* UA2005 normalw */ 2051 case 4: /* UA2005 normalw */
2052 case 5: /* UA2005 invalw */ 2052 case 5: /* UA2005 invalw */
2053 // XXX 2053 // XXX
2054 - default: 2054 + default:
2055 goto illegal_insn; 2055 goto illegal_insn;
2056 } 2056 }
2057 #else 2057 #else
@@ -2059,69 +2059,69 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2059,69 +2059,69 @@ static void disas_sparc_insn(DisasContext * dc)
2059 gen_op_wrpsr(); 2059 gen_op_wrpsr();
2060 save_state(dc); 2060 save_state(dc);
2061 gen_op_next_insn(); 2061 gen_op_next_insn();
2062 - gen_op_movl_T0_0();  
2063 - gen_op_exit_tb();  
2064 - dc->is_br = 1; 2062 + gen_op_movl_T0_0();
  2063 + gen_op_exit_tb();
  2064 + dc->is_br = 1;
2065 #endif 2065 #endif
2066 } 2066 }
2067 break; 2067 break;
2068 case 0x32: /* wrwim, V9 wrpr */ 2068 case 0x32: /* wrwim, V9 wrpr */
2069 { 2069 {
2070 - if (!supervisor(dc))  
2071 - goto priv_insn; 2070 + if (!supervisor(dc))
  2071 + goto priv_insn;
2072 gen_op_xor_T1_T0(); 2072 gen_op_xor_T1_T0();
2073 #ifdef TARGET_SPARC64 2073 #ifdef TARGET_SPARC64
2074 - switch (rd) {  
2075 - case 0: // tpc  
2076 - gen_op_wrtpc();  
2077 - break;  
2078 - case 1: // tnpc  
2079 - gen_op_wrtnpc();  
2080 - break;  
2081 - case 2: // tstate  
2082 - gen_op_wrtstate();  
2083 - break;  
2084 - case 3: // tt  
2085 - gen_op_wrtt();  
2086 - break;  
2087 - case 4: // tick  
2088 - gen_op_wrtick();  
2089 - break;  
2090 - case 5: // tba  
2091 - gen_op_movtl_env_T0(offsetof(CPUSPARCState, tbr));  
2092 - break;  
2093 - case 6: // pstate  
2094 - gen_op_wrpstate(); 2074 + switch (rd) {
  2075 + case 0: // tpc
  2076 + gen_op_wrtpc();
  2077 + break;
  2078 + case 1: // tnpc
  2079 + gen_op_wrtnpc();
  2080 + break;
  2081 + case 2: // tstate
  2082 + gen_op_wrtstate();
  2083 + break;
  2084 + case 3: // tt
  2085 + gen_op_wrtt();
  2086 + break;
  2087 + case 4: // tick
  2088 + gen_op_wrtick();
  2089 + break;
  2090 + case 5: // tba
  2091 + gen_op_movtl_env_T0(offsetof(CPUSPARCState, tbr));
  2092 + break;
  2093 + case 6: // pstate
  2094 + gen_op_wrpstate();
2095 save_state(dc); 2095 save_state(dc);
2096 gen_op_next_insn(); 2096 gen_op_next_insn();
2097 gen_op_movl_T0_0(); 2097 gen_op_movl_T0_0();
2098 gen_op_exit_tb(); 2098 gen_op_exit_tb();
2099 dc->is_br = 1; 2099 dc->is_br = 1;
2100 - break;  
2101 - case 7: // tl  
2102 - gen_op_movl_env_T0(offsetof(CPUSPARCState, tl));  
2103 - break;  
2104 - case 8: // pil  
2105 - gen_op_movl_env_T0(offsetof(CPUSPARCState, psrpil));  
2106 - break;  
2107 - case 9: // cwp  
2108 - gen_op_wrcwp();  
2109 - break;  
2110 - case 10: // cansave  
2111 - gen_op_movl_env_T0(offsetof(CPUSPARCState, cansave));  
2112 - break;  
2113 - case 11: // canrestore  
2114 - gen_op_movl_env_T0(offsetof(CPUSPARCState, canrestore));  
2115 - break;  
2116 - case 12: // cleanwin  
2117 - gen_op_movl_env_T0(offsetof(CPUSPARCState, cleanwin));  
2118 - break;  
2119 - case 13: // otherwin  
2120 - gen_op_movl_env_T0(offsetof(CPUSPARCState, otherwin));  
2121 - break;  
2122 - case 14: // wstate  
2123 - gen_op_movl_env_T0(offsetof(CPUSPARCState, wstate));  
2124 - break; 2100 + break;
  2101 + case 7: // tl
  2102 + gen_op_movl_env_T0(offsetof(CPUSPARCState, tl));
  2103 + break;
  2104 + case 8: // pil
  2105 + gen_op_movl_env_T0(offsetof(CPUSPARCState, psrpil));
  2106 + break;
  2107 + case 9: // cwp
  2108 + gen_op_wrcwp();
  2109 + break;
  2110 + case 10: // cansave
  2111 + gen_op_movl_env_T0(offsetof(CPUSPARCState, cansave));
  2112 + break;
  2113 + case 11: // canrestore
  2114 + gen_op_movl_env_T0(offsetof(CPUSPARCState, canrestore));
  2115 + break;
  2116 + case 12: // cleanwin
  2117 + gen_op_movl_env_T0(offsetof(CPUSPARCState, cleanwin));
  2118 + break;
  2119 + case 13: // otherwin
  2120 + gen_op_movl_env_T0(offsetof(CPUSPARCState, otherwin));
  2121 + break;
  2122 + case 14: // wstate
  2123 + gen_op_movl_env_T0(offsetof(CPUSPARCState, wstate));
  2124 + break;
2125 case 16: // UA2005 gl 2125 case 16: // UA2005 gl
2126 gen_op_movl_env_T0(offsetof(CPUSPARCState, gl)); 2126 gen_op_movl_env_T0(offsetof(CPUSPARCState, gl));
2127 break; 2127 break;
@@ -2130,19 +2130,19 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2130,19 +2130,19 @@ static void disas_sparc_insn(DisasContext * dc)
2130 goto priv_insn; 2130 goto priv_insn;
2131 gen_op_movl_env_T0(offsetof(CPUSPARCState, ssr)); 2131 gen_op_movl_env_T0(offsetof(CPUSPARCState, ssr));
2132 break; 2132 break;
2133 - default:  
2134 - goto illegal_insn;  
2135 - } 2133 + default:
  2134 + goto illegal_insn;
  2135 + }
2136 #else 2136 #else
2137 - gen_op_wrwim(); 2137 + gen_op_wrwim();
2138 #endif 2138 #endif
2139 } 2139 }
2140 break; 2140 break;
2141 case 0x33: /* wrtbr, UA2005 wrhpr */ 2141 case 0x33: /* wrtbr, UA2005 wrhpr */
2142 { 2142 {
2143 #ifndef TARGET_SPARC64 2143 #ifndef TARGET_SPARC64
2144 - if (!supervisor(dc))  
2145 - goto priv_insn; 2144 + if (!supervisor(dc))
  2145 + goto priv_insn;
2146 gen_op_xor_T1_T0(); 2146 gen_op_xor_T1_T0();
2147 gen_op_movtl_env_T0(offsetof(CPUSPARCState, tbr)); 2147 gen_op_movtl_env_T0(offsetof(CPUSPARCState, tbr));
2148 #else 2148 #else
@@ -2180,77 +2180,77 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2180,77 +2180,77 @@ static void disas_sparc_insn(DisasContext * dc)
2180 break; 2180 break;
2181 #endif 2181 #endif
2182 #ifdef TARGET_SPARC64 2182 #ifdef TARGET_SPARC64
2183 - case 0x2c: /* V9 movcc */  
2184 - {  
2185 - int cc = GET_FIELD_SP(insn, 11, 12);  
2186 - int cond = GET_FIELD_SP(insn, 14, 17);  
2187 - if (IS_IMM) { /* immediate */  
2188 - rs2 = GET_FIELD_SPs(insn, 0, 10);  
2189 - gen_movl_simm_T1(rs2);  
2190 - }  
2191 - else {  
2192 - rs2 = GET_FIELD_SP(insn, 0, 4);  
2193 - gen_movl_reg_T1(rs2);  
2194 - }  
2195 - gen_movl_reg_T0(rd);  
2196 - flush_T2(dc);  
2197 - if (insn & (1 << 18)) {  
2198 - if (cc == 0)  
2199 - gen_cond[0][cond]();  
2200 - else if (cc == 2)  
2201 - gen_cond[1][cond]();  
2202 - else  
2203 - goto illegal_insn;  
2204 - } else {  
2205 - gen_fcond[cc][cond]();  
2206 - }  
2207 - gen_op_mov_cc();  
2208 - gen_movl_T0_reg(rd);  
2209 - break;  
2210 - }  
2211 - case 0x2d: /* V9 sdivx */ 2183 + case 0x2c: /* V9 movcc */
  2184 + {
  2185 + int cc = GET_FIELD_SP(insn, 11, 12);
  2186 + int cond = GET_FIELD_SP(insn, 14, 17);
  2187 + if (IS_IMM) { /* immediate */
  2188 + rs2 = GET_FIELD_SPs(insn, 0, 10);
  2189 + gen_movl_simm_T1(rs2);
  2190 + }
  2191 + else {
  2192 + rs2 = GET_FIELD_SP(insn, 0, 4);
  2193 + gen_movl_reg_T1(rs2);
  2194 + }
  2195 + gen_movl_reg_T0(rd);
  2196 + flush_T2(dc);
  2197 + if (insn & (1 << 18)) {
  2198 + if (cc == 0)
  2199 + gen_cond[0][cond]();
  2200 + else if (cc == 2)
  2201 + gen_cond[1][cond]();
  2202 + else
  2203 + goto illegal_insn;
  2204 + } else {
  2205 + gen_fcond[cc][cond]();
  2206 + }
  2207 + gen_op_mov_cc();
  2208 + gen_movl_T0_reg(rd);
  2209 + break;
  2210 + }
  2211 + case 0x2d: /* V9 sdivx */
2212 gen_op_sdivx_T1_T0(); 2212 gen_op_sdivx_T1_T0();
2213 - gen_movl_T0_reg(rd);  
2214 - break;  
2215 - case 0x2e: /* V9 popc */  
2216 - {  
2217 - if (IS_IMM) { /* immediate */  
2218 - rs2 = GET_FIELD_SPs(insn, 0, 12);  
2219 - gen_movl_simm_T1(rs2);  
2220 - // XXX optimize: popc(constant)  
2221 - }  
2222 - else {  
2223 - rs2 = GET_FIELD_SP(insn, 0, 4);  
2224 - gen_movl_reg_T1(rs2);  
2225 - }  
2226 - gen_op_popc();  
2227 - gen_movl_T0_reg(rd);  
2228 - }  
2229 - case 0x2f: /* V9 movr */  
2230 - {  
2231 - int cond = GET_FIELD_SP(insn, 10, 12);  
2232 - rs1 = GET_FIELD(insn, 13, 17);  
2233 - flush_T2(dc);  
2234 - gen_movl_reg_T0(rs1);  
2235 - gen_cond_reg(cond);  
2236 - if (IS_IMM) { /* immediate */  
2237 - rs2 = GET_FIELD_SPs(insn, 0, 9);  
2238 - gen_movl_simm_T1(rs2);  
2239 - }  
2240 - else {  
2241 - rs2 = GET_FIELD_SP(insn, 0, 4);  
2242 - gen_movl_reg_T1(rs2);  
2243 - }  
2244 - gen_movl_reg_T0(rd);  
2245 - gen_op_mov_cc();  
2246 - gen_movl_T0_reg(rd);  
2247 - break;  
2248 - }  
2249 -#endif  
2250 - default:  
2251 - goto illegal_insn;  
2252 - }  
2253 - } 2213 + gen_movl_T0_reg(rd);
  2214 + break;
  2215 + case 0x2e: /* V9 popc */
  2216 + {
  2217 + if (IS_IMM) { /* immediate */
  2218 + rs2 = GET_FIELD_SPs(insn, 0, 12);
  2219 + gen_movl_simm_T1(rs2);
  2220 + // XXX optimize: popc(constant)
  2221 + }
  2222 + else {
  2223 + rs2 = GET_FIELD_SP(insn, 0, 4);
  2224 + gen_movl_reg_T1(rs2);
  2225 + }
  2226 + gen_op_popc();
  2227 + gen_movl_T0_reg(rd);
  2228 + }
  2229 + case 0x2f: /* V9 movr */
  2230 + {
  2231 + int cond = GET_FIELD_SP(insn, 10, 12);
  2232 + rs1 = GET_FIELD(insn, 13, 17);
  2233 + flush_T2(dc);
  2234 + gen_movl_reg_T0(rs1);
  2235 + gen_cond_reg(cond);
  2236 + if (IS_IMM) { /* immediate */
  2237 + rs2 = GET_FIELD_SPs(insn, 0, 9);
  2238 + gen_movl_simm_T1(rs2);
  2239 + }
  2240 + else {
  2241 + rs2 = GET_FIELD_SP(insn, 0, 4);
  2242 + gen_movl_reg_T1(rs2);
  2243 + }
  2244 + gen_movl_reg_T0(rd);
  2245 + gen_op_mov_cc();
  2246 + gen_movl_T0_reg(rd);
  2247 + break;
  2248 + }
  2249 +#endif
  2250 + default:
  2251 + goto illegal_insn;
  2252 + }
  2253 + }
2254 } else if (xop == 0x36) { /* UltraSparc shutdown, VIS, V8 CPop1 */ 2254 } else if (xop == 0x36) { /* UltraSparc shutdown, VIS, V8 CPop1 */
2255 #ifdef TARGET_SPARC64 2255 #ifdef TARGET_SPARC64
2256 int opf = GET_FIELD_SP(insn, 5, 13); 2256 int opf = GET_FIELD_SP(insn, 5, 13);
@@ -2647,75 +2647,75 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2647,75 +2647,75 @@ static void disas_sparc_insn(DisasContext * dc)
2647 goto illegal_insn; 2647 goto illegal_insn;
2648 } 2648 }
2649 #else 2649 #else
2650 - goto ncp_insn; 2650 + goto ncp_insn;
2651 #endif 2651 #endif
2652 } else if (xop == 0x37) { /* V8 CPop2, V9 impdep2 */ 2652 } else if (xop == 0x37) { /* V8 CPop2, V9 impdep2 */
2653 #ifdef TARGET_SPARC64 2653 #ifdef TARGET_SPARC64
2654 - goto illegal_insn; 2654 + goto illegal_insn;
2655 #else 2655 #else
2656 - goto ncp_insn; 2656 + goto ncp_insn;
2657 #endif 2657 #endif
2658 #ifdef TARGET_SPARC64 2658 #ifdef TARGET_SPARC64
2659 - } else if (xop == 0x39) { /* V9 return */ 2659 + } else if (xop == 0x39) { /* V9 return */
2660 rs1 = GET_FIELD(insn, 13, 17); 2660 rs1 = GET_FIELD(insn, 13, 17);
2661 save_state(dc); 2661 save_state(dc);
2662 - gen_movl_reg_T0(rs1);  
2663 - if (IS_IMM) { /* immediate */  
2664 - rs2 = GET_FIELDs(insn, 19, 31); 2662 + gen_movl_reg_T0(rs1);
  2663 + if (IS_IMM) { /* immediate */
  2664 + rs2 = GET_FIELDs(insn, 19, 31);
2665 #if defined(OPTIM) 2665 #if defined(OPTIM)
2666 - if (rs2) { 2666 + if (rs2) {
2667 #endif 2667 #endif
2668 - gen_movl_simm_T1(rs2);  
2669 - gen_op_add_T1_T0(); 2668 + gen_movl_simm_T1(rs2);
  2669 + gen_op_add_T1_T0();
2670 #if defined(OPTIM) 2670 #if defined(OPTIM)
2671 - } 2671 + }
2672 #endif 2672 #endif
2673 - } else { /* register */ 2673 + } else { /* register */
2674 rs2 = GET_FIELD(insn, 27, 31); 2674 rs2 = GET_FIELD(insn, 27, 31);
2675 #if defined(OPTIM) 2675 #if defined(OPTIM)
2676 - if (rs2) { 2676 + if (rs2) {
2677 #endif 2677 #endif
2678 - gen_movl_reg_T1(rs2);  
2679 - gen_op_add_T1_T0(); 2678 + gen_movl_reg_T1(rs2);
  2679 + gen_op_add_T1_T0();
2680 #if defined(OPTIM) 2680 #if defined(OPTIM)
2681 - } 2681 + }
2682 #endif 2682 #endif
2683 } 2683 }
2684 - gen_op_restore();  
2685 - gen_mov_pc_npc(dc); 2684 + gen_op_restore();
  2685 + gen_mov_pc_npc(dc);
2686 gen_op_check_align_T0_3(); 2686 gen_op_check_align_T0_3();
2687 - gen_op_movl_npc_T0();  
2688 - dc->npc = DYNAMIC_PC;  
2689 - goto jmp_insn; 2687 + gen_op_movl_npc_T0();
  2688 + dc->npc = DYNAMIC_PC;
  2689 + goto jmp_insn;
2690 #endif 2690 #endif
2691 - } else { 2691 + } else {
2692 rs1 = GET_FIELD(insn, 13, 17); 2692 rs1 = GET_FIELD(insn, 13, 17);
2693 - gen_movl_reg_T0(rs1);  
2694 - if (IS_IMM) { /* immediate */  
2695 - rs2 = GET_FIELDs(insn, 19, 31); 2693 + gen_movl_reg_T0(rs1);
  2694 + if (IS_IMM) { /* immediate */
  2695 + rs2 = GET_FIELDs(insn, 19, 31);
2696 #if defined(OPTIM) 2696 #if defined(OPTIM)
2697 - if (rs2) { 2697 + if (rs2) {
2698 #endif 2698 #endif
2699 - gen_movl_simm_T1(rs2);  
2700 - gen_op_add_T1_T0(); 2699 + gen_movl_simm_T1(rs2);
  2700 + gen_op_add_T1_T0();
2701 #if defined(OPTIM) 2701 #if defined(OPTIM)
2702 - } 2702 + }
2703 #endif 2703 #endif
2704 - } else { /* register */ 2704 + } else { /* register */
2705 rs2 = GET_FIELD(insn, 27, 31); 2705 rs2 = GET_FIELD(insn, 27, 31);
2706 #if defined(OPTIM) 2706 #if defined(OPTIM)
2707 - if (rs2) { 2707 + if (rs2) {
2708 #endif 2708 #endif
2709 - gen_movl_reg_T1(rs2);  
2710 - gen_op_add_T1_T0(); 2709 + gen_movl_reg_T1(rs2);
  2710 + gen_op_add_T1_T0();
2711 #if defined(OPTIM) 2711 #if defined(OPTIM)
2712 - } 2712 + }
2713 #endif 2713 #endif
2714 } 2714 }
2715 - switch (xop) {  
2716 - case 0x38: /* jmpl */  
2717 - {  
2718 - if (rd != 0) { 2715 + switch (xop) {
  2716 + case 0x38: /* jmpl */
  2717 + {
  2718 + if (rd != 0) {
2719 #ifdef TARGET_SPARC64 2719 #ifdef TARGET_SPARC64
2720 if (dc->pc == (uint32_t)dc->pc) { 2720 if (dc->pc == (uint32_t)dc->pc) {
2721 gen_op_movl_T1_im(dc->pc); 2721 gen_op_movl_T1_im(dc->pc);
@@ -2723,250 +2723,250 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2723,250 +2723,250 @@ static void disas_sparc_insn(DisasContext * dc)
2723 gen_op_movq_T1_im64(dc->pc >> 32, dc->pc); 2723 gen_op_movq_T1_im64(dc->pc >> 32, dc->pc);
2724 } 2724 }
2725 #else 2725 #else
2726 - gen_op_movl_T1_im(dc->pc); 2726 + gen_op_movl_T1_im(dc->pc);
2727 #endif 2727 #endif
2728 - gen_movl_T1_reg(rd);  
2729 - } 2728 + gen_movl_T1_reg(rd);
  2729 + }
2730 gen_mov_pc_npc(dc); 2730 gen_mov_pc_npc(dc);
2731 gen_op_check_align_T0_3(); 2731 gen_op_check_align_T0_3();
2732 - gen_op_movl_npc_T0();  
2733 - dc->npc = DYNAMIC_PC;  
2734 - }  
2735 - goto jmp_insn; 2732 + gen_op_movl_npc_T0();
  2733 + dc->npc = DYNAMIC_PC;
  2734 + }
  2735 + goto jmp_insn;
2736 #if !defined(CONFIG_USER_ONLY) && !defined(TARGET_SPARC64) 2736 #if !defined(CONFIG_USER_ONLY) && !defined(TARGET_SPARC64)
2737 - case 0x39: /* rett, V9 return */  
2738 - {  
2739 - if (!supervisor(dc))  
2740 - goto priv_insn; 2737 + case 0x39: /* rett, V9 return */
  2738 + {
  2739 + if (!supervisor(dc))
  2740 + goto priv_insn;
2741 gen_mov_pc_npc(dc); 2741 gen_mov_pc_npc(dc);
2742 gen_op_check_align_T0_3(); 2742 gen_op_check_align_T0_3();
2743 - gen_op_movl_npc_T0();  
2744 - dc->npc = DYNAMIC_PC;  
2745 - gen_op_rett();  
2746 - }  
2747 - goto jmp_insn;  
2748 -#endif  
2749 - case 0x3b: /* flush */  
2750 - gen_op_flush_T0();  
2751 - break;  
2752 - case 0x3c: /* save */  
2753 - save_state(dc);  
2754 - gen_op_save();  
2755 - gen_movl_T0_reg(rd);  
2756 - break;  
2757 - case 0x3d: /* restore */  
2758 - save_state(dc);  
2759 - gen_op_restore();  
2760 - gen_movl_T0_reg(rd);  
2761 - break; 2743 + gen_op_movl_npc_T0();
  2744 + dc->npc = DYNAMIC_PC;
  2745 + gen_op_rett();
  2746 + }
  2747 + goto jmp_insn;
  2748 +#endif
  2749 + case 0x3b: /* flush */
  2750 + gen_op_flush_T0();
  2751 + break;
  2752 + case 0x3c: /* save */
  2753 + save_state(dc);
  2754 + gen_op_save();
  2755 + gen_movl_T0_reg(rd);
  2756 + break;
  2757 + case 0x3d: /* restore */
  2758 + save_state(dc);
  2759 + gen_op_restore();
  2760 + gen_movl_T0_reg(rd);
  2761 + break;
2762 #if !defined(CONFIG_USER_ONLY) && defined(TARGET_SPARC64) 2762 #if !defined(CONFIG_USER_ONLY) && defined(TARGET_SPARC64)
2763 - case 0x3e: /* V9 done/retry */  
2764 - {  
2765 - switch (rd) {  
2766 - case 0:  
2767 - if (!supervisor(dc))  
2768 - goto priv_insn;  
2769 - dc->npc = DYNAMIC_PC;  
2770 - dc->pc = DYNAMIC_PC;  
2771 - gen_op_done();  
2772 - goto jmp_insn;  
2773 - case 1:  
2774 - if (!supervisor(dc))  
2775 - goto priv_insn;  
2776 - dc->npc = DYNAMIC_PC;  
2777 - dc->pc = DYNAMIC_PC;  
2778 - gen_op_retry();  
2779 - goto jmp_insn;  
2780 - default:  
2781 - goto illegal_insn;  
2782 - }  
2783 - }  
2784 - break;  
2785 -#endif  
2786 - default:  
2787 - goto illegal_insn;  
2788 - } 2763 + case 0x3e: /* V9 done/retry */
  2764 + {
  2765 + switch (rd) {
  2766 + case 0:
  2767 + if (!supervisor(dc))
  2768 + goto priv_insn;
  2769 + dc->npc = DYNAMIC_PC;
  2770 + dc->pc = DYNAMIC_PC;
  2771 + gen_op_done();
  2772 + goto jmp_insn;
  2773 + case 1:
  2774 + if (!supervisor(dc))
  2775 + goto priv_insn;
  2776 + dc->npc = DYNAMIC_PC;
  2777 + dc->pc = DYNAMIC_PC;
  2778 + gen_op_retry();
  2779 + goto jmp_insn;
  2780 + default:
  2781 + goto illegal_insn;
  2782 + }
  2783 + }
  2784 + break;
  2785 +#endif
  2786 + default:
  2787 + goto illegal_insn;
  2788 + }
2789 } 2789 }
2790 - break;  
2791 - }  
2792 - break;  
2793 - case 3: /* load/store instructions */  
2794 - {  
2795 - unsigned int xop = GET_FIELD(insn, 7, 12);  
2796 - rs1 = GET_FIELD(insn, 13, 17); 2790 + break;
  2791 + }
  2792 + break;
  2793 + case 3: /* load/store instructions */
  2794 + {
  2795 + unsigned int xop = GET_FIELD(insn, 7, 12);
  2796 + rs1 = GET_FIELD(insn, 13, 17);
2797 save_state(dc); 2797 save_state(dc);
2798 - gen_movl_reg_T0(rs1);  
2799 - if (IS_IMM) { /* immediate */  
2800 - rs2 = GET_FIELDs(insn, 19, 31); 2798 + gen_movl_reg_T0(rs1);
  2799 + if (IS_IMM) { /* immediate */
  2800 + rs2 = GET_FIELDs(insn, 19, 31);
2801 #if defined(OPTIM) 2801 #if defined(OPTIM)
2802 - if (rs2 != 0) { 2802 + if (rs2 != 0) {
2803 #endif 2803 #endif
2804 - gen_movl_simm_T1(rs2);  
2805 - gen_op_add_T1_T0(); 2804 + gen_movl_simm_T1(rs2);
  2805 + gen_op_add_T1_T0();
2806 #if defined(OPTIM) 2806 #if defined(OPTIM)
2807 - } 2807 + }
2808 #endif 2808 #endif
2809 - } else { /* register */  
2810 - rs2 = GET_FIELD(insn, 27, 31); 2809 + } else { /* register */
  2810 + rs2 = GET_FIELD(insn, 27, 31);
2811 #if defined(OPTIM) 2811 #if defined(OPTIM)
2812 - if (rs2 != 0) { 2812 + if (rs2 != 0) {
2813 #endif 2813 #endif
2814 - gen_movl_reg_T1(rs2);  
2815 - gen_op_add_T1_T0(); 2814 + gen_movl_reg_T1(rs2);
  2815 + gen_op_add_T1_T0();
2816 #if defined(OPTIM) 2816 #if defined(OPTIM)
2817 - } 2817 + }
2818 #endif 2818 #endif
2819 - } 2819 + }
2820 if (xop < 4 || (xop > 7 && xop < 0x14 && xop != 0x0e) || 2820 if (xop < 4 || (xop > 7 && xop < 0x14 && xop != 0x0e) ||
2821 (xop > 0x17 && xop <= 0x1d ) || 2821 (xop > 0x17 && xop <= 0x1d ) ||
2822 (xop > 0x2c && xop <= 0x33) || xop == 0x1f || xop == 0x3d) { 2822 (xop > 0x2c && xop <= 0x33) || xop == 0x1f || xop == 0x3d) {
2823 - switch (xop) {  
2824 - case 0x0: /* load word */ 2823 + switch (xop) {
  2824 + case 0x0: /* load word */
2825 #ifdef CONFIG_USER_ONLY 2825 #ifdef CONFIG_USER_ONLY
2826 gen_op_check_align_T0_3(); 2826 gen_op_check_align_T0_3();
2827 #endif 2827 #endif
2828 #ifndef TARGET_SPARC64 2828 #ifndef TARGET_SPARC64
2829 - gen_op_ldst(ld); 2829 + gen_op_ldst(ld);
2830 #else 2830 #else
2831 gen_op_ldst(lduw); 2831 gen_op_ldst(lduw);
2832 #endif 2832 #endif
2833 - break;  
2834 - case 0x1: /* load unsigned byte */  
2835 - gen_op_ldst(ldub);  
2836 - break;  
2837 - case 0x2: /* load unsigned halfword */ 2833 + break;
  2834 + case 0x1: /* load unsigned byte */
  2835 + gen_op_ldst(ldub);
  2836 + break;
  2837 + case 0x2: /* load unsigned halfword */
2838 #ifdef CONFIG_USER_ONLY 2838 #ifdef CONFIG_USER_ONLY
2839 gen_op_check_align_T0_1(); 2839 gen_op_check_align_T0_1();
2840 #endif 2840 #endif
2841 - gen_op_ldst(lduh);  
2842 - break;  
2843 - case 0x3: /* load double word */ 2841 + gen_op_ldst(lduh);
  2842 + break;
  2843 + case 0x3: /* load double word */
2844 gen_op_check_align_T0_7(); 2844 gen_op_check_align_T0_7();
2845 - if (rd & 1) 2845 + if (rd & 1)
2846 goto illegal_insn; 2846 goto illegal_insn;
2847 - gen_op_ldst(ldd);  
2848 - gen_movl_T0_reg(rd + 1);  
2849 - break;  
2850 - case 0x9: /* load signed byte */  
2851 - gen_op_ldst(ldsb);  
2852 - break;  
2853 - case 0xa: /* load signed halfword */ 2847 + gen_op_ldst(ldd);
  2848 + gen_movl_T0_reg(rd + 1);
  2849 + break;
  2850 + case 0x9: /* load signed byte */
  2851 + gen_op_ldst(ldsb);
  2852 + break;
  2853 + case 0xa: /* load signed halfword */
2854 #ifdef CONFIG_USER_ONLY 2854 #ifdef CONFIG_USER_ONLY
2855 gen_op_check_align_T0_1(); 2855 gen_op_check_align_T0_1();
2856 #endif 2856 #endif
2857 - gen_op_ldst(ldsh);  
2858 - break;  
2859 - case 0xd: /* ldstub -- XXX: should be atomically */  
2860 - gen_op_ldst(ldstub);  
2861 - break;  
2862 - case 0x0f: /* swap register with memory. Also atomically */ 2857 + gen_op_ldst(ldsh);
  2858 + break;
  2859 + case 0xd: /* ldstub -- XXX: should be atomically */
  2860 + gen_op_ldst(ldstub);
  2861 + break;
  2862 + case 0x0f: /* swap register with memory. Also atomically */
2863 #ifdef CONFIG_USER_ONLY 2863 #ifdef CONFIG_USER_ONLY
2864 gen_op_check_align_T0_3(); 2864 gen_op_check_align_T0_3();
2865 #endif 2865 #endif
2866 - gen_movl_reg_T1(rd);  
2867 - gen_op_ldst(swap);  
2868 - break; 2866 + gen_movl_reg_T1(rd);
  2867 + gen_op_ldst(swap);
  2868 + break;
2869 #if !defined(CONFIG_USER_ONLY) || defined(TARGET_SPARC64) 2869 #if !defined(CONFIG_USER_ONLY) || defined(TARGET_SPARC64)
2870 - case 0x10: /* load word alternate */ 2870 + case 0x10: /* load word alternate */
2871 #ifndef TARGET_SPARC64 2871 #ifndef TARGET_SPARC64
2872 - if (IS_IMM)  
2873 - goto illegal_insn;  
2874 - if (!supervisor(dc))  
2875 - goto priv_insn; 2872 + if (IS_IMM)
  2873 + goto illegal_insn;
  2874 + if (!supervisor(dc))
  2875 + goto priv_insn;
2876 #ifdef CONFIG_USER_ONLY 2876 #ifdef CONFIG_USER_ONLY
2877 gen_op_check_align_T0_3(); 2877 gen_op_check_align_T0_3();
2878 #endif 2878 #endif
2879 - gen_op_lda(insn, 1, 4, 0); 2879 + gen_op_lda(insn, 1, 4, 0);
2880 #else 2880 #else
2881 #ifdef CONFIG_USER_ONLY 2881 #ifdef CONFIG_USER_ONLY
2882 gen_op_check_align_T0_3(); 2882 gen_op_check_align_T0_3();
2883 #endif 2883 #endif
2884 gen_op_lduwa(insn, 1, 4, 0); 2884 gen_op_lduwa(insn, 1, 4, 0);
2885 #endif 2885 #endif
2886 - break;  
2887 - case 0x11: /* load unsigned byte alternate */ 2886 + break;
  2887 + case 0x11: /* load unsigned byte alternate */
2888 #ifndef TARGET_SPARC64 2888 #ifndef TARGET_SPARC64
2889 - if (IS_IMM)  
2890 - goto illegal_insn;  
2891 - if (!supervisor(dc))  
2892 - goto priv_insn;  
2893 -#endif  
2894 - gen_op_lduba(insn, 1, 1, 0);  
2895 - break;  
2896 - case 0x12: /* load unsigned halfword alternate */ 2889 + if (IS_IMM)
  2890 + goto illegal_insn;
  2891 + if (!supervisor(dc))
  2892 + goto priv_insn;
  2893 +#endif
  2894 + gen_op_lduba(insn, 1, 1, 0);
  2895 + break;
  2896 + case 0x12: /* load unsigned halfword alternate */
2897 #ifndef TARGET_SPARC64 2897 #ifndef TARGET_SPARC64
2898 - if (IS_IMM)  
2899 - goto illegal_insn;  
2900 - if (!supervisor(dc))  
2901 - goto priv_insn; 2898 + if (IS_IMM)
  2899 + goto illegal_insn;
  2900 + if (!supervisor(dc))
  2901 + goto priv_insn;
2902 #endif 2902 #endif
2903 #ifdef CONFIG_USER_ONLY 2903 #ifdef CONFIG_USER_ONLY
2904 gen_op_check_align_T0_1(); 2904 gen_op_check_align_T0_1();
2905 #endif 2905 #endif
2906 - gen_op_lduha(insn, 1, 2, 0);  
2907 - break;  
2908 - case 0x13: /* load double word alternate */ 2906 + gen_op_lduha(insn, 1, 2, 0);
  2907 + break;
  2908 + case 0x13: /* load double word alternate */
2909 #ifndef TARGET_SPARC64 2909 #ifndef TARGET_SPARC64
2910 - if (IS_IMM)  
2911 - goto illegal_insn;  
2912 - if (!supervisor(dc))  
2913 - goto priv_insn; 2910 + if (IS_IMM)
  2911 + goto illegal_insn;
  2912 + if (!supervisor(dc))
  2913 + goto priv_insn;
2914 #endif 2914 #endif
2915 - if (rd & 1) 2915 + if (rd & 1)
2916 goto illegal_insn; 2916 goto illegal_insn;
2917 gen_op_check_align_T0_7(); 2917 gen_op_check_align_T0_7();
2918 - gen_op_ldda(insn, 1, 8, 0);  
2919 - gen_movl_T0_reg(rd + 1);  
2920 - break;  
2921 - case 0x19: /* load signed byte alternate */ 2918 + gen_op_ldda(insn, 1, 8, 0);
  2919 + gen_movl_T0_reg(rd + 1);
  2920 + break;
  2921 + case 0x19: /* load signed byte alternate */
2922 #ifndef TARGET_SPARC64 2922 #ifndef TARGET_SPARC64
2923 - if (IS_IMM)  
2924 - goto illegal_insn;  
2925 - if (!supervisor(dc))  
2926 - goto priv_insn;  
2927 -#endif  
2928 - gen_op_ldsba(insn, 1, 1, 1);  
2929 - break;  
2930 - case 0x1a: /* load signed halfword alternate */ 2923 + if (IS_IMM)
  2924 + goto illegal_insn;
  2925 + if (!supervisor(dc))
  2926 + goto priv_insn;
  2927 +#endif
  2928 + gen_op_ldsba(insn, 1, 1, 1);
  2929 + break;
  2930 + case 0x1a: /* load signed halfword alternate */
2931 #ifndef TARGET_SPARC64 2931 #ifndef TARGET_SPARC64
2932 - if (IS_IMM)  
2933 - goto illegal_insn;  
2934 - if (!supervisor(dc))  
2935 - goto priv_insn; 2932 + if (IS_IMM)
  2933 + goto illegal_insn;
  2934 + if (!supervisor(dc))
  2935 + goto priv_insn;
2936 #endif 2936 #endif
2937 #ifdef CONFIG_USER_ONLY 2937 #ifdef CONFIG_USER_ONLY
2938 gen_op_check_align_T0_1(); 2938 gen_op_check_align_T0_1();
2939 #endif 2939 #endif
2940 - gen_op_ldsha(insn, 1, 2 ,1);  
2941 - break;  
2942 - case 0x1d: /* ldstuba -- XXX: should be atomically */ 2940 + gen_op_ldsha(insn, 1, 2 ,1);
  2941 + break;
  2942 + case 0x1d: /* ldstuba -- XXX: should be atomically */
2943 #ifndef TARGET_SPARC64 2943 #ifndef TARGET_SPARC64
2944 - if (IS_IMM)  
2945 - goto illegal_insn;  
2946 - if (!supervisor(dc))  
2947 - goto priv_insn;  
2948 -#endif  
2949 - gen_op_ldstuba(insn, 1, 1, 0);  
2950 - break;  
2951 - case 0x1f: /* swap reg with alt. memory. Also atomically */ 2944 + if (IS_IMM)
  2945 + goto illegal_insn;
  2946 + if (!supervisor(dc))
  2947 + goto priv_insn;
  2948 +#endif
  2949 + gen_op_ldstuba(insn, 1, 1, 0);
  2950 + break;
  2951 + case 0x1f: /* swap reg with alt. memory. Also atomically */
2952 #ifndef TARGET_SPARC64 2952 #ifndef TARGET_SPARC64
2953 - if (IS_IMM)  
2954 - goto illegal_insn;  
2955 - if (!supervisor(dc))  
2956 - goto priv_insn; 2953 + if (IS_IMM)
  2954 + goto illegal_insn;
  2955 + if (!supervisor(dc))
  2956 + goto priv_insn;
2957 #endif 2957 #endif
2958 - gen_movl_reg_T1(rd); 2958 + gen_movl_reg_T1(rd);
2959 #ifdef CONFIG_USER_ONLY 2959 #ifdef CONFIG_USER_ONLY
2960 gen_op_check_align_T0_3(); 2960 gen_op_check_align_T0_3();
2961 #endif 2961 #endif
2962 - gen_op_swapa(insn, 1, 4, 0);  
2963 - break; 2962 + gen_op_swapa(insn, 1, 4, 0);
  2963 + break;
2964 2964
2965 #ifndef TARGET_SPARC64 2965 #ifndef TARGET_SPARC64
2966 - case 0x30: /* ldc */  
2967 - case 0x31: /* ldcsr */  
2968 - case 0x33: /* lddc */  
2969 - goto ncp_insn; 2966 + case 0x30: /* ldc */
  2967 + case 0x31: /* ldcsr */
  2968 + case 0x33: /* lddc */
  2969 + goto ncp_insn;
2970 /* avoid warnings */ 2970 /* avoid warnings */
2971 (void) &gen_op_stfa; 2971 (void) &gen_op_stfa;
2972 (void) &gen_op_stdfa; 2972 (void) &gen_op_stdfa;
@@ -2975,260 +2975,260 @@ static void disas_sparc_insn(DisasContext * dc) @@ -2975,260 +2975,260 @@ static void disas_sparc_insn(DisasContext * dc)
2975 #else 2975 #else
2976 (void) &gen_op_lda; 2976 (void) &gen_op_lda;
2977 #if !defined(CONFIG_USER_ONLY) 2977 #if !defined(CONFIG_USER_ONLY)
2978 - (void) &gen_op_cas;  
2979 - (void) &gen_op_casx; 2978 + (void) &gen_op_cas;
  2979 + (void) &gen_op_casx;
2980 #endif 2980 #endif
2981 #endif 2981 #endif
2982 #endif 2982 #endif
2983 #ifdef TARGET_SPARC64 2983 #ifdef TARGET_SPARC64
2984 - case 0x08: /* V9 ldsw */ 2984 + case 0x08: /* V9 ldsw */
2985 #ifdef CONFIG_USER_ONLY 2985 #ifdef CONFIG_USER_ONLY
2986 gen_op_check_align_T0_3(); 2986 gen_op_check_align_T0_3();
2987 #endif 2987 #endif
2988 - gen_op_ldst(ldsw);  
2989 - break;  
2990 - case 0x0b: /* V9 ldx */ 2988 + gen_op_ldst(ldsw);
  2989 + break;
  2990 + case 0x0b: /* V9 ldx */
2991 gen_op_check_align_T0_7(); 2991 gen_op_check_align_T0_7();
2992 - gen_op_ldst(ldx);  
2993 - break;  
2994 - case 0x18: /* V9 ldswa */ 2992 + gen_op_ldst(ldx);
  2993 + break;
  2994 + case 0x18: /* V9 ldswa */
2995 #ifdef CONFIG_USER_ONLY 2995 #ifdef CONFIG_USER_ONLY
2996 gen_op_check_align_T0_3(); 2996 gen_op_check_align_T0_3();
2997 #endif 2997 #endif
2998 - gen_op_ldswa(insn, 1, 4, 1);  
2999 - break;  
3000 - case 0x1b: /* V9 ldxa */ 2998 + gen_op_ldswa(insn, 1, 4, 1);
  2999 + break;
  3000 + case 0x1b: /* V9 ldxa */
3001 gen_op_check_align_T0_7(); 3001 gen_op_check_align_T0_7();
3002 - gen_op_ldxa(insn, 1, 8, 0);  
3003 - break;  
3004 - case 0x2d: /* V9 prefetch, no effect */  
3005 - goto skip_move;  
3006 - case 0x30: /* V9 ldfa */ 3002 + gen_op_ldxa(insn, 1, 8, 0);
  3003 + break;
  3004 + case 0x2d: /* V9 prefetch, no effect */
  3005 + goto skip_move;
  3006 + case 0x30: /* V9 ldfa */
3007 #ifdef CONFIG_USER_ONLY 3007 #ifdef CONFIG_USER_ONLY
3008 gen_op_check_align_T0_3(); 3008 gen_op_check_align_T0_3();
3009 #endif 3009 #endif
3010 - gen_op_ldfa(insn, 1, 8, 0); // XXX  
3011 - break;  
3012 - case 0x33: /* V9 lddfa */ 3010 + gen_op_ldfa(insn, 1, 8, 0); // XXX
  3011 + break;
  3012 + case 0x33: /* V9 lddfa */
3013 gen_op_check_align_T0_7(); 3013 gen_op_check_align_T0_7();
3014 - gen_op_lddfa(insn, 1, 8, 0); // XXX  
3015 -  
3016 - break;  
3017 - case 0x3d: /* V9 prefetcha, no effect */  
3018 - goto skip_move;  
3019 - case 0x32: /* V9 ldqfa */  
3020 - goto nfpu_insn;  
3021 -#endif  
3022 - default:  
3023 - goto illegal_insn;  
3024 - }  
3025 - gen_movl_T1_reg(rd); 3014 + gen_op_lddfa(insn, 1, 8, 0); // XXX
  3015 +
  3016 + break;
  3017 + case 0x3d: /* V9 prefetcha, no effect */
  3018 + goto skip_move;
  3019 + case 0x32: /* V9 ldqfa */
  3020 + goto nfpu_insn;
  3021 +#endif
  3022 + default:
  3023 + goto illegal_insn;
  3024 + }
  3025 + gen_movl_T1_reg(rd);
3026 #ifdef TARGET_SPARC64 3026 #ifdef TARGET_SPARC64
3027 - skip_move: ; 3027 + skip_move: ;
3028 #endif 3028 #endif
3029 - } else if (xop >= 0x20 && xop < 0x24) { 3029 + } else if (xop >= 0x20 && xop < 0x24) {
3030 if (gen_trap_ifnofpu(dc)) 3030 if (gen_trap_ifnofpu(dc))
3031 goto jmp_insn; 3031 goto jmp_insn;
3032 - switch (xop) {  
3033 - case 0x20: /* load fpreg */ 3032 + switch (xop) {
  3033 + case 0x20: /* load fpreg */
3034 #ifdef CONFIG_USER_ONLY 3034 #ifdef CONFIG_USER_ONLY
3035 gen_op_check_align_T0_3(); 3035 gen_op_check_align_T0_3();
3036 #endif 3036 #endif
3037 - gen_op_ldst(ldf);  
3038 - gen_op_store_FT0_fpr(rd);  
3039 - break;  
3040 - case 0x21: /* load fsr */ 3037 + gen_op_ldst(ldf);
  3038 + gen_op_store_FT0_fpr(rd);
  3039 + break;
  3040 + case 0x21: /* load fsr */
3041 #ifdef CONFIG_USER_ONLY 3041 #ifdef CONFIG_USER_ONLY
3042 gen_op_check_align_T0_3(); 3042 gen_op_check_align_T0_3();
3043 #endif 3043 #endif
3044 - gen_op_ldst(ldf);  
3045 - gen_op_ldfsr();  
3046 - break;  
3047 - case 0x22: /* load quad fpreg */  
3048 - goto nfpu_insn;  
3049 - case 0x23: /* load double fpreg */ 3044 + gen_op_ldst(ldf);
  3045 + gen_op_ldfsr();
  3046 + break;
  3047 + case 0x22: /* load quad fpreg */
  3048 + goto nfpu_insn;
  3049 + case 0x23: /* load double fpreg */
3050 gen_op_check_align_T0_7(); 3050 gen_op_check_align_T0_7();
3051 - gen_op_ldst(lddf);  
3052 - gen_op_store_DT0_fpr(DFPREG(rd));  
3053 - break;  
3054 - default:  
3055 - goto illegal_insn;  
3056 - }  
3057 - } else if (xop < 8 || (xop >= 0x14 && xop < 0x18) || \  
3058 - xop == 0xe || xop == 0x1e) {  
3059 - gen_movl_reg_T1(rd);  
3060 - switch (xop) {  
3061 - case 0x4: 3051 + gen_op_ldst(lddf);
  3052 + gen_op_store_DT0_fpr(DFPREG(rd));
  3053 + break;
  3054 + default:
  3055 + goto illegal_insn;
  3056 + }
  3057 + } else if (xop < 8 || (xop >= 0x14 && xop < 0x18) || \
  3058 + xop == 0xe || xop == 0x1e) {
  3059 + gen_movl_reg_T1(rd);
  3060 + switch (xop) {
  3061 + case 0x4:
3062 #ifdef CONFIG_USER_ONLY 3062 #ifdef CONFIG_USER_ONLY
3063 gen_op_check_align_T0_3(); 3063 gen_op_check_align_T0_3();
3064 #endif 3064 #endif
3065 - gen_op_ldst(st);  
3066 - break;  
3067 - case 0x5:  
3068 - gen_op_ldst(stb);  
3069 - break;  
3070 - case 0x6: 3065 + gen_op_ldst(st);
  3066 + break;
  3067 + case 0x5:
  3068 + gen_op_ldst(stb);
  3069 + break;
  3070 + case 0x6:
3071 #ifdef CONFIG_USER_ONLY 3071 #ifdef CONFIG_USER_ONLY
3072 gen_op_check_align_T0_1(); 3072 gen_op_check_align_T0_1();
3073 #endif 3073 #endif
3074 - gen_op_ldst(sth);  
3075 - break;  
3076 - case 0x7:  
3077 - if (rd & 1) 3074 + gen_op_ldst(sth);
  3075 + break;
  3076 + case 0x7:
  3077 + if (rd & 1)
3078 goto illegal_insn; 3078 goto illegal_insn;
3079 gen_op_check_align_T0_7(); 3079 gen_op_check_align_T0_7();
3080 flush_T2(dc); 3080 flush_T2(dc);
3081 - gen_movl_reg_T2(rd + 1);  
3082 - gen_op_ldst(std);  
3083 - break; 3081 + gen_movl_reg_T2(rd + 1);
  3082 + gen_op_ldst(std);
  3083 + break;
3084 #if !defined(CONFIG_USER_ONLY) || defined(TARGET_SPARC64) 3084 #if !defined(CONFIG_USER_ONLY) || defined(TARGET_SPARC64)
3085 - case 0x14: 3085 + case 0x14:
3086 #ifndef TARGET_SPARC64 3086 #ifndef TARGET_SPARC64
3087 - if (IS_IMM)  
3088 - goto illegal_insn;  
3089 - if (!supervisor(dc))  
3090 - goto priv_insn; 3087 + if (IS_IMM)
  3088 + goto illegal_insn;
  3089 + if (!supervisor(dc))
  3090 + goto priv_insn;
3091 #endif 3091 #endif
3092 #ifdef CONFIG_USER_ONLY 3092 #ifdef CONFIG_USER_ONLY
3093 gen_op_check_align_T0_3(); 3093 gen_op_check_align_T0_3();
3094 #endif 3094 #endif
3095 - gen_op_sta(insn, 0, 4, 0); 3095 + gen_op_sta(insn, 0, 4, 0);
3096 break; 3096 break;
3097 - case 0x15: 3097 + case 0x15:
3098 #ifndef TARGET_SPARC64 3098 #ifndef TARGET_SPARC64
3099 - if (IS_IMM)  
3100 - goto illegal_insn;  
3101 - if (!supervisor(dc))  
3102 - goto priv_insn; 3099 + if (IS_IMM)
  3100 + goto illegal_insn;
  3101 + if (!supervisor(dc))
  3102 + goto priv_insn;
3103 #endif 3103 #endif
3104 - gen_op_stba(insn, 0, 1, 0); 3104 + gen_op_stba(insn, 0, 1, 0);
3105 break; 3105 break;
3106 - case 0x16: 3106 + case 0x16:
3107 #ifndef TARGET_SPARC64 3107 #ifndef TARGET_SPARC64
3108 - if (IS_IMM)  
3109 - goto illegal_insn;  
3110 - if (!supervisor(dc))  
3111 - goto priv_insn; 3108 + if (IS_IMM)
  3109 + goto illegal_insn;
  3110 + if (!supervisor(dc))
  3111 + goto priv_insn;
3112 #endif 3112 #endif
3113 #ifdef CONFIG_USER_ONLY 3113 #ifdef CONFIG_USER_ONLY
3114 gen_op_check_align_T0_1(); 3114 gen_op_check_align_T0_1();
3115 #endif 3115 #endif
3116 - gen_op_stha(insn, 0, 2, 0); 3116 + gen_op_stha(insn, 0, 2, 0);
3117 break; 3117 break;
3118 - case 0x17: 3118 + case 0x17:
3119 #ifndef TARGET_SPARC64 3119 #ifndef TARGET_SPARC64
3120 - if (IS_IMM)  
3121 - goto illegal_insn;  
3122 - if (!supervisor(dc))  
3123 - goto priv_insn; 3120 + if (IS_IMM)
  3121 + goto illegal_insn;
  3122 + if (!supervisor(dc))
  3123 + goto priv_insn;
3124 #endif 3124 #endif
3125 - if (rd & 1) 3125 + if (rd & 1)
3126 goto illegal_insn; 3126 goto illegal_insn;
3127 gen_op_check_align_T0_7(); 3127 gen_op_check_align_T0_7();
3128 flush_T2(dc); 3128 flush_T2(dc);
3129 - gen_movl_reg_T2(rd + 1);  
3130 - gen_op_stda(insn, 0, 8, 0); 3129 + gen_movl_reg_T2(rd + 1);
  3130 + gen_op_stda(insn, 0, 8, 0);
3131 break; 3131 break;
3132 #endif 3132 #endif
3133 #ifdef TARGET_SPARC64 3133 #ifdef TARGET_SPARC64
3134 - case 0x0e: /* V9 stx */ 3134 + case 0x0e: /* V9 stx */
3135 gen_op_check_align_T0_7(); 3135 gen_op_check_align_T0_7();
3136 - gen_op_ldst(stx);  
3137 - break;  
3138 - case 0x1e: /* V9 stxa */ 3136 + gen_op_ldst(stx);
  3137 + break;
  3138 + case 0x1e: /* V9 stxa */
3139 gen_op_check_align_T0_7(); 3139 gen_op_check_align_T0_7();
3140 - gen_op_stxa(insn, 0, 8, 0); // XXX  
3141 - break; 3140 + gen_op_stxa(insn, 0, 8, 0); // XXX
  3141 + break;
3142 #endif 3142 #endif
3143 - default:  
3144 - goto illegal_insn;  
3145 - }  
3146 - } else if (xop > 0x23 && xop < 0x28) { 3143 + default:
  3144 + goto illegal_insn;
  3145 + }
  3146 + } else if (xop > 0x23 && xop < 0x28) {
3147 if (gen_trap_ifnofpu(dc)) 3147 if (gen_trap_ifnofpu(dc))
3148 goto jmp_insn; 3148 goto jmp_insn;
3149 - switch (xop) {  
3150 - case 0x24: 3149 + switch (xop) {
  3150 + case 0x24:
3151 #ifdef CONFIG_USER_ONLY 3151 #ifdef CONFIG_USER_ONLY
3152 gen_op_check_align_T0_3(); 3152 gen_op_check_align_T0_3();
3153 #endif 3153 #endif
3154 gen_op_load_fpr_FT0(rd); 3154 gen_op_load_fpr_FT0(rd);
3155 - gen_op_ldst(stf);  
3156 - break;  
3157 - case 0x25: /* stfsr, V9 stxfsr */ 3155 + gen_op_ldst(stf);
  3156 + break;
  3157 + case 0x25: /* stfsr, V9 stxfsr */
3158 #ifdef CONFIG_USER_ONLY 3158 #ifdef CONFIG_USER_ONLY
3159 gen_op_check_align_T0_3(); 3159 gen_op_check_align_T0_3();
3160 #endif 3160 #endif
3161 - gen_op_stfsr();  
3162 - gen_op_ldst(stf);  
3163 - break; 3161 + gen_op_stfsr();
  3162 + gen_op_ldst(stf);
  3163 + break;
3164 #if !defined(CONFIG_USER_ONLY) 3164 #if !defined(CONFIG_USER_ONLY)
3165 - case 0x26: /* stdfq */  
3166 - if (!supervisor(dc))  
3167 - goto priv_insn;  
3168 - if (gen_trap_ifnofpu(dc))  
3169 - goto jmp_insn;  
3170 - goto nfq_insn;  
3171 -#endif  
3172 - case 0x27: 3165 + case 0x26: /* stdfq */
  3166 + if (!supervisor(dc))
  3167 + goto priv_insn;
  3168 + if (gen_trap_ifnofpu(dc))
  3169 + goto jmp_insn;
  3170 + goto nfq_insn;
  3171 +#endif
  3172 + case 0x27:
3173 gen_op_check_align_T0_7(); 3173 gen_op_check_align_T0_7();
3174 gen_op_load_fpr_DT0(DFPREG(rd)); 3174 gen_op_load_fpr_DT0(DFPREG(rd));
3175 - gen_op_ldst(stdf);  
3176 - break;  
3177 - default:  
3178 - goto illegal_insn;  
3179 - }  
3180 - } else if (xop > 0x33 && xop < 0x3f) {  
3181 - switch (xop) { 3175 + gen_op_ldst(stdf);
  3176 + break;
  3177 + default:
  3178 + goto illegal_insn;
  3179 + }
  3180 + } else if (xop > 0x33 && xop < 0x3f) {
  3181 + switch (xop) {
3182 #ifdef TARGET_SPARC64 3182 #ifdef TARGET_SPARC64
3183 - case 0x34: /* V9 stfa */ 3183 + case 0x34: /* V9 stfa */
3184 #ifdef CONFIG_USER_ONLY 3184 #ifdef CONFIG_USER_ONLY
3185 gen_op_check_align_T0_3(); 3185 gen_op_check_align_T0_3();
3186 #endif 3186 #endif
3187 - gen_op_stfa(insn, 0, 0, 0); // XXX  
3188 - break;  
3189 - case 0x37: /* V9 stdfa */ 3187 + gen_op_stfa(insn, 0, 0, 0); // XXX
  3188 + break;
  3189 + case 0x37: /* V9 stdfa */
3190 gen_op_check_align_T0_7(); 3190 gen_op_check_align_T0_7();
3191 - gen_op_stdfa(insn, 0, 0, 0); // XXX  
3192 - break;  
3193 - case 0x3c: /* V9 casa */ 3191 + gen_op_stdfa(insn, 0, 0, 0); // XXX
  3192 + break;
  3193 + case 0x3c: /* V9 casa */
3194 #ifdef CONFIG_USER_ONLY 3194 #ifdef CONFIG_USER_ONLY
3195 gen_op_check_align_T0_3(); 3195 gen_op_check_align_T0_3();
3196 #endif 3196 #endif
3197 - gen_op_casa(insn, 0, 4, 0); // XXX  
3198 - break;  
3199 - case 0x3e: /* V9 casxa */ 3197 + gen_op_casa(insn, 0, 4, 0); // XXX
  3198 + break;
  3199 + case 0x3e: /* V9 casxa */
3200 gen_op_check_align_T0_7(); 3200 gen_op_check_align_T0_7();
3201 - gen_op_casxa(insn, 0, 8, 0); // XXX  
3202 - break;  
3203 - case 0x36: /* V9 stqfa */  
3204 - goto nfpu_insn; 3201 + gen_op_casxa(insn, 0, 8, 0); // XXX
  3202 + break;
  3203 + case 0x36: /* V9 stqfa */
  3204 + goto nfpu_insn;
3205 #else 3205 #else
3206 - case 0x34: /* stc */  
3207 - case 0x35: /* stcsr */  
3208 - case 0x36: /* stdcq */  
3209 - case 0x37: /* stdc */  
3210 - goto ncp_insn;  
3211 -#endif  
3212 - default:  
3213 - goto illegal_insn;  
3214 - } 3206 + case 0x34: /* stc */
  3207 + case 0x35: /* stcsr */
  3208 + case 0x36: /* stdcq */
  3209 + case 0x37: /* stdc */
  3210 + goto ncp_insn;
  3211 +#endif
  3212 + default:
  3213 + goto illegal_insn;
  3214 + }
3215 } 3215 }
3216 - else  
3217 - goto illegal_insn;  
3218 - }  
3219 - break; 3216 + else
  3217 + goto illegal_insn;
  3218 + }
  3219 + break;
3220 } 3220 }
3221 /* default case for non jump instructions */ 3221 /* default case for non jump instructions */
3222 if (dc->npc == DYNAMIC_PC) { 3222 if (dc->npc == DYNAMIC_PC) {
3223 - dc->pc = DYNAMIC_PC;  
3224 - gen_op_next_insn(); 3223 + dc->pc = DYNAMIC_PC;
  3224 + gen_op_next_insn();
3225 } else if (dc->npc == JUMP_PC) { 3225 } else if (dc->npc == JUMP_PC) {
3226 /* we can do a static jump */ 3226 /* we can do a static jump */
3227 gen_branch2(dc, dc->jump_pc[0], dc->jump_pc[1]); 3227 gen_branch2(dc, dc->jump_pc[0], dc->jump_pc[1]);
3228 dc->is_br = 1; 3228 dc->is_br = 1;
3229 } else { 3229 } else {
3230 - dc->pc = dc->npc;  
3231 - dc->npc = dc->npc + 4; 3230 + dc->pc = dc->npc;
  3231 + dc->npc = dc->npc + 4;
3232 } 3232 }
3233 jmp_insn: 3233 jmp_insn:
3234 return; 3234 return;
@@ -3266,7 +3266,7 @@ static void disas_sparc_insn(DisasContext * dc) @@ -3266,7 +3266,7 @@ static void disas_sparc_insn(DisasContext * dc)
3266 } 3266 }
3267 3267
3268 static inline int gen_intermediate_code_internal(TranslationBlock * tb, 3268 static inline int gen_intermediate_code_internal(TranslationBlock * tb,
3269 - int spc, CPUSPARCState *env) 3269 + int spc, CPUSPARCState *env)
3270 { 3270 {
3271 target_ulong pc_start, last_pc; 3271 target_ulong pc_start, last_pc;
3272 uint16_t *gen_opc_end; 3272 uint16_t *gen_opc_end;
@@ -3299,12 +3299,12 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb, @@ -3299,12 +3299,12 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb,
3299 if (env->nb_breakpoints > 0) { 3299 if (env->nb_breakpoints > 0) {
3300 for(j = 0; j < env->nb_breakpoints; j++) { 3300 for(j = 0; j < env->nb_breakpoints; j++) {
3301 if (env->breakpoints[j] == dc->pc) { 3301 if (env->breakpoints[j] == dc->pc) {
3302 - if (dc->pc != pc_start)  
3303 - save_state(dc); 3302 + if (dc->pc != pc_start)
  3303 + save_state(dc);
3304 gen_op_debug(); 3304 gen_op_debug();
3305 - gen_op_movl_T0_0();  
3306 - gen_op_exit_tb();  
3307 - dc->is_br = 1; 3305 + gen_op_movl_T0_0();
  3306 + gen_op_exit_tb();
  3307 + dc->is_br = 1;
3308 goto exit_gen_loop; 3308 goto exit_gen_loop;
3309 } 3309 }
3310 } 3310 }
@@ -3322,14 +3322,14 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb, @@ -3322,14 +3322,14 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb,
3322 gen_opc_instr_start[lj] = 1; 3322 gen_opc_instr_start[lj] = 1;
3323 } 3323 }
3324 } 3324 }
3325 - last_pc = dc->pc;  
3326 - disas_sparc_insn(dc);  
3327 -  
3328 - if (dc->is_br)  
3329 - break;  
3330 - /* if the next PC is different, we abort now */  
3331 - if (dc->pc != (last_pc + 4))  
3332 - break; 3325 + last_pc = dc->pc;
  3326 + disas_sparc_insn(dc);
  3327 +
  3328 + if (dc->is_br)
  3329 + break;
  3330 + /* if the next PC is different, we abort now */
  3331 + if (dc->pc != (last_pc + 4))
  3332 + break;
3333 /* if we reach a page boundary, we stop generation so that the 3333 /* if we reach a page boundary, we stop generation so that the
3334 PC of a TT_TFAULT exception is always in the right page */ 3334 PC of a TT_TFAULT exception is always in the right page */
3335 if ((dc->pc & (TARGET_PAGE_SIZE - 1)) == 0) 3335 if ((dc->pc & (TARGET_PAGE_SIZE - 1)) == 0)
@@ -3343,7 +3343,7 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb, @@ -3343,7 +3343,7 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb,
3343 break; 3343 break;
3344 } 3344 }
3345 } while ((gen_opc_ptr < gen_opc_end) && 3345 } while ((gen_opc_ptr < gen_opc_end) &&
3346 - (dc->pc - pc_start) < (TARGET_PAGE_SIZE - 32)); 3346 + (dc->pc - pc_start) < (TARGET_PAGE_SIZE - 32));
3347 3347
3348 exit_gen_loop: 3348 exit_gen_loop:
3349 if (!dc->is_br) { 3349 if (!dc->is_br) {
@@ -3377,10 +3377,10 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb, @@ -3377,10 +3377,10 @@ static inline int gen_intermediate_code_internal(TranslationBlock * tb,
3377 } 3377 }
3378 #ifdef DEBUG_DISAS 3378 #ifdef DEBUG_DISAS
3379 if (loglevel & CPU_LOG_TB_IN_ASM) { 3379 if (loglevel & CPU_LOG_TB_IN_ASM) {
3380 - fprintf(logfile, "--------------\n");  
3381 - fprintf(logfile, "IN: %s\n", lookup_symbol(pc_start));  
3382 - target_disas(logfile, pc_start, last_pc + 4 - pc_start, 0);  
3383 - fprintf(logfile, "\n"); 3380 + fprintf(logfile, "--------------\n");
  3381 + fprintf(logfile, "IN: %s\n", lookup_symbol(pc_start));
  3382 + target_disas(logfile, pc_start, last_pc + 4 - pc_start, 0);
  3383 + fprintf(logfile, "\n");
3384 if (loglevel & CPU_LOG_TB_OP) { 3384 if (loglevel & CPU_LOG_TB_OP) {
3385 fprintf(logfile, "OP:\n"); 3385 fprintf(logfile, "OP:\n");
3386 dump_ops(gen_opc_buf, gen_opparam_buf); 3386 dump_ops(gen_opc_buf, gen_opparam_buf);
@@ -3438,7 +3438,7 @@ CPUSPARCState *cpu_sparc_init(void) @@ -3438,7 +3438,7 @@ CPUSPARCState *cpu_sparc_init(void)
3438 3438
3439 env = qemu_mallocz(sizeof(CPUSPARCState)); 3439 env = qemu_mallocz(sizeof(CPUSPARCState));
3440 if (!env) 3440 if (!env)
3441 - return NULL; 3441 + return NULL;
3442 cpu_exec_init(env); 3442 cpu_exec_init(env);
3443 cpu_reset(env); 3443 cpu_reset(env);
3444 return (env); 3444 return (env);
@@ -3539,22 +3539,22 @@ void cpu_dump_state(CPUState *env, FILE *f, @@ -3539,22 +3539,22 @@ void cpu_dump_state(CPUState *env, FILE *f,
3539 cpu_fprintf(f, "pc: " TARGET_FMT_lx " npc: " TARGET_FMT_lx "\n", env->pc, env->npc); 3539 cpu_fprintf(f, "pc: " TARGET_FMT_lx " npc: " TARGET_FMT_lx "\n", env->pc, env->npc);
3540 cpu_fprintf(f, "General Registers:\n"); 3540 cpu_fprintf(f, "General Registers:\n");
3541 for (i = 0; i < 4; i++) 3541 for (i = 0; i < 4; i++)
3542 - cpu_fprintf(f, "%%g%c: " TARGET_FMT_lx "\t", i + '0', env->gregs[i]); 3542 + cpu_fprintf(f, "%%g%c: " TARGET_FMT_lx "\t", i + '0', env->gregs[i]);
3543 cpu_fprintf(f, "\n"); 3543 cpu_fprintf(f, "\n");
3544 for (; i < 8; i++) 3544 for (; i < 8; i++)
3545 - cpu_fprintf(f, "%%g%c: " TARGET_FMT_lx "\t", i + '0', env->gregs[i]); 3545 + cpu_fprintf(f, "%%g%c: " TARGET_FMT_lx "\t", i + '0', env->gregs[i]);
3546 cpu_fprintf(f, "\nCurrent Register Window:\n"); 3546 cpu_fprintf(f, "\nCurrent Register Window:\n");
3547 for (x = 0; x < 3; x++) { 3547 for (x = 0; x < 3; x++) {
3548 - for (i = 0; i < 4; i++)  
3549 - cpu_fprintf(f, "%%%c%d: " TARGET_FMT_lx "\t",  
3550 - (x == 0 ? 'o' : (x == 1 ? 'l' : 'i')), i,  
3551 - env->regwptr[i + x * 8]);  
3552 - cpu_fprintf(f, "\n");  
3553 - for (; i < 8; i++)  
3554 - cpu_fprintf(f, "%%%c%d: " TARGET_FMT_lx "\t",  
3555 - (x == 0 ? 'o' : x == 1 ? 'l' : 'i'), i,  
3556 - env->regwptr[i + x * 8]);  
3557 - cpu_fprintf(f, "\n"); 3548 + for (i = 0; i < 4; i++)
  3549 + cpu_fprintf(f, "%%%c%d: " TARGET_FMT_lx "\t",
  3550 + (x == 0 ? 'o' : (x == 1 ? 'l' : 'i')), i,
  3551 + env->regwptr[i + x * 8]);
  3552 + cpu_fprintf(f, "\n");
  3553 + for (; i < 8; i++)
  3554 + cpu_fprintf(f, "%%%c%d: " TARGET_FMT_lx "\t",
  3555 + (x == 0 ? 'o' : x == 1 ? 'l' : 'i'), i,
  3556 + env->regwptr[i + x * 8]);
  3557 + cpu_fprintf(f, "\n");
3558 } 3558 }
3559 cpu_fprintf(f, "\nFloating Point Registers:\n"); 3559 cpu_fprintf(f, "\nFloating Point Registers:\n");
3560 for (i = 0; i < 32; i++) { 3560 for (i = 0; i < 32; i++) {
@@ -3566,16 +3566,16 @@ void cpu_dump_state(CPUState *env, FILE *f, @@ -3566,16 +3566,16 @@ void cpu_dump_state(CPUState *env, FILE *f,
3566 } 3566 }
3567 #ifdef TARGET_SPARC64 3567 #ifdef TARGET_SPARC64
3568 cpu_fprintf(f, "pstate: 0x%08x ccr: 0x%02x asi: 0x%02x tl: %d fprs: %d\n", 3568 cpu_fprintf(f, "pstate: 0x%08x ccr: 0x%02x asi: 0x%02x tl: %d fprs: %d\n",
3569 - env->pstate, GET_CCR(env), env->asi, env->tl, env->fprs); 3569 + env->pstate, GET_CCR(env), env->asi, env->tl, env->fprs);
3570 cpu_fprintf(f, "cansave: %d canrestore: %d otherwin: %d wstate %d cleanwin %d cwp %d\n", 3570 cpu_fprintf(f, "cansave: %d canrestore: %d otherwin: %d wstate %d cleanwin %d cwp %d\n",
3571 - env->cansave, env->canrestore, env->otherwin, env->wstate,  
3572 - env->cleanwin, NWINDOWS - 1 - env->cwp); 3571 + env->cansave, env->canrestore, env->otherwin, env->wstate,
  3572 + env->cleanwin, NWINDOWS - 1 - env->cwp);
3573 #else 3573 #else
3574 cpu_fprintf(f, "psr: 0x%08x -> %c%c%c%c %c%c%c wim: 0x%08x\n", GET_PSR(env), 3574 cpu_fprintf(f, "psr: 0x%08x -> %c%c%c%c %c%c%c wim: 0x%08x\n", GET_PSR(env),
3575 - GET_FLAG(PSR_ZERO, 'Z'), GET_FLAG(PSR_OVF, 'V'),  
3576 - GET_FLAG(PSR_NEG, 'N'), GET_FLAG(PSR_CARRY, 'C'),  
3577 - env->psrs?'S':'-', env->psrps?'P':'-',  
3578 - env->psret?'E':'-', env->wim); 3575 + GET_FLAG(PSR_ZERO, 'Z'), GET_FLAG(PSR_OVF, 'V'),
  3576 + GET_FLAG(PSR_NEG, 'N'), GET_FLAG(PSR_CARRY, 'C'),
  3577 + env->psrs?'S':'-', env->psrps?'P':'-',
  3578 + env->psret?'E':'-', env->wim);
3579 #endif 3579 #endif
3580 cpu_fprintf(f, "fsr: 0x%08x\n", GET_FSR32(env)); 3580 cpu_fprintf(f, "fsr: 0x%08x\n", GET_FSR32(env));
3581 } 3581 }