[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 05/10] fdc: handle read-only floppies (abort earl
From: |
Hervé Poussineau |
Subject: |
[Qemu-devel] [PATCH v2 05/10] fdc: handle read-only floppies (abort early on write commands) |
Date: |
Sun, 15 Jan 2012 08:51:49 +0100 |
A real floppy doesn't attempt to write to read-only media either.
Signed-off-by: Hervé Poussineau <address@hidden>
---
hw/fdc.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/hw/fdc.c b/hw/fdc.c
index 0e167f8..078ff0c 100644
--- a/hw/fdc.c
+++ b/hw/fdc.c
@@ -300,6 +300,7 @@ enum {
};
enum {
+ FD_SR1_NW = 0x02, /* Not writable */
FD_SR1_EC = 0x80, /* End of cylinder */
};
@@ -1179,6 +1180,16 @@ static int fdctrl_transfer_handler (void *opaque, int
nchan,
break;
case FD_DIR_WRITE:
/* WRITE commands */
+ if (cur_drv->ro) {
+ /* Handle readonly medium early, no need to do DMA, touch the
+ * LED or attempt any writes. A real floppy doesn't attempt
+ * to write to readonly media either. */
+ fdctrl_stop_transfer(fdctrl,
+ FD_SR0_ABNTERM | FD_SR0_SEEK, FD_SR1_NW,
+ 0x00);
+ goto transfer_error;
+ }
+
DMA_read_memory (nchan, fdctrl->fifo + rel_pos,
fdctrl->data_pos, len);
if (bdrv_write(cur_drv->bs, fd_sector(cur_drv),
--
1.7.7.3
- [Qemu-devel] [PATCH v2 00/10] Misc fixes for floppy emulation, Hervé Poussineau, 2012/01/15
- [Qemu-devel] [PATCH v2 01/10] fdc: take side count into account, Hervé Poussineau, 2012/01/15
- [Qemu-devel] [PATCH v2 03/10] fdc: most control commands do not generate interrupts, Hervé Poussineau, 2012/01/15
- [Qemu-devel] [PATCH v2 02/10] fdc: set busy bit when starting a command, Hervé Poussineau, 2012/01/15
- [Qemu-devel] [PATCH v2 05/10] fdc: handle read-only floppies (abort early on write commands),
Hervé Poussineau <=
- [Qemu-devel] [PATCH v2 06/10] fdc: add CCR (Configuration Control Register) write register, Hervé Poussineau, 2012/01/15
- [Qemu-devel] [PATCH v2 04/10] fdc: emulate stepping 0, Hervé Poussineau, 2012/01/15
- [Qemu-devel] [PATCH v2 07/10] block: add a transfer rate for floppy types, Hervé Poussineau, 2012/01/15