Fix interrupt exclusion via SSTEP_NOIRQ

Commit #5620 revealed an issue of the SSTEP_NOIRQ masking that was
applied on all interrupt sources (including internal ones) when single
stepping through the guest. Due to that commit, we now ended up in an
infinite loop when CPU_INTERRUPT_EXIT was pending on SSTEP resume. That
was due to #5620 eating all TBs while CPU_INTERRUPT_EXIT is pending, but
SSTEP_NOIRQ preventing CPU_INTERRUPT_EXIT to be processed.

What SSTEP_NOIRQ should actually do is to block the delivery of all
external, guest visible interrupts. With the fix below applied, single
stepping now works again.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5643 c046a42c-6fe2-441c-8c8c-71466251a162
1 file changed
tree: d6c0246ef556bfa38a5165d4a6880d86c84e84ac
  1. audio/
  2. bsd-user/
  3. darwin-user/
  4. fpu/
  5. gdb-xml/
  6. hw/
  7. keymaps/
  8. linux-user/
  9. pc-bios/
  10. slirp/
  11. target-alpha/
  12. target-arm/
  13. target-cris/
  14. target-i386/
  15. target-m68k/
  16. target-mips/
  17. target-ppc/
  18. target-sh4/
  19. target-sparc/
  20. tcg/
  21. tests/
  22. .gitignore
  23. a.out.h
  24. aes.c
  25. aes.h
  26. aio.c
  27. alpha-dis.c
  28. alpha.ld
  29. arm-dis.c
  30. arm-semi.c
  31. arm.ld
  32. block-bochs.c
  33. block-cloop.c
  34. block-cow.c
  35. block-dmg.c
  36. block-nbd.c
  37. block-parallels.c
  38. block-qcow.c
  39. block-qcow2.c
  40. block-raw-posix.c
  41. block-raw-win32.c
  42. block-vmdk.c
  43. block-vpc.c
  44. block-vvfat.c
  45. block.c
  46. block.h
  47. block_int.h
  48. bswap.h
  49. bt-host.c
  50. bt-vhci.c
  51. buffered_file.c
  52. buffered_file.h
  53. Changelog
  54. check_ops.sh
  55. cocoa.m
  56. configure
  57. console.c
  58. console.h
  59. COPYING
  60. COPYING.LIB
  61. cpu-all.h
  62. cpu-defs.h
  63. cpu-exec.c
  64. cris-dis.c
  65. curses.c
  66. curses_keys.h
  67. cutils.c
  68. d3des.c
  69. d3des.h
  70. dis-asm.h
  71. disas.c
  72. disas.h
  73. dyngen-exec.h
  74. dyngen.c
  75. elf.h
  76. elf_ops.h
  77. exec-all.h
  78. exec.c
  79. feature_to_c.sh
  80. gdbstub.c
  81. gdbstub.h
  82. gen-icount.h
  83. host-utils.c
  84. host-utils.h
  85. hostregs_helper.h
  86. hpet.h
  87. hppa-dis.c
  88. hppa.ld
  89. i386-dis.c
  90. i386.ld
  91. ia64.ld
  92. keymaps.c
  93. kqemu.c
  94. kqemu.h
  95. kvm-all.c
  96. kvm.h
  97. LICENSE
  98. loader.c
  99. m68k-dis.c
  100. m68k-semi.c
  101. m68k.ld
  102. MAINTAINERS
  103. Makefile
  104. Makefile.target
  105. migration-tcp.c
  106. migration.c
  107. migration.h
  108. mips-dis.c
  109. mips.ld
  110. mipsel.ld
  111. monitor.c
  112. nbd.c
  113. nbd.h
  114. net-checksum.c
  115. net.c
  116. net.h
  117. osdep.c
  118. osdep.h
  119. ppc-dis.c
  120. ppc.ld
  121. ppc64.ld
  122. qemu-aio.h
  123. qemu-binfmt-conf.sh
  124. qemu-char.c
  125. qemu-char.h
  126. qemu-common.h
  127. qemu-doc.texi
  128. qemu-img.c
  129. qemu-img.texi
  130. qemu-lock.h
  131. qemu-log.h
  132. qemu-malloc.c
  133. qemu-nbd.c
  134. qemu-nbd.texi
  135. qemu-tech.texi
  136. qemu-timer.h
  137. qemu-tool.c
  138. qemu_socket.h
  139. readline.c
  140. README
  141. s390-dis.c
  142. s390.ld
  143. sdl.c
  144. sdl_keysym.h
  145. sh4-dis.c
  146. softmmu-semi.h
  147. softmmu_defs.h
  148. softmmu_exec.h
  149. softmmu_header.h
  150. softmmu_template.h
  151. sparc-dis.c
  152. sparc.ld
  153. sparc64.ld
  154. sys-queue.h
  155. sysemu.h
  156. tap-win32.c
  157. texi2pod.pl
  158. thunk.c
  159. thunk.h
  160. TODO
  161. translate-all.c
  162. uboot_image.h
  163. usb-linux.c
  164. VERSION
  165. vgafont.h
  166. vl.c
  167. vnc.c
  168. vnc_keysym.h
  169. vnchextile.h
  170. x86_64.ld
  171. x_keymap.c