1.1 --- a/src/aica/armmem.c Tue Jan 01 05:08:38 2008 +0000
1.2 +++ b/src/aica/armmem.c Wed Jul 30 03:00:40 2008 +0000
1.5 int arm_has_page( uint32_t addr ) {
1.6 return ( addr < 0x00200000 ||
1.7 - (addr >= 0x00800000 && addr <= 0x00805000 ) );
1.8 + (addr >= 0x00800000 && addr <= 0x00805000 ) );
1.11 uint32_t arm_read_long( uint32_t addr ) {
1.12 if( addr < 0x00200000 ) {
1.13 - return *(int32_t *)(arm_mem + addr);
1.14 - /* Main sound ram */
1.15 + return *(int32_t *)(arm_mem + addr);
1.16 + /* Main sound ram */
1.19 - switch( addr & 0xFFFFF000 ) {
1.21 - val = mmio_region_AICA0_read(addr&0x0FFF);
1.22 - // DEBUG( "ARM long read from %08X => %08X", addr, val );
1.25 - val = mmio_region_AICA1_read(addr&0x0FFF);
1.26 - // DEBUG( "ARM long read from %08X => %08X", addr, val );
1.29 - val = mmio_region_AICA2_read(addr&0x0FFF);
1.30 - // DEBUG( "ARM long read from %08X => %08X", addr, val );
1.34 - return *(int32_t *)(arm_mem_scratch + addr - 0x00803000);
1.37 + switch( addr & 0xFFFFF000 ) {
1.39 + val = mmio_region_AICA0_read(addr&0x0FFF);
1.40 + // DEBUG( "ARM long read from %08X => %08X", addr, val );
1.43 + val = mmio_region_AICA1_read(addr&0x0FFF);
1.44 + // DEBUG( "ARM long read from %08X => %08X", addr, val );
1.47 + val = mmio_region_AICA2_read(addr&0x0FFF);
1.48 + // DEBUG( "ARM long read from %08X => %08X", addr, val );
1.52 + return *(int32_t *)(arm_mem_scratch + addr - 0x00803000);
1.55 ERROR( "Attempted long read to undefined page: %08X",
1.58 /* Undefined memory */
1.62 void arm_write_long( uint32_t addr, uint32_t value )
1.64 if( addr < 0x00200000 ) {
1.65 - /* Main sound ram */
1.66 - *(uint32_t *)(arm_mem + addr) = value;
1.67 + /* Main sound ram */
1.68 + *(uint32_t *)(arm_mem + addr) = value;
1.70 - switch( addr & 0xFFFFF000 ) {
1.72 - // DEBUG( "ARM long write to %08X <= %08X", addr, value );
1.73 - mmio_region_AICA0_write(addr&0x0FFF, value);
1.76 - // DEBUG( "ARM long write to %08X <= %08X", addr, value );
1.77 - mmio_region_AICA1_write(addr&0x0FFF, value);
1.80 - // DEBUG( "ARM long write to %08X <= %08X", addr, value );
1.81 - mmio_region_AICA2_write(addr&0x0FFF, value);
1.85 - *(uint32_t *)(arm_mem_scratch + addr - 0x00803000) = value;
1.88 - ERROR( "Attempted long write to undefined address: %08X",
1.90 - /* Undefined memory */
1.92 + switch( addr & 0xFFFFF000 ) {
1.94 + // DEBUG( "ARM long write to %08X <= %08X", addr, value );
1.95 + mmio_region_AICA0_write(addr&0x0FFF, value);
1.98 + // DEBUG( "ARM long write to %08X <= %08X", addr, value );
1.99 + mmio_region_AICA1_write(addr&0x0FFF, value);
1.102 + // DEBUG( "ARM long write to %08X <= %08X", addr, value );
1.103 + mmio_region_AICA2_write(addr&0x0FFF, value);
1.107 + *(uint32_t *)(arm_mem_scratch + addr - 0x00803000) = value;
1.110 + ERROR( "Attempted long write to undefined address: %08X",
1.112 + /* Undefined memory */
1.117 @@ -108,50 +108,50 @@
1.119 switch( addr & 0x03 ) {
1.121 - return (val & 0xFFFFFF00) | byte;
1.122 + return (val & 0xFFFFFF00) | byte;
1.124 - return (val & 0xFFFF00FF) | (byte<<8);
1.125 + return (val & 0xFFFF00FF) | (byte<<8);
1.127 - return (val & 0xFF00FFFF) | (byte<<16);
1.128 + return (val & 0xFF00FFFF) | (byte<<16);
1.130 - return (val & 0x00FFFFFF) | (byte<<24);
1.131 + return (val & 0x00FFFFFF) | (byte<<24);
1.133 - return val; // Can't happen, but make gcc happy
1.134 + return val; // Can't happen, but make gcc happy
1.138 void arm_write_byte( uint32_t addr, uint32_t value )
1.140 if( addr < 0x00200000 ) {
1.141 - /* Main sound ram */
1.142 - *(uint8_t *)(arm_mem + addr) = (uint8_t)value;
1.143 + /* Main sound ram */
1.144 + *(uint8_t *)(arm_mem + addr) = (uint8_t)value;
1.147 - switch( addr & 0xFFFFF000 ) {
1.149 - tmp = MMIO_READ( AICA0, addr & 0x0FFC );
1.150 - value = arm_combine_byte( addr, tmp, value );
1.151 - mmio_region_AICA0_write(addr&0x0FFC, value);
1.154 - tmp = MMIO_READ( AICA1, addr & 0x0FFC );
1.155 - value = arm_combine_byte( addr, tmp, value );
1.156 - mmio_region_AICA1_write(addr&0x0FFC, value);
1.159 - tmp = MMIO_READ( AICA2, addr & 0x0FFC );
1.160 - value = arm_combine_byte( addr, tmp, value );
1.161 - mmio_region_AICA2_write(addr&0x0FFC, value);
1.165 - *(uint8_t *)(arm_mem_scratch + addr - 0x00803000) = (uint8_t)value;
1.168 - ERROR( "Attempted byte write to undefined address: %08X",
1.170 - /* Undefined memory */
1.173 + switch( addr & 0xFFFFF000 ) {
1.175 + tmp = MMIO_READ( AICA0, addr & 0x0FFC );
1.176 + value = arm_combine_byte( addr, tmp, value );
1.177 + mmio_region_AICA0_write(addr&0x0FFC, value);
1.180 + tmp = MMIO_READ( AICA1, addr & 0x0FFC );
1.181 + value = arm_combine_byte( addr, tmp, value );
1.182 + mmio_region_AICA1_write(addr&0x0FFC, value);
1.185 + tmp = MMIO_READ( AICA2, addr & 0x0FFC );
1.186 + value = arm_combine_byte( addr, tmp, value );
1.187 + mmio_region_AICA2_write(addr&0x0FFC, value);
1.191 + *(uint8_t *)(arm_mem_scratch + addr - 0x00803000) = (uint8_t)value;
1.194 + ERROR( "Attempted byte write to undefined address: %08X",
1.196 + /* Undefined memory */