comparison m68k_to_x86.c @ 121:f848aad2abef

Fix logic for switching between USP and SSP
author Mike Pavone <pavone@retrodev.com>
date Sat, 29 Dec 2012 12:52:19 -0800
parents ee19ddadb398
children 0a6da6c7c463
comparison
equal deleted inserted replaced
120:3648abc45aec 121:f848aad2abef
2354 dst = add_ir(dst, 2, opts->aregs[7], SZ_D); 2354 dst = add_ir(dst, 2, opts->aregs[7], SZ_D);
2355 dst = call(dst, (uint8_t *)set_sr); 2355 dst = call(dst, (uint8_t *)set_sr);
2356 dst = pop_r(dst, SCRATCH1); 2356 dst = pop_r(dst, SCRATCH1);
2357 dst = bt_irdisp8(dst, 5, CONTEXT, offsetof(m68k_context, status), SZ_B); 2357 dst = bt_irdisp8(dst, 5, CONTEXT, offsetof(m68k_context, status), SZ_B);
2358 end_off = dst+1; 2358 end_off = dst+1;
2359 dst = jcc(dst, CC_NC, dst+2); 2359 dst = jcc(dst, CC_C, dst+2);
2360 dst = mov_rr(dst, opts->aregs[7], SCRATCH2, SZ_D); 2360 dst = mov_rr(dst, opts->aregs[7], SCRATCH2, SZ_D);
2361 dst = mov_rdisp8r(dst, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t) * 8, opts->aregs[7], SZ_D); 2361 dst = mov_rdisp8r(dst, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t) * 8, opts->aregs[7], SZ_D);
2362 dst = mov_rrdisp8(dst, SCRATCH2, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t) * 8, SZ_D); 2362 dst = mov_rrdisp8(dst, SCRATCH2, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t) * 8, SZ_D);
2363 *end_off = dst - (end_off+1); 2363 *end_off = dst - (end_off+1);
2364 dst = call(dst, (uint8_t *)m68k_native_addr_and_sync); 2364 dst = call(dst, (uint8_t *)m68k_native_addr_and_sync);