Commit 9d89330183ceb170df926bbc395deb12e136e0f7
1 parent
b8a9e8f1
clean up - comments
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1271 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
5 changed files
with
31 additions
and
38 deletions
target-sparc/cpu.h
@@ -127,7 +127,6 @@ typedef struct CPUSPARCState { | @@ -127,7 +127,6 @@ typedef struct CPUSPARCState { | ||
127 | int exception_index; | 127 | int exception_index; |
128 | int interrupt_index; | 128 | int interrupt_index; |
129 | int interrupt_request; | 129 | int interrupt_request; |
130 | - target_ulong exception_next_pc; | ||
131 | struct TranslationBlock *current_tb; | 130 | struct TranslationBlock *current_tb; |
132 | void *opaque; | 131 | void *opaque; |
133 | /* NOTE: we allow 8 more registers to handle wrapping */ | 132 | /* NOTE: we allow 8 more registers to handle wrapping */ |
target-sparc/exec.h
@@ -41,9 +41,7 @@ void do_fcmpd(void); | @@ -41,9 +41,7 @@ void do_fcmpd(void); | ||
41 | void do_ldd_kernel(target_ulong addr); | 41 | void do_ldd_kernel(target_ulong addr); |
42 | void do_ldd_user(target_ulong addr); | 42 | void do_ldd_user(target_ulong addr); |
43 | void do_ldd_raw(target_ulong addr); | 43 | void do_ldd_raw(target_ulong addr); |
44 | -void do_interrupt(int intno, int is_int, int error_code, | ||
45 | - unsigned int next_eip, int is_hw); | ||
46 | -void raise_exception_err(int exception_index, int error_code); | 44 | +void do_interrupt(int intno, int error_code); |
47 | void raise_exception(int tt); | 45 | void raise_exception(int tt); |
48 | void memcpy32(target_ulong *dst, const target_ulong *src); | 46 | void memcpy32(target_ulong *dst, const target_ulong *src); |
49 | target_ulong mmu_probe(target_ulong address, int mmulev); | 47 | target_ulong mmu_probe(target_ulong address, int mmulev); |
@@ -129,4 +127,7 @@ static inline void regs_to_env(void) | @@ -129,4 +127,7 @@ static inline void regs_to_env(void) | ||
129 | { | 127 | { |
130 | } | 128 | } |
131 | 129 | ||
130 | +int cpu_sparc_handle_mmu_fault(CPUState *env, target_ulong address, int rw, | ||
131 | + int is_user, int is_softmmu); | ||
132 | + | ||
132 | #endif | 133 | #endif |
target-sparc/helper.c
@@ -23,8 +23,6 @@ | @@ -23,8 +23,6 @@ | ||
23 | //#define DEBUG_MMU | 23 | //#define DEBUG_MMU |
24 | 24 | ||
25 | /* Sparc MMU emulation */ | 25 | /* Sparc MMU emulation */ |
26 | -int cpu_sparc_handle_mmu_fault (CPUState *env, target_ulong address, int rw, | ||
27 | - int is_user, int is_softmmu); | ||
28 | 26 | ||
29 | /* thread support */ | 27 | /* thread support */ |
30 | 28 | ||
@@ -40,7 +38,18 @@ void cpu_unlock(void) | @@ -40,7 +38,18 @@ void cpu_unlock(void) | ||
40 | spin_unlock(&global_cpu_lock); | 38 | spin_unlock(&global_cpu_lock); |
41 | } | 39 | } |
42 | 40 | ||
43 | -#if !defined(CONFIG_USER_ONLY) | 41 | +#if defined(CONFIG_USER_ONLY) |
42 | + | ||
43 | +int cpu_sparc_handle_mmu_fault(CPUState *env, target_ulong address, int rw, | ||
44 | + int is_user, int is_softmmu) | ||
45 | +{ | ||
46 | + env->mmuregs[4] = address; | ||
47 | + env->exception_index = 0; /* XXX: must be incorrect */ | ||
48 | + env->error_code = -2; /* XXX: is it really used ! */ | ||
49 | + return 1; | ||
50 | +} | ||
51 | + | ||
52 | +#else | ||
44 | 53 | ||
45 | #define MMUSUFFIX _mmu | 54 | #define MMUSUFFIX _mmu |
46 | #define GETPC() (__builtin_return_address(0)) | 55 | #define GETPC() (__builtin_return_address(0)) |
@@ -86,11 +95,10 @@ void tlb_fill(target_ulong addr, int is_write, int is_user, void *retaddr) | @@ -86,11 +95,10 @@ void tlb_fill(target_ulong addr, int is_write, int is_user, void *retaddr) | ||
86 | cpu_restore_state(tb, env, pc, NULL); | 95 | cpu_restore_state(tb, env, pc, NULL); |
87 | } | 96 | } |
88 | } | 97 | } |
89 | - raise_exception_err(ret, env->error_code); | 98 | + raise_exception(ret); |
90 | } | 99 | } |
91 | env = saved_env; | 100 | env = saved_env; |
92 | } | 101 | } |
93 | -#endif | ||
94 | 102 | ||
95 | static const int access_table[8][8] = { | 103 | static const int access_table[8][8] = { |
96 | { 0, 0, 0, 0, 2, 0, 3, 3 }, | 104 | { 0, 0, 0, 0, 2, 0, 3, 3 }, |
@@ -227,12 +235,6 @@ int cpu_sparc_handle_mmu_fault (CPUState *env, target_ulong address, int rw, | @@ -227,12 +235,6 @@ int cpu_sparc_handle_mmu_fault (CPUState *env, target_ulong address, int rw, | ||
227 | unsigned long vaddr; | 235 | unsigned long vaddr; |
228 | int error_code = 0, prot, ret = 0, access_index; | 236 | int error_code = 0, prot, ret = 0, access_index; |
229 | 237 | ||
230 | - if (env->user_mode_only) { | ||
231 | - /* user mode only emulation */ | ||
232 | - error_code = -2; | ||
233 | - goto do_fault_user; | ||
234 | - } | ||
235 | - | ||
236 | error_code = get_physical_address(env, &paddr, &prot, &access_index, address, rw, is_user); | 238 | error_code = get_physical_address(env, &paddr, &prot, &access_index, address, rw, is_user); |
237 | if (error_code == 0) { | 239 | if (error_code == 0) { |
238 | virt_addr = address & TARGET_PAGE_MASK; | 240 | virt_addr = address & TARGET_PAGE_MASK; |
@@ -248,11 +250,11 @@ int cpu_sparc_handle_mmu_fault (CPUState *env, target_ulong address, int rw, | @@ -248,11 +250,11 @@ int cpu_sparc_handle_mmu_fault (CPUState *env, target_ulong address, int rw, | ||
248 | 250 | ||
249 | if (env->mmuregs[0] & MMU_NF || env->psret == 0) // No fault | 251 | if (env->mmuregs[0] & MMU_NF || env->psret == 0) // No fault |
250 | return 0; | 252 | return 0; |
251 | - do_fault_user: | ||
252 | env->exception_index = exception; | 253 | env->exception_index = exception; |
253 | env->error_code = error_code; | 254 | env->error_code = error_code; |
254 | return error_code; | 255 | return error_code; |
255 | } | 256 | } |
257 | +#endif | ||
256 | 258 | ||
257 | void memcpy32(target_ulong *dst, const target_ulong *src) | 259 | void memcpy32(target_ulong *dst, const target_ulong *src) |
258 | { | 260 | { |
@@ -287,23 +289,17 @@ void cpu_set_cwp(CPUState *env1, int new_cwp) | @@ -287,23 +289,17 @@ void cpu_set_cwp(CPUState *env1, int new_cwp) | ||
287 | env = saved_env; | 289 | env = saved_env; |
288 | } | 290 | } |
289 | 291 | ||
290 | -/* | ||
291 | - * Begin execution of an interruption. is_int is TRUE if coming from | ||
292 | - * the int instruction. next_eip is the EIP value AFTER the interrupt | ||
293 | - * instruction. It is only relevant if is_int is TRUE. | ||
294 | - */ | ||
295 | -void do_interrupt(int intno, int is_int, int error_code, | ||
296 | - unsigned int next_eip, int is_hw) | 292 | +void do_interrupt(int intno, int error_code) |
297 | { | 293 | { |
298 | int cwp; | 294 | int cwp; |
299 | 295 | ||
300 | #ifdef DEBUG_PCALL | 296 | #ifdef DEBUG_PCALL |
301 | if (loglevel & CPU_LOG_INT) { | 297 | if (loglevel & CPU_LOG_INT) { |
302 | static int count; | 298 | static int count; |
303 | - fprintf(logfile, "%6d: v=%02x e=%04x i=%d pc=%08x npc=%08x SP=%08x\n", | ||
304 | - count, intno, error_code, is_int, | ||
305 | - env->pc, | ||
306 | - env->npc, env->regwptr[6]); | 299 | + fprintf(logfile, "%6d: v=%02x e=%04x pc=%08x npc=%08x SP=%08x\n", |
300 | + count, intno, error_code, | ||
301 | + env->pc, | ||
302 | + env->npc, env->regwptr[6]); | ||
307 | #if 1 | 303 | #if 1 |
308 | cpu_dump_state(env, logfile, fprintf, 0); | 304 | cpu_dump_state(env, logfile, fprintf, 0); |
309 | { | 305 | { |
@@ -334,6 +330,8 @@ void do_interrupt(int intno, int is_int, int error_code, | @@ -334,6 +330,8 @@ void do_interrupt(int intno, int is_int, int error_code, | ||
334 | env->regwptr[9] = env->pc; | 330 | env->regwptr[9] = env->pc; |
335 | env->regwptr[10] = env->npc; | 331 | env->regwptr[10] = env->npc; |
336 | } else { | 332 | } else { |
333 | + /* XXX: this code is clearly incorrect - npc should have the | ||
334 | + incorrect value */ | ||
337 | env->regwptr[9] = env->pc - 4; // XXX? | 335 | env->regwptr[9] = env->pc - 4; // XXX? |
338 | env->regwptr[10] = env->pc; | 336 | env->regwptr[10] = env->pc; |
339 | } | 337 | } |
@@ -345,11 +343,6 @@ void do_interrupt(int intno, int is_int, int error_code, | @@ -345,11 +343,6 @@ void do_interrupt(int intno, int is_int, int error_code, | ||
345 | env->exception_index = 0; | 343 | env->exception_index = 0; |
346 | } | 344 | } |
347 | 345 | ||
348 | -void raise_exception_err(int exception_index, int error_code) | ||
349 | -{ | ||
350 | - raise_exception(exception_index); | ||
351 | -} | ||
352 | - | ||
353 | target_ulong mmu_probe(target_ulong address, int mmulev) | 346 | target_ulong mmu_probe(target_ulong address, int mmulev) |
354 | { | 347 | { |
355 | target_phys_addr_t pde_ptr; | 348 | target_phys_addr_t pde_ptr; |
target-sparc/op.c
@@ -556,12 +556,6 @@ void OPPROTO op_rett(void) | @@ -556,12 +556,6 @@ void OPPROTO op_rett(void) | ||
556 | FORCE_RET(); | 556 | FORCE_RET(); |
557 | } | 557 | } |
558 | 558 | ||
559 | -void raise_exception(int tt) | ||
560 | -{ | ||
561 | - env->exception_index = tt; | ||
562 | - cpu_loop_exit(); | ||
563 | -} | ||
564 | - | ||
565 | /* XXX: use another pointer for %iN registers to avoid slow wrapping | 559 | /* XXX: use another pointer for %iN registers to avoid slow wrapping |
566 | handling ? */ | 560 | handling ? */ |
567 | void OPPROTO op_save(void) | 561 | void OPPROTO op_save(void) |
target-sparc/op_helper.c
@@ -4,6 +4,12 @@ | @@ -4,6 +4,12 @@ | ||
4 | 4 | ||
5 | //#define DEBUG_MMU | 5 | //#define DEBUG_MMU |
6 | 6 | ||
7 | +void raise_exception(int tt) | ||
8 | +{ | ||
9 | + env->exception_index = tt; | ||
10 | + cpu_loop_exit(); | ||
11 | +} | ||
12 | + | ||
7 | #ifdef USE_INT_TO_FLOAT_HELPERS | 13 | #ifdef USE_INT_TO_FLOAT_HELPERS |
8 | void do_fitos(void) | 14 | void do_fitos(void) |
9 | { | 15 | { |