From: beeanyew Date: Sat, 22 May 2021 02:28:36 +0000 (+0200) Subject: Minor cleanup X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=f76580474731e9a4f3d2ec2b61bb7072053e8aa6;p=pistorm Minor cleanup Make PiSCSI always print to console if no handler is found for the file system, since this can cause a reboot loop. Move PiStorm device SWREV out of debug output define check. Silence loadseg debug message. --- diff --git a/a314/a314.cc b/a314/a314.cc index 555396f..38f312a 100644 --- a/a314/a314.cc +++ b/a314/a314.cc @@ -442,7 +442,6 @@ static void handle_msg_write_mem_req(ClientConnection *cc) uint32_t address = *(uint32_t *)&(cc->payload[0]); uint32_t length = cc->payload.size() - 4; - if (get_mapped_item_by_address(cfg, address) != -1) { int32_t index = get_mapped_item_by_address(cfg, address); uint8_t *map = &cfg->map_data[index][address - cfg->map_offset[index]]; diff --git a/config_file/config_file.c b/config_file/config_file.c index a482041..526efd6 100644 --- a/config_file/config_file.c +++ b/config_file/config_file.c @@ -544,3 +544,19 @@ int get_mapped_item_by_address(struct emulator_config *cfg, uint32_t address) { return -1; } + +uint8_t *get_mapped_data_pointer_by_address(struct emulator_config *cfg, uint32_t address) { + for (int i = 0; i < MAX_NUM_MAPPED_ITEMS; i++) { + if (cfg->map_type[i] == MAPTYPE_NONE || !cfg->map_data[i]) + continue; + if (address >= cfg->map_offset[i] && address < cfg->map_high[i]) { + if (cfg->map_type[i] == MAPTYPE_RAM || cfg->map_type[i] == MAPTYPE_RAM_NOALLOC) { + return cfg->map_data[i] + (address - cfg->map_offset[i]); + } else { + return NULL; + } + } + } + + return NULL; +} diff --git a/config_file/config_file.h b/config_file/config_file.h index 889b0ac..841f802 100644 --- a/config_file/config_file.h +++ b/config_file/config_file.h @@ -107,6 +107,7 @@ int handle_mapped_read(struct emulator_config *cfg, unsigned int addr, unsigned int handle_mapped_write(struct emulator_config *cfg, unsigned int addr, unsigned int value, unsigned char type); int get_named_mapped_item(struct emulator_config *cfg, char *name); int get_mapped_item_by_address(struct emulator_config *cfg, uint32_t address); +uint8_t *get_mapped_data_pointer_by_address(struct emulator_config *cfg, uint32_t address); void add_mapping(struct emulator_config *cfg, unsigned int type, unsigned int addr, unsigned int size, int mirr_addr, char *filename, char *map_id, unsigned int autodump); unsigned int get_int(char *str); #endif diff --git a/platforms/amiga/piscsi/piscsi.c b/platforms/amiga/piscsi/piscsi.c index 364196f..fd05bd9 100644 --- a/platforms/amiga/piscsi/piscsi.c +++ b/platforms/amiga/piscsi/piscsi.c @@ -288,7 +288,6 @@ void piscsi_find_filesystems(struct piscsi_dev *d) { } } - printf ("Loadseg begins.\n"); if (load_lseg(d->fd, &filesystems[piscsi_num_fs].binary_data, &filesystems[piscsi_num_fs].h_info, filesystems[piscsi_num_fs].relocs, d->block_size) != -1) { filesystems[piscsi_num_fs].FS_ID = fhb->fhb_DosType; filesystems[piscsi_num_fs].fhb = fhb; @@ -552,6 +551,7 @@ void piscsi_debugme(uint32_t index) { void handle_piscsi_write(uint32_t addr, uint32_t val, uint8_t type) { int32_t r; + uint8_t *map; #ifndef PISCSI_DEBUG if (type) {} #endif @@ -589,10 +589,10 @@ void handle_piscsi_write(uint32_t addr, uint32_t val, uint8_t type) { lseek64(d->fd, src, SEEK_SET); } - r = get_mapped_item_by_address(cfg, piscsi_u32[2]); - if (r != -1 && cfg->map_type[r] == MAPTYPE_RAM) { + map = get_mapped_data_pointer_by_address(cfg, piscsi_u32[2]); + if (map) { DEBUG_TRIVIAL("[PISCSI-%d] \"DMA\" Read goes to mapped range %d.\n", val, r); - read(d->fd, cfg->map_data[r] + piscsi_u32[2] - cfg->map_offset[r], piscsi_u32[1]); + read(d->fd, map, piscsi_u32[1]); } else { DEBUG_TRIVIAL("[PISCSI-%d] No mapped range found for read.\n", val); @@ -631,10 +631,10 @@ void handle_piscsi_write(uint32_t addr, uint32_t val, uint8_t type) { lseek64(d->fd, src, SEEK_SET); } - r = get_mapped_item_by_address(cfg, piscsi_u32[2]); - if (r != -1) { + map = get_mapped_data_pointer_by_address(cfg, piscsi_u32[2]); + if (map) { DEBUG_TRIVIAL("[PISCSI-%d] \"DMA\" Write comes from mapped range %d.\n", val, r); - write(d->fd, cfg->map_data[r] + piscsi_u32[2] - cfg->map_offset[r], piscsi_u32[1]); + write(d->fd, map, piscsi_u32[1]); } else { DEBUG_TRIVIAL("[PISCSI-%d] No mapped range found for write.\n", val); @@ -670,9 +670,9 @@ void handle_piscsi_write(uint32_t addr, uint32_t val, uint8_t type) { case PISCSI_CMD_DEBUGME: piscsi_debugme(val); break; - case PISCSI_CMD_DRIVER: { + case PISCSI_CMD_DRIVER: DEBUG("[PISCSI] Driver copy/patch called, destination address %.8X.\n", val); - int r = get_mapped_item_by_address(cfg, val); + r = get_mapped_item_by_address(cfg, val); if (r != -1) { uint32_t addr = val - cfg->map_offset[r]; uint8_t *dst_data = cfg->map_data[r]; @@ -752,7 +752,6 @@ skip_disk:; } break; - } case PISCSI_CMD_NEXTPART: DEBUG("[PISCSI] Switch partition %d -> %d\n", rom_cur_partition, rom_cur_partition + 1); rom_cur_partition++; @@ -780,8 +779,8 @@ skip_disk:; if (r != -1) { uint32_t addr = val - cfg->map_offset[r]; struct DeviceNode *node = (struct DeviceNode *)(cfg->map_data[r] + addr); -#ifdef PISCSI_DEBUG char *dosID = (char *)&rom_partition_dostype[rom_cur_partition]; +#ifdef PISCSI_DEBUG #endif DEBUG("[PISCSI] Partition DOSType is %c%c%c/%d\n", dosID[0], dosID[1], dosID[2], dosID[3]); for (i = 0; i < piscsi_num_fs; i++) { @@ -791,7 +790,7 @@ skip_disk:; goto fs_found; } } - DEBUG("[!!!PISCSI] Found no handler for file system!\n"); + printf("[!!!PISCSI] Found no handler for file system %s!\n", dosID); fs_found:; DEBUG("[FS-HANDLER] Next: %d Type: %.8X\n", BE(node->dn_Next), BE(node->dn_Type)); DEBUG("[FS-HANDLER] Task: %d Lock: %d\n", BE(node->dn_Task), BE(node->dn_Lock)); diff --git a/platforms/amiga/pistorm-dev/pistorm-dev.c b/platforms/amiga/pistorm-dev/pistorm-dev.c index 35e8e93..95943ab 100644 --- a/platforms/amiga/pistorm-dev/pistorm-dev.c +++ b/platforms/amiga/pistorm-dev/pistorm-dev.c @@ -21,8 +21,6 @@ #ifdef DEBUG_PISTORM_DEVICE #define DEBUG printf -#define PIDEV_SWREV 0x0105 - static const char *op_type_names[4] = { "BYTE", "WORD", @@ -33,6 +31,8 @@ static const char *op_type_names[4] = { #define DEBUG(...) #endif +#define PIDEV_SWREV 0x0105 + extern uint32_t pistorm_dev_base; extern uint32_t do_reset;