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;