Mercurial > repos > blastem
comparison gdb_remote.c @ 2133:8554751f17b5
Remove use of get_native_pointer in 68K instruction decoding in preparation for word RAM interleaving
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 17 Mar 2022 22:41:42 -0700 |
parents | f80c6111e1ae |
children | 3350b3c8faa8 |
comparison
equal
deleted
inserted
replaced
2132:7451f970ee66 | 2133:8554751f17b5 |
---|---|
184 //TODO: implement resuming at an arbitrary address | 184 //TODO: implement resuming at an arbitrary address |
185 goto not_impl; | 185 goto not_impl; |
186 } | 186 } |
187 m68kinst inst; | 187 m68kinst inst; |
188 genesis_context *gen = context->system; | 188 genesis_context *gen = context->system; |
189 uint16_t * pc_ptr = get_native_pointer(pc, (void **)context->mem_pointers, &context->options->gen); | 189 uint32_t after = m68k_decode(m68k_instruction_fetch, context, &inst, pc & 0xFFFFFF); |
190 if (!pc_ptr) { | |
191 fatal_error("Entered gdb remote debugger stub at address %X\n", pc); | |
192 } | |
193 uint16_t * after_pc = m68k_decode(pc_ptr, &inst, pc & 0xFFFFFF); | |
194 uint32_t after = pc + (after_pc-pc_ptr)*2; | |
195 | 190 |
196 if (inst.op == M68K_RTS) { | 191 if (inst.op == M68K_RTS) { |
197 after = (read_dma_value(context->aregs[7]/2) << 16) | read_dma_value(context->aregs[7]/2 + 1); | 192 after = (read_dma_value(context->aregs[7]/2) << 16) | read_dma_value(context->aregs[7]/2 + 1); |
198 } else if (inst.op == M68K_RTE || inst.op == M68K_RTR) { | 193 } else if (inst.op == M68K_RTE || inst.op == M68K_RTR) { |
199 after = (read_dma_value((context->aregs[7]+2)/2) << 16) | read_dma_value((context->aregs[7]+2)/2 + 1); | 194 after = (read_dma_value((context->aregs[7]+2)/2) << 16) | read_dma_value((context->aregs[7]+2)/2 + 1); |
412 break; | 407 break; |
413 case 's': | 408 case 's': |
414 case 'S': { | 409 case 'S': { |
415 m68kinst inst; | 410 m68kinst inst; |
416 genesis_context *gen = context->system; | 411 genesis_context *gen = context->system; |
417 uint16_t * pc_ptr = get_native_pointer(pc, (void **)context->mem_pointers, &context->options->gen); | 412 uint32_t after = m68k_decode(m68k_instruction_fetch, context, &inst, pc & 0xFFFFFF); |
418 if (!pc_ptr) { | |
419 fatal_error("Entered gdb remote debugger stub at address %X\n", pc); | |
420 } | |
421 uint16_t * after_pc = m68k_decode(pc_ptr, &inst, pc & 0xFFFFFF); | |
422 uint32_t after = pc + (after_pc-pc_ptr)*2; | |
423 | 413 |
424 if (inst.op == M68K_RTS) { | 414 if (inst.op == M68K_RTS) { |
425 after = (read_dma_value(context->aregs[7]/2) << 16) | read_dma_value(context->aregs[7]/2 + 1); | 415 after = (read_dma_value(context->aregs[7]/2) << 16) | read_dma_value(context->aregs[7]/2 + 1); |
426 } else if (inst.op == M68K_RTE || inst.op == M68K_RTR) { | 416 } else if (inst.op == M68K_RTE || inst.op == M68K_RTR) { |
427 after = (read_dma_value((context->aregs[7]+2)/2) << 16) | read_dma_value((context->aregs[7]+2)/2 + 1); | 417 after = (read_dma_value((context->aregs[7]+2)/2) << 16) | read_dma_value((context->aregs[7]+2)/2 + 1); |