diff options
| author | 2010-01-23 03:40:02 +0000 | |
|---|---|---|
| committer | 2010-01-23 03:40:02 +0000 | |
| commit | 0f6b9fc7a8f5ca2b7372837605534e7eefb8916b (patch) | |
| tree | 0aefafa9360d876faf589fea3350aaea6bffb0b7 | |
| parent | eaf0d1b92402662fa72f8b962d408f0943106074 (diff) | |
ARM: preliminary SA-1110 support
| -rw-r--r-- | src/emu/cpu/arm7/arm7.c | 34 | ||||
| -rw-r--r-- | src/emu/cpu/arm7/arm7.h | 3 |
2 files changed, 36 insertions, 1 deletions
diff --git a/src/emu/cpu/arm7/arm7.c b/src/emu/cpu/arm7/arm7.c index bc6ce016859..a53cf2f2276 100644 --- a/src/emu/cpu/arm7/arm7.c +++ b/src/emu/cpu/arm7/arm7.c @@ -260,6 +260,17 @@ static CPU_RESET( pxa255 ) cpustate->archFlags = eARM_ARCHFLAGS_T | eARM_ARCHFLAGS_E | eARM_ARCHFLAGS_XSCALE; // has TE and XScale extensions } +static CPU_RESET( sa1110 ) +{ + arm_state *cpustate = get_safe_token(device); + + // must call core reset + arm7_core_reset(device); + + cpustate->archRev = 4; // ARMv4 + cpustate->archFlags = eARM_ARCHFLAGS_SA; // has StrongARM, no Thumb, no Enhanced DSP +} + static CPU_EXIT( arm7 ) { /* nothing to do here */ @@ -566,6 +577,17 @@ CPU_GET_INFO( pxa255 ) } } +CPU_GET_INFO( sa1110 ) +{ + switch (state) + { + case CPUINFO_FCT_RESET: info->reset = CPU_RESET_NAME(sa1110); break; + case DEVINFO_STR_NAME: strcpy(info->s, "SA1110"); break; + default: CPU_GET_INFO_CALL(arm7); + break; + } +} + /* ARM system coprocessor support */ static WRITE32_DEVICE_HANDLER( arm7_do_callback ) @@ -638,7 +660,17 @@ static READ32_DEVICE_HANDLER( arm7_rt_r_callback ) break; case 4: // ARM7/SA11xx - data = 0x41 | (1 << 23) | (7 << 12); + if (cpustate->archFlags & eARM_ARCHFLAGS_SA) + { + // ARM Architecture Version 4 + // Part Number 0xB11 (SA1110) + // Stepping B5 + data = 0x69 | ( 0x01 << 16 ) | ( 0xB11 << 4 ) | 0x9; + } + else + { + data = 0x41 | (1 << 23) | (7 << 12); + } break; case 5: // ARM9/10/XScale diff --git a/src/emu/cpu/arm7/arm7.h b/src/emu/cpu/arm7/arm7.h index fc1a89c70e4..7e3b93b4fde 100644 --- a/src/emu/cpu/arm7/arm7.h +++ b/src/emu/cpu/arm7/arm7.h @@ -46,4 +46,7 @@ extern CPU_GET_INFO( arm9 ); extern CPU_GET_INFO( pxa255 ); #define CPU_PXA255 CPU_GET_INFO_NAME( pxa255 ) +extern CPU_GET_INFO( sa1110 ); +#define CPU_SA1110 CPU_GET_INFO_NAME( sa1110 ) + #endif /* __ARM7_H__ */ |
