comparison runtime.S @ 145:15b8dce19cf4

Implement m68k_modified_ret_addr
author Mike Pavone <pavone@retrodev.com>
date Mon, 31 Dec 2012 19:17:01 -0800
parents aa3e1bb338c9
children 139e5dcd6aa3
comparison
equal deleted inserted replaced
144:177ba1a5af9c 145:15b8dce19cf4
408 /* deal with byte swapping */ 408 /* deal with byte swapping */
409 xor $1, %ecx 409 xor $1, %ecx
410 mov (%r8, %rcx), %cl 410 mov (%r8, %rcx), %cl
411 ret 411 ret
412 412
413 ret_addr_msg:
414 .asciz "Program modified return address on stack: found %X, expected %X\n"
415
416 .global m68k_modified_ret_addr 413 .global m68k_modified_ret_addr
417 m68k_modified_ret_addr: 414 m68k_modified_ret_addr:
418 lea ret_addr_msg(%rip), %rdi 415 add $16, %rsp
419 mov %rcx, %rsi 416 call m68k_native_addr
420 mov 8(%rsp), %rdx 417 jmp *%rcx
421 xor %rax, %rax
422 call printf
423 mov $1, %rdi
424 call exit
425 418
426 dyn_addr_msg: 419 dyn_addr_msg:
427 .asciz "Program needs dynamically calculated native address\n" 420 .asciz "Program needs dynamically calculated native address\n"
428 421
429 .global m68k_native_addr_and_sync 422 .global m68k_native_addr_and_sync