Commit b453b70b authored by bellard's avatar bellard
Browse files

sparc fixes


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@490 c046a42c-6fe2-441c-8c8c-71466251a162
parent 0ac4bd56
...@@ -250,11 +250,7 @@ int cpu_exec(CPUState *env1) ...@@ -250,11 +250,7 @@ int cpu_exec(CPUState *env1)
pc = (uint8_t *)env->regs[15]; pc = (uint8_t *)env->regs[15];
#elif defined(TARGET_SPARC) #elif defined(TARGET_SPARC)
flags = 0; flags = 0;
cs_base = 0; cs_base = env->npc;
if (env->npc) {
env->pc = env->npc;
env->npc = 0;
}
pc = (uint8_t *) env->pc; pc = (uint8_t *) env->pc;
#elif defined(TARGET_PPC) #elif defined(TARGET_PPC)
flags = 0; flags = 0;
...@@ -271,7 +267,7 @@ int cpu_exec(CPUState *env1) ...@@ -271,7 +267,7 @@ int cpu_exec(CPUState *env1)
tb = tb_alloc((unsigned long)pc); tb = tb_alloc((unsigned long)pc);
if (!tb) { if (!tb) {
/* flush must be done */ /* flush must be done */
tb_flush(); tb_flush(env);
/* cannot fail at this point */ /* cannot fail at this point */
tb = tb_alloc((unsigned long)pc); tb = tb_alloc((unsigned long)pc);
/* don't forget to invalidate previous TB info */ /* don't forget to invalidate previous TB info */
...@@ -410,7 +406,7 @@ void cpu_x86_load_seg(CPUX86State *s, int seg_reg, int selector) ...@@ -410,7 +406,7 @@ void cpu_x86_load_seg(CPUX86State *s, int seg_reg, int selector)
cpu_x86_load_seg_cache(env, seg_reg, selector, cpu_x86_load_seg_cache(env, seg_reg, selector,
(uint8_t *)(selector << 4), 0xffff, 0); (uint8_t *)(selector << 4), 0xffff, 0);
} else { } else {
load_seg(seg_reg, selector, 0); load_seg(seg_reg, selector);
} }
env = saved_env; env = saved_env;
} }
...@@ -519,7 +515,11 @@ static inline int handle_cpu_signal(unsigned long pc, unsigned long address, ...@@ -519,7 +515,11 @@ static inline int handle_cpu_signal(unsigned long pc, unsigned long address,
static inline int handle_cpu_signal(unsigned long pc, unsigned long address, static inline int handle_cpu_signal(unsigned long pc, unsigned long address,
int is_write, sigset_t *old_set) int is_write, sigset_t *old_set)
{ {
return 0; /* XXX: locking issue */
if (is_write && page_unprotect(address)) {
return 1;
}
return 0;
} }
#elif defined (TARGET_PPC) #elif defined (TARGET_PPC)
static inline int handle_cpu_signal(unsigned long pc, unsigned long address, static inline int handle_cpu_signal(unsigned long pc, unsigned long address,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment