static int initr_reloc_global_data(void) { #ifdef __ARM__ monitor_flash_len = _end - __image_copy_start; #elif defined(CONFIG_NDS32) monitor_flash_len = (ulong)&_end - (ulong)&_start; #elif !defined(CONFIG_SANDBOX) && !defined(CONFIG_NIOS2) monitor_flash_len = (ulong)&__init_end - gd->relocaddr; #endif #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx) /* * The gd->cpu pointer is set to an address in flash before relocation. * We need to update it to point to the same CPU entry in RAM. * TODO: why not just add gd->reloc_ofs? */ gd->arch.cpu += gd->relocaddr - CONFIG_SYS_MONITOR_BASE; /* * If we didn't know the cpu mask & # cores, we can save them of * now rather than 'computing' them constantly */ fixup_cpu(); #endif #ifdef CONFIG_SYS_EXTRA_ENV_RELOC /* * Some systems need to relocate the env_addr pointer early because the * location it points to will get invalidated before env_relocate is * called. One example is on systems that might use a L2 or L3 cache * in SRAM mode and initialize that cache from SRAM mode back to being * a cache in cpu_init_r. */ gd->env_addr += gd->relocaddr - CONFIG_SYS_MONITOR_BASE; #endif return 0; }
/* * This is the next part if the initialization sequence: we are now * running from RAM and have a "normal" C environment, i. e. global * data can be written, BSS has been cleared, the stack size in not * that critical any more, etc. */ void board_init_r(gd_t *id, ulong dest_addr) { bd_t *bd; ulong malloc_start; #ifndef CONFIG_SYS_NO_FLASH ulong flash_size; #endif gd = id; /* initialize RAM version of global data */ bd = gd->bd; gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */ /* The Malloc area is immediately below the monitor copy in DRAM */ malloc_start = dest_addr - TOTAL_MALLOC_LEN; #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx) /* * The gd->arch.cpu pointer is set to an address in flash before * relocation. We need to update it to point to the same CPU entry * in RAM. */ gd->arch.cpu += dest_addr - CONFIG_SYS_MONITOR_BASE; /* * If we didn't know the cpu mask & # cores, we can save them of * now rather than 'computing' them constantly */ fixup_cpu(); #endif #ifdef CONFIG_SYS_EXTRA_ENV_RELOC /* * Some systems need to relocate the env_addr pointer early because the * location it points to will get invalidated before env_relocate is * called. One example is on systems that might use a L2 or L3 cache * in SRAM mode and initialize that cache from SRAM mode back to being * a cache in cpu_init_r. */ gd->env_addr += dest_addr - CONFIG_SYS_MONITOR_BASE; #endif serial_initialize(); debug("Now running in RAM - U-Boot at: %08lx\n", dest_addr); WATCHDOG_RESET(); /* * Setup trap handlers */ trap_init(dest_addr); #ifdef CONFIG_ADDR_MAP init_addr_map(); #endif #if defined(CONFIG_BOARD_EARLY_INIT_R) board_early_init_r(); #endif monitor_flash_len = (ulong)&__init_end - dest_addr; WATCHDOG_RESET(); #ifdef CONFIG_LOGBUFFER logbuff_init_ptrs(); #endif #ifdef CONFIG_POST post_output_backlog(); #endif WATCHDOG_RESET(); #if defined(CONFIG_SYS_DELAYED_ICACHE) icache_enable(); /* it's time to enable the instruction cache */ #endif #if defined(CONFIG_SYS_INIT_RAM_LOCK) && defined(CONFIG_E500) unlock_ram_in_cache(); /* it's time to unlock D-cache in e500 */ #endif #if defined(CONFIG_PCI) && defined(CONFIG_SYS_EARLY_PCI_INIT) /* * Do early PCI configuration _before_ the flash gets initialised, * because PCU ressources are crucial for flash access on some boards. */ pci_init(); #endif #if defined(CONFIG_WINBOND_83C553) /* * Initialise the ISA bridge */ initialise_w83c553f(); #endif asm("sync ; isync"); mem_malloc_init(malloc_start, TOTAL_MALLOC_LEN); #if !defined(CONFIG_SYS_NO_FLASH) puts("Flash: "); if (board_flash_wp_on()) { printf("Uninitialized - Write Protect On\n"); /* Since WP is on, we can't find real size. Set to 0 */ flash_size = 0; } else if ((flash_size = flash_init()) > 0) { #ifdef CONFIG_SYS_FLASH_CHECKSUM print_size(flash_size, ""); /* * Compute and print flash CRC if flashchecksum is set to 'y' * * NOTE: Maybe we should add some WATCHDOG_RESET()? XXX */ if (getenv_yesno("flashchecksum") == 1) { printf(" CRC: %08X", crc32(0, (const unsigned char *) CONFIG_SYS_FLASH_BASE, flash_size) ); } putc('\n'); #else /* !CONFIG_SYS_FLASH_CHECKSUM */ print_size(flash_size, "\n"); #endif /* CONFIG_SYS_FLASH_CHECKSUM */ } else { puts(failed); hang(); } /* update start of FLASH memory */ bd->bi_flashstart = CONFIG_SYS_FLASH_BASE; /* size of FLASH memory (final value) */ bd->bi_flashsize = flash_size; #if defined(CONFIG_SYS_UPDATE_FLASH_SIZE) /* Make a update of the Memctrl. */ update_flash_size(flash_size); #endif #if defined(CONFIG_OXC) || defined(CONFIG_RMU) /* flash mapped at end of memory map */ bd->bi_flashoffset = CONFIG_SYS_TEXT_BASE + flash_size; #elif CONFIG_SYS_MONITOR_BASE == CONFIG_SYS_FLASH_BASE bd->bi_flashoffset = monitor_flash_len; /* reserved area for monitor */ #endif #endif /* !CONFIG_SYS_NO_FLASH */ WATCHDOG_RESET(); /* initialize higher level parts of CPU like time base and timers */ cpu_init_r(); WATCHDOG_RESET(); #ifdef CONFIG_SPI #if !defined(CONFIG_ENV_IS_IN_EEPROM) spi_init_f(); #endif spi_init_r(); #endif #if defined(CONFIG_CMD_NAND) WATCHDOG_RESET(); puts("NAND: "); nand_init(); /* go init the NAND */ #endif #ifdef CONFIG_GENERIC_MMC /* * MMC initialization is called before relocating env. * Thus It is required that operations like pin multiplexer * be put in board_init. */ WATCHDOG_RESET(); puts("MMC: "); mmc_initialize(bd); #endif /* relocate environment function pointers etc. */ env_relocate(); /* * after non-volatile devices & environment is setup and cpu code have * another round to deal with any initialization that might require * full access to the environment or loading of some image (firmware) * from a non-volatile device */ cpu_secondary_init_r(); /* * Fill in missing fields of bd_info. * We do this here, where we have "normal" access to the * environment; we used to do this still running from ROM, * where had to use getenv_f(), which can be pretty slow when * the environment is in EEPROM. */ #if defined(CONFIG_SYS_EXTBDINFO) #if defined(CONFIG_405GP) || defined(CONFIG_405EP) #if defined(CONFIG_I2CFAST) /* * set bi_iic_fast for linux taking environment variable * "i2cfast" into account */ { if (getenv_yesno("i2cfast") == 1) { bd->bi_iic_fast[0] = 1; bd->bi_iic_fast[1] = 1; } } #endif /* CONFIG_I2CFAST */ #endif /* CONFIG_405GP, CONFIG_405EP */ #endif /* CONFIG_SYS_EXTBDINFO */ #if defined(CONFIG_SC3) sc3_read_eeprom(); #endif #if defined(CONFIG_ID_EEPROM) || defined(CONFIG_SYS_I2C_MAC_OFFSET) mac_read_from_eeprom(); #endif #ifdef CONFIG_CMD_NET /* kept around for legacy kernels only ... ignore the next section */ eth_getenv_enetaddr("ethaddr", bd->bi_enetaddr); #ifdef CONFIG_HAS_ETH1 eth_getenv_enetaddr("eth1addr", bd->bi_enet1addr); #endif #ifdef CONFIG_HAS_ETH2 eth_getenv_enetaddr("eth2addr", bd->bi_enet2addr); #endif #ifdef CONFIG_HAS_ETH3 eth_getenv_enetaddr("eth3addr", bd->bi_enet3addr); #endif #ifdef CONFIG_HAS_ETH4 eth_getenv_enetaddr("eth4addr", bd->bi_enet4addr); #endif #ifdef CONFIG_HAS_ETH5 eth_getenv_enetaddr("eth5addr", bd->bi_enet5addr); #endif #endif /* CONFIG_CMD_NET */ WATCHDOG_RESET(); #if defined(CONFIG_PCI) && !defined(CONFIG_SYS_EARLY_PCI_INIT) /* * Do pci configuration */ pci_init(); #endif /** leave this here (after malloc(), environment and PCI are working) **/ /* Initialize stdio devices */ stdio_init(); /* Initialize the jump table for applications */ jumptable_init(); #if defined(CONFIG_API) /* Initialize API */ api_init(); #endif /* Initialize the console (after the relocation and devices init) */ console_init_r(); #if defined(CONFIG_MISC_INIT_R) /* miscellaneous platform dependent initialisations */ misc_init_r(); #endif #if defined(CONFIG_CMD_KGDB) WATCHDOG_RESET(); puts("KGDB: "); kgdb_init(); #endif debug("U-Boot relocated to %08lx\n", dest_addr); /* * Enable Interrupts */ interrupt_init(); #if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT) status_led_set(STATUS_LED_BOOT, STATUS_LED_BLINKING); #endif udelay(20); /* Initialize from environment */ load_addr = getenv_ulong("loadaddr", 16, load_addr); WATCHDOG_RESET(); #if defined(CONFIG_CMD_SCSI) WATCHDOG_RESET(); puts("SCSI: "); scsi_init(); #endif #if defined(CONFIG_CMD_DOC) WATCHDOG_RESET(); puts("DOC: "); doc_init(); #endif #ifdef CONFIG_BITBANGMII bb_miiphy_init(); #endif #if defined(CONFIG_CMD_NET) WATCHDOG_RESET(); puts("Net: "); eth_initialize(bd); #endif #if defined(CONFIG_CMD_NET) && defined(CONFIG_RESET_PHY_R) WATCHDOG_RESET(); debug("Reset Ethernet PHY\n"); reset_phy(); #endif #ifdef CONFIG_POST post_run(NULL, POST_RAM | post_bootmode_get(0)); #endif #if defined(CONFIG_CMD_PCMCIA) \ && !defined(CONFIG_CMD_IDE) WATCHDOG_RESET(); puts("PCMCIA:"); pcmcia_init(); #endif #if defined(CONFIG_CMD_IDE) WATCHDOG_RESET(); #ifdef CONFIG_IDE_8xx_PCCARD puts("PCMCIA:"); #else puts("IDE: "); #endif #if defined(CONFIG_START_IDE) if (board_start_ide()) ide_init(); #else ide_init(); #endif #endif #ifdef CONFIG_LAST_STAGE_INIT WATCHDOG_RESET(); /* * Some parts can be only initialized if all others (like * Interrupts) are up and running (i.e. the PC-style ISA * keyboard). */ last_stage_init(); #endif #if defined(CONFIG_CMD_BEDBUG) WATCHDOG_RESET(); bedbug_init(); #endif #if defined(CONFIG_PRAM) || defined(CONFIG_LOGBUFFER) /* * Export available size of memory for Linux, * taking into account the protected RAM at top of memory */ { ulong pram = 0; char memsz[32]; #ifdef CONFIG_PRAM pram = getenv_ulong("pram", 10, CONFIG_PRAM); #endif #ifdef CONFIG_LOGBUFFER #ifndef CONFIG_ALT_LB_ADDR /* Also take the logbuffer into account (pram is in kB) */ pram += (LOGBUFF_LEN + LOGBUFF_OVERHEAD) / 1024; #endif #endif sprintf(memsz, "%ldk", (ulong) (bd->bi_memsize / 1024) - pram); setenv("mem", memsz); } #endif #ifdef CONFIG_PS2KBD puts("PS/2: "); kbd_init(); #endif /* Initialization complete - start the monitor */ /* main_loop() can return to retry autoboot, if so just run it again. */ for (;;) { WATCHDOG_RESET(); main_loop(); } /* NOTREACHED - no way out of command loop except booting */ }
void fixup_prefs (struct uae_prefs *p, bool userconfig) { int err = 0; built_in_chipset_prefs (p); fixup_cpu (p); if (p->cpuboard_type && p->cpuboardmem1_size > cpuboard_maxmemory(p)) { error_log(_T("Unsupported accelerator board memory size %d (0x%x).\n"), p->cpuboardmem1_size, p->cpuboardmem1_size); p->cpuboardmem1_size = cpuboard_maxmemory(p); } if (cpuboard_memorytype(p) == BOARD_MEMORY_HIGHMEM) { p->mbresmem_high_size = p->cpuboardmem1_size; } else if (cpuboard_memorytype(p) == BOARD_MEMORY_Z2) { p->fastmem2_size = p->cpuboardmem1_size; } else if (cpuboard_memorytype(p) == BOARD_MEMORY_25BITMEM) { p->mem25bit_size = p->cpuboardmem1_size; } else if (cpuboard_memorytype(p) == BOARD_MEMORY_EMATRIX) { int size = p->cpuboardmem1_size / (1024 * 1024); if (size == 32 || size == 8 || size == 2) { p->custom_memory_sizes[0] = p->cpuboardmem1_size / 2; p->custom_memory_sizes[1] = p->cpuboardmem1_size / 2; p->custom_memory_addrs[0] = 0x18000000 - p->custom_memory_sizes[0]; p->custom_memory_addrs[1] = 0x18000000; p->custom_memory_mask[0] = 0x10000000; p->custom_memory_mask[1] = 0x18000000; } else { p->custom_memory_sizes[0] = p->cpuboardmem1_size; p->custom_memory_sizes[1] = 0; p->custom_memory_addrs[0] = 0x18000000 - p->custom_memory_sizes[0]; p->custom_memory_addrs[1] = 0; p->custom_memory_mask[0] = 0x10000000; p->custom_memory_mask[1] = 0; } } if (((p->chipmem_size & (p->chipmem_size - 1)) != 0 && p->chipmem_size != 0x180000) || p->chipmem_size < 0x20000 || p->chipmem_size > 0x800000) { error_log (_T("Unsupported chipmem size %d (0x%x)."), p->chipmem_size, p->chipmem_size); p->chipmem_size = 0x200000; err = 1; } if ((p->fastmem_size & (p->fastmem_size - 1)) != 0 || (p->fastmem_size != 0 && (p->fastmem_size < 0x10000 || p->fastmem_size > 0x800000))) { error_log (_T("Unsupported fastmem size %d (0x%x)."), p->fastmem_size, p->fastmem_size); p->fastmem_size = 0; err = 1; } if ((p->fastmem2_size & (p->fastmem2_size - 1)) != 0 || (p->fastmem2_size != 0 && (p->fastmem2_size < 0x10000 || p->fastmem2_size > 0x800000))) { error_log (_T("Unsupported fastmem2 size %d (0x%x)."), p->fastmem2_size, p->fastmem2_size); p->fastmem2_size = 0; err = 1; } if (p->cachesize) { if (p->fastmem_size + p->fastmem2_size > 0x800000) { error_log (_T("Unsupported fastmem2 size %d (0x%x)."), p->fastmem2_size, p->fastmem2_size); err = 1; } if (p->fastmem2_size > p->fastmem_size && p->fastmem_size > 0) { error_log (_T("Fastmem2 size can't be larger than fastmem1 if JIT is enabled.")); p->fastmem2_size = 0; err = 1; } } if (p->rtgmem_size > max_z3fastmem && p->rtgmem_type == GFXBOARD_UAE_Z3) { error_log (_T("Graphics card memory size %d (0x%x) larger than maximum reserved %d (0x%x)."), p->rtgmem_size, p->rtgmem_size, max_z3fastmem, max_z3fastmem); p->rtgmem_size = max_z3fastmem; err = 1; } if ((p->rtgmem_size & (p->rtgmem_size - 1)) != 0 || (p->rtgmem_size != 0 && (p->rtgmem_size < 0x100000))) { error_log (_T("Unsupported graphics card memory size %d (0x%x)."), p->rtgmem_size, p->rtgmem_size); if (p->rtgmem_size > max_z3fastmem) p->rtgmem_size = max_z3fastmem; else p->rtgmem_size = 0; err = 1; } if (p->z3fastmem_size > max_z3fastmem) { error_log (_T("Zorro III fastmem size %d (0x%x) larger than max reserved %d (0x%x)."), p->z3fastmem_size, p->z3fastmem_size, max_z3fastmem, max_z3fastmem); p->z3fastmem_size = max_z3fastmem; err = 1; } if ((p->z3fastmem_size & (p->z3fastmem_size - 1)) != 0 || (p->z3fastmem_size != 0 && p->z3fastmem_size < 0x100000)) { error_log (_T("Unsupported Zorro III fastmem size %d (0x%x)."), p->z3fastmem_size, p->z3fastmem_size); p->z3fastmem_size = 0; err = 1; } if (p->z3fastmem2_size > max_z3fastmem) { error_log (_T("Zorro III fastmem2 size %d (0x%x) larger than max reserved %d (0x%x)."), p->z3fastmem2_size, p->z3fastmem2_size, max_z3fastmem, max_z3fastmem); p->z3fastmem2_size = max_z3fastmem; err = 1; } if ((p->z3fastmem2_size & (p->z3fastmem2_size - 1)) != 0 || (p->z3fastmem2_size != 0 && p->z3fastmem2_size < 0x100000)) { error_log (_T("Unsupported Zorro III fastmem2 size %x (%x)."), p->z3fastmem2_size, p->z3fastmem2_size); p->z3fastmem2_size = 0; err = 1; } p->z3autoconfig_start &= ~0xffff; if (p->z3autoconfig_start < 0x1000000) p->z3autoconfig_start = 0x1000000; if (p->z3chipmem_size > max_z3fastmem) { error_log (_T("Zorro III fake chipmem size %d (0x%x) larger than max reserved %d (0x%x)."), p->z3chipmem_size, p->z3chipmem_size, max_z3fastmem, max_z3fastmem); p->z3chipmem_size = max_z3fastmem; err = 1; } if (((p->z3chipmem_size & (p->z3chipmem_size - 1)) != 0 && p->z3chipmem_size != 0x18000000 && p->z3chipmem_size != 0x30000000) || (p->z3chipmem_size != 0 && p->z3chipmem_size < 0x100000)) { error_log (_T("Unsupported 32-bit chipmem size %d (0x%x)."), p->z3chipmem_size, p->z3chipmem_size); p->z3chipmem_size = 0; err = 1; } if (p->address_space_24 && (p->z3fastmem_size != 0 || p->z3fastmem2_size != 0 || p->z3chipmem_size != 0)) { p->z3fastmem_size = p->z3fastmem2_size = p->z3chipmem_size = 0; error_log (_T("Can't use a Z3 graphics card or 32-bit memory when using a 24 bit address space.")); } if (p->bogomem_size != 0 && p->bogomem_size != 0x80000 && p->bogomem_size != 0x100000 && p->bogomem_size != 0x180000 && p->bogomem_size != 0x1c0000) { error_log (_T("Unsupported bogomem size %d (0x%x)"), p->bogomem_size, p->bogomem_size); p->bogomem_size = 0; err = 1; } if (p->bogomem_size > 0x180000 && (p->cs_fatgaryrev >= 0 || p->cs_ide || p->cs_ramseyrev >= 0)) { p->bogomem_size = 0x180000; error_log (_T("Possible Gayle bogomem conflict fixed.")); } if (p->chipmem_size > 0x200000 && p->fastmem_size > 262144) { error_log(_T("You can't use fastmem and more than 2MB chip at the same time.")); p->chipmem_size = 0x200000; err = 1; } if (p->chipmem_size > 0x200000 && p->rtgmem_size && gfxboard_get_configtype(p->rtgmem_type) == 2) { error_log(_T("You can't use Zorro II RTG and more than 2MB chip at the same time.")); p->chipmem_size = 0x200000; err = 1; } if (p->mem25bit_size > 128 * 1024 * 1024 || (p->mem25bit_size & 0xfffff)) { p->mem25bit_size = 0; error_log(_T("Unsupported 25bit RAM size")); } if (p->mbresmem_low_size > 0x04000000 || (p->mbresmem_low_size & 0xfffff)) { p->mbresmem_low_size = 0; error_log (_T("Unsupported Mainboard RAM size")); } if (p->mbresmem_high_size > 0x08000000 || (p->mbresmem_high_size & 0xfffff)) { p->mbresmem_high_size = 0; error_log (_T("Unsupported CPU Board RAM size.")); } if (p->rtgmem_type >= GFXBOARD_HARDWARE) { if (gfxboard_get_vram_min(p->rtgmem_type) > 0 && p->rtgmem_size < gfxboard_get_vram_min (p->rtgmem_type)) { error_log(_T("Graphics card memory size %d (0x%x) smaller than minimum hardware supported %d (0x%x)."), p->rtgmem_size, p->rtgmem_size, gfxboard_get_vram_min(p->rtgmem_type), gfxboard_get_vram_min(p->rtgmem_type)); p->rtgmem_size = gfxboard_get_vram_min (p->rtgmem_type); } if (p->address_space_24 && gfxboard_get_configtype(p->rtgmem_type) == 3) { p->rtgmem_type = GFXBOARD_UAE_Z2; p->rtgmem_size = 0; error_log (_T("Z3 RTG and 24-bit address space are not compatible.")); } if (gfxboard_get_vram_max(p->rtgmem_type) > 0 && p->rtgmem_size > gfxboard_get_vram_max(p->rtgmem_type)) { error_log(_T("Graphics card memory size %d (0x%x) larger than maximum hardware supported %d (0x%x)."), p->rtgmem_size, p->rtgmem_size, gfxboard_get_vram_max(p->rtgmem_type), gfxboard_get_vram_max(p->rtgmem_type)); p->rtgmem_size = gfxboard_get_vram_max(p->rtgmem_type); } } if (p->address_space_24 && p->rtgmem_size && p->rtgmem_type == GFXBOARD_UAE_Z3) { error_log (_T("Z3 RTG and 24bit address space are not compatible.")); p->rtgmem_type = GFXBOARD_UAE_Z2; } if (p->rtgmem_type == GFXBOARD_UAE_Z2 && (p->chipmem_size > 2 * 1024 * 1024 || getz2size (p) > 8 * 1024 * 1024 || getz2size (p) < 0)) { p->rtgmem_size = 0; error_log (_T("Too large Z2 RTG memory size.")); } if (p->cs_z3autoconfig && p->address_space_24) { p->cs_z3autoconfig = false; error_log (_T("Z3 autoconfig and 24bit address space are not compatible.")); } #if 0 if (p->m68k_speed < -1 || p->m68k_speed > 20) { write_log (_T("Bad value for -w parameter: must be -1, 0, or within 1..20.\n")); p->m68k_speed = 4; err = 1; } #endif if (p->produce_sound < 0 || p->produce_sound > 3) { error_log (_T("Bad value for -S parameter: enable value must be within 0..3.")); p->produce_sound = 0; err = 1; } if (p->comptrustbyte < 0 || p->comptrustbyte > 3) { error_log (_T("Bad value for comptrustbyte parameter: value must be within 0..2.")); p->comptrustbyte = 1; err = 1; } if (p->comptrustword < 0 || p->comptrustword > 3) { error_log (_T("Bad value for comptrustword parameter: value must be within 0..2.")); p->comptrustword = 1; err = 1; } if (p->comptrustlong < 0 || p->comptrustlong > 3) { error_log (_T("Bad value for comptrustlong parameter: value must be within 0..2.")); p->comptrustlong = 1; err = 1; } if (p->comptrustnaddr < 0 || p->comptrustnaddr > 3) { error_log (_T("Bad value for comptrustnaddr parameter: value must be within 0..2.")); p->comptrustnaddr = 1; err = 1; } if (p->cachesize < 0 || p->cachesize > 16384) { error_log (_T("Bad value for cachesize parameter: value must be within 0..16384.")); p->cachesize = 0; err = 1; } if ((p->z3fastmem_size || p->z3fastmem2_size || p->z3chipmem_size) && p->address_space_24) { error_log (_T("Z3 fast memory can't be used if address space is 24-bit.")); p->z3fastmem_size = 0; p->z3fastmem2_size = 0; p->z3chipmem_size = 0; err = 1; } if ((p->rtgmem_size > 0 && p->rtgmem_type == GFXBOARD_UAE_Z3) && p->address_space_24) { error_log (_T("UAEGFX RTG can't be used if address space is 24-bit.")); p->rtgmem_size = 0; err = 1; } #if !defined (BSDSOCKET) if (p->socket_emu) { write_log (_T("Compile-time option of BSDSOCKET_SUPPORTED was not enabled. You can't use bsd-socket emulation.\n")); p->socket_emu = 0; err = 1; } #endif if (p->nr_floppies < 0 || p->nr_floppies > 4) { error_log (_T("Invalid number of floppies. Using 2.")); p->nr_floppies = 2; p->floppyslots[0].dfxtype = 0; p->floppyslots[1].dfxtype = 0; p->floppyslots[2].dfxtype = -1; p->floppyslots[3].dfxtype = -1; err = 1; } if (p->floppy_speed > 0 && p->floppy_speed < 10) { error_log (_T("Invalid floppy speed.")); p->floppy_speed = 100; } if (p->input_mouse_speed < 1 || p->input_mouse_speed > 1000) { error_log (_T("Invalid mouse speed.")); p->input_mouse_speed = 100; } if (p->collision_level < 0 || p->collision_level > 3) { error_log (_T("Invalid collision support level. Using 1.")); p->collision_level = 1; err = 1; } if (p->parallel_postscript_emulation) p->parallel_postscript_detection = 1; if (p->cs_compatible == 1) { p->cs_fatgaryrev = p->cs_ramseyrev = p->cs_mbdmac = -1; p->cs_ide = 0; if (p->cpu_model >= 68020) { p->cs_fatgaryrev = 0; p->cs_ide = -1; p->cs_ramseyrev = 0x0f; p->cs_mbdmac = 0; } } else if (p->cs_compatible == 0) { if (p->cs_ide == IDE_A4000) { if (p->cs_fatgaryrev < 0) p->cs_fatgaryrev = 0; if (p->cs_ramseyrev < 0) p->cs_ramseyrev = 0x0f; } } if (p->chipmem_size >= 0x100000) p->cs_1mchipjumper = true; /* Can't fit genlock and A2024 or Graffiti at the same time, * also Graffiti uses genlock audio bit as an enable signal */ if (p->genlock && p->monitoremu) { error_log (_T("Genlock and A2024 or Graffiti can't be active simultaneously.")); p->genlock = false; } if (p->cs_hacks) { error_log (_T("chipset_hacks is nonzero (0x%04x)."), p->cs_hacks); } fixup_prefs_dimensions (p); #if !defined (JIT) p->cachesize = 0; #endif #ifdef CPU_68000_ONLY p->cpu_model = 68000; p->fpu_model = 0; #endif #ifndef CPUEMU_0 p->cpu_compatible = 1; p->address_space_24 = 1; #endif #if !defined (CPUEMU_11) && !defined (CPUEMU_13) p->cpu_compatible = 0; p->address_space_24 = 0; #endif #if !defined (CPUEMU_13) p->cpu_cycle_exact = p->blitter_cycle_exact = 0; #endif #ifndef AGA p->chipset_mask &= ~CSMASK_AGA; #endif #ifndef AUTOCONFIG p->z3fastmem_size = 0; p->fastmem_size = 0; p->rtgmem_size = 0; #endif #if !defined (BSDSOCKET) p->socket_emu = 0; #endif #if !defined (SCSIEMU) p->scsi = 0; #ifdef _WIN32 p->win32_aspi = 0; #endif #endif #if !defined (SANA2) p->sana2 = 0; #endif #if !defined (UAESERIAL) p->uaeserial = 0; #endif #if defined (CPUEMU_13) if (p->cpu_cycle_exact) { if (p->gfx_framerate > 1) { error_log (_T("Cycle-exact requires disabled frameskip.")); p->gfx_framerate = 1; } if (p->cachesize) { error_log (_T("Cycle-exact and JIT can't be active simultaneously.")); p->cachesize = 0; } #if 0 if (p->m68k_speed) { error_log (_T("Adjustable CPU speed is not available in cycle-exact mode.")); p->m68k_speed = 0; } #endif } #endif if (p->maprom && !p->address_space_24) { p->maprom = 0x0f000000; } if (((p->maprom & 0xff000000) && p->address_space_24) || (p->maprom && p->mbresmem_high_size >= 0x08000000)) { p->maprom = 0x00e00000; } if (p->tod_hack && p->cs_ciaatod == 0) p->cs_ciaatod = p->ntscmode ? 2 : 1; if (p->sound_toccata + p->sound_es1370 + p->sound_fm801 > 1) { error_log(_T("Only one sound card can be enabled at the same time.")); if (p->sound_toccata) { p->sound_es1370 = 0; p->sound_fm801 = 0; } else if (p->sound_es1370) { p->sound_toccata = 0; p->sound_fm801 = 0; } else { p->sound_toccata = 0; p->sound_es1370 = 0; } } built_in_chipset_prefs (p); blkdev_fix_prefs (p); inputdevice_fix_prefs(p, userconfig); target_fixup_options (p); }
void fixup_prefs (struct uae_prefs *p) { /** FIXME: * There must be a way to a) have a sane max_z3fastmem value * without NATMEM being used and b) a way to use fastmem and * rtg mem without crashing 64bit linux systems. **/ #ifndef NATMEM_OFFSET max_z3fastmem = 0; #endif // NATMEM_OFFSET int err = 0; built_in_chipset_prefs (p); fixup_cpu (p); if (((p->chipmem_size & (p->chipmem_size - 1)) != 0 && p->chipmem_size != 0x180000) || p->chipmem_size < 0x20000 || p->chipmem_size > 0x800000) { error_log (_T("Unsupported chipmem size %d (0x%x)."), p->chipmem_size, p->chipmem_size); p->chipmem_size = 0x200000; err = 1; } if ((p->fastmem_size & (p->fastmem_size - 1)) != 0 || (p->fastmem_size != 0 && (p->fastmem_size < 0x100000 || p->fastmem_size > 0x800000))) { error_log (_T("Unsupported fastmem size %d (0x%x)."), p->fastmem_size, p->fastmem_size); p->fastmem_size = 0; err = 1; } if (p->rtgmem_size > max_z3fastmem && p->rtgmem_type == GFXBOARD_UAE_Z3) { error_log (_T("Graphics card memory size %d (0x%x) larger than maximum reserved %d (0x%x)."), p->rtgmem_size, p->rtgmem_size, max_z3fastmem, max_z3fastmem); p->rtgmem_size = max_z3fastmem; err = 1; } if ((p->rtgmem_size & (p->rtgmem_size - 1)) != 0 || (p->rtgmem_size != 0 && (p->rtgmem_size < 0x100000))) { error_log (_T("Unsupported graphics card memory size %d (0x%x)."), p->rtgmem_size, p->rtgmem_size); if (p->rtgmem_size > max_z3fastmem) p->rtgmem_size = max_z3fastmem; else p->rtgmem_size = 0; err = 1; } if (p->z3fastmem_size > max_z3fastmem) { error_log (_T("Zorro III fastmem size %d (0x%x) larger than max reserved %d (0x%x)."), p->z3fastmem_size, p->z3fastmem_size, max_z3fastmem, max_z3fastmem); p->z3fastmem_size = max_z3fastmem; err = 1; } if ((p->z3fastmem_size & (p->z3fastmem_size - 1)) != 0 || (p->z3fastmem_size != 0 && p->z3fastmem_size < 0x100000)) { error_log (_T("Unsupported Zorro III fastmem size %d (0x%x)."), p->z3fastmem_size, p->z3fastmem_size); p->z3fastmem_size = 0; err = 1; } if (p->z3fastmem2_size > max_z3fastmem) { error_log (_T("Zorro III fastmem2 size %d (0x%x) larger than max reserved %d (0x%x)."), p->z3fastmem2_size, p->z3fastmem2_size, max_z3fastmem, max_z3fastmem); p->z3fastmem2_size = max_z3fastmem; err = 1; } if ((p->z3fastmem2_size & (p->z3fastmem2_size - 1)) != 0 || (p->z3fastmem2_size != 0 && p->z3fastmem2_size < 0x100000)) { error_log (_T("Unsupported Zorro III fastmem2 size %x (%x)."), p->z3fastmem2_size, p->z3fastmem2_size); p->z3fastmem2_size = 0; err = 1; } p->z3fastmem_start &= ~0xffff; if (p->z3fastmem_start < 0x1000000) p->z3fastmem_start = 0x1000000; if (p->z3chipmem_size > max_z3fastmem) { error_log (_T("Zorro III fake chipmem size %d (0x%x) larger than max reserved %d (0x%x)."), p->z3chipmem_size, p->z3chipmem_size, max_z3fastmem, max_z3fastmem); p->z3chipmem_size = max_z3fastmem; err = 1; } if ((p->z3chipmem_size & (p->z3chipmem_size - 1)) != 0 || (p->z3chipmem_size != 0 && p->z3chipmem_size < 0x100000)) { error_log (_T("Unsupported Zorro III fake chipmem size %d (0x%x)."), p->z3chipmem_size, p->z3chipmem_size); p->z3chipmem_size = 0; err = 1; } if (p->address_space_24 && (p->z3fastmem_size != 0 || p->z3fastmem2_size != 0 || p->z3chipmem_size != 0)) { p->z3fastmem_size = p->z3fastmem2_size = p->z3chipmem_size = 0; error_log (_T("Can't use a Z3 graphics card or 32-bit memory when using a 24 bit address space.")); } if (p->bogomem_size != 0 && p->bogomem_size != 0x80000 && p->bogomem_size != 0x100000 && p->bogomem_size != 0x180000 && p->bogomem_size != 0x1c0000) { error_log (_T("Unsupported bogomem size %d (0x%x)"), p->bogomem_size, p->bogomem_size); p->bogomem_size = 0; err = 1; } if (p->bogomem_size > 0x180000 && (p->cs_fatgaryrev >= 0 || p->cs_ide || p->cs_ramseyrev >= 0)) { p->bogomem_size = 0x180000; error_log (_T("Possible Gayle bogomem conflict fixed.")); } if (p->chipmem_size > 0x200000 && p->fastmem_size != 0) { error_log (_T("You can't use fastmem and more than 2MB chip at the same time.")); p->fastmem_size = 0; err = 1; } if (p->mbresmem_low_size > 0x04000000 || (p->mbresmem_low_size & 0xfffff)) { p->mbresmem_low_size = 0; error_log (_T("Unsupported A3000 MB RAM size")); } if (p->mbresmem_high_size > 0x08000000 || (p->mbresmem_high_size & 0xfffff)) { p->mbresmem_high_size = 0; error_log (_T("Unsupported Motherboard RAM size.")); } if (p->rtgmem_type >= GFXBOARD_HARDWARE) { if (p->rtgmem_size < gfxboard_get_vram_min (p->rtgmem_type)) p->rtgmem_size = gfxboard_get_vram_min (p->rtgmem_type); if (p->address_space_24 && gfxboard_is_z3 (p->rtgmem_type)) { p->rtgmem_type = GFXBOARD_UAE_Z2; p->rtgmem_size = 0; error_log (_T("Z3 RTG and 24-bit address space are not compatible.")); } } if (p->address_space_24 && p->rtgmem_size && p->rtgmem_type == GFXBOARD_UAE_Z3) { error_log (_T("Z3 RTG and 24bit address space are not compatible.")); p->rtgmem_type = GFXBOARD_UAE_Z2; } if (p->rtgmem_type == GFXBOARD_UAE_Z2 && (p->chipmem_size > 2 * 1024 * 1024 || getz2size (p) > 8 * 1024 * 1024 || getz2size (p) < 0)) { p->rtgmem_size = 0; error_log (_T("Too large Z2 RTG memory size.")); } #if 0 if (p->m68k_speed < -1 || p->m68k_speed > 20) { write_log (_T("Bad value for -w parameter: must be -1, 0, or within 1..20.\n")); p->m68k_speed = 4; err = 1; } #endif if (p->produce_sound < 0 || p->produce_sound > 3) { error_log (_T("Bad value for -S parameter: enable value must be within 0..3.")); p->produce_sound = 0; err = 1; } #ifdef JIT if (p->comptrustbyte < 0 || p->comptrustbyte > 3) { error_log (_T("Bad value for comptrustbyte parameter: value must be within 0..2.")); p->comptrustbyte = 1; err = 1; } if (p->comptrustword < 0 || p->comptrustword > 3) { error_log (_T("Bad value for comptrustword parameter: value must be within 0..2.")); p->comptrustword = 1; err = 1; } if (p->comptrustlong < 0 || p->comptrustlong > 3) { error_log (_T("Bad value for comptrustlong parameter: value must be within 0..2.")); p->comptrustlong = 1; err = 1; } if (p->comptrustnaddr < 0 || p->comptrustnaddr > 3) { error_log (_T("Bad value for comptrustnaddr parameter: value must be within 0..2.")); p->comptrustnaddr = 1; err = 1; } if (p->cachesize < 0 || p->cachesize > 16384) { error_log (_T("Bad value for cachesize parameter: value must be within 0..16384.")); p->cachesize = 0; err = 1; } #endif if ((p->z3fastmem_size || p->z3fastmem2_size || p->z3chipmem_size) && (p->address_space_24 || p->cpu_model < 68020)) { error_log (_T("Z3 fast memory can't be used with a 68000/68010 emulation. Turning off Z3 fast memory.")); p->z3fastmem_size = 0; p->z3fastmem2_size = 0; p->z3chipmem_size = 0; err = 1; } if (p->rtgmem_size > 0 && p->rtgmem_type == GFXBOARD_UAE_Z3 && (p->cpu_model < 68020 || p->address_space_24)) { error_log (_T("UAEGFX RTG can't be used with a 68000/68010 or 68EC020 emulation. Turning off RTG.")); p->rtgmem_size = 0; err = 1; } #if !defined (BSDSOCKET) if (p->socket_emu) { write_log (_T("Compile-time option of BSDSOCKET_SUPPORTED was not enabled. You can't use bsd-socket emulation.\n")); p->socket_emu = 0; err = 1; } #endif if (p->nr_floppies < 0 || p->nr_floppies > 4) { error_log (_T("Invalid number of floppies. Using 2.")); p->nr_floppies = 2; p->floppyslots[0].dfxtype = 0; p->floppyslots[1].dfxtype = 0; p->floppyslots[2].dfxtype = -1; p->floppyslots[3].dfxtype = -1; err = 1; } if (p->floppy_speed > 0 && p->floppy_speed < 10) { error_log (_T("Invalid floppy speed.")); p->floppy_speed = 100; } if (p->input_mouse_speed < 1 || p->input_mouse_speed > 1000) { error_log (_T("Invalid mouse speed.")); p->input_mouse_speed = 100; } if (p->collision_level < 0 || p->collision_level > 3) { error_log (_T("Invalid collision support level. Using 1.")); p->collision_level = 1; err = 1; } if (p->parallel_postscript_emulation) p->parallel_postscript_detection = 1; if (p->cs_compatible == 1) { p->cs_fatgaryrev = p->cs_ramseyrev = p->cs_mbdmac = -1; p->cs_ide = 0; if (p->cpu_model >= 68020) { p->cs_fatgaryrev = 0; p->cs_ide = -1; p->cs_ramseyrev = 0x0f; p->cs_mbdmac = 0; } } else if (p->cs_compatible == 0) { if (p->cs_ide == IDE_A4000) { if (p->cs_fatgaryrev < 0) p->cs_fatgaryrev = 0; if (p->cs_ramseyrev < 0) p->cs_ramseyrev = 0x0f; } } /* Can't fit genlock and A2024 or Graffiti at the same time, * also Graffiti uses genlock audio bit as an enable signal */ if (p->genlock && p->monitoremu) { error_log (_T("Genlock and A2024 or Graffiti can't be active simultaneously.")); p->genlock = false; } fixup_prefs_dimensions (p); #if !defined (JIT) p->cachesize = 0; #endif #ifdef CPU_68000_ONLY p->cpu_model = 68000; p->fpu_model = 0; #endif #ifndef CPUEMU_0 p->cpu_compatible = 1; p->address_space_24 = 1; #endif #if !defined (CPUEMU_11) && !defined (CPUEMU_12) p->cpu_compatible = 0; p->address_space_24 = 0; #endif #if !defined (CPUEMU_12) p->cpu_cycle_exact = p->blitter_cycle_exact = 0; #endif #ifndef AGA p->chipset_mask &= ~CSMASK_AGA; #endif #ifndef AUTOCONFIG p->z3fastmem_size = 0; p->fastmem_size = 0; p->rtgmem_size = 0; #endif #if !defined (BSDSOCKET) p->socket_emu = 0; #endif #if !defined (SCSIEMU) p->scsi = 0; #endif #if !defined (SANA2) p->sana2 = 0; #endif #if !defined (UAESERIAL) p->uaeserial = 0; #endif #if defined (CPUEMU_12) if (p->cpu_cycle_exact) { if (p->gfx_framerate > 1) { error_log (_T("Cycle-exact requires disabled frameskip.")); p->gfx_framerate = 1; } #ifdef JIT if (p->cachesize) { error_log (_T("Cycle-exact and JIT can't be active simultaneously.")); p->cachesize = 0; } #endif if (p->m68k_speed) { error_log (_T("Adjustable CPU speed is not available in cycle-exact mode.")); p->m68k_speed = 0; } } #endif if (p->maprom && !p->address_space_24) p->maprom = 0x0f000000; if (((p->maprom & 0xff000000) && p->address_space_24) || p->mbresmem_high_size == 0x08000000) { p->maprom = 0x00e00000; } if (p->tod_hack && p->cs_ciaatod == 0) p->cs_ciaatod = p->ntscmode ? 2 : 1; built_in_chipset_prefs (p); #ifdef SCSIEMU blkdev_fix_prefs (p); #endif target_fixup_options (p); }
void fixup_prefs (struct uae_prefs *p) { int err = 0; built_in_chipset_prefs (p); fixup_cpu (p); if (((p->chipmem_size & (p->chipmem_size - 1)) != 0 && p->chipmem_size != 0x180000) || p->chipmem_size < 0x20000 || p->chipmem_size > 0x800000) { write_log (L"Unsupported chipmem size %x!\n", p->chipmem_size); p->chipmem_size = 0x200000; err = 1; } if ((p->fastmem_size & (p->fastmem_size - 1)) != 0 || (p->fastmem_size != 0 && (p->fastmem_size < 0x100000 || p->fastmem_size > 0x800000))) { write_log (L"Unsupported fastmem size %x!\n", p->fastmem_size); err = 1; } if ((p->gfxmem_size & (p->gfxmem_size - 1)) != 0 || (p->gfxmem_size != 0 && (p->gfxmem_size < 0x100000 || p->gfxmem_size > max_z3fastmem / 2))) { write_log (L"Unsupported graphics card memory size %x (%x)!\n", p->gfxmem_size, max_z3fastmem / 2); if (p->gfxmem_size > max_z3fastmem / 2) p->gfxmem_size = max_z3fastmem / 2; else p->gfxmem_size = 0; err = 1; } if ((p->z3fastmem_size & (p->z3fastmem_size - 1)) != 0 || (p->z3fastmem_size != 0 && (p->z3fastmem_size < 0x100000 || p->z3fastmem_size > max_z3fastmem))) { write_log (L"Unsupported Zorro III fastmem size %x (%x)!\n", p->z3fastmem_size, max_z3fastmem); if (p->z3fastmem_size > max_z3fastmem) p->z3fastmem_size = max_z3fastmem; else p->z3fastmem_size = 0; err = 1; } if ((p->z3fastmem2_size & (p->z3fastmem2_size - 1)) != 0 || (p->z3fastmem2_size != 0 && (p->z3fastmem2_size < 0x100000 || p->z3fastmem2_size > max_z3fastmem))) { write_log (L"Unsupported Zorro III fastmem size %x (%x)!\n", p->z3fastmem2_size, max_z3fastmem); if (p->z3fastmem2_size > max_z3fastmem) p->z3fastmem2_size = max_z3fastmem; else p->z3fastmem2_size = 0; err = 1; } p->z3fastmem_start &= ~0xffff; if (p->z3fastmem_start < 0x1000000) p->z3fastmem_start = 0x1000000; if ((p->z3chipmem_size & (p->z3chipmem_size - 1)) != 0 || (p->z3chipmem_size != 0 && (p->z3chipmem_size < 0x100000 || p->z3chipmem_size > max_z3fastmem))) { write_log (L"Unsupported Zorro III fake chipmem size %x (%x)!\n", p->z3chipmem_size, max_z3fastmem); if (p->z3chipmem_size > max_z3fastmem) p->z3chipmem_size = max_z3fastmem; else p->z3chipmem_size = 0; err = 1; } if (p->address_space_24 && (p->gfxmem_size != 0 || p->z3fastmem_size != 0)) { p->z3fastmem_size = p->gfxmem_size = 0; write_log (L"Can't use a graphics card or Zorro III fastmem when using a 24 bit\n" L"address space - sorry.\n"); } if (p->bogomem_size != 0 && p->bogomem_size != 0x80000 && p->bogomem_size != 0x100000 && p->bogomem_size != 0x180000 && p->bogomem_size != 0x1c0000) { p->bogomem_size = 0; write_log (L"Unsupported bogomem size!\n"); err = 1; } if (p->bogomem_size > 0x180000 && (p->cs_fatgaryrev >= 0 || p->cs_ide || p->cs_ramseyrev >= 0)) { p->bogomem_size = 0x180000; write_log (L"Possible Gayle bogomem conflict fixed\n"); } if (p->chipmem_size > 0x200000 && p->fastmem_size != 0) { write_log (L"You can't use fastmem and more than 2MB chip at the same time!\n"); p->fastmem_size = 0; err = 1; } if (p->mbresmem_low_size > 0x04000000 || (p->mbresmem_low_size & 0xfffff)) { p->mbresmem_low_size = 0; write_log (L"Unsupported A3000 MB RAM size\n"); } if (p->mbresmem_high_size > 0x04000000 || (p->mbresmem_high_size & 0xfffff)) { p->mbresmem_high_size = 0; write_log (L"Unsupported Motherboard RAM size\n"); } #if 0 if (p->m68k_speed < -1 || p->m68k_speed > 20) { write_log (L"Bad value for -w parameter: must be -1, 0, or within 1..20.\n"); p->m68k_speed = 4; err = 1; } #endif if (p->produce_sound < 0 || p->produce_sound > 3) { write_log (L"Bad value for -S parameter: enable value must be within 0..3\n"); p->produce_sound = 0; err = 1; } if (p->comptrustbyte < 0 || p->comptrustbyte > 3) { write_log (L"Bad value for comptrustbyte parameter: value must be within 0..2\n"); p->comptrustbyte = 1; err = 1; } if (p->comptrustword < 0 || p->comptrustword > 3) { write_log (L"Bad value for comptrustword parameter: value must be within 0..2\n"); p->comptrustword = 1; err = 1; } if (p->comptrustlong < 0 || p->comptrustlong > 3) { write_log (L"Bad value for comptrustlong parameter: value must be within 0..2\n"); p->comptrustlong = 1; err = 1; } if (p->comptrustnaddr < 0 || p->comptrustnaddr > 3) { write_log (L"Bad value for comptrustnaddr parameter: value must be within 0..2\n"); p->comptrustnaddr = 1; err = 1; } if (p->cachesize < 0 || p->cachesize > 16384) { write_log (L"Bad value for cachesize parameter: value must be within 0..16384\n"); p->cachesize = 0; err = 1; } if (p->z3fastmem_size > 0 && (p->address_space_24 || p->cpu_model < 68020)) { write_log (L"Z3 fast memory can't be used with a 68000/68010 emulation. It\n" L"requires a 68020 emulation. Turning off Z3 fast memory.\n"); p->z3fastmem_size = 0; err = 1; } if (p->gfxmem_size > 0 && (p->cpu_model < 68020 || p->address_space_24)) { write_log (L"Picasso96 can't be used with a 68000/68010 or 68EC020 emulation. It\n" L"requires a 68020 emulation. Turning off Picasso96.\n"); p->gfxmem_size = 0; err = 1; } #if !defined (BSDSOCKET) if (p->socket_emu) { write_log (L"Compile-time option of BSDSOCKET_SUPPORTED was not enabled. You can't use bsd-socket emulation.\n"); p->socket_emu = 0; err = 1; } #endif if (p->nr_floppies < 0 || p->nr_floppies > 4) { write_log (L"Invalid number of floppies. Using 4.\n"); p->nr_floppies = 4; p->floppyslots[0].dfxtype = 0; p->floppyslots[1].dfxtype = 0; p->floppyslots[2].dfxtype = 0; p->floppyslots[3].dfxtype = 0; err = 1; } if (p->floppy_speed > 0 && p->floppy_speed < 10) { p->floppy_speed = 100; } if (p->input_mouse_speed < 1 || p->input_mouse_speed > 1000) { p->input_mouse_speed = 100; } if (p->collision_level < 0 || p->collision_level > 3) { write_log (L"Invalid collision support level. Using 1.\n"); p->collision_level = 1; err = 1; } if (p->parallel_postscript_emulation) p->parallel_postscript_detection = 1; if (p->cs_compatible == 1) { p->cs_fatgaryrev = p->cs_ramseyrev = p->cs_mbdmac = -1; p->cs_ide = 0; if (p->cpu_model >= 68020) { p->cs_fatgaryrev = 0; p->cs_ide = -1; p->cs_ramseyrev = 0x0f; p->cs_mbdmac = 0; } } else if (p->cs_compatible == 0) { if (p->cs_ide == IDE_A4000) { if (p->cs_fatgaryrev < 0) p->cs_fatgaryrev = 0; if (p->cs_ramseyrev < 0) p->cs_ramseyrev = 0x0f; } } fixup_prefs_dimensions (p); #if !defined (JIT) p->cachesize = 0; #endif #ifdef CPU_68000_ONLY p->cpu_model = 68000; p->fpu_model = 0; #endif #ifndef CPUEMU_0 p->cpu_compatible = 1; p->address_space_24 = 1; #endif #if !defined (CPUEMU_11) && !defined (CPUEMU_12) p->cpu_compatible = 0; p->address_space_24 = 0; #endif #if !defined (CPUEMU_12) p->cpu_cycle_exact = p->blitter_cycle_exact = 0; #endif #ifndef AGA p->chipset_mask &= ~CSMASK_AGA; #endif #ifndef AUTOCONFIG p->z3fastmem_size = 0; p->fastmem_size = 0; p->gfxmem_size = 0; #endif #if !defined (BSDSOCKET) p->socket_emu = 0; #endif #if !defined (SCSIEMU) p->scsi = 0; p->win32_aspi = 0; #endif #if !defined (SANA2) p->sana2 = 0; #endif #if !defined (UAESERIAL) p->uaeserial = 0; #endif #if defined (CPUEMU_12) if (p->cpu_cycle_exact) { p->gfx_framerate = 1; p->cachesize = 0; p->m68k_speed = 0; } #endif if (p->maprom && !p->address_space_24) p->maprom = 0x0f000000; if (p->tod_hack && p->cs_ciaatod == 0) p->cs_ciaatod = p->ntscmode ? 2 : 1; blkdev_fix_prefs (p); target_fixup_options (p); }