Revision 4917cf44 user-exec.c
b/user-exec.c | ||
---|---|---|
81 | 81 |
int is_write, sigset_t *old_set, |
82 | 82 |
void *puc) |
83 | 83 |
{ |
84 |
CPUArchState *env; |
|
84 | 85 |
int ret; |
85 | 86 |
|
86 | 87 |
#if defined(DEBUG_SIGNAL) |
... | ... | |
93 | 94 |
return 1; |
94 | 95 |
} |
95 | 96 |
|
97 |
env = current_cpu->env_ptr; |
|
96 | 98 |
/* see if it is an MMU fault */ |
97 |
ret = cpu_handle_mmu_fault(cpu_single_env, address, is_write, |
|
98 |
MMU_USER_IDX); |
|
99 |
ret = cpu_handle_mmu_fault(env, address, is_write, MMU_USER_IDX); |
|
99 | 100 |
if (ret < 0) { |
100 | 101 |
return 0; /* not an MMU fault */ |
101 | 102 |
} |
... | ... | |
103 | 104 |
return 1; /* the MMU fault was handled without causing real CPU fault */ |
104 | 105 |
} |
105 | 106 |
/* now we have a real cpu fault */ |
106 |
cpu_restore_state(cpu_single_env, pc);
|
|
107 |
cpu_restore_state(env, pc); |
|
107 | 108 |
|
108 | 109 |
/* we restore the process signal mask as the sigreturn should |
109 | 110 |
do it (XXX: use sigsetjmp) */ |
110 | 111 |
sigprocmask(SIG_SETMASK, old_set, NULL); |
111 |
exception_action(cpu_single_env);
|
|
112 |
exception_action(env); |
|
112 | 113 |
|
113 | 114 |
/* never comes here */ |
114 | 115 |
return 1; |
Also available in: Unified diff