Work around QEMU GDB stub suboptimality

The current XML files claim, on floating point-supporting Power chips,
that $f0 is register 70.  This would be fine, except that register 70
for non-XML-aware GDB is FPSCR.  More importantly, 70 is less than
NUM_CORE_REGS (71) for Power, so a request for register 70 goes to the
"core" register reading routines, rather than the floating-point
register read routine we registered with gdb_register_coprocessor.

Therefore, when we are talking to an XML-aware GDB, we claim that
register has zero width, which causes the rest of QEMU's GDB stub to
send an error back to GDB, which causes GDB to be unable to read the
floating-point registers.  (The problem is also present for SPE
registers and occurs in a slightly different way for Altivec registers.)

The best way to fix this is to have the "core register" XML files for
PPC32 and PPC64 claim that there is a 4-byte register 70, which causes
$f0 to be register 71, and everything works just fine from that point
forward.

Signed-off-by: Nathan Froyd <froydnj@codesourcery.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6770 c046a42c-6fe2-441c-8c8c-71466251a162
2 files changed
tree: 885cbe01dc6c7682240a9a096ac8dad6b233d2d1
  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. acl.c
  25. acl.h
  26. aes.c
  27. aes.h
  28. aio.c
  29. alpha-dis.c
  30. alpha.ld
  31. arm-dis.c
  32. arm-semi.c
  33. arm.ld
  34. balloon.h
  35. block-bochs.c
  36. block-cloop.c
  37. block-cow.c
  38. block-dmg.c
  39. block-nbd.c
  40. block-parallels.c
  41. block-qcow.c
  42. block-qcow2.c
  43. block-raw-posix.c
  44. block-raw-win32.c
  45. block-vmdk.c
  46. block-vpc.c
  47. block-vvfat.c
  48. block.c
  49. block.h
  50. block_int.h
  51. bswap.h
  52. bt-host.c
  53. bt-vhci.c
  54. buffered_file.c
  55. buffered_file.h
  56. cache-utils.c
  57. cache-utils.h
  58. Changelog
  59. cocoa.m
  60. configure
  61. console.c
  62. console.h
  63. COPYING
  64. COPYING.LIB
  65. cpu-all.h
  66. cpu-defs.h
  67. cpu-exec.c
  68. cris-dis.c
  69. curses.c
  70. curses_keys.h
  71. cutils.c
  72. d3des.c
  73. d3des.h
  74. def-helper.h
  75. device_tree.c
  76. device_tree.h
  77. dis-asm.h
  78. disas.c
  79. disas.h
  80. dma-helpers.c
  81. dma.h
  82. dyngen-exec.h
  83. elf.h
  84. elf_ops.h
  85. exec-all.h
  86. exec.c
  87. feature_to_c.sh
  88. gdbstub.c
  89. gdbstub.h
  90. gen-icount.h
  91. host-utils.c
  92. host-utils.h
  93. hostregs_helper.h
  94. hpet.h
  95. hppa-dis.c
  96. hppa.ld
  97. i386-dis.c
  98. i386.ld
  99. ia64.ld
  100. keymaps.c
  101. keymaps.h
  102. kqemu.c
  103. kqemu.h
  104. kvm-all.c
  105. kvm.h
  106. libfdt_env.h
  107. LICENSE
  108. loader.c
  109. m68k-dis.c
  110. m68k-semi.c
  111. m68k.ld
  112. MAINTAINERS
  113. Makefile
  114. Makefile.target
  115. migration-exec.c
  116. migration-tcp.c
  117. migration.c
  118. migration.h
  119. mips-dis.c
  120. mips.ld
  121. mipsel.ld
  122. monitor.c
  123. monitor.h
  124. nbd.c
  125. nbd.h
  126. net-checksum.c
  127. net.c
  128. net.h
  129. osdep.c
  130. osdep.h
  131. pci-ids.txt
  132. posix-aio-compat.c
  133. posix-aio-compat.h
  134. ppc-dis.c
  135. ppc.ld
  136. ppc64.ld
  137. qemu-aio.h
  138. qemu-binfmt-conf.sh
  139. qemu-char.c
  140. qemu-char.h
  141. qemu-common.h
  142. qemu-doc.texi
  143. qemu-img.c
  144. qemu-img.texi
  145. qemu-lock.h
  146. qemu-log.h
  147. qemu-malloc.c
  148. qemu-nbd.c
  149. qemu-nbd.texi
  150. qemu-sockets.c
  151. qemu-tech.texi
  152. qemu-timer.h
  153. qemu-tool.c
  154. qemu.sasl
  155. qemu_socket.h
  156. readline.c
  157. readline.h
  158. README
  159. rules.mak
  160. s390-dis.c
  161. s390.ld
  162. savevm.c
  163. sdl.c
  164. sdl_keysym.h
  165. sh4-dis.c
  166. softmmu-semi.h
  167. softmmu_defs.h
  168. softmmu_exec.h
  169. softmmu_header.h
  170. softmmu_template.h
  171. sparc-dis.c
  172. sparc.ld
  173. sparc64.ld
  174. sys-queue.h
  175. sysemu.h
  176. tap-win32.c
  177. texi2pod.pl
  178. thunk.c
  179. thunk.h
  180. TODO
  181. translate-all.c
  182. uboot_image.h
  183. usb-bsd.c
  184. usb-linux.c
  185. usb-stub.c
  186. VERSION
  187. vgafont.h
  188. vl.c
  189. vnc-auth-sasl.c
  190. vnc-auth-sasl.h
  191. vnc-auth-vencrypt.c
  192. vnc-auth-vencrypt.h
  193. vnc-tls.c
  194. vnc-tls.h
  195. vnc.c
  196. vnc.h
  197. vnc_keysym.h
  198. vnchextile.h
  199. x86_64.ld
  200. x_keymap.c
  201. x_keymap.h