Revision d05e66d2 helper-i386.c
b/helper-i386.c | ||
---|---|---|
185 | 185 |
|
186 | 186 |
/* protected mode interrupt */ |
187 | 187 |
static void do_interrupt_protected(int intno, int is_int, int error_code, |
188 |
unsigned int next_eip) |
|
188 |
unsigned int next_eip, int is_hw)
|
|
189 | 189 |
{ |
190 | 190 |
SegmentCache *dt; |
191 | 191 |
uint8_t *ptr, *ssp; |
... | ... | |
265 | 265 |
|
266 | 266 |
shift = type >> 3; |
267 | 267 |
has_error_code = 0; |
268 |
if (!is_int) { |
|
268 |
if (!is_int && !is_hw) {
|
|
269 | 269 |
switch(intno) { |
270 | 270 |
case 8: |
271 | 271 |
case 10: |
... | ... | |
427 | 427 |
* instruction. It is only relevant if is_int is TRUE. |
428 | 428 |
*/ |
429 | 429 |
void do_interrupt(int intno, int is_int, int error_code, |
430 |
unsigned int next_eip) |
|
430 |
unsigned int next_eip, int is_hw)
|
|
431 | 431 |
{ |
432 | 432 |
if (env->cr[0] & CR0_PE_MASK) { |
433 |
do_interrupt_protected(intno, is_int, error_code, next_eip); |
|
433 |
do_interrupt_protected(intno, is_int, error_code, next_eip, is_hw);
|
|
434 | 434 |
} else { |
435 | 435 |
do_interrupt_real(intno, is_int, error_code, next_eip); |
436 | 436 |
} |
Also available in: Unified diff