Mercurial > repos > blastem
comparison romdb.c @ 2159:2ed402b4c1fb
Merge
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 24 May 2022 09:11:12 -0700 |
parents | da7890445962 2b7847bed4bb |
children | 6a954675d634 |
comparison
equal
deleted
inserted
replaced
2158:bdd83b47d78a | 2159:2ed402b4c1fb |
---|---|
774 map->mask = 0xFFFFFF; | 774 map->mask = 0xFFFFFF; |
775 } else if (!strcmp(dtype, "SRAM")) { | 775 } else if (!strcmp(dtype, "SRAM")) { |
776 process_sram_def(key, state); | 776 process_sram_def(key, state); |
777 map->buffer = state->info->save_buffer + offset; | 777 map->buffer = state->info->save_buffer + offset; |
778 map->flags = MMAP_READ | MMAP_WRITE; | 778 map->flags = MMAP_READ | MMAP_WRITE; |
779 uint32_t save_size_mask = state->info->save_size; | |
779 if (state->info->save_type == RAM_FLAG_ODD) { | 780 if (state->info->save_type == RAM_FLAG_ODD) { |
780 map->flags |= MMAP_ONLY_ODD; | 781 map->flags |= MMAP_ONLY_ODD; |
782 save_size_mask *= 2; | |
781 } else if(state->info->save_type == RAM_FLAG_EVEN) { | 783 } else if(state->info->save_type == RAM_FLAG_EVEN) { |
782 map->flags |= MMAP_ONLY_EVEN; | 784 map->flags |= MMAP_ONLY_EVEN; |
785 save_size_mask *= 2; | |
783 } else { | 786 } else { |
784 map->flags |= MMAP_CODE; | 787 map->flags |= MMAP_CODE; |
785 } | 788 } |
786 map->mask = calc_mask(state->info->save_size, start, end); | 789 map->mask = calc_mask(save_size_mask, start, end); |
787 } else if (!strcmp(dtype, "RAM")) { | 790 } else if (!strcmp(dtype, "RAM")) { |
788 uint32_t size = strtol(tern_find_ptr_default(node, "size", "0"), NULL, 16); | 791 uint32_t size = strtol(tern_find_ptr_default(node, "size", "0"), NULL, 16); |
789 if (!size || size > map->end - map->start) { | 792 if (!size || size > map->end - map->start) { |
790 size = map->end - map->start; | 793 size = map->end - map->start; |
791 } | 794 } |
792 map->buffer = calloc(size, 1); | 795 map->buffer = calloc(size, 1); |
793 map->mask = calc_mask(size, start, end); | |
794 map->flags = MMAP_READ | MMAP_WRITE; | 796 map->flags = MMAP_READ | MMAP_WRITE; |
795 char *bus = tern_find_ptr_default(node, "bus", "both"); | 797 char *bus = tern_find_ptr_default(node, "bus", "both"); |
796 if (!strcmp(bus, "odd")) { | 798 if (!strcmp(bus, "odd")) { |
797 map->flags |= MMAP_ONLY_ODD; | 799 map->flags |= MMAP_ONLY_ODD; |
800 size *= 2; | |
798 } else if (!strcmp(bus, "even")) { | 801 } else if (!strcmp(bus, "even")) { |
799 map->flags |= MMAP_ONLY_EVEN; | 802 map->flags |= MMAP_ONLY_EVEN; |
803 size *= 2; | |
800 } else { | 804 } else { |
801 map->flags |= MMAP_CODE; | 805 map->flags |= MMAP_CODE; |
802 } | 806 } |
807 map->mask = calc_mask(size, start, end); | |
803 } else if (!strcmp(dtype, "NOR")) { | 808 } else if (!strcmp(dtype, "NOR")) { |
804 process_nor_def(key, state); | 809 process_nor_def(key, state); |
805 | 810 |
806 map->write_16 = nor_flash_write_w; | 811 map->write_16 = nor_flash_write_w; |
807 map->write_8 = nor_flash_write_b; | 812 map->write_8 = nor_flash_write_b; |