qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

Merge remote-tracking branch 'remotes/vivier/tags/m68k-for-2.12-pull-request' into staging

# gpg: Signature made Sun 15 Apr 2018 10:45:59 BST
# gpg: using RSA key F30C38BD3F2FBE3C
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>"
# gpg: aka "Laurent Vivier <laurent@vivier.eu>"
# gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>"
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C

* remotes/vivier/tags/m68k-for-2.12-pull-request:
m68k: fix exception stack frame for 68000

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

+18 -15
+18 -15
target/m68k/op_helper.c
··· 287 287 uint16_t format, uint16_t sr, 288 288 uint32_t addr, uint32_t retaddr) 289 289 { 290 - CPUState *cs = CPU(m68k_env_get_cpu(env)); 291 - switch (format) { 292 - case 4: 293 - *sp -= 4; 294 - cpu_stl_kernel(env, *sp, env->pc); 295 - *sp -= 4; 296 - cpu_stl_kernel(env, *sp, addr); 297 - break; 298 - case 3: 299 - case 2: 300 - *sp -= 4; 301 - cpu_stl_kernel(env, *sp, addr); 302 - break; 290 + if (m68k_feature(env, M68K_FEATURE_QUAD_MULDIV)) { 291 + /* all except 68000 */ 292 + CPUState *cs = CPU(m68k_env_get_cpu(env)); 293 + switch (format) { 294 + case 4: 295 + *sp -= 4; 296 + cpu_stl_kernel(env, *sp, env->pc); 297 + *sp -= 4; 298 + cpu_stl_kernel(env, *sp, addr); 299 + break; 300 + case 3: 301 + case 2: 302 + *sp -= 4; 303 + cpu_stl_kernel(env, *sp, addr); 304 + break; 305 + } 306 + *sp -= 2; 307 + cpu_stw_kernel(env, *sp, (format << 12) + (cs->exception_index << 2)); 303 308 } 304 - *sp -= 2; 305 - cpu_stw_kernel(env, *sp, (format << 12) + (cs->exception_index << 2)); 306 309 *sp -= 4; 307 310 cpu_stl_kernel(env, *sp, retaddr); 308 311 *sp -= 2;