diff --git a/src/target/embeddedice.c b/src/target/embeddedice.c
index 31ac0b4f05952a1db0e974c3ea383ef3125edf7d..9d2be364dbe11045836d46aa8ceecf1255cb6e94 100644
--- a/src/target/embeddedice.c
+++ b/src/target/embeddedice.c
@@ -179,6 +179,13 @@ reg_cache_t* embeddedice_build_reg_cache(target_t *target, arm7_9_common_t *arm7
 			arm7_9->has_monitor_mode = 1;
 			break;
 		default:
+			/*
+			 * The Feroceon implementation has the version number
+			 * in some unusual bits.  Let feroceon.c validate it
+			 * and do the appropriate setup itself.
+			 */
+			if (strcmp(target->type->name, "feroceon") == 0)
+				break;
 			LOG_ERROR("unknown EmbeddedICE version (comms ctrl: 0x%8.8x)", buf_get_u32(reg_list[EICE_COMMS_CTRL].value, 0, 32));
 	}