Skip to contentSkip to conversation

i386 hard interrupt generation bug fix

PATCH New TeLeMan 1 participant 1 message Jan 17, 2008

lore
Share & tools
lore

TeLeMan

author
#0 lore raw

PATCH 1/1 i386 hard interrupt generation bug fix

in cpu-exe.c:
intno=cpu_get_pic_interrupt(env);

intno may be -1, we have to skip this error code.

http://www.nabble.com/file/p14921171/hard_int.patch hard_int.patch:

cpu-exec.c +0 -0
@@ -449,16 +449,18 @@ int cpu_exec(CPUState *env1)
                         (env->eflags & IF_MASK || env->hflags &

HF_HIF_MASK) &&

                         !(env->hflags & HF_INHIBIT_IRQ_MASK)) {
                         int intno;
-                        svm_check_intercept(SVM_EXIT_INTR);
                         env->interrupt_request &= ~(CPU_INTERRUPT_HARD |
CPU_INTERRUPT_VIRQ);
                         intno = cpu_get_pic_interrupt(env);
-                        if (loglevel & CPU_LOG_TB_IN_ASM) {
-                            fprintf(logfile, "Servicing hardware
INT=0x%02x\n", intno);
-                        }
-                        do_interrupt(intno, 0, 0, 0, 1);
-                        /* ensure that no TB jump will be modified as

- the program flow was changed */
- BREAK_CHAIN;
+ if(intno>=0) {
+ svm_check_intercept(SVM_EXIT_INTR);
+ if (loglevel & CPU_LOG_TB_IN_ASM) {
+ fprintf(logfile, "Servicing hardware
INT=0x%02x\n", intno);
+ }
+ do_interrupt(intno, 0, 0, 0, 1);
+ /* ensure that no TB jump will be modified as
+ the program flow was changed */
+ BREAK_CHAIN;
+ }

 #if !defined(CONFIG_USER_ONLY)
                     } else if ((interrupt_request & CPU_INTERRUPT_VIRQ) &&
                         (env->eflags & IF_MASK) && !(env->hflags &

HF_INHIBIT_IRQ_MASK)) {

Signature · 2 lines
View this message in context: http://www.nabble.com/-PATCH--i386-hard-interrupt-generation-bug-fix-tp14921171p14921171.html
Sent from the QEMU - Dev mailing list archive at Nabble.com.