Revision 63a54736
b/target-i386/exec.h | ||
---|---|---|
73 | 73 |
target_ulong next_eip); |
74 | 74 |
void QEMU_NORETURN raise_exception_err(int exception_index, int error_code); |
75 | 75 |
void QEMU_NORETURN raise_exception(int exception_index); |
76 |
void QEMU_NORETURN raise_exception_env(int exception_index, CPUState *nenv); |
|
76 | 77 |
void do_smm_enter(void); |
77 | 78 |
|
78 | 79 |
/* n must be a constant to be efficient */ |
b/target-i386/helper.c | ||
---|---|---|
1862 | 1862 |
|
1863 | 1863 |
static CPUDebugExcpHandler *prev_debug_excp_handler; |
1864 | 1864 |
|
1865 |
void raise_exception(int exception_index);
|
|
1865 |
void raise_exception_env(int exception_index, CPUState *env);
|
|
1866 | 1866 |
|
1867 | 1867 |
static void breakpoint_handler(CPUState *env) |
1868 | 1868 |
{ |
... | ... | |
1872 | 1872 |
if (env->watchpoint_hit->flags & BP_CPU) { |
1873 | 1873 |
env->watchpoint_hit = NULL; |
1874 | 1874 |
if (check_hw_breakpoints(env, 0)) |
1875 |
raise_exception(EXCP01_DB);
|
|
1875 |
raise_exception_env(EXCP01_DB, env);
|
|
1876 | 1876 |
else |
1877 | 1877 |
cpu_resume_from_signal(env, NULL); |
1878 | 1878 |
} |
... | ... | |
1881 | 1881 |
if (bp->pc == env->eip) { |
1882 | 1882 |
if (bp->flags & BP_CPU) { |
1883 | 1883 |
check_hw_breakpoints(env, 1); |
1884 |
raise_exception(EXCP01_DB);
|
|
1884 |
raise_exception_env(EXCP01_DB, env);
|
|
1885 | 1885 |
} |
1886 | 1886 |
break; |
1887 | 1887 |
} |
b/target-i386/op_helper.c | ||
---|---|---|
1351 | 1351 |
raise_interrupt(exception_index, 0, 0, 0); |
1352 | 1352 |
} |
1353 | 1353 |
|
1354 |
void raise_exception_env(int exception_index, CPUState *nenv) |
|
1355 |
{ |
|
1356 |
env = nenv; |
|
1357 |
raise_exception(exception_index); |
|
1358 |
} |
|
1354 | 1359 |
/* SMM support */ |
1355 | 1360 |
|
1356 | 1361 |
#if defined(CONFIG_USER_ONLY) |
Also available in: Unified diff