Mercurial > repos > blastem
comparison m68k_core_x86.c @ 690:fc04781f4d28
Removed hardcoded assumptions in M68K core about which parts of the memory map are RAM
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 14 Jan 2015 09:38:54 -0800 |
parents | 858e31f977ae |
children | 0a86e81fa87d |
comparison
equal
deleted
inserted
replaced
689:858e31f977ae | 690:fc04781f4d28 |
---|---|
2200 | 2200 |
2201 | 2201 |
2202 opts->gen.native_code_map = malloc(sizeof(native_map_slot) * NATIVE_MAP_CHUNKS); | 2202 opts->gen.native_code_map = malloc(sizeof(native_map_slot) * NATIVE_MAP_CHUNKS); |
2203 memset(opts->gen.native_code_map, 0, sizeof(native_map_slot) * NATIVE_MAP_CHUNKS); | 2203 memset(opts->gen.native_code_map, 0, sizeof(native_map_slot) * NATIVE_MAP_CHUNKS); |
2204 opts->gen.deferred = NULL; | 2204 opts->gen.deferred = NULL; |
2205 opts->gen.ram_inst_sizes = malloc(sizeof(uint8_t *) * 64); | 2205 |
2206 memset(opts->gen.ram_inst_sizes, 0, sizeof(uint8_t *) * 64); | 2206 uint32_t inst_size_size = sizeof(uint8_t *) * ram_size(&opts->gen) / 1024; |
2207 opts->gen.ram_inst_sizes = malloc(inst_size_size); | |
2208 memset(opts->gen.ram_inst_sizes, 0, inst_size_size); | |
2207 | 2209 |
2208 code_info *code = &opts->gen.code; | 2210 code_info *code = &opts->gen.code; |
2209 init_code_info(code); | 2211 init_code_info(code); |
2210 | 2212 |
2211 opts->gen.save_context = code->cur; | 2213 opts->gen.save_context = code->cur; |
2225 mov_rrdisp(code, opts->gen.cycles, opts->gen.context_reg, offsetof(m68k_context, current_cycle), SZ_D); | 2227 mov_rrdisp(code, opts->gen.cycles, opts->gen.context_reg, offsetof(m68k_context, current_cycle), SZ_D); |
2226 retn(code); | 2228 retn(code); |
2227 | 2229 |
2228 opts->gen.load_context = code->cur; | 2230 opts->gen.load_context = code->cur; |
2229 for (int i = 0; i < 5; i++) | 2231 for (int i = 0; i < 5; i++) |
2232 { | |
2230 if (opts->flag_regs[i] >= 0) { | 2233 if (opts->flag_regs[i] >= 0) { |
2231 mov_rdispr(code, opts->gen.context_reg, offsetof(m68k_context, flags) + i, opts->flag_regs[i], SZ_B); | 2234 mov_rdispr(code, opts->gen.context_reg, offsetof(m68k_context, flags) + i, opts->flag_regs[i], SZ_B); |
2232 } | 2235 } |
2236 } | |
2233 for (int i = 0; i < 8; i++) | 2237 for (int i = 0; i < 8; i++) |
2234 { | 2238 { |
2235 if (opts->dregs[i] >= 0) { | 2239 if (opts->dregs[i] >= 0) { |
2236 mov_rdispr(code, opts->gen.context_reg, offsetof(m68k_context, dregs) + sizeof(uint32_t) * i, opts->dregs[i], SZ_D); | 2240 mov_rdispr(code, opts->gen.context_reg, offsetof(m68k_context, dregs) + sizeof(uint32_t) * i, opts->dregs[i], SZ_D); |
2237 } | 2241 } |