[MIPS] Speed up software refill handler

Emulating each instruction of the software refill handler
has a significant impact on the overall performance of QEMU because
of the overhead of emulating the various CP0 instructions to accurately
reflect the machine state. Running the software TLB handler takes
the equivalent of 1000's of machine cycles.

This patch implements a pseudo hardware TLB refill handler
that significantly reduces the impact of refilling the TLB
to bring it more inline with what would be observed on a real target.

Signed-off-by: Steven Hill <sjhill@mips.com>
Signed-off-by: Chris Dearman <chris@mips.com>
Signed-off-by: Yajin <yajin@mips.com.cn>
5 files changed
tree: 2bf906056a890d5ec97faf2a1f53db1083a0be12
  1. android/
  2. audio/
  3. block/
  4. distrib/
  5. docs/
  6. elff/
  7. fpu/
  8. gdb-xml/
  9. hw/
  10. images/
  11. memcheck/
  12. pc-bios/
  13. proxy/
  14. slirp/
  15. slirp-android/
  16. target-arm/
  17. target-i386/
  18. target-mips/
  19. tcg/
  20. telephony/
  21. .gitignore
  22. a.out.h
  23. acl.c
  24. acl.h
  25. aes.c
  26. aes.h
  27. aio-android.c
  28. aio.c
  29. alpha.ld
  30. android-configure.sh
  31. android-rebuild.sh
  32. android-trace.h
  33. android-trace_common.h
  34. Android.mk
  35. arch_init.c
  36. arch_init.h
  37. arm-dis.c
  38. arm-semi.c
  39. arm.ld
  40. async.c
  41. balloon.h
  42. block.c
  43. block.h
  44. block_int.h
  45. blockdev.c
  46. blockdev.h
  47. bswap.h
  48. bt-host.c
  49. bt-host.h
  50. bt-vhci.c
  51. buffered_file.c
  52. buffered_file.h
  53. cache-utils.c
  54. cache-utils.h
  55. cbuffer.c
  56. cbuffer.h
  57. Changelog
  58. CHANGES.TXT
  59. charpipe.c
  60. charpipe.h
  61. CleanSpec.mk
  62. compatfd.c
  63. compatfd.h
  64. console.c
  65. console.h
  66. COPYING
  67. COPYING.LIB
  68. cpu-all.h
  69. cpu-common.h
  70. cpu-defs.h
  71. cpu-exec.c
  72. cpus.c
  73. cpus.h
  74. curses.c
  75. curses_keys.h
  76. cutils.c
  77. d3des.c
  78. d3des.h
  79. def-helper.h
  80. device_tree.c
  81. device_tree.h
  82. dis-asm.h
  83. disas.c
  84. disas.h
  85. dma-helpers.c
  86. dma.h
  87. dyngen-exec.h
  88. dynlink-static.c
  89. dynlink.h
  90. elf.h
  91. elf_ops.h
  92. envlist.c
  93. envlist.h
  94. exec-all.h
  95. exec.c
  96. feature_to_c.sh
  97. gdbstub.c
  98. gdbstub.h
  99. gen-charmap.py
  100. gen-icount.h
  101. gen-skin.py
  102. hax.h
  103. host-defs.h
  104. host-utils.c
  105. host-utils.h
  106. hostregs_helper.h
  107. hpet.h
  108. hxtool
  109. i386-dis.c
  110. i386-vl.ld
  111. i386.ld
  112. ia64.ld
  113. input.c
  114. INSTALL
  115. iohandler.c
  116. iolooper-select.c
  117. iolooper.h
  118. ioport-user.c
  119. ioport.c
  120. ioport.h
  121. json-lexer.c
  122. json-lexer.h
  123. json-parser.c
  124. json-parser.h
  125. json-streamer.c
  126. json-streamer.h
  127. keymaps.c
  128. keymaps.h
  129. kqemu.c
  130. kqemu.h
  131. kvm-all.c
  132. kvm-android.c
  133. kvm-android.h
  134. kvm.h
  135. LICENSE
  136. linux_keycodes.h
  137. loader.c
  138. loadpng.c
  139. m68k.ld
  140. Makefile
  141. Makefile.android
  142. Makefile.common
  143. Makefile.target
  144. migration-dummy-android.c
  145. migration-exec.c
  146. migration-tcp-android.c
  147. migration-tcp.c
  148. migration.c
  149. migration.h
  150. mips-dis.c
  151. module.c
  152. module.h
  153. MODULE_LICENSE_GPL
  154. monitor-android.h
  155. monitor.c
  156. monitor.h
  157. net-android.c
  158. net-checksum.c
  159. net.c
  160. net.h
  161. NOTICE
  162. notify.c
  163. notify.h
  164. offset_layout.py
  165. os-posix.c
  166. os-win32.c
  167. osdep.c
  168. osdep.h
  169. oslib-posix.c
  170. oslib-win32.c
  171. path.c
  172. poison.h
  173. posix-aio-compat.c
  174. ppc-dis.c
  175. ppc.ld
  176. qbool.c
  177. qbool.h
  178. qdict.c
  179. qdict.h
  180. qemu-aio.h
  181. qemu-barrier.h
  182. qemu-char.c
  183. qemu-char.h
  184. qemu-common.h
  185. qemu-config.c
  186. qemu-config.h
  187. qemu-error.c
  188. qemu-error.h
  189. qemu-io.c
  190. qemu-lock.h
  191. qemu-log.h
  192. qemu-malloc.c
  193. qemu-monitor.hx
  194. qemu-objects.h
  195. qemu-option.c
  196. qemu-option.h
  197. qemu-options.h
  198. qemu-options.hx
  199. qemu-os-posix.h
  200. qemu-os-win32.h
  201. qemu-queue.h
  202. qemu-sockets-android.c
  203. qemu-sockets.c
  204. qemu-thread.c
  205. qemu-thread.h
  206. qemu-timer-common.c
  207. qemu-timer.c
  208. qemu-timer.h
  209. qemu_debug.h
  210. qemu_file.h
  211. qemu_socket.h
  212. qemu_timers.h
  213. qerror.c
  214. qerror.h
  215. qfloat.c
  216. qfloat.h
  217. qint.c
  218. qint.h
  219. qjson.c
  220. qjson.h
  221. qlist.c
  222. qlist.h
  223. qobject.h
  224. qstring.c
  225. qstring.h
  226. readline.c
  227. readline.h
  228. README
  229. savevm.c
  230. sdl_keysym.h
  231. shaper.c
  232. shaper.h
  233. sockets.c
  234. sockets.h
  235. softmmu-semi.h
  236. softmmu_defs.h
  237. softmmu_exec.h
  238. softmmu_header.h
  239. softmmu_outside_jit.c
  240. softmmu_outside_jit.h
  241. softmmu_template.h
  242. sparc.ld
  243. sys-tree.h
  244. sysemu.h
  245. tap-win32.c
  246. targphys.h
  247. tcpdump.c
  248. tcpdump.h
  249. thunk.c
  250. thunk.h
  251. trace.c
  252. trace.h
  253. trace_common.h
  254. translate-all.c
  255. translate-op.c
  256. translate.make
  257. uboot_image.h
  258. usb-dummy-android.c
  259. usb-linux.c
  260. user-events-qemu.c
  261. user-events.h
  262. varint.c
  263. varint.h
  264. vgafont.h
  265. vl-android-ui.c
  266. vl-android.c
  267. vl.c
  268. vnc-android.c
  269. vnc-tls.h
  270. vnc.c
  271. vnc.h
  272. vnc_keysym.h
  273. vnchextile.h
  274. x86_64.ld