diff --git a/hw/m25p80.c b/hw/m25p80.c
index d392656..c8d0411 100644
--- a/hw/m25p80.c
+++ b/hw/m25p80.c
@@ -184,6 +184,7 @@ static const FlashPartInfo known_devices[] = {
 
 typedef enum {
     NOP = 0,
+    WRSR = 0x1,
     WRDI = 0x4,
     RDSR = 0x5,
     WREN = 0x6,
@@ -377,6 +378,12 @@ static void complete_collecting_data(Flash *s)
     case ERASE_SECTOR:
         flash_erase(s, s->cur_addr, s->cmd_in_progress);
         break;
+    case WRSR:
+    	if (s->write_enable) {
+    		s->state = STATE_IDLE;
+    		s->write_enable = false;
+    	}
+    	break;
     default:
         break;
     }
@@ -440,6 +447,15 @@ static void decode_new_cmd(Flash *s, uint32_t value)
         s->len = 0;
         s->state = STATE_COLLECTING_DATA;
         break;
+        
+	case WRSR:
+		if (s->write_enable) {
+			s->needed_bytes = 1;
+			s->pos = 0;
+        	s->len = 0;
+			s->state = STATE_COLLECTING_DATA;
+		}
+        break;
 
     case WRDI:
         s->write_enable = false;
