diff --git a/src/flash/stm32x.c b/src/flash/stm32x.c
index 7039a3d41d012bc1d7995714b0b1a58d7b196b95..8363039f8e335836ad52198f06fd333f40f0ea25 100644
--- a/src/flash/stm32x.c
+++ b/src/flash/stm32x.c
@@ -660,6 +660,15 @@ int stm32x_probe(struct flash_bank_s *bank)
     
 	/* get flash size from target */
 	target_read_u16(target, 0x1FFFF7E0, &num_sectors);
+	
+	/* check for early silicon rev A */
+	if ((device_id >> 16) == 0 )
+	{
+		/* number of sectors incorrect on revA */
+		WARNING( "STM32 Rev A Silicon detected, probe inaccurate - assuming 128k flash" );
+		num_sectors = 128;
+	}
+	
 	INFO( "flash size = %dkbytes", num_sectors );
 	
 	bank->base = 0x08000000;